메시지 큐 - 100-hours-a-week/5-yeosa-wiki GitHub Wiki
1. 개념 요약
- 큐(Queue): FIFO(First In First Out) 방식의 데이터 구조
- 메시지 큐: 분산 시스템이나 비동기 처리에서 데이터를 임시로 저장하고 전달하는 시스템 (예: RabbitMQ, Kafka, Redis Streams, AWS SQS 등)
2. 언제 사용하나?
a. 작업을 비동기 처리하고 싶을 때
- 예: 사용자가 이미지를 업로드하면, 바로 응답을 주고 이후에 썸네일 생성/AI 태깅은 큐에 넣어 백그라운드에서 처리
b. 서비스 간 통신을 느슨하게 결합하고 싶을 때
- 마이크로서비스 구조에서 서비스 간 직접 호출 대신 큐를 통해 간접 통신
c. 과부하를 방지하고 싶을 때
- 갑작스러운 요청 폭주 시에도 큐에 쌓아두고 천천히 처리
d. 장기 작업을 처리할 때
- 예: 영상 변환, 대용량 데이터 분석 등 시간이 오래 걸리는 작업
3. 메시지 큐의 이점
이점 | 설명 |
---|---|
비동기 처리 | 요청-응답과 작업 처리를 분리해 사용자 경험 개선 |
시스템 분리 | 프로듀서와 컨슈머가 독립적으로 운영 가능 (loose coupling) |
확장성 | 컨슈머 수를 늘려 처리량 수평 확장 가능 |
장애 격리 | 한쪽 시스템 장애 시에도 메시지는 큐에 저장되어 유실 방지 |
작업 재시도 | 실패한 메시지는 다시 시도 가능 (dead-letter queue 등으로) |
4.정리
- 메시지 큐는 “작업을 나중에 처리한다”는 것만 책임질 뿐,
순차/병렬 여부는 오직 “워커 수와 구조 설계”에 달려 있음.
- 메시지 큐의 본질은 “작업을 바로 하지 않고, 나중에 안전하게 처리한다”는 것.
- 병렬이냐 직렬이냐는 “워커 수와 설계 방식”에 달려 있는 것.