본문 바로가기

spring/cloud

[spring cloud]#3 Netflix Eureka 로 디스커버리 서비스 구축하기

마이크로 서비스 아키텍처를 사용한다면 많은 인스턴스로 구성된 여러 개의. 애플리케이션이 구동이 되어 서로 상호작용해야 한다. 많으면 수백 개 이상의 인스턴스가 존재하는데 이 많은 인스턴스를 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/

 

참고

 

Spring Cloud Netflix

This project provides Netflix OSS integrations for Spring Boot apps through autoconfiguration and binding to the Spring Environment and other Spring programming model idioms. With a few simple annotations you can quickly enable and configure the common pat

docs.spring.io

 

 

마치며

디스커버리 서비스는 Eureka 뿐만 아니라 다양하게 구현할 수 있다. DDNS 를 이용해서 도메인 기반으로 서비스 디스커버리 서비스를 구축할 수도 있고 Kubernetes와 같은 클러스터에서는 Service라는 리소스를 제공한다. 구현 방식에 따라서 Client sid discovery와 Server side discovery 방식이 존재하는 것을 공부하면서 알게 되었다. 11번가에서 쿠버네티스를 도입하면서 두 방식의 구동방식의 차이로 인한 코드 변경 요구사항을 어떻게 해결했는지 볼 수 있는 블로그 글을 발견하면서 디스커버리 서비스에 대해서 좀 더 친숙해지는 느낌을 받았다.

 

Service Discovery 통합을 위한 Kubernetes Operator 구현 - Eurekube Operator | 11번가 TechBlog — 11번가 기술블로

안녕하세요. 저는 11번가 Core Platform 개발팀에서 MSA 플랫폼 - Vine 을 개발하고 있는 안희석입니다. 이번 글에서는 11번가에서 쿠버네티스 플랫폼을 도입하면서 기존에 Spring Cloud 로 이루어진 Vine Pla

11st-tech.github.io

 

 

Custom Resources

Custom resources are extensions of the Kubernetes API. This page discusses when to add a custom resource to your Kubernetes cluster and when to use a standalone service. It describes the two methods for adding custom resources and how to choose between the

kubernetes.io