프로젝트를 시작하면, 거의 모든 설정을 .properties 파일에 집약시킵니다.
더욱 많은 서비스를 제공하고 더욱 배포하면 할 수록, 추가하고 수정한 프로퍼티는 더욱 커다란 문제가 됩니다.
어느 서비스가 다운되거나, 서비스 로케이션이 바뀔수도 있습니다. 프로퍼티 파일에 대한 메뉴얼이 바뀌는 등, 여러가지 이슈들이 생겨날 수 있습니다.
유레카 등록과 탐색 서비스는 이러한 시나리오에 도움을 줍니다. 모든 서비스는 유레카 서버에 등록되며,
유레카 서버를 호출하여 조회되므로 위치변경을 처리해줄 필요가 없으며 내부적으로 처리됩니다.
유레카 서버 모듈 작성
필요의존
- org.springframework.cloud:spring-cloud-starter-netflix-eureka-server
- 메이븐 리포지토리 경로 : url https://repo.spring.io/milestone
- 버전관리 : org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}
- 버전 설정 : springCloudVersion 에 해당 버전 대입 후 사용 됨
plugins {
id 'org.springframework.boot' version '2.4.0'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
}
ext {
set('springCloudVersion', "2020.0.0-M6")
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
test {
useJUnitPlatform()
}
@SpringBootApplication 즉, @Configuration 클래스에 @EnableEurekaServer 작성
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
application.yml
spring:
application:
name: eureka-server
server:
port: 8761
# register-with-eureka: false < 유레카 서버는 유레카에 등록될 필요가 없음
# fetch-registry : false 동일
eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: ${EUREKA_SERVER_LIST:http://localhost:8761/eureka/}
유레카 서버동작
유레카 클라이언트 작성
기존의 API 서비스를 사용할 것 임
필요의존
- org.springframework.cloud:spring-cloud-starter-netflix-eureka-client
- 메이븐 리포지토리 경로 : url https://repo.spring.io/milestone
- 버전관리 : org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}
- 버전 설정 : springCloudVersion 에 해당 버전 대입 후 사용 됨
plugins {
id 'org.springframework.boot' version '2.4.0'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/milestone'}
}
ext {
set('springCloudVersion', '2020.0.0-M6')
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
imports{
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
test {
useJUnitPlatform()
}
@SpringBootApplication 즉, @Configuration 클래스에 @EnableDisciveryCient 작성
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class EmpoyeeProducerApplication {
public static void main(String[] args) {
SpringApplication.run(EmpoyeeProducerApplication.class, args);
}
}
application.yml
server:
port: 8080
# 만들었던 유레카의 서비스 Url 을 입력하여 등록 시킴
eureka:
client:
service-url:
defaultZone: ${EUREKA_SERVER_LIST:http://localhost:8761/eureka/}
# 어플리케이션 이름이 유레카에서 관리되는 이름이 된다.
spring:
application:
name: employee-producer
유레카 서버에 등록된 모습
'Cloud' 카테고리의 다른 글
Eureka (0) | 2020.12.07 |
---|---|
Netflix Component 설명 (0) | 2020.12.07 |
Netflix Components (0) | 2020.12.07 |
DiscoveryClient 를 이용한 API 콜 (0) | 2020.12.07 |
하나의 모듈과 의존하는 모듈관계에서 변경 전파를 적게 소비해보기 (0) | 2020.12.05 |