메시징 패턴 분리 - AWS 규범적 지침

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

메시징 패턴 분리

이 패턴은 비동기 폴링 모델을 사용하여 마이크로서비스 간의 비동기 통신을 제공합니다. 백엔드 시스템은 호출을 받으면 요청 식별자로 즉시 응답한 다음 요청을 비동기적으로 처리합니다. 느슨하게 연결된 아키텍처를 구축하여 동기 통신, 지연 시간 및 입/출력 작업 (IO)으로 인한 병목 현상을 방지할 수 있습니다. 패턴의 사용 사례에서 Amazon Simple Queue Service(Amazon SQS)와 Lamda는 서로 다른 마이크로서비스 간의 비동기 통신을 구현하는 데 사용됩니다.

다음과 같은 경우에는 이 패턴을 사용하는 것이 좋습니다:

  • 느슨하게 결합된 아키텍처를 만들고 싶습니다.

  • 모든 작업을 단일 트랜잭션으로 완료할 필요는 없으며 일부 작업은 비동기식일 수 있습니다.

  • 다운스트림 시스템은 들어오는 초당 트랜잭션 (TPS)을 처리할 수 없습니다. 메시지는 대기열에 기록되어 리소스 가용성에 따라 처리될 수 있습니다.

이 패턴의 단점은 비즈니스 트랜잭션 작업이 동기식이라는 점입니다. 호출 시스템이 응답을 받더라도 트랜잭션의 일부는 여전히 다운스트림 시스템에서 계속 처리될 수 있습니다.

중요

이 패턴은 파이어 앤 포겟 모델에 더 적합하므로 이 서비스를 호출하는 클라이언트는 요청 ID를 사용하여 실제 서비스를 폴링하여 트랜잭션 상태를 가져와야 합니다.

사용 사례

이 사용 사례의 경우 보험 시스템에는 월별 결제가 이루어진 후 고객 거래 세부 정보로 자동 업데이트되는 판매 데이터베이스가 있습니다. 다음 그림은 메시징 패턴 분리를 사용하여 이 시스템을 구축하는 방법을 보여줍니다.

메시징 패턴 분리

워크플로우는 다음 단계로 구성됩니다:

  1. 프론트엔드 애플리케이션은 사용자가 월별 결제를 완료한 후 결제 정보를 사용하여 API 게이트웨이를 호출합니다.

  2. API 게이트웨이는 Amazon Aurora 데이터베이스에 결제 정보를 저장하고, 트랜잭션 세부 정보를 ‘판매’ Amazon SQS에 메시지에 기록하고, 호출 시스템에 성공 메시지로 응답하는 ‘고객’ Lambda 함수를 실행합니다.

  3. ‘판매’ Lambda 함수는 SQS 메시지에서 거래 세부 정보를 가져와 판매 데이터를 업데이트합니다. 판매 데이터베이스를 업데이트하기 위한 실패 및 재시도 로직은 ‘판매’ Lambda 함수의 일부로 통합됩니다.