Service Registry - Eureka
Eureka는 MSA의 장점 중 하나인 동적인 서비스 증설 및 축소를 위하여 필수적으로 필요한 서비스의 자가 등록, 탐색 및 부하 분산에 사용될 수 있는 라이브러리이다. 마이크로 서비스들의 정보를 레지스트리 서버에 등록할 수 있도록 기능을 제공해 준다.
Eureka는 Eureka 서버와 클라이언트로 구성된다.
- Eureka 서버는 Eureka 클라이언트에 해당하는 마이크로 서비스들의 상태 정보가 등록되어 있는 레지스트리 서버이다.
- Eureka 클래이언트는 서비스가 시작될 때 Eureka 서버에 자신의 정보를 등록하고 이후 주기적으로 자신의 가용 상태(health check)를 알리며, 일정 횟수 이상의 ping이 확인되지 않으면 Eureka 서버에서 해당 서비스를 제외시킨다.
또한 Eureka는 Ribbon(Spring Cloud LoadBalancer)과 결합하여 사용할 수 있으며 이를 통해 서버 목록을 자동으로 관리 및 갱신한다.
Eureka 서버 서비스 작성
EurekaServerApplication.java 작성
EurekaServerApplication 클래스에 @SpringBootApplication과 @EnableEurekaServer 어노테이션을 추가한다.
EurekaServer의 Application.properties 파일 작성
Eureka 서버의 포트와 서버이름을 설정한다.
//application.properties
server.port=8761
spring.application.name=EurekaServer
Eureka 서버 구동 및 테스트
EurekaServerApplication.java 파일을 java application으로 실행하고 아래의 URL로 접속한다
http://localhost:8761/
Eureka 서버가 정상적으로 작동하면 위와 같이 Eureka 서버의 현황을 볼 수 있는 대쉬보드 화면을 만날 수 있다.
또한, 등록된 서비스와 현황을 조회할 수도 있다.
Eureka Client 서비스 작성
기존의 Catalog 서비스와 Customer 서비스를 Eureka Client로 적용하여 Eureka 서버에 서비스를 등록할 수 있도록 작성한다.
Catalog 서비스에 Eureka Client 적용
1. Catalogs 서비스에 Eureka Client 라이브러리를 적용한다.
//build.gradle
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
2. CatalogsApplication.java에 @EnableDiscoveryClient를 추가한다.
3. application.properties 파일을 아래와 같이 수정한다.
로드밸런서의 url 변경은 Eureka 적용으로 불필요하여 주석처리한다.
Customer 서비스에 Eureka Client 적용
1. Customers 서비스에 Eureka Client 라이브러리 적용
//build.gradle
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:2022.0.3"
}
}
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
2. CustomersApplication.java에 @EnableDiscoveryClient를 추가한다
3. application.properties 파일을 아래와 같이 수정한다.
//application.properties
eureka.instance.prefer-ip-address=true
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
4. Eureka Server에 모든 서비스가 등록되어 있는지 확인한다.
'DEV > MSA' 카테고리의 다른 글
MSA 개발 가이드(7) - Spring Cloud Config Server/Client (0) | 2023.06.26 |
---|---|
MSA 개발 가이드(6) - Spring Cloud Gateway(Zuul) (0) | 2023.06.19 |
MSA 개발 가이드(4) - Resilience4j(Circuit Breaker) (0) | 2023.06.19 |
MSA 개발 가이드(3) - 마이크로 서비스 아키텍처 구현해보기 (0) | 2023.06.16 |
MSA 개발 가이드(2) - Spring Cloud 기반 마이크로서비스(MSA) (0) | 2023.06.16 |