핵심 인사이트 (3줄 요약)

  1. 본질: SSE (Server-Sent Events)는 클라이언트의 최초 요청 이후 HTTP 연결을 닫지 않은 채 유지하며, 서버가 Content-Type: text/event-stream 포맷으로 클라이언트를 향해 단방향으로 끝없이 텍스트 데이터를 밀어 넣는(Push) HTML5 표준 기술이다.
  2. 가치: 양방향 소켓 통신(WebSocket)의 무거운 오버헤드와 복잡성 없이, 오직 기존의 익숙하고 안전한 HTTP 인프라 위에서 실시간 알림, 주식 티커, 뉴스 피드 같은 단방향 스트리밍을 극도로 가볍게 구현할 수 있게 해준다.
  3. 융합: 네트워크 단절 시 클라이언트 브라우저 엔진이 **자동으로 재접속(Auto Reconnect)**을 수행하고 마지막 수신 ID(Last-Event-ID)로 유실된 데이터를 서버에 재요청하는 강력한 복구 메커니즘을 내장하고 있어 운영 안정성이 탁월하다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

  • 개념: SSE(Server-Sent Events)는 웹 브라우저의 자바스크립트 API인 EventSource 객체를 이용하여 서버로부터 발생한 이벤트를 스트리밍 형태로 받아오는 기술이다. 통신이 양방향(Full-Duplex)인 웹소켓과 달리, 방향이 철저하게 서버에서 클라이언트로 향하는 **단방향(Half-Duplex, Push)**으로 제한된다.

  • 필요성: 웹에서 "실시간"이 필요하다고 무조건 고가도로(웹소켓)를 뚫을 필요는 없다. 트위터 새 글 알림, 페이스북 좋아요 푸시, 넷플릭스 영화 인코딩 진행률 막대 같은 기능들은 클라이언트가 서버로 딱히 쏠 데이터가 없고, 오직 "서버가 언제 나한테 변경사항을 내려줄지"만 얌전히 기다리는 구조다. 이를 위해 복잡한 웹소켓 핸드셰이크를 거치거나 무식하게 1초마다 찌르는 폴링(Polling)을 쓰는 것은 소 잡는 칼로 닭을 잡는 낭비였다. HTTP라는 친숙한 길 위에서 일방통행으로 데이터를 쏟아내는 가벼운 수도관이 필요했다.

  • 💡 비유: 웹소켓이 서로 말을 주고받을 수 있는 양방향 무전기라면, SSE는 라디오 방송국(서버)이 주파수만 맞춰둔 수많은 청취자(클라이언트) 라디오를 향해 계속해서 음악과 뉴스를 일방적으로 송출하는 **'단방향 라디오 생방송'**과 같습니다. 청취자는 방송국에 말을 걸 순 없지만, 새로운 뉴스는 0.1초 만에 즉각 들을 수 있습니다.

  • 등장 배경:

    1. Comet 꼼수의 한계: 과거 개발자들은 숨겨진