Spring

Spring Cloud Config

TedDev 2024. 11. 12. 18:31
728x90

Spring Cloud Config는 분산 시스템에서 구성 데이터를 중앙에서 관리하고 배포하기 위해 사용하는 Spring 프로젝트이다. 이를 통해 애플리케이션의 설정 정보를 중앙화하고 일관되게 관리할 수 있어 특히, 마이크로서비스 아키텍처에서 유용하게 사용된다. Spring Cloud Config는 클라이언트 애플리케이션들이 공통된 설정 정보에 쉽게 접근할 수 있도록 도와주며 설정 변경이 필요할 때 각 서비스를 수정하지 않고도 실시간으로 반영할 수 있게 한다.

 

주요 개념

  1. Spring Cloud Config Server : 구성 데이터를 저장하고 제공하는 서버이다. 서버는 일반적으로 Git, 파일 시스템, SVN과 같은 외부 저장소에 저장된 설정 파일을 읽어와 클라이언트 애플리케이션에 제공한다.
  2. Spring Cloud Config Client : Config Server에서 구성 데이터를 받아 사용하는 애플리케이션이다. 이 클라이언트는 Spring Cloud Config Server에 접근해 설정을 가져오고 필요에 따라 자동으로 설정을 갱신할 수 있다.

 

Spring Cloud Config의 특징

  • 중앙 집중식 구성 관리 : 여러 서비스의 구성 파일을 중앙화하여 유지보수 및 관리를 쉽게 한다.
  • 다양한 저장소 지원 : Git, SVN, 파일 시스템 등을 저장소로 사용할 수 있다.
  • 프로파일 및 환경 분리 : application.yml에 프로파일과 환경을 설정하여 개발, 테스트, 운영 환경마다 다른 설정을 적용할 수 있다.
  • 실시간 재로드 (Spring Cloud Bus와 함께 사용 시) : Spring Cloud Bus와 결합하면 구성 파일이 변경되었을 때 클라이언트가 즉시 변경 사항을 반영하도록 알림을 보낼 수 있다.

 

작동 원리

  1. 설정 저장소 : Config Server는 외부 설정 저장소에 있는 설정 파일을 로드한다. 예를 들어 Git을 설정 저장소로 사용하는 경우 application.yml 또는 application-{profile}.yml 파일을 만들어 두고 환경에 맞게 다른 파일을 준비할 수 있다.
  2. 설정 정보 요청 및 전달 : 클라이언트 애플리케이션은 부팅 시 Config Server에 요청을 보내고 해당 프로파일, 환경에 맞는 설정 정보를 받아온다.
  3. 동적 재구성 : Spring Actuator와 Spring Cloud Bus를 활용해 설정이 변경되면 이를 실시간으로 반영할 수 있다. 이는 서비스가 중단되지 않고 설정을 업데이트할 수 있게 해준다.
728x90

Spring Cloud Config 사용 방법

  1. Config Server 설정
    • Spring Boot 프로젝트에 spring-cloud-config-server 의존성을 추가하고 @EnableConfigServer 어노테이션을 사용해 Config Server 애플리케이션을 생성한다.
    • 설정 파일(application.yml 또는 application.properties)에서 외부 저장소를 연결하고 spring.cloud.config.server.git.uri에 Git 저장소 URL을 설정한다.
  2. Config Client 설정
    • 클라이언트 애플리케이션에 spring-cloud-starter-config 의존성을 추가하고 bootstrap.yml 또는 bootstrap.properties 파일에서 spring.cloud.config.uri 속성을 통해 Config Server URL을 설정한다.
    • 클라이언트는 애플리케이션 시작 시 Config Server에 설정을 요청하고 필요한 환경 변수 및 프로파일에 따라 설정 정보를 받아온다.

 

예제 설정

  • Config Server - application.yml
spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/your-org/config-repo
  • Client - bootstrap.yml
spring:
  application:
    name: my-service
  cloud:
    config:
      uri: http://localhost:8888

 

Spring Cloud Config의 장점

  • 설정 변경 시 모든 서비스에 일괄 적용 가능
  • 마이크로서비스 간 설정 데이터 일관성 유지
  • 외부 저장소로 Git 등을 사용하여 버전 관리 용이

 

Spring Cloud Config는 특히 빠르게 변화하는 마이크로서비스 환경에서 효율적이고 안정적인 설정 관리를 가능하게 한다.

반응형