통신 패턴
마이크로서비스 아키텍처로 구축한 애플리케이션은 기본적으로 분산 시스템이기 때문에 프로세스 간 통신(IPC)이 아주 중요합니다. 그러므로 서비스 상호 간, 그리고 외부 세계와 어떻게 통신하면 좋을지 아키텍처/설계 관점에서 다양한 의사 결정을 해야 합니다. 통신 패턴은 크게 다섯 그룹으로 정리할 수 있습니다(그림 1-12).
• 통신 스타일: 어떤 종류의 IPC를 사용하는가?
• 디스커버리(discovery, 발견/검색): 서비스 클라이언트는 (이를테면 HTTP 요청을 할 때) 서비스 인스턴스의 IP 주소를 어떻게 가져오는가?
• 신뢰성: 서비스 불능 시 서비스 간 통신의 신뢰성은 어떻게 보장되는가?
• 트랜잭셔널 메시징(transactional messaging)12: 비즈니스 데이터를 업데이트하는 DB 트랜잭션에 메시지를 송신하고 이벤트를 발행하는 행위를 어떻게 통합하는가?
• 외부 API: 애플리케이션 클라이언트는 서비스와 어떻게 통신하는가?
▲ 그림 1-12 다섯 통신 패턴 그룹
통신 스타일, 디스커버리, 신뢰성, 트랜잭셔널 메시징은 3장에서, 외부 API는 8장에서 각각 설명합니다.
12 ‘트랜잭셔널(transactional)’은 ‘트랜잭션이 개시된 상태에서 그 일부로 참여한’, 즉 ‘트랜잭션이 걸려 있는’ 의미를 가진 용어로 본 역서에서는 원어를 그대로 음차하여 옮깁니다.