메시지 큐 - 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.정리

  • 메시지 큐는 “작업을 나중에 처리한다”는 것만 책임질 뿐, 순차/병렬 여부는 오직 “워커 수와 구조 설계”에 달려 있음.
    • 메시지 큐의 본질은 “작업을 바로 하지 않고, 나중에 안전하게 처리한다”는 것.
    • 병렬이냐 직렬이냐는 “워커 수와 설계 방식”에 달려 있는 것.