-
Spring Boot 시리즈 35편 – Spring Cloud Config: 설정 중앙화 전략과 운영환경 속 안전한 구성관리기술과 산업/언어 및 프레임워크 2025. 5. 23. 13:13728x90
Spring Boot에서 Spring Cloud Config를 활용해 설정파일을 중앙화하는 전략을 설명합니다. Git 기반 구성, 마이크로서비스 적용, 환경 분리, 보안 설정 관리까지 실전 기준으로 정리했습니다.
마이크로서비스 구조에서는 서비스 개수가 많아지면서 설정 파일도 함께 늘어납니다.
각 서비스마다 application.yml을 따로 관리하다 보면,
운영 환경 변경이나 보안 설정 반영이 일관되지 않거나 누락되기 쉽습니다.
Spring Cloud Config는 이러한 문제를 해결하기 위한 솔루션으로,
중앙에서 설정을 관리하고 서비스가 이를 동적으로 불러오도록 지원합니다.
1. Spring Cloud Config란?
개념설명
Config Server 설정 정보를 Git 등에서 읽어와 각 서비스에 전달하는 중앙 서버 Config Client Config Server로부터 설정을 받아오는 Spring Boot 애플리케이션 저장소 설정 정보를 저장할 외부 저장소 (주로 Git) 적용 방식 application.yml → config-repo.yml 로 대체, 동적 로딩 가능
2. Config Server 구성
1) 의존성 추가
implementation 'org.springframework.cloud:spring-cloud-config-server'
2) 서버 애플리케이션 설정
@SpringBootApplication @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }
3) application.yml 예시
server: port: 8888 spring: cloud: config: server: git: uri: https://github.com/my-org/config-repo default-label: main
→ Config Server는 해당 Git 저장소에서 설정 파일을 읽어 각 클라이언트에 전달합니다.
3. 설정 저장소 구성 (Git 기반)
Git Repo 구조 예시:
config-repo/ ├── application.yml (공통 설정) ├── user-service.yml (서비스 별 설정) └── order-service-prod.yml (서비스별 환경 분리 설정)
이때 파일명 규칙은 다음과 같습니다.
{application}-{profile}.yml
예: order-service-prod.yml
4. Config Client 구성
1) 의존성 추가
implementation 'org.springframework.cloud:spring-cloud-starter-config'
2) bootstrap.yml 설정 (Spring Boot 2.x 기준)
spring: application: name: user-service profiles: active: dev cloud: config: uri: http://localhost:8888
- application.name은 Config Repo의 파일명 기준
- profile에 따라 user-service-dev.yml 등이 로딩됨
※ Spring Boot 3.x부터는 bootstrap.yml 대신 application.yml만 사용해도 동작 가능
5. 설정 동기화 방법
방법설명
서버 재시작 기본 방식. 서비스 시작 시 설정 적용됨 /actuator/refresh 설정 서버의 변경을 클라이언트가 실시간 반영 Spring Cloud Bus Kafka 또는 RabbitMQ를 통해 전체 서비스 설정을 동시에 갱신
/actuator/refresh 활성화 예시
implementation 'org.springframework.boot:spring-boot-starter-actuator'
management: endpoints: web: exposure: include: refresh
6. 운영환경 적용 전략
항목전략
Git 분기 전략 main, dev, staging 등 브랜치 구분 가능 민감 정보 관리 Git 대신 Vault 등 외부 보안 설정 연계 권장 로깅 레벨 각 환경별 logging.level.* 분리 관리 가능 보안 정책 Config Server는 내부망으로 제한, 인증 필터 적용 가능 에러 대응 Config 로딩 실패 시 기본값 fallback 또는 재시도 설정 가능
마무리 요약
항목요약
도입 이유 마이크로서비스 설정 파일을 Git 기반으로 통합 관리 구성 요소 Config Server, Git 저장소, Config Client 적용 방식 서비스는 설정을 Config Server에서 동적으로 가져옴 장점 설정 일관성 확보, 환경 분리, 운영 효율화 보완 전략 보안 설정 외부 연계, Bus로 실시간 반영, 브랜치 분리 정책
다음 편 예고
Spring Boot 시리즈 36편: Elasticsearch 연동 – 검색 기능 확장을 위한 인덱싱, 매핑, 쿼리 전략
728x90'기술과 산업 > 언어 및 프레임워크' 카테고리의 다른 글
Spring Boot 시리즈 36편 – Elasticsearch 연동: 검색 기능 확장을 위한 인덱싱, 매핑, 쿼리 전략 (0) 2025.05.26 FastAPI 시리즈 11화 - OAuth2 이해와 FastAPI 로그인 인증 시스템 구축 (0) 2025.05.23 전자정부 표준프레임워크 시리즈 9화 – 메시지 처리와 다국어 지원 기능 완벽 가이드 (2) 2025.05.21 Python 마스터 시리즈 11화 – 리스트, 튜플, 딕셔너리, 세트 자료구조 완전 정복 (1) 2025.05.21 JHipster 시리즈 7화 - 마이크로서비스 구조 전환 – Gateway와 Service Registry 실습 (0) 2025.05.21