마이크로 서비스 아키텍처를 사용한다면 많은 인스턴스로 구성된 여러 개의. 애플리케이션이 구동이 되어 서로 상호작용해야 한다. 많으면 수백 개 이상의 인스턴스가 존재하는데 이 많은 인스턴스를 ip로 식별하여 서비스를 구축하는 것은 너무 복잡한 방법이기 때문에 원하는 서비스를 구동하는 인스턴스를 찾아줄 서비스가 필요하게 된다. 이 서비스가 디스커버리 서비스이고 spring에서는 netfilx Eureka를 제공하고 있다.
구현 절차
1. Netflix eureka application 구성하기
2. 등록할 서비스 설정 구성
1. Netflix eureka application 구성하기
1-1 netflix eureka 의존성 추가
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
1-2 Eureka server enable 설정
1-3 application.yml 구성
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
2. 등록할 서비스 설정 구성
2-1 netflix eureka client 의존성 추가
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
2-2 application.yml 설정 추가
eureka:
instance:
instanceId: ${spring.application.name}:${vcap.application.instance_id:${spring.application.instance_id:${random.value}}}
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
참고
마치며
디스커버리 서비스는 Eureka 뿐만 아니라 다양하게 구현할 수 있다. DDNS 를 이용해서 도메인 기반으로 서비스 디스커버리 서비스를 구축할 수도 있고 Kubernetes와 같은 클러스터에서는 Service라는 리소스를 제공한다. 구현 방식에 따라서 Client sid discovery와 Server side discovery 방식이 존재하는 것을 공부하면서 알게 되었다. 11번가에서 쿠버네티스를 도입하면서 두 방식의 구동방식의 차이로 인한 코드 변경 요구사항을 어떻게 해결했는지 볼 수 있는 블로그 글을 발견하면서 디스커버리 서비스에 대해서 좀 더 친숙해지는 느낌을 받았다.
'spring > cloud' 카테고리의 다른 글
[spring cloud]#4 spring cloud gateway 구축하기 (0) | 2023.08.15 |
---|---|
[spring cloud]#2 spring cloud bus 를 이용하여 설정 정보 동적으로 변경하기 (0) | 2023.08.13 |
[spring cloud]#1 spring cloud config server에서 application 설정 정보 조회하기 (0) | 2023.08.08 |