여러 서비스들을 운용하기 위해서 클라우드 환경에서 인스턴스를 생성하여 구축할 것이다 이때 클라우드 환경에서 인스턴스는 AutoScaling, 생성, 삭제, 확장 등을 거치면서 IP나 Port들이 동적으로 변경될 가능성이 많다 그러면 그때마다 서비스 변경사항에 대해서 일일이 알아내고 수정하고 하기에는 수십 ~ 수백개의 서비스들을 일일이 관리하기 어려울 뿐더러 클라이언트가 원하는 정보를 얻기 위해 요청 할 서비스를 찾기에 어려움을 겪을 것이다
AutoScaling : 사용자가 정의한 주기나 이벤트에 따라 서버를 자동으로 생성하거나 삭제하는 것을 말한다 제공하는 서비스에 대해서 사용자가 몰리거나, 여유로운 시간대에 서버를 자동으로 늘리거나 줄여 비용부담을 줄이고 원할한 서비스를 제공할 수 있다
서비스 클라이언트가 Service register에서 서비스의 위치를 찾아서 호출하는 방식이다
대표적으로 Netflix OSS(Netflix Open Source Software)에서 Client-Side discovery Pattern을 제공하는 Netflix Eureka가 Service Registry 역할을 하는 OSS이다
Eureka에 대해서 알아보기 → 링크
호출 되는 서비스 앞에 로드밸런서를 넣는 방식이고, 클라이언트는 로드밸런서를 호출하면 로드밸런서가 Service Register로 부터 등록된 서비스의 위치를 전달하는 방식이다
Server-Side Discovery의 예로는 AWS Elastic Load Balancer(ELB), Kubernetes가 있다