실시간 통신

Fox·2024년 1월 11일
0
post-thumbnail

실시간 통신 기술

Polling

HTTP 연결에서는 Stateless와 Connectionless 특징을 가진다.
서버가 클라이언트에게 발송한 데이터가 생기더라도 서버가 일방적으로 클라이언트에게 응답을 보낼 수 없다.
요청을 받아야 응답을 보내는 구조로 클라이언트가 요청을 보낼 때까지 기다려야 한다.
이것을 해결한 방식이 Polling 방식이다. 

  • 요청을 주기적으로 계속 보내면서 서버가 전달하고자 하는 내용이 있는지 확인해서 가져오는 것이다.
  • 하지만 HTTP 오버헤드가 상당히 증가한다는 단점이 있다.

적합한 서비스: 실시간 메시지 전달이 중요하지 않고, 잦은 요청에 대응할 수 있는 서버를 지닌 곳

Long Polling

Polling과 유사하게 동작하지만 조건과 설정이 추가된 형태이다.

  • Polling은 계속 요청을 날렸다면 Long Polling은 시간을 최대한 늘려 이벤트가 발생할 때까지 대기한다.
  • HTTP 요청 빈도를 줄여서 개선한 모델이다

적합한 서비스: 실시간 메시지 전달이 중요하지만, 잦은 데이터 전달이 없는 경우

WebSocket

  • HTTP가 아닌 TCP위에서 동작하며, Stateful 하기 때문에 주기적으로 요청받을 필요도 없다.
  • WebSocket HandShake 요청을 통해서 HTTP -> Socket 통신으로 전환하는 과정을 거치면서 일어난다.
  • 양측에서 언제든지 원하는 데이터를 보낼 수 있는 구조를 가지고 있다.

적합한 서비스: 양방향 통신이 필요하고, Socket 통신을 위한 전용 서버를 구축할 환경이 되는 곳

Server Sent Event (SSE)

  • 서버에서 클라이언트로 단방향 데이터를 전달할 수 있는 HTML5 표준 기술이다.
  • WebSocket과 다르게 별도의 프로토콜을 구축할 필요가 없고, Polling처럼 요청을 주기적으로 보내며 응답을 받을 필요도 없다.

적합한 서비스: 스트리밍 서비스

WebRTC

  • 앞선 기술들은 Client-Server 구조로 동작하지만, WebRTC는 P2P 방식으로 통신이 이루어진다.
  • UDP로 통신하기 때문에 빠르다는 장점이 있지만 P2P방식인 만큼, 사용자가 많아질수록 성능이 안 좋아진다는 단점이 있다.\

적합한 서비스: 실시간 통신이 최우선이며 1 : 1 혹은 소규모 실시간 통신이 중점인 서비스

profile
주니어개발자 Fox 입니다 🦊

0개의 댓글