더북(TheBook)

주문 서비스는 주문 검증을 마친 후 나머지 주문 생성 프로세스(4장)를 완료합니다. 이렇게 처리하면 혹여 소비자 서비스가 내려가는 사고가 발생하더라도 주문 서비스는 계속 주문을 생성하고 클라이언트에 응답할 수 있습니다. 나중에 소비자 서비스가 재가동되면 큐에 쌓인 메시지를 처리해서 밀린 주문을 다시 검증하면 되죠.

이처럼 요청을 완전히 처리하기 전에 클라이언트에 응답하는 서비스는 클라이언트 코드가 조금 복잡한 편입니다. 가령 주문 서비스는 응답 반환 시 새로 생성된 주문 상태에 관한 최소한의 정보만 보장합니다. 주문 생성 직후 반환되므로 주문 검증이나 소비자 신용카드 승인은 아직 완료 전입니다. 따라서 클라이언트 입장에서 주문 생성 성공 여부를 알아내려면 주기적으로 폴링하거나 주문 서비스가 알림 메시지를 보내 주어야 합니다. 복잡하게 들리지만 그래도 이것이 더 나은 방법입니다. 다음 장에서 다룰 분산 트랜잭션 관리 이슈도 이 방법으로 해결할 수 있기 때문입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.