마이크로서비스 환경에선 프론트엔드 클라이언트가 여러 개의 백엔드 마이크로서비스를 호출하고, 스케일 아웃된 인스턴스에 부하를 분산시킬 필요가 있습니다. 따라서 각 마이크로서비스는 서비스 레지스트리에 자신의 메타데이터를 등록하고 (서비스 레지스트리), 레지스트리에서 각 마이크로서비스에 대한 메타데이터들을 검색할 수 있어야 합니다. (서비스 디스커버리) 이를 서비스 레지스트리/디스커버리 패턴이라고 합니다. 이를 위한 솔루션으론 Netflix Eureka, 쿠버네티스 DNS, 쿠버네티스 서비스 등이 있습니다.
라우팅 기능을 수행하기 위한 줄 (Zuul)과 로드 밸런싱 기능을 수행하기 위핸 리본 (Ribbon)이 있다고 가정합시다.
라우터는 최적 경로를 탐색하기 위해 마이크로서비스의 명칭에 해당하는 IP주소를 알아야 합니다. 그러나 이러한 라우팅 정보를 클라이언트가 가지고 있을 시 클라우드 환경에서 동적으로 변경되는 백엔드의 유동 IP 정보를 매번 전송받고 변경해야 합니다. 따라서 제 3의 공간에서 백엔드 마이크로서비스의 명칭과 유동적인 IP 정보를 매핑해서 보관할 저장소가 필요합니다. 넷플릭스 OSS의 경우 유레카 (Eureka)가 해당 기능을 담당하고 이러한 패턴을 서비스 레지스트리 패턴이라고 합니다.