초기 방향성
- 실시간 통신이라는 단어에 관성적으로 Web Socket을 통신 프로토콜로 선택했다.
- 이는 팀이 개발하고자 하는 실시간 서비스의 특징을 고려하지 않은 선택이었으며, 이후 팀이 개발하고자 하는 실시간 통신의 특징을 분석하고, 웹 소켓과 SSE의 특징을 비교하여 더 적합한 방식을 찾고자 했다.
팀이 개발하고자 하는 실시간 통신 서비스
- 총 2가지 부분에서 실시간 통신을 도입하고자 했다.
- 대기열에 대기하는 클라이언트에게 현재 남은 인원과, 총 인원, 남은 시간을 주기적으로 알려준다.
- 좌석 선점 페이지에서 클라이언트가 실시간으로 좌석 정보를 확인하고 예매할 수 있다.
- 두 서비스의 특징은 클라이언트와 서버간의 양방향 통신이 활발하게 발생하기 보다는 서버가 클라이언트에게 전송하는 일방적인 통신이 주를 이룬다는 점이다.
웹 소켓
특징
- 클라이언트와 서버가 서로 데이터를 주고 받는 양방향 통신이다.
- 전용 WebSocket 프로토콜(
ws://
또는 wss://
)을 사용하며, 초기에는 HTTP를 통해 핸드셰이크를 수행한 뒤, WebSocket 프로토콜로 업그레이드한다.
- 바이너리와 텍스트의 데이터 형식 모두 전송 가능하다
장점
- 양방향 통신이 필요한 실시간 애플리케이션(예: 채팅, 게임, 주식 거래 등)에 적합하다.
- 연결이 유지되는 동안 지속적으로 데이터를 교환하기 때문에 HTTP 요청/응답 오버헤드가 없다.
단점
- 설정 및 구현이 SSE보다 더 복잡하며, 추가적인 서버 및 클라이언트 로직이 필요하다.
- 서버가 클라이언트의 요청을 계속해서 listen하기 위해 리소스를 추가적으로 사용한다.
Server Sent Event(SSE)
특징