🌳 고급 고급
메시지 큐가 뭔가요?
쉽게 이해하기
우체통을 떠올려보세요. 편지를 직접 받는 사람에게 전달하지 않고 우체통에 넣어두면, 우체부가 나중에 가져가서 전달합니다. 메시지 큐도 마찬가지로 메시지를 즉시 처리하지 않고 큐에 넣어두면, 나중에 처리할 수 있는 시스템이 가져가서 처리합니다.
핵심 정리
서비스 간 메시지를 주고받을 때 중간에서 임시 보관하고 전달하는 시스템입니다.
자세히 알아보기
메시지 큐(Message Queue)는 서비스 간 통신에서 중간 다리 역할을 합니다. A 서비스가 B 서비스에게 작업을 요청할 때, 직접 전달하지 않고 메시지 큐에 넣어둡니다. B 서비스는 자기 속도에 맞춰 큐에서 메시지를 꺼내 처리합니다.
왜 이렇게 할까요? 예를 들어 이메일 발송 기능이 있다고 해보세요. 사용자가 회원가입을 하면 환영 이메일을 보내야 합니다. 이메일 발송은 시간이 걸리는 작업입니다. 회원가입 API가 이메일 발송까지 기다리면 응답이 느려집니다. 대신 '이메일 발송 요청'을 메시지 큐에 넣고 바로 응답을 돌려주면, 사용자는 빠르게 가입을 완료하고 이메일은 백그라운드에서 천천히 발송됩니다.
메시지 큐는 트래픽이 몰릴 때도 유용합니다. 갑자기 요청이 1000개 들어오면 서버가 감당 못 할 수 있습니다. 하지만 큐에 쌓아두고 서버가 처리할 수 있는 속도로 하나씩 꺼내 처리하면 안정적입니다.
대표적인 메시지 큐로는 RabbitMQ, Kafka, AWS SQS, Redis(간단한 큐로 사용)가 있습니다. 특히 Kafka는 대용량 메시지 처리에 특화되어 있고, RabbitMQ는 범용적으로 많이 쓰입니다.
실무에서는 주문 처리, 이메일/SMS 발송, 이미지 리사이징, 로그 수집 등 시간이 걸리거나 실패할 수 있는 작업에 메시지 큐를 씁니다. 시스템을 느슨하게 연결해서 안정성을 높이는 핵심 도구입니다.