본문 바로가기

활동들~/Help Todo (개인프로젝트)

[백엔드 기록] SSE와 소켓

Help Todo 서비스는 팀 단위 투두리스트 서비스이다.

같은 팀에서 투두리스트를 수정할 경우, 다른 팀원들의 투두리스트를 수정된 데이터로 업데이트해주어야 한다.

나는 이 부분을 웹 소켓의 Pub/Sub 방식으로 해결하려고 했다.

구독, 발행 방식을 구현하는 중, SSE라는 걸 알게 되었고, 해당 데이터 노티 기능은 SSE로 구현하는 것이 적합한거 같아 SSE에 대해 찾아보았다.

SSE란 ? 

Server-Sent-Event의 약어로, 클라이언트가 HTTP를 통해 서버에서 자동 업데이트를 받을 수 있도록 하는 서버 푸시 기술이다.

SSE ↔️ 소켓 

  1. 방향성
    • SSE는 서버에서 클라이언트로 데이터를 전송해주는 단방향 푸시 기술이다.
    • 소켓은 서버와 클라이언트가 서로 데이터를 주고 받을 수 있는 양방향 기술이다.
    • 따라서, 채팅처럼 양방향 관계가 필요할 때는 소켓을 선택하고, 간단한 노팅같은 단방향 관계가 필요할 때는 SSE를 선택하면 좋을 것 같다.
  2. 부하
    • 소켓은 서버와 클라이언트가 서로 데이터를 주고 받을 수 있도록 양방향 연결을 유지해줘야 하지만, SSE는 서버에서 클라이언트로의 단반향 연결만 일정 시간 유지시켜준다. 
      따라서, SSE가 더 가볍다.
  3. 프로토콜
    • 웹 서비스의 경우, 요즘 소켓은 WS라는 웹소켓 프로토콜을 주로 이용한다.
    • SSE는 기본적인 HTTP 혹은 HTTP2 프로토콜을 이용한다.