Spring Cloud Config

이진일·2026년 4월 15일
post-thumbnail

Spring Cloud Config란?

  • Spring Cloud Config는 분산 시스템 환경에서 중앙 집중식 구성 관리를 제공하는 프레임워크이다.
  • 애플리케이션의 설정을 중앙에서 관리하고, 변경 사항을 실시간으로 반영할 수 있다.
  • Git, 파일 시스템, JDBC 등 다양한 저장소를 지원한다.

주요 기능

  • 중앙 집중식 구성 관리: 모든 마이크로서비스의 설정을 중앙에서 관리한다.
  • 환경별 구성: 개발, 테스트, 운영 등 환경별로 구성을 분리하여 관리할 수 있다.
  • 실시간 구성 변경: 설정 변경 시 애플리케이션을 재시작하지 않고도 실시간으로 반영할 수 있다.

Spring Cloud Config 서버 설정

  • Config 서버는 설정 파일을 저장하고 제공하는 역할을 한다.

  • Spring Boot 애플리케이션에서 @EnableConfigServer 애너테이션을 붙여 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 서버에서 설정을 받아오는 역할을 한다.

  • 클라이언트의 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/

여기서 service-id는 config 서버의 id를 입력한다.

환경별 구성 관리

  • Config 서버는 환경별로 다른 설정 파일을 제공할 수 있다.

  • application-dev.yml, application-prod.yml 같은 파일을 Git 저장소에 저장하여 환경별 설정을 관리할 수 있다.

  • Spring Boot 애플리케이션에서는 프로필을 사용하여 환경을 구분할 수 있다.

spring:
  profiles:
    active: dev

실시간 구성 변경

실시간 구성 변경을 반영하는 방법은 여러 가지가 있다.

Spring Cloud Bus

  • Spring Cloud Bus를 사용하면 설정 변경 사항을 실시간으로 클라이언트 애플리케이션에 반영할 수 있다.
  • 이를 위해서는 메시징 시스템(RabbitMQ 또는 Kafka 등)을 사용하여 변경 사항을 전파해야 한다.

수동 구성 갱신

/actuator/refresh 앤드포인트 사용

Spring Cloud Bus를 사용하지 않는 경우, 클라이언트 애플리케이션에서 수동으로 설정을 갱신할 수 있다. 이를 위해 Spring Actuator의 /actuator/refresh 엔드포인트를 사용할 수 있다.

설정 갱신 절차

  1. Config 서버에서 설정 파일 변경
  2. 클라이언트 애플리케이션의 /actuator/refresh 엔드포인트를 POST 요청으로 호출하여 변경된 설정 반영

이 방법은 간단하지만, 각 클라이언트 애플리케이션에서 수동으로 엔드포인트를 호출해야 합니다.

Spring Boot DevTools 사용

Spring Boot DevTools를 사용하면 개발 환경에서 파일 변경을 자동으로 감지하고 애플리케이션을 재시작할 수 있습니다. 이는 classpath 내의 파일 변경도 포함됩니다.

Git 저장소 사용

  • Spring Cloud Config 서버가 Git 저장소에서 설정 파일을 읽어오도록 설정할 수 있다.
  • 이는 설정 파일의 변경 사항을 쉽게 반영하고, 여러 서비스 간에 일관된 구성을 유지하는 데 유용하다.

0개의 댓글