비동기 상호 작용 스타일
모든 트랜잭션은 이 장 앞부분에서 설명한 비동기 상호 작용 스타일로 처리하는 것이 가장 좋습니다. 가령 클라이언트가 비동기 요청/응답 상호 작용을 통해 주문을 생성했다고 합시다. 클라이언트는 요청 메시지를 주문 서비스에 전송하여 주문을 생성합니다.
그러면 주문 서비스는 다른 서비스와 메시지를 비동기 방식으로 교환하고, 최종적으로(eventually) 클라이언트에 응답 메시지를 전송합니다(그림 3-16).
▲ 그림 3-16 서비스가 동기 호출 대신 비동기 메시징을 통해 서로 통신하면 가용성이 향상된다
클라이언트/서비스는 메시징 채널을 통해 메시지를 전송해서 서로 비동기 통신합니다. 이런 상호 작용 과정에서는 어느 쪽도 응답을 대기하며 블로킹되지 않습니다.
이런 아키텍처는 메시지가 소비되는 시점까지 메시지 브로커가 메시지를 버퍼링하기 때문에 매우 탄력적입니다. 그러나 REST 같은 동기 프로토콜을 사용하기 때문에 요청 즉시 응답해야 하는 외부 API를 가진 서비스도 있을 것입니다.
서비스에 동기 API가 있는 경우 데이터를 복제하면 가용성을 높일 수 있습니다.