Kim-Baek 개발자 이야기

Spring Cloud Config 본문

개발/Spring

Spring Cloud Config

김백개발자 2024. 11. 8. 12:51

Spring Cloud Config란?

Spring Cloud Config는 마이크로서비스 아키텍처에서 애플리케이션의 설정을 외부에서 관리할 수 있도록 도와주는 구성 관리 솔루션입니다. 이를 통해 다양한 환경(개발, 테스트, 운영 등)에서 애플리케이션 설정을 중앙에서 관리하고 배포할 수 있습니다.

주요 특징

  1. 외부 구성 관리: 애플리케이션의 설정 파일(application.properties, application.yml 등)을 Git, SVN, 파일 시스템 등 외부 저장소에 저장하여 중앙에서 관리할 수 있습니다.
  2. 환경별 설정: 각 서비스와 환경에 맞는 별도의 설정을 쉽게 관리할 수 있습니다. 예를 들어, 개발 환경과 운영 환경에서 다른 데이터베이스 설정을 적용할 수 있습니다.
  3. 버전 관리: Git과 같은 버전 관리 시스템을 사용하여 설정 변경 이력을 추적하고 롤백할 수 있습니다.
  4. 동적 구성 갱신: Spring Cloud Bus와 연동하여 설정 변경 시 애플리케이션을 재시작하지 않고도 실시간으로 구성 값을 갱신할 수 있습니다.
  5. 보안: 민감한 정보(예: 데이터베이스 비밀번호)를 암호화하여 저장하고, 필요 시 복호화하여 사용할 수 있습니다.

구성 요소

  1. Config Server: 설정 파일을 외부 저장소로부터 읽어와 클라이언트 애플리케이션에 제공하는 서버입니다.
  2. Config Client: Config Server에서 설정을 가져와 사용하는 애플리케이션입니다. 일반적으로 마이크로서비스 각각이 Config Client로 동작합니다.
  3. 외부 저장소: 설정 파일이 저장되는 장소로, Git 리포지토리, SVN, 파일 시스템 등을 사용할 수 있습니다.

동작 방식

  1. Config Server 설정: Config Server는 외부 저장소(Git, SVN 등)와 연동되며, 각 애플리케이션의 설정 파일을 읽어들입니다.
  2. Config Client 설정: 각 마이크로서비스는 Config Client로 설정되어 있으며, Config Server에 요청하여 필요한 설정 파일을 가져옵니다.
  3. 애플리케이션 시작 시 설정 로드: 애플리케이션이 시작될 때 Config Client는 Config Server로부터 설정 파일을 받아와 애플리케이션에 적용합니다.
  4. 설정 변경 및 갱신: 설정 파일이 변경되면 Config Server는 변경된 설정을 Config Client에 알리고, 애플리케이션은 이를 실시간으로 반영할 수 있습니다.

설정 방법

1. Config Server 설정

의존성 추가 (Gradle 예시)

dependencies {
    implementation 'org.springframework.cloud:spring-cloud-config-server'
}

애플리케이션 클래스에 @EnableConfigServer 추가

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

application.yml 설정 예시

server:
  port: 8888

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/your-repo/config-repo
          clone-on-start: true

2. Config Client 설정

의존성 추가 (Gradle 예시)

dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-config'
}

application.yml 설정 예시

spring:
  application:
    name: your-service-name
  cloud:
    config:
      uri: http://localhost:8888

bootstrap.yml 파일 생성 (필수)

spring:
  application:
    name: your-service-name
  cloud:
    config:
      uri: http://localhost:8888

3. 설정 파일 관리

Git 저장소 구조 예시

config-repo/
├── your-service-name/
│   ├── application.yml
│   ├── application-dev.yml
│   └── application-prod.yml
└── another-service/
    ├── application.yml
    ├── application-dev.yml
    └── application-prod.yml

장점

  • 중앙 집중식 관리: 모든 서비스의 설정을 한 곳에서 관리할 수 있어 유지보수가 용이합니다.
  • 환경 별 구성 지원: 다양한 환경에 맞춘 설정을 쉽게 적용할 수 있습니다.
  • 버전 관리: 설정 변경 이력을 추적하고 롤백할 수 있어 안정적인 운영이 가능합니다.
  • 동적 구성 갱신: 애플리케이션을 재시작하지 않고도 설정을 실시간으로 변경할 수 있습니다.



반응형

'개발 > Spring' 카테고리의 다른 글

Apache Kafka 란?  (0) 2024.11.10
RabbitMq 란  (1) 2024.11.09
Spring Quartz 란?  (0) 2024.11.07
[스프링 핵심원리] 24. 스프링 빈 조회 - 기본  (0) 2021.10.27
[스프링 핵심원리] 23. 컨테이너에 등록된 모든 빈 조회  (0) 2021.10.25
Comments