데이터 복제
서비스 요청 처리에 필요한 데이터의 레플리카를 유지하는 방법입니다. 데이터 레플리카는 데이터를 소유한 서비스가 발행하는 이벤트를 구독해서 최신 데이터를 유지할 수 있습니다. 가령 소비자/음식점 서비스가 소유한 데이터 레플리카를 주문 서비스가 이미 갖고 있다면 주문 서비스가 주문 생성을 요청할 때 굳이 소비자/음식점 서비스와 상호 작용할 필요가 없겠죠(그림 3-17).
소비자/음식점 서비스는 각자 데이터가 변경될 때마다 이벤트를 발행하고, 주문 서비스는 이 이벤트를 구독하여 자기 편 레플리카를 업데이트하는 것입니다.
데이터 복제는 경우에 따라 유용합니다. 예를 들어 주문 서비스가 음식점 서비스에서 수신한 데이터를 복제해서 메뉴 항목을 검증하고 단가를 매길 때가 그렇겠죠(5장). 물론 대용량 데이터의 레플리카를 만드는 것은 대단히 비효율적입니다. 가령 소비자 서비스에 있는 엄청난 양의 소비자 데이터를 주문 서비스에 그대로 복제하는 것은 실용적이지 않습니다. 다른 서비스가 소유한 데이터를 업데이트하는 문제도 데이터 복제만으로는 해결되지 않습니다.
▲ 그림 3-17 주문 서비스는 소비자/음식점 데이터의 레플리카를 갖고 있으므로 자기 완비형이다
한 가지 해결 방법은 자신의 클라이언트에 응답하기 전까지 다른 서비스와의 상호 작용을 지연시키는 것입니다.