계기
- 실무에서 B2B 환경을 많아 개발하면서 비동기 작업이나 트래픽이 많이 다루지 않았습니다.
- 최근 프로젝트에서는 비동기 프로세스들이 많게 되었는데, 단일 Application에서는 문제없이 동작하지만 클러스터링을 하였을 때 각 노드 또는 파드에서 동시성 이슈 및 데이터 무결성에 문제가 발생할 것이 예상되었습니다.
- 비동기 프로세스들이 단계를 가지고 처리되다 보니 코드에서 결합도가 높아지고 의존성이 높아지는 문제가 발생하였습니다.
- 위 문제들을 해결하기 위해서 메세지 또는 이벤트 기반의 Application으로 변경을 고려하고 있습니다.
- 따라서 메세지 브로커의 역할을 할 수 있는 Kafka, RabbitMQ 등 들어봤지만 정확히 모르기에 공부를 시작하였습니다.
간단 비교
Message Queue | Event Queue | |
용도 | 메세지를 시스템이나 서비스에 전달하는데 사용됩니다. | 이벤트나 상태 변경을 다른 시스템 또는 서비스에 전달하는데 사용됩니다. |
저장방식 | 메세지를 순차적으로 저장합니다. | 이벤트를 순차적으로 저장합니다. |
처리방식 | 큐에 입력된 메세지를 순차적으로 처리합니다. | 큐에 입력된 이벤트를 순차적으로 처리합니다. |
처리결과 | 일반적으로 소비 후에 큐에서 제거되지만, 필요에 따라 지속적으로 저장할 수도 있습니다 | 일반적으로 큐에서 제거되며, 이벤트의 처리 여부는 해당 시스템의 상태나 로직에 따라 다를 수 있습니다. |
목적 | 시스템 간의 결합도를 낮추고, 비동기 통신을 가능하게 하는 것입니다. | 이벤트 기반 아키텍처에서의 비동기 이벤트 처리를 가능하게 하는 것이며, 이를 통해 시스템 간의 결합도를 낮추는 역할을 합니다. |
플랫폼 | RabbitMQ | Kafka |
'Queue System' 카테고리의 다른 글
RabbitMQ (4) (0) | 2024.02.17 |
---|---|
RabbitMQ (3) (0) | 2024.01.24 |
RabbitMQ (2) (0) | 2024.01.23 |
RabbitMQ (1) (0) | 2024.01.22 |