분산 아키텍처에서는 호스트 이름과 머신이 위치한 IP 주소를 알아야 한다. 이 개념은 분산 컴퓨팅 초창기 때부터 존재했고 공식적으로 ‘서비스 디스커버리(service discovery)’로 알려져 있다. 서비스 디스커버리는 애플리케이션이 사용하는 모든 원격 서비스의 주소가 포함된 프로퍼티 파일을 관리하는 것처럼 단순하거나 UDDI(Universal Description, Discovery, and Integration)1 저장소처럼 정형화된 것일 수 있다. 서비스 디스커버리는 다음 두 가지 핵심적인 이유로 마이크로서비스와 클라우드 기반 애플리케이션에 매우 중요하다.
• 수평 확장(horizontal scaling or scale out): 대개 이 패턴은 애플리케이션 아키텍처에서 클라우드 서비스 내 더 많은 서비스 인스턴스 및 컨테이너를 추가하는 것과 같은 조정을 요구한다.
• 회복성(resiliency): 이 패턴은 비즈니스에 영향을 주지 않고 아키텍처와 서비스 내부의 문제로 충격을 흡수하는 능력을 의미한다. 마이크로서비스 아키텍처에서는 한 서비스의 문제가 전체로 확산되어 서비스 소비자에게 전파되는 것을 막는데, 매우 신중해야 한다.
첫째, 서비스 디스커버리를 사용하면 애플리케이션 팀은 해당 환경에서 실행 중인 서비스 인스턴스의 수를 빠르게 수평 확장할 수 있다는 장점이 있다. 서비스 소비자에게 서비스의 물리적 위치는 추상화되어 있다. 즉, 서비스 소비자는 실제 서비스 인스턴스의 물리적 위치를 알지 못하기 때문에 새 서비스 인스턴스는 가용 서비스 풀(pool)에 추가되거나 제거될 수 있다.