Netflix 회사의 자사 클라우드 기술들을 Spring 재단에 기부를해서 사용할 수 있는 기술이다.
분산 시스템에서 마이크로서비스의 서비스 디스커버리(서비스 발견)와 등록을 제공하는 도구이다.
Netflix OSS(Open Source Software) 스택의 구성 요소 중 하나로, 특히 마이크로서비스 아키텍처에서 서비스 인스턴스를 동적으로 등록하고 발견하는 기능을 제공을 한다.

클라이언트가 자신이 요구하는 정보를 로드 밸런서, API Gatway에 요청을 전달하게 되면, 해당 요청 정보가 Discovery-Service에 전달이 되고, 이후 다시 Discovery-Service가 요청에 맞는 서버로 가면 원하는 정보를 받을 수 있게 안내해준다.
그렇게 안내받은 내용을 토대로 그에 맞는 서버로 요청을 하게된다.
Eureka Server는 모든 클라이언트 어플리케이션의 위치와 상태를 등록하는 레지스트리 역활을 한다.
다른 마이크로 서비스 어플리케이션이 필요하는 서비스를 찾을 수 있도록 서비스 정보를 제공하는 서비스 디스커버리service discovery가 있다.
그리고 주기적으로 각 서비스 인스턴스의 상태를 확인하고, 응답없는 인스턴스를 제거를 한다.

클라이언트가 서비스를 호출을 할 때 서비스의 위치와 상태 등 정보를 저장하고 관리를 한다.
서버를 통해 필요한 서비스 인스턴스 목록을 조회하여 서비스 간의 통신이 가능하게 만들어 준다.
Servic Discovery는 크게 Client-side Discovery 방식과 Server-side Discovery으로 구분을 할 수 있다.

클라이언트가 직접 서비스 디스커버리를 수행하는 방식이다.
클라이언트는 Eureka Server와 통신을 통해 서비스 인스턴스 목록을 가져와 로컬에 캐시를 한다.
그리고 클라이언트가 서비스 인스턴스 목록을 기반으로 로드 밸런싱을 수행한다.
이러한 방식의 장점으로는
단점으로는

해당 방식은 로드 밸런서가 서비스 디스커버리를 수행을 한다.
클라이언트는 로드밸런스로 서비스 요청을 전송하면, 로드밸런서가 서비스 네트워크 주소를 확인한 후 사용 가능한 서비스로의 라우팅을 한다.
이러한 방식의 장점
단점
클라이언트는 서버에 자신의 메타데이터(호스트, 포트, 상태 등)을 등록을 한다.
MSA의 핵심 구성으로, 서비스의 동적 등록과 발견으로 분산 시스템의 확장성과 유연성을 극대화를 해준다.
Eureka Server는 중앙 레지스트리 역활을 담당하며, Client는 어플리케이션의 위치 정보를 서버에 등록을 하고, 필요한 다른 서비스의 위치 정보를 확인을 한다. 서비스 디스커버리는 클라이언트 어플리케이션이 동적으로 다른 서비스 인스턴스를 찾고 통신이 가능하게 해주며, 시스템의 복잡성을 줄이고 가용성을 높여준다.