실시간 통신이란
웹에서 실시간 통신은 서버와 클라이언트가 즉시 데이터를 교환하는 것입니다. 40년간 통신 기술을 다뤄온 저로서는 실시간 기능이 현대 웹 앱에서 중요해졌다고 확신합니다. 채팅, 알림, 협업 도구, 실시간 대시보드에 필수입니다. 전통적인 HTTP 요청-응답으로는 한계가 있습니다.
폴링과 Long Polling
폴링(Polling): 클라이언트가 주기적으로 서버에 새 데이터를 확인합니다. 간단하지만 비효율적입니다. 불필요한 요청이 많습니다. Long Polling: 서버가 데이터가 생길 때까지 응답을 보류합니다. 폴링보다 효율적이지만 연결 관리가 복잡합니다.
WebSocket
WebSocket은 양방향 지속 연결을 제공합니다. 초기 HTTP 핸드셰이크 후 업그레이드됩니다. 서버와 클라이언트 모두 언제든 메시지를 보낼 수 있습니다. 오버헤드가 적고 지연이 짧습니다. Socket.io, ws 같은 라이브러리가 있습니다. 대부분의 브라우저에서 지원됩니다.
Server-Sent Events(SSE)
SSE는 서버에서 클라이언트로의 단방향 스트림입니다. WebSocket보다 간단합니다. 알림, 뉴스피드 업데이트에 적합합니다. HTTP를 사용하므로 프록시 호환성이 좋습니다. EventSource API로 쉽게 사용합니다. 하지만 클라이언트에서 서버로 보내려면 별도 요청이 필요합니다.
실시간 기술 선택
단순 알림, 단방향 업데이트: SSE가 적합합니다. 양방향 실시간 통신: WebSocket을 사용합니다. 호환성이 중요하면: Socket.io가 폴백을 제공합니다. 확장성: Redis Pub/Sub, Kafka로 메시지 브로커를 사용합니다. 모바일에서는 FCM, APNs 푸시 알림도 고려합니다.
댓글
0