PromleeBlog
sitemap
aboutMe

posting thumbnail
실시간 통신 기술 비교 (Polling, Webhook, SSE, WebSocket)
Comparing Real-Time Communication (Polling, Webhook, SSE, WebSocket)

📅

🚀

들어가기 전에 🔗

이번 시간에는 클라이언트와 서버가 어떻게 '실시간'으로 정보를 주고받는지에 대한 다양한 기술들을 탐구해 보겠습니다.
전통적인 웹은 클라이언트가 요청하고 서버가 응답하는 단방향 구조였지만, 오늘날의 서비스는 채팅, 실시간 알림, 라이브 주식 시세처럼 서버의 변화를 즉시 클라이언트에 알려줘야 하는 경우가 많습니다.

이 문제를 해결하기 위해 등장한 네 가지 주요 기술,
폴링(Polling), 웹훅(Webhook), SSE, 그리고 웹소켓(WebSocket)
이 있습니다.
이들은 각각 다른 철학과 장단점을 가지고 있으며, 상황에 맞는 올바른 기술을 선택하는 것은 효율적인 시스템을 설계하는 데 매우 중요합니다.
각 기술이 어떻게 동작하는지 그 원리를 함께 알아보겠습니다.

🚀

1. 폴링(Polling) - 클라이언트의 끊임없는 질문 🔗

폴링은 가장 단순하고 전통적인 방식입니다.
클라이언트가 일정한 주기를 가지고 계속해서 서버에 "새로운 데이터 있나요?"라고 물어보는 것입니다.

🚀

2. 웹훅(Webhook) - 서버의 능동적인 '우편 배달' 🔗

웹훅은 폴링과 반대로,
서버 측에서 특정 이벤트가 발생했을 때 클라이언트가 미리 등록해 둔 URL로 데이터를 보내주는 방식
입니다.

🚀

3. SSE (Server-Sent Events) - 서버가 보내는 단방향 '라디오 방송' 🔗

SSE는 이름 그대로,
서버가 클라이언트에게 일방적으로 데이터를 계속해서 보내는(push) 기술
입니다.

마치 라디오 방송국에서 계속해서 청취자에게 소식을 보내주는 것과 같습니다.
청취자는 방송을 듣기만 할 뿐, 방송국에 자신의 목소리를 보낼 수는 없습니다.
이처럼
서버 → 클라이언트 방향의 단방향 통신
에 특화되어 있습니다.


🚀

4. 웹소켓(WebSocket) - 완전한 양방향 '전화 통화' 🔗

웹소켓은
클라이언트와 서버가 한 번 연결을 맺으면, 그 이후로는 양쪽에서 원할 때 언제든지 자유롭게 데이터를 주고받을 수 있는 기술
입니다.

마치 두 사람이 전화를 거는 것과 같습니다.
한번 통화가 연결되면, 누가 먼저랄 것 없이 양쪽에서 자유롭게 대화할 수 있습니다.
완벽한
양방향 실시간 통신
을 위한 기술입니다.

Real Time Communication Comparison
Real Time Communication Comparison

🚀

주요 면접 예상 질문 🔗

각 기술의 특징과 차이점을 명확히 이해하고 있는지 묻는 질문이 자주 나옵니다.

1. 폴링 방식의 문제점과 이를 해결하기 위한 다른 기술들은 무엇이 있나요? 🔗

문제점과 대안을 함께 설명하는 것이 핵심입니다.
폴링 방식은 클라이언트가 주기적으로 요청을 보내므로, 실제 데이터 변경이 없을 때도
불필요한 트래픽을 유발
하고 서버에 부담을 줍니다.
또한, 완전한 실시간 통신이 어렵다는 단점이 있습니다.
이러한 문제를 해결하기 위해 서버가 클라이언트에게 데이터를 밀어주는
서버 푸시(Server-Push)
기술들이 등장했습니다.
대표적으로
SSE(Server-Sent Events)
는 서버에서 클라이언트로의 단방향 스트리밍에 적합하고,
웹소켓(WebSocket)
은 양방향 실시간 통신이 필요할 때 사용됩니다.

2. SSE와 웹소켓의 차이점은 무엇이며, 어떤 상황에 SSE를 선택하는 것이 더 유리한가요? 🔗

두 기술의 핵심적인 차이와 트레이드오프를 이해하고 있는지 묻는 질문입니다.
가장 큰 차이는
통신 방향
입니다.
웹소켓은 양방향 통신이 가능하지만, SSE는 서버에서 클라이언트로의 단방향 통신만 가능합니다.
만약 프로젝트가
실시간 주식 시세 업데이트나 SNS 피드 알림처럼, 클라이언트가 서버로 데이터를 보낼 필요 없이 오직 받기만 하면 되는 경우
라면 SSE를 선택하는 것이 더 유리합니다.
SSE는 일반적인 HTTP 프로토콜 위에서 동작하여 구현이 더 간단하고 가벼우며, 웹소켓에 비해 서버의 부담이 적기 때문입니다.

🚀

결론 🔗

오늘은 실시간 통신을 위한 네 가지 주요 기술에 대해 알아보았습니다.

참고 🔗