SSE란? 실시간 이벤트 전달 프로토콜 (Server-Sent Events)

SSE(Server-Sent Events)란 무엇인가 SSE는 Server-Sent Events의 약자로, 서버가 클라이언트로 실시간 데이터를 단방향으로 푸시(push)할 수 있게 해주는 웹 기술임 클라이언트가 먼저 요청을 보내고 서버는 그 연결을 끊지 않은 채, 새로운 데이터가 생길 때마다 지속적으로 응답을 보내는 방식임 주로 실시간 알림, 주식 시세 업데이트, 라이브 피드 등 서버에서 클라이언트로 일방적인 데이터 전송이 필요한 경우에 매우 유용함 SSE vs 웹소켓, 그리고 한계 SSE는 실시간 이벤트 전송에 유용하지만 만능은 아님. 웹소켓과 비교했을 때 명확한 장단점이 존재함 ...

October 25, 2025

Redis는 싱글스레드인가요 블로킹은 왜 체감이 다를까

Redis를 두고 싱글 스레드라고 말할 때는 보통 명령어 실행 관점에서 이야기합니다. 어떤 명령이든 실행 순간에는 다른 요청이 대기할 수 있지만, 장애처럼 체감되는지는 그 대기 시간이 얼마나 길어지느냐에 달려 있습니다 블로킹이 없는 것처럼 보이는 이유 Redis는 명령어를 순서대로 처리합니다. 그래서 한 명령이 실행되는 아주 짧은 구간에는 다른 요청이 그 명령이 끝날 때까지 대기합니다. 다만 SET, GET, DEL, HSET 같은 대부분의 명령은 보통 처리 시간이 짧아서 블로킹이 마이크로초 단위로 끝나는 경우가 많습니다 ...

May 25, 2026

BullMQ에서 job data가 커지면 Redis 지연과 OOM, 큐 무결성 이슈로 번질 수 있는 이유

레디스가 싱글스레드라서 BullMQ에서 job data가 커지면 Redis가 터진다고 단순화해서 말하는 경우가 많음 하지만 실제로는 Redis가 큰 payload 처리 때문에 막히고, 그 지연이 메모리와 네트워크 문제로 이어지며 타임아웃이나 OOM 같은 연쇄 문제로 번지는 쪽이 더 큼 job data가 커질 때 Redis에서 바로 벌어지는 일 1) 이벤트루프가 큰 값 때문에 오래 점유 BullMQ는 job을 만들 때 job data를 보통 Redis에 문자열이나 JSON 형태로 저장함 job data가 커지면 쓰기와 조회 모두에서 처리해야 하는 바이트가 늘어남 SET이나 HSET 같은 쓰기, HGET 같은 조회가 한 명령당 처리해야 하는 바이트를 키움 ...

May 20, 2026

백프레셔 Backpressure 개념 정리와 스트림·큐·RxJS 적용 패턴

개념/배경 백프레셔 Backpressure는 소비자가 생산자의 처리 속도를 따라가지 못할 때, 소비자가 생산자의 속도를 조절하도록 피드백을 주는 흐름 제어 메커니즘을 의미함 직관적 비유로 좁은 깔때기 소비자에 높은 수압 생산자를 연결했을 때, 깔때기 내부에 물이 차며 더 유입되지 않도록 압력이 올라가거나 수도를 잠그라는 신호를 보내는 상황과 동일함 왜 중요한가 처리 속도 불균형이 누적되면 메모리 초과와 지연 폭증으로 이어짐 생산자 1000 req/s, 소비자 100 req/s 가정 매초 900개가 버퍼에 쌓여 메모리 증가, 결국 OOM 위험 큐 대기열이 길어져 tail-latency 증가, 사실상 영구 대기 상태 발생 가능 백프레셔는 이런 누적을 초기에 억제해 시스템 안정성 확보와 자원 보호에 기여함 핵심 개념과 정의 Producer: 데이터를 생성·전송하는 주체 Consumer: 데이터를 수신·처리하는 주체 Backpressure: 소비자가 처리 가능한 속도로 생산자에 역방향 피드백을 전달해 유량을 제어하는 행위 전략 축: 조절 Control, 버퍼링 Buffering, 드롭 Dropping 동작 원리/전략 A. 조절 Control/Throttling ...

December 26, 2025