2024. 9. 23. 10:07ㆍ스프링 클라우드
2024/09/20
※ Spring Cloud Config에 대해 알아보자.
▶ Spring Cloud Config 개요
● Spring Cloud Config란?
○ Spring Cloud Config는 분산 시스템 환경에서 중앙 집중식 구성 관리를 제공하는 프레임워크다.
○ 애플리케이션의 설정을 중앙에서 관리하고, 변경 사항을 실시간으로 반영할 수 있다.
○ Git, 파일 시스템, JDBC 등 다양한 저장소를 지원한다.
● 주요 기능
○ 중앙 집중식 구성 관리 : 모든 마이크로서비스의 설정을 중앙에서 관리한다.
○ 환경별 구성 : 개발, 테스트, 운영 등 환경별로 구성을 분리하여 관리할 수 있다.
○ 실시간 구성 변경 : 설정 변경 시 애플리케이션을 재시작하지 않고도 실시간으로 반영할 수 있다.
▶ Spring Cloud Config 서버 설정
● Config 서버 구성
○ Config 서버는 설정 파일을 저장하고 제공하는 역할을 한다.
○ build.gradle 파일에 필요한 의존성을 추가한다.
dependencies {
implementation 'org.springframework.cloud:spring-cloud-config-server'
implementation 'org.springframework.boot:spring-boot-starter-web'
}
● 서버 애플리케이션 설정
○ Spring Boot 애플리케이션에서 Config 서버를 설정한다.
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
● 설정 파일 구성
○ application.yml 파일에서 Config 서버의 설정을 정의한다.
server:
port: 8888
spring:
cloud:
config:
server:
git:
uri: https://github.com/my-config-repo/config-repo
clone-on-start: true
▶ Spring Cloud Config 클라이언트 설정
● 클라이언트 구성
○ Config 클라이언트는 Config 서버에서 설정을 받아오는 역할을 한다.
○ build.gradle 파일에 필요한 의존성을 추가한다.
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-config'
}
● 설정 파일 구성
○ 클라이언트의 `application.yml` 파일에서 Config 서버의 설정을 정의한다.
spring:
application:
name: my-config-client
cloud:
config:
discovery:
enabled: true
service-id: config-server
eureka:
client:
service-url:
defaultZone: http://localhost:19090/eureka/
▶ 환경별 구성 관리
● 환경별 설정 파일
○ Config 서버는 환경별로 다른 설정 파일을 제공할 수 있다.
○ 예를 들어, application-dev.yml, application-prod.yml 파일을 Git 저장소에 저장하여 환경별 설정을 관리한다.
● 프로필 사용
○ Spring Boot 애플리케이션에서 프로필을 사용하여 환경을 구분할 수 있다 :
spring:
profiles:
active: dev
▶ 실시간 구성 변경
❗ 실시간 구성 변경을 반영하는 방법에는 여러 가지가 있다.
1) Spring Cloud Bus를 사용하는 방법, 2) 수동으로 /actuator/refresh 엔드포인트를 호출하는 방법,
3) Spring Boot DevTools를 사용하는 방법, 그리고 4) Git 저장소를 사용하는 방법이 있다.
각 방법은 상황에 따라 적절히 선택하여 사용할 수 있다. Spring Cloud Bus는 메시징 시스템을 통해 실시간으로 설정 변경 사항을 전파하는 데 매우 유용하며, Git 저장소를 사용하면 설정 파일의 버전 관리를 쉽게 할 수 있다. Spring Boot DevTools는 주로 개발 환경에서 유용하게 사용된다.
● Spring Clouds Bus
○ Spring Cloud Bus를 사용하면 설정 변경 사항을 실시간으로 클라이언트 애플리케이션에 반영할 수 있다.
○ 이를 위해서는 메시징 시스템(RabbitMQ 또는 Kafka 등)을 사용하여 변경 사항을 전파해야 한다.
● 수동 구성 갱신
○ /actuator/refresh 엔드포인트 사용
▪ Spring Cloud Bus를 사용하지 않는 경우, 클라이언트 애플리케이션에서 수동으로 설정을 갱신할 수 있다.
▪ 이를 위해 Spring Actuator의 /actuator/refresh 엔드포인트를 사용할 수 있다.
○ 설정 갱신 절차
▪ Config 서버에서 설정 파일을 변경한다.
▪ 클라이언트 애플리케이션의 /actuator/refresh 엔드포인트를 POST 요청으로 호출하여 변경된 설정을 반영한다.
▪ 이 방법은 간단하지만, 각 클라이언트 애플리케이션에서 수동으로 엔드포인트를 호출해야 한다.
○ Spring Boot DevTools 사용
▪ Spring Boot DevTools를 사용하면 개발 환경에서 파일 변경을 자동으로 감지하고 애플리케이션을 재시작할 수 있다.
▪ 이는 classpath 내의 파일 변경도 포함된다.
● Git 저장소 사용
○ Spring Cloud Config 서버가 Git 저장소에서 설정 파일을 읽어오도록 설정할 수 있다.
○ 이는 설정 파일의 변경 사항을 쉽게 반영하고, 여러 서비스 간에 일관된 구성을 유지하는 데 유용하다.
'스프링 클라우드' 카테고리의 다른 글
스프링 클라우드 - API 게이트웨이 (8) | 2024.09.13 |
---|---|
스프링 클라우드란? (4) | 2024.09.09 |