반응형
Spring Cloud Config 다루기
스프링 부트 프로젝트에서 설정 파일은 주로 application.yml에서 관리한다.
MSA에서 여러 서비스들마다 각각 설정 파일들을 관리하려면 번거롭다
→ 한 곳에 설정 파일만 관리한다면, 여러 서비스 서버에서 바꾸는 게 아니라 하나의 서버에서 변경할 수 있음
또한, 변경 사항이 생기면 설정 파일을 수정하고 서버를 재기동 해야하는 문제도 발생한다.
Cloud Config 특징
- spring cloud config서버는 분산 시스템에서 설정 정보를 제공해 주는 중앙 서버이다. 즉 설정파일들을 모아놓고 각 클라이언트에 맞는 설정 파일들을 제공한다.
- 재배포하지 않고 동적으로 설정 파일들을 변경할 수 있다.
- 여러 서비스들은 config-server에서 설정 파일들을 조회해간다.
- config server는 로컬 파일 또는 git 저장소에 저장된 설정 파일을 관리한다.
application.yml 설정 파일 우선순위
- config server의 설정 파일 > 각 서비스 프로젝트의 설정 파일보다 우선순위가 높다.
- 또한, 구체적인 설정 파일이 우선순위가 높다. (profile이 붙은 파일)
ex) 프로젝트의 이름은 api-service, 환경은(profile) dev 라고 가정
(Member)프로젝트 내의 application.yml
Config Server의 application.yml
(Member)프로젝트 내의 application-dev.yml
Config Server의 application-dev.yml
Config Server의 api-service.yml
Config Server의 api-service-dev.yml
Config Server 설정
의존성
dependencies {
implementation 'org.springframework.cloud:spring-cloud-config-server'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
활성화
@EnableConfigServer // Config Server 활성화
@SpringBootApplication
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
1. 로컬 설정 파일 사용
기본 application.yml
server:
port: 8888
spring:
profiles:
active: native
application:
name: config-server
cloud:
config:
server:
native:
search-locations: classpath:/configurations
설정 파일 생성
# application.yml
test:
name: native
message: application properties
# ======================================= #
# application-dev.yml
test:
name: native
message: application dev properties
# ======================================= #
# api-service.yml
test:
name: native
message: api properties
# ======================================= #
# api-service-dev.yml
test:
name: native
message: api-dev properties
# ======================================= #
# api-service-prod.yml
test:
name: native
message: api-prod properties
결과
- 구체적인 프로젝트 이름과 환경이 설정된 “api-service-dev.yml” 파일을 가장 먼저 읽는다.
- 2 번째로는 환경이 dev인 “application-dev.yml”을 읽는다.
- 3 번째로는 프로젝트 이름이 “api-service.yml”을 읽는다.
- 4 번째로는 config server의 기본 파일인 “application.yml”을 읽는다. (config client가 없는 상태임)
2. 로컬 Git 사용
Public Repository Example
server:
port: 8888
spring:
profiles:
active: native
application:
name: config-server
cloud:
config:
server:
git:
uri: "git URL"
search-paths: "**" # Github 하위 path
default-label: main # branch 지정
반응형
'Spring Framework > Spring' 카테고리의 다른 글
[Spring] Spring으로 HTML 파일 PDF 변환, 다운로드하기 - 한글 깨짐 문제, Thymeleaf, PDF 변환 해결 (0) | 2024.07.30 |
---|---|
[Spring] 스프링 reactive-stream, 비동기 통신 이해하기 (0) | 2024.06.23 |
[Spring Cloud] Eureka Server, Discovery Service 이해하기 (0) | 2024.03.31 |
[Spring] Spring CORS 설정 & 이슈 해결 및 웹 애플리케이션 통신 이해하기 (0) | 2024.02.24 |
[SPRING] Spring 객체지향 설계 solid 원칙 이해하기 - Spring Container, IoC, DI (1) | 2024.02.07 |