SSE를 사용한 이유

구동현·2024년 4월 22일

실시간 경매 서비스를 개발하면서,
고객에게 최고 입찰가에 대한 정보를 전달하는 것이 중요해졌다.

ㄱ유저가 a라는 게시물을 보고있을때, ㄴ유저가 a게시물의 최고 입찰을 던질 경우, ㄱ유저가 관측해야한다.

이런 방식을 고안하면서 3가지 방식이 나왔다.

Polling

Web Socket

Server Sent Event


Polling

출처 :
https://jaehyeon48.github.io/network/polling-and-sse/

가장 쉽게 떠올릴 수 있는 방법일 것 같습니다.

프론트는 주기적으로 백엔드에게 경매 최고가의 정보를 요청합니다.

만약, 다른 클라이언트가 최고 입찰을 시도하더라도
그 이후에 poll에서 최고가를 받아와 페이지를 새로고침하듯, 입찰가를 갱신합니다.

이 방법은 리소스를 많이 잡아먹기 때문에, 저희 서비스에서는 유용하지 않을 것 같습니다.


Web Socket

두번째 방법은,
서버와 클라이언트가 양방향 통신환경을 제공하여,
서로 데이터를 주고 받는 방식입니다.

저희 서비스에서는 클라이언트에게 받아올 정보가 필요없을 뿐더러, SSE가 HTTP PROTOCOL에 속하기 때문에,
web socket은 사용하지 않도록 하겠습니다.


Server Sent Event

저희가 사용할 SSE입니다.

기존의 제가 아는 웹의 작동방식은,
1. 클라이언트가 서버에게 정보를 요청한다.
2. 서버는 클라이언트에게 정보를 제공한다.
이런 순서입니다.

하지만, SSE 라는 방식은
서버 → 클라이언트로
순서가 바뀌었습니다.

서버가 옥션의 최고가가 바뀔때마다,
클라이언트에게 데이터를 제공하게 됩니다.

그 과정에서 사용하는 것이 Redis 입니다.

profile
개발합시다

0개의 댓글