Eureka(spring-cloud-discovery) 프로젝트에 적용해보기

sua·2022년 12월 17일
0

우당탕탕 개발

목록 보기
1/3

약 한달 전(11월 15일)에 졸업 프로젝트인 '채삐'(ios 앱 채식비서)를 진행하면서 디스커버리 서버인 유레카를 적용해보았던 과정을 적어보고자 한다. 유레카 서버 부분은 다른 팀원이 했지만, 한번에 적어보도록 하겠다.

프로젝트 생성

첫번째는 유레카 서버 프로젝트를 생성해야 한다.
Spring initializr 사이트에 들어가서 Gradle Project, Java 11, 스프링부트 버전은 2.7.5로 생성해준다.


유레카 서버

의존성 추가

생성한 유레카 서버 프로젝트의 build.gradle에 다음과 같이 의존성을 추가해준다.

org.springframework.cloud:spring-cloud-starter-netflix-eureka-server


설정파일 추가

다음은 application.yml 파일에 유레카 서버로서 동작할 수 있도록 코드를 작성해준다.

spring:
  application:
    name: eureka_server
server:
  port: 8761
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  server:
    waitTimeInMsWhenSyncEmpty: 0
    response-cache-update-interval-ms: 5000

management.endpoints.web.exposure.include: "*"

어노테이션으로 유레카 서버 명시

유레카 서버로 동작하게끔 메인 애플리케이션에 애노테이션인 @EnableEurekaServer를 추가해준다.


application 실행

프로젝트를 실행하고 나서, 잘 동작하는지 확인해 보기 위해 localhost:8761로 접속해 본다. 정상적으로 뜬다면 유레카 서버가 동작하고 있는 것이다!


추가 : 버전 맞추기

https://spring.io/blog/2022/05/27/spring-cloud-2021-0-3-is-available-compatible-with-spring-boot-2-7-0
안정적인 버전을 사용하기 위하여 spring cloud는 2021.03으로 낮추고
spring boot 버전은 처음 지정했던 2.7.5가 아닌 2.7.0으로 낮춰준다.



유레카 클라이언트

참고 블로그 : https://wonit.tistory.com/495

ae_SpringServer(식단 관련 서비스)에 의존성 추가

클라이언트로 동작할 서비스인 ae_SpringServer의 build.gradle에 다음 코드를 추가하여 의존성을 추가해 준다.

implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'


설정파일 추가

ae_SpringServer(식단 관련 서비스) 프로젝트에 application.yml을 추가해서 다음과 같은 코드를 작성한다. 해당 코드로 인해 유레카 클라이언트로서 동작할 수 있도록 설정된다.

spring:
  application:
    name: ae_SpringServer
server:
  port: 64412

eureka:
  instance:
    instance-id: spring-server-instance
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8761/eureka 

어노테이션으로 유레카 클라이언트 명시

ae_SpringServer 메인 애플리케이션에 @EnableDiscoveryClient 애노테이션을 추가하여 유레카 클라이언트로 동작하게끔 한다.


application 실행

프로젝트를 실행하고 나서, 잘 동작하는지 확인해 보기 위해 localhost:8761로 접속해 본다. 해당 사이트에 Application 목록에 AE_SPRINGSERVER instance가 뜬다면 유레카 클라이언트로 잘 동작되고 있는 것이다!

ae_SpringServer의 서버 로그를 확인했을 때도 정상적으로 detect됨을 알 수 있다.



ae_communityServer(커뮤니티 관련 서비스)에 의존성 추가

클라이언트로 동작할 서비스인 ae_communityServer의 build.gradle에 다음 코드를 추가하여 의존성을 추가해 준다.

implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'

설정파일 추가

ae_communityServer(커뮤니티 관련 서비스) 프로젝트에 application.yml을 추가해서 다음과 같은 코드를 작성한다. 해당 코드로 인해 유레카 클라이언트로서 동작할 수 있도록 설정된다.

spring:
  application:
    name: ae_communityServer
server:
  port: 54412

eureka:
  instance:
    instance-id: community-server-instance
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8761/eureka

어노테이션으로 유레카 클라이언트 명시

ae_SpringServer 메인 애플리케이션에 @EnableDiscoveryClient 애노테이션을 추가하여 유레카 클라이언트로 동작하게끔 한다.


application 실행

프로젝트를 실행하고 나서, 잘 동작하는지 확인해 보기 위해 localhost:8761로 접속해 본다. 해당 사이트에 Application 목록에 AE_COMMUNITYSERVER instance가 뜬다면 유레카 클라이언트로 잘 동작되고 있는 것이다! ae_communityServer의 서버 로그를 확인했을 때도 정상적으로 detect됨을 알 수 있다.


마치며

이상으로 유레카 적용을 마치도록 하겠다. 스터디로 진행할 때는 이론은 이해가 가지만 어딘가 어렵다는 생각이 들었는데 직접 진행중인 프로젝트에 스스로 적용을 하여 실습을 해보니 더 정확하게 와닿는 것 같다.

profile
가보자고

0개의 댓글