Day 82 · 5/5
🌳 고급 고급

백프레셔(Backpressure)란?

쉽게 이해하기

백프레셔는 고속도로 진입로의 신호등 같아요. 본선이 막히면 진입로에서 차량을 천천히 들여보내서 전체 도로가 마비되는 걸 막아요. 시스템도 처리 능력을 넘는 요청이 쏟아지면 속도를 조절해서 다운되지 않도록 해요.

핵심 정리

시스템이 과부하될 때 요청 속도를 조절하는 메커니즘이에요.

자세히 알아보기

백프레셔는 시스템의 처리 능력보다 들어오는 요청이 많을 때, 생산자(Producer)에게 속도를 늦추라고 신호를 보내는 흐름 제어 메커니즘이에요. 스트리밍 시스템과 비동기 처리에서 매우 중요해요. 문제 상황을 예로 들면, API 서버가 초당 1000건을 처리할 수 있는데 갑자기 10000건이 들어오면 어떻게 될까요? 백프레셔 없이는 메모리가 가득 차서 서버가 죽거나, 큐가 무한정 쌓여서 지연 시간이 수분까지 늘어날 수 있어요. 백프레셔가 있으면 시스템이 '지금은 처리 못해'라고 명확히 신호를 보내요. 구현 방식은 여러 가지예요. 가장 간단한 건 HTTP 429 Too Many Requests 응답으로 클라이언트에게 재시도하라고 알려주는 거예요. Reactive Streams(RxJS, Project Reactor)는 Pull 기반 백프레셔를 지원해요. 소비자가 '다음 10개 줘'라고 요청하면 생산자는 그만큼만 보내는 식이죠. Kafka 같은 메시지 큐는 컨슈머가 처리 속도를 조절할 수 있어요. 실무에서는 레이어별로 백프레셔를 적용해요. API Gateway에서 Rate Limiting, 애플리케이션에서 Thread Pool 크기 제한, 메시지 큐에서 컨슈머 수 조절, 데이터베이스에서 커넥션 풀 관리 등이 모두 백프레셔의 일종이에요. Node.js의 Stream API도 백프레셔를 자동으로 처리해서 파일을 읽는 속도가 쓰는 속도보다 빠르면 자동으로 읽기를 멈춰요.