- 백프레셔는 생산자(Publisher)가 소비자(Consumer)보다 데이터를 더 빠르게 생성할 때 발생하는 현상입니다. 💨
- 이는 유체 역학(파이프의 물 흐름)에서 유래한 개념으로, 시스템의 한쪽 압력이 다른 쪽보다 높아 역류하는 상황과 유사합니다. 🌊
- 메시지 큐, 디스크 I/O, 프론트엔드 UI 렌더링 등 다양한 시스템에서 발생할 수 있습니다. 🖥️
- 백프레셔 처리 전략에는 '제어(Control)', '버퍼링(Buffering)', '드롭(Drop)', '무시(Ignore)'의 네 가지가 있습니다. 🛠️
- '제어'는 소비자가 생산자에게 속도를 늦추라고 요청하는 방식으로, 풀(pull) 시스템에서 효과적입니다. 🛑
- '버퍼링'은 초과 데이터를 임시 저장 공간(RAM/디스크)에 보관하며, 시스템 충돌 방지를 위해 반드시 제한을 설정해야 합니다. 📥
- '드롭'은 중요하지 않은 데이터를 버려 시스템 과부하를 줄이는 전략입니다. 🗑️
- '무시'는 생산자 속도가 일정하고 버퍼가 오버플로우되지 않을 것이 확실할 때만 적용 가능한 전략입니다. 😌
- Node.js 스트림(Streams)과 같은 최신 기술에서는
pipe()메서드를 통해 백프레셔를 자동으로 처리해줍니다. 🔗 - 수동으로 백프레셔를 처리하려면 데이터 수신 시 쓰기 가능 여부를 확인하고, 쓰기 불가능 시 읽기를 일시 중지(pause)한 후 쓰기가 완료되면 다시 시작(resume)하는 복잡한 로직이 필요합니다. 🚧





