마이크로서비스 아키텍처(MSA)는 서비스가 많아질수록 설정(Configuration)의 복잡도와 보안 위험이 급격히 증가한다.
각 서비스의 application.yml 파일이 중복되고, 데이터베이스 정보나 API 키 같은 민감한 정보가 소스코드에 포함되는 상황도 발생한다.
이 문제를 해결하기 위해 등장한 도구가 바로 Spring Cloud Config와 Vault이다.
이 두 가지를 결합하면 설정은 중앙에서 관리하고, 민감 정보는 안전하게 분리하여 운영할 수 있다.

✅ 왜 설정 중앙화가 필요한가?
MSA 환경에서는 서비스가 수십 개 이상으로 분리된다.
각 서비스의 설정 파일이 개별적으로 존재할 경우 다음과 같은 문제가 발생한다.
- 설정 값 변경 시 모든 서비스 재배포 필요
- 환경별(dev, staging, prod) 설정 파일 유지가 어려움
- 운영 중 민감 정보 노출 위험 증가
- 설정 누락 또는 오타로 인한 장애 발생
이를 방지하려면 설정을 Git 또는 Vault에 중앙 집중화하고, 각 서비스는 부팅 시점에 해당 설정을 동적으로 가져오는 구조로 구성해야 한다.
🌐 Spring Cloud Config란?
Spring Cloud Config는 Git 또는 파일 시스템에 저장된 설정 값을 외부 Config Server를 통해 서비스에 실시간으로 배포하는 구조이다.
기존 application.yml 대신 Config Server에서 중앙 관리되며, 각 서비스는 application-name.yml, application-dev.yml 등으로 설정을 로드한다.
🔧 아키텍처 구성

🛠️ Config Server 설정 예시 (.yml)
spring:
cloud:
config:
server:
git:
uri: https://github.com/my-org/config-repo
clone-on-start: true
🧩 클라이언트 서비스 설정 예시 (.yml)
spring:
application:
name: order-service
cloud:
config:
uri: http://localhost:8888
해당 서비스는 order-service.yml 또는 application.yml을 중앙 저장소에서 자동으로 로드한다.
🔐 Vault란 무엇인가?
Vault는 HashiCorp에서 제공하는 비밀번호, API 키, DB 인증정보 등 민감 데이터를 안전하게 저장·관리하는 오픈소스 도구이다.
일반 설정과는 달리 시크릿(Secret) 관리는 별도로 해야 하며, Vault는 다음과 같은 장점을 제공한다.
- 비밀 값 암호화 저장
- 접근 권한 제어(Policy)
- 토큰 기반 접근 인증
- DB 동적 자격 증명 발급
- 감사 로그 기록
Vault는 기본적으로 REST API를 통해 작동하며, Spring Boot와 연동 시 자동 설정이 가능하다.
🔗 Spring Cloud Config + Vault 통합 전략
보통은 Config Server로 일반 설정을, Vault로 민감한 시크릿을 분리 관리한다.
Spring Cloud Vault를 통해 Vault에 저장된 값을 Spring 환경변수로 주입할 수 있다.
🔧 예제 설정 (.yml)
spring:
cloud:
vault:
uri: http://localhost:8200
token: s.BjvxaD123abc456xyz
kv:
enabled: true
backend: secret
default-context: application
Vault 내의 /secret/application/db.password 값을 ${db.password} 형태로 사용할 수 있다.
🧠 실무 적용 시 고려사항
- Config Server에 장애가 생기면 전체 서비스 설정 로딩 실패 가능성이 있음
→ 캐시 설정 또는 Fallback 전략 필요 - Vault는 권한 제어 정책(Policy)을 꼼꼼히 설계해야 함
- Config Server와 Vault 간 통신도 암호화 및 인증 처리 필요
- 운영 환경에서는 Config Server와 Vault를 별도 서버로 격리하는 것이 안전
📈 장점 요약
| 항목 | Spring Cloud Config | Vault |
| 주요 목적 | 일반 설정 중앙화 | 민감 정보 보호 |
| 데이터 저장소 | Git, Local File | Key-Value (암호화) |
| 자동 갱신 | 가능 (@RefreshScope) | Spring Vault 지원 |
| 인증 방식 | 없음 또는 Git 인증 | Token, AppRole 등 |
| Spring 통합 | 매우 뛰어남 | 전용 Starter 존재 |
✅ 결론
MSA 환경에서 설정을 관리하지 않으면 장애는 필연적이다.
Spring Cloud Config는 설정의 일관성과 운영 편의성을 제공하고,
Vault는 민감 정보의 보안성을 보장한다.
두 도구를 적절히 조합하면 확장성과 보안성을 모두 갖춘 MSA 인프라 구성이 가능하다.
📌 참고한 공식 문서
'MSA' 카테고리의 다른 글
| [MSA] Prometheus, Grafana로 모니터링 체계 구축하기 (0) | 2025.07.24 |
|---|---|
| [MSA] MSA에서 CI/CD와 무중단 배포 전략 (3) | 2025.07.24 |
| [MSA] JWT와 OAuth2로 인증 처리하는 방법 (2) | 2025.07.24 |
| [MSA] Kafka vs RabbitMQ: 메시지 기반 아키텍처 완전정복 (2) | 2025.07.23 |
| [MSA] Circuit Breaker로 장애 격리 설계 (Hystrix, Resilience4j) (2) | 2025.07.23 |
| [MSA] Eureka와 Consul로 서비스 디스커버리 구현하기 (1) | 2025.07.23 |
| [MSA] 서비스 통신 방법 비교: Feign vs RESTTemplate vs WebClient (0) | 2025.07.23 |
| [MSA] API Gateway와 BFF 패턴 완전 정복 (3) | 2025.07.23 |