728x90
반응형
메시지 큐(Message Queue)를 활용한 비동기 아키텍처는 시스템의 구성 요소들이 느슨하게 결합되어 독립적으로 작업을 수행할 수 있도록 하는 구조이다. 이를 통해 요청과 응답의 흐름이 비동기로 처리되며, 전체 시스템의 확장성, 유연성, 안정성을 높일 수 있다. 다음은 메시지 큐를 이용한 비동기 아키텍처의 주요 특징이다.
1. 비동기 처리
- 메시지 큐를 사용하면 프로세스 간의 작업 요청이 큐에 저장되고, 각 작업은 독립적으로 수행될 수 있다.
- 클라이언트는 작업을 큐에 넣은 후 바로 다음 작업을 수행할 수 있으며, 작업이 완료될 때까지 기다릴 필요가 없다. 이로 인해 높은 처리 속도와 반응성이 유지된다.
2. 느슨한 결합 (Loose Coupling)
- 메시지 큐는 서로 다른 서비스가 직접 통신하는 대신, 메시지를 큐에 넣어 간접적으로 통신하게 하여, 서비스 간의 의존성을 줄여준다.
- 예를 들어, 주문 처리 시스템에서 주문을 수신하는 서비스와 이를 처리하는 서비스가 독립적으로 운영될 수 있다. 이 덕분에 시스템의 한 서비스가 장애가 나더라도 다른 서비스는 정상 작동할 수 있다.
3. 확장성 (Scalability)
- 메시지 큐는 다수의 소비자(Consumer)가 큐에 쌓인 메시지를 병렬로 처리할 수 있게 한다. 이를 통해 시스템의 부하가 높아질 경우, 소비자를 추가해 쉽게 수평 확장할 수 있다.
- 예를 들어, 처리할 작업이 많아지면 소비자 프로세스를 추가하여 병목 현상을 줄이고, 작업 속도를 높일 수 있다.
4. 신뢰성 (Reliability)
- 메시지 큐는 메시지의 손실을 방지하기 위해, 메시지를 안전하게 저장하고 전달하는 역할을 한다.
- 예를 들어, RabbitMQ나 Kafka 같은 메시지 큐 시스템은 메시지의 복제, 메시지의 순서 보장, 메시지 재전송 등의 기능을 제공하여 신뢰성 높은 메시지 전달을 지원한다.
- 메시지 큐에 메시지를 넣고, 소비자가 메시지를 받아 처리한 후 ‘확인(Acknowledgement)’을 보내야 메시지가 큐에서 삭제된다. 이렇게 하면 메시지가 손실되거나 중복되지 않고 안전하게 전달된다.
5. 장애 격리 (Fault Isolation)
- 메시지 큐 아키텍처는 한 서비스의 장애가 다른 서비스로 전파되지 않도록 방지한다.
- 서비스 간의 작업이 큐를 통해 비동기로 처리되기 때문에, 한 서비스가 일시적으로 중단되더라도 큐에 메시지가 쌓여 다른 서비스에 영향을 미치지 않는다. 장애가 복구된 후, 쌓인 메시지를 순차적으로 처리하면 된다.
6. 트래픽 스파이크 완화 (Traffic Spike Handling)
- 메시지 큐는 일시적으로 발생하는 높은 트래픽(스파이크)을 완화하는 버퍼 역할을 한다.
- 트래픽이 갑자기 증가하더라도 요청을 일시적으로 큐에 저장해 처리할 수 있으며, 시스템이 요청을 순차적으로 처리하므로, 과부하에 따른 시스템 다운타임을 방지할 수 있다.
7. 작업 재시도 및 지연 처리
- 비동기 아키텍처에서는 메시지 큐를 통해 특정 작업을 일정 시간 이후에 재시도하거나, 작업을 지연 처리할 수 있다.
- 예를 들어, 이메일 전송 서비스에서 일시적 오류가 발생한 경우, 메시지 큐에 지연 시간을 설정해 재시도하면 자동으로 재전송할 수 있다. 이를 통해 시스템 안정성을 높일 수 있다.
메시지 큐 비동기 아키텍처의 활용 사례
- 이메일/SMS 전송 시스템: 회원 가입 시 인증 이메일을 큐에 등록하고, 별도의 전송 서버가 이를 비동기로 처리하여 가입 과정을 신속하게 처리할 수 있다.
- 주문 처리 시스템: 전자상거래 사이트에서 주문 정보를 메시지 큐에 담아, 주문 승인, 결제, 배송 등의 처리를 비동기적으로 수행할 수 있다.
- 로그 처리 및 분석 시스템: 사용자의 행동 데이터를 메시지 큐에 넣어 실시간 분석이나 후속 처리를 비동기로 진행하여 분석 시스템의 부하를 줄일 수 있다.
- IoT 데이터 수집: IoT 장비가 수집한 데이터를 메시지 큐에 전달하여, 서버가 수집된 데이터를 실시간으로 처리할 수 있다.
728x90
반응형
'ETC' 카테고리의 다른 글
CI/CD 프로세스 별 필요 기능 (1) | 2024.11.10 |
---|---|
비동기 메세지 Exchange 타입 (RabbitMQ) (1) | 2024.11.09 |
성능 테스트 (2) | 2024.11.07 |
사용자와 서버 사이의 과정 (0) | 2024.11.06 |
Canary Release (카나리 배포) (4) | 2024.11.05 |