
Service Discovery Server 역할을 하며 MSA구성을 위한 클라우드 오픈소스인 Netflix OSS(open source software)중 하나이다.
Spring Cloud에 많은 Netflix OSS가 통합되어 있는데 Eureka도 여기에 포함되며 이렇게 통합된 것들을 Spring Cloud Netflix라고 한다. Spring Boot로 쉽게 구축이 가능하다.

Spring Cloud란?
Spring Boot를 기반으로 MSA구축에 특화된 라이브러리들의 집합
Spring Cloud Netflix의 종류
Eureka - Service Discovery
Ribbon - Client side Load Balancer
Hystrix - Circuit Breaker
Zuul - Gateway
현재는 Eureka를 제외한 나머지 모듈이 maintenance 모드로 전환되었다.
MSA와 같은 분산 환경은 IP주소와 포트를 이용하여 호출하는 방식으로 이루어 지는데 클라우드 환경이 되면서 서비스가 오토 스케일링에 의해 생성, 삭제, 확장 등을 거치면서 서비스의 IP혹은 포트가 동적으로 변경되는 일이 잦아졌다.
그래서 클라이언트가 서비스를 호출할 때 서비스의 위치(IP, 포트)를 알아낼 수 있는 기능이 필요한데 이것을 Service Discovery라고 한다.
서비스의 인스턴스가 생성될 때 서비스에 대한 주소를 Service Registry 에 등록한다. 그리고 만약 클라이언트가 해당 서비스를 찾을 때 Service Registry 가 서비스의 정보를 알려주고 그 주소로 서비스를 호출한다.
기능을 구현하는 방식에는 크게 Client Side Discovery 방식과 Server Side Discovery 방식이 있다.
서비스 클라이언트가 Service Registry에서 서비스의 위치를 찾아서 호출하는 방식이다.
대표적인 예로 Netflix OSS의 Eureka 가 있다.
호출되는 서비스 앞에 Load Balancer를 넣는 방식으로 서비스 클라이언트가 Load Balancer를 호출하면 Load Balancer가 Service Registry로 서비스의 위치를 물어보고 전달받은 정보를 라우팅한다.
대표적인 예로 AWS Elastic Load Balancer(ELB), Kubernetes가 있다.
(출처 : https://www.slideshare.net/balladofgale/spring-cloud-workshop)
(출처 : https://wildeveloperetrain.tistory.com/202)
(출처 : https://bcho.tistory.com/1252)
(출처 : https://www.nginx.com/blog/service-discovery-in-a-microservices-architecture/)