어떤 과제를 해결하기 위해 의사 결정이 필요했나요?
- 알림 기능 구현을 위해 어떤 기술을 사용할지 선택 필요
- 서버가 클라이언트에 데이터를 전달하는 다양한 방식이 있어 우리 기능의 특성에 맞는 기술을 선택해야 했음.
의사 결정 과정을 적어주세요.
최종 결정에 대한 근거를 적어주세요.
- 알림 기능을 위한 기술로 SSE 선택
- 실시간성을 지킬 수 있고
- 한 번 클라이언트와 연결을 맺으면 서버에서 여러 번 데이터를 보낼 수 있기 때문에 적절하다고 판단
- 다른 기술과의 비교
- Short Polling
- 클라이언트가 서버로 요청 보내서 데이터 갱신되었는지 확인 후 응답 받음.
- 주기적으로 요청을 보내야 하고, 막 0.1초마다 요청을 보내는 게 아니면 실시간성은 떨어진다고 할 수 있음.
- Long Polling
- 클라이언트가 요청을 보내고 서버에서 변경이 일어날 때까지 대기.
- 실시간성은 높지만, 응답 받고 나면 다시 연결 요청하므로 상태가 빈번하게 바뀌면 연결 요청도 그만큼 늘어남.
- Server-Sent Events
- 클라이언트의 요청으로 서버와 연결을 맺고 나면 일정 시간동안 서버에서 변경이 발생할 때마다 데이터 전송.
- 한 번 연결하면 여러 번 데이터를 전송할 수 있어서 효율적임.
- Web Socket
- 클라이언트와 서버가 양방향으로 실시간 통신.
- 실시간성은 높지만, 서버에서 단방향으로 보내주기만 하면 되는 기능이라면 과한 기술임.
- 실시간성은 Long Polling과 Web Socket도 높지만
- Long Polling은 알림을 보낼 때마다 연결 요청을 해야 하므로 비효율적이고,
- Web Socket은 클라이언트와 양방향으로 통신할 필요가 없어 우리 기능에 과한 기술
- 우리가 구현하고자 하는 알림 기능은 클라이언트가 요청하지 않아도 서버에서 일방적으로 여러 번 데이터를 보내는 기능이므로 SSE로 충분함