[Spring + SSE + Redis] SSE를 사용한 실시간 알림 Scale out 시 문제점 해결하기
SSE를 사용할 때 단일서버일 경우에는 문제가 없지만 서버를 Scale-out 할 때 문제가 발생한다. 그 이유는 위의 그림과 같이 사용자 A와 B의 접속 정보 즉 SseEmitter가 서버 메모리에 저장되어 있기 때문이다. 만약 사용자 A는 was1에 접속했고 사용자 B는 was2에 접속했다면 사용자 A가 B에게 메시지를 작성했다면 실시간 알림을 보낼 수 없다. 그렇다면 이 문제를 어찌 해결해야 할까? Redis pub/sub 고민을 하다가 찾은 방법은 Redis pub/sub이다. 레디스는 위 그림과 같이 Pub/Sub 기능을 제공한다. 특정 채널을 구독하는 subscriber 들에게 메시지를 브로드캐스트 하는 방법이다. 이를 이용해 어떤 애플리케이션 서버에서 새로운 알림을 발송해야 한다면 그 알림을..
프로젝트/내편
2023. 2. 2. 21:29