· 3분 읽기
Last updated on

MSA 개발 가이드(5) - Spring Cloud Eureka(Service Registry)


MSA

목록 보기숨기기8/13
  1. 카프카(Apache Kafka)란 무엇인가
  2. Kafka 용어 정리 (pub/sub, 토픽, 파티션, 브로커)
  3. API Gateway의 이해
  4. MSA 개발 가이드(1) - MSA란 무엇인가
  5. MSA 개발 가이드(2) - Spring Cloud 기반 마이크로서비스(MSA)
  6. MSA 개발 가이드(3) - 마이크로 서비스 아키텍처 구현해보기
  7. MSA 개발 가이드(4) - Resilience4j(Circuit Breaker)
  8. MSA 개발 가이드(5) - Spring Cloud Eureka(Service Registry)
  9. MSA 개발 가이드(6) - Spring Cloud Gateway(Zuul)
  10. MSA 개발 가이드(7) - Spring Cloud Config Server/Client
  11. MSA 개발 가이드(8) - Spring Cloud Bus(RabbitMQ)
  12. MSA 개발 가이드(9) - 마이크로 서비스 배포(Docker)
  13. 결제 흐름 안의 물류 API 호출을 걷어내기 – 같은 트랜잭션 아웃박스 + 배치 릴레이 + Kafka 로 OMS 에 주문 넘기기

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에 모든 서비스가 등록되어 있는지 확인한다.

댓글

댓글을 불러오는 중…