메시지 큐는 메시지의 무손실을 보장하는 비동기 통신을 지원하는 컴포넌트이다. 생산자, 혹은 발행자가 메시지를 생성해서 메시지 큐에 발행하면, 구독자, 혹은 소비자가 그에 맞는 동작을 수행한다.
이를 사용하면 서비스와 서버 간의 결합이 느슨해져서 확장성이 보장되어야 하는 애플리케이션을 구성하기 좋다. 생산자는 소비자 프로세스가 다운되어 있어도 메시지를 발행할 수 있고 소비자는 생산자 서비스가 죽어 있어도 메시지를 수신할 수 있다. 카프카를 개발한 링크드인의 시스템 구조를 통해 이벤트의 흐름 제어를 한 곳으로 모아서 서비스 확장을 더욱 용이하게 만든 것을 볼 수 있다.
특히 시간이 오래 걸리는 프로세스를 비동기적으로 처리할 수 있다는 장점이 있다. 예를 들어 이미지의 보정 작업을 생각할 수 있다. 사진 보정 작업을 메시지 큐에 넣으면 사진 보정 작업 프로세스들이 이 작업을 비동기적으로 메시지 큐에서 꺼내서 수행한다.
서비스 규모가 커지면 로그, 메트릭, 자동화 같은 것들에 필수적으로 투자해야 한다.
메시지 큐와 로그, 모니터링, 메트릭, 자동화 등을 위한 장치를 추가한 설계
본 포스트는 알렉스 쉬 저자의 가상 면접 사례로 배우는 대규모 시스템 설계 기초를 기반으로 스터디하며 정리한 내용들입니다.
메시지 큐 참고