이 방식은 다음 두 패턴을 접목시킨 것입니다.
• 서드파티 등록 패턴: 서비스가 자신을 서비스 레지스트리에 등록하는 것이 아니라, 배포 플랫폼의 일부인 등록기(registrar, 레지스트라)라는 서드파티(third-party)가 이 작업을 대행합니다.
• 서버 쪽 디스커버리 패턴: 클라이언트가 서비스 레지스트리를 질의하지 않고 DNS명을 요청합니다. 그러면 서비스 레지스트리를 쿼리하고 요청을 부하 분산하는 요청 라우터로 해석됩니다.
Note≡ 패턴: 서드파티 등록
서드파티가 서비스 인스턴스를 서비스 레지스트리에 자동 등록한다.28
Note≡ 패턴: 서버 쪽 디스커버리
클라이언트가 서비스 디스커버리를 담당한 라우터에 요청한다.29
플랫폼에서 기본 제공된 서비스 디스커버리를 사용하면 서비스 디스커버리를 모두 배포 플랫폼이 알아서 처리하므로 아주 편리합니다. 서비스 디스커버리 관련 코드는 클라이언트/서비스 어느 쪽에도 없기 때문에 서비스 개발 언어와 상관없이 모든 클라이언트/서비스에 곧바로 적용할 수 있습니다.
물론 해당 플랫폼으로 배포한 서비스 디스커버리만 지원되는 단점도 있습니다. 가령 쿠버네티스에 기반한 디스커버리는 오직 쿠버네티스로 배포한 서비스에만 적용됩니다. 이런 한계점은 있지만 필자는 가능한 한 플랫폼에서 제공되는 서비스 디스커버리를 사용할 것을 권장합니다.