2025. 3. 4. 15:29ㆍSpring Microservice
🌟 Spring Cloud Config를 활용한 애플리케이션 설정 관리 🌟
Spring Cloud Config를 사용하면 분산된 환경에서 애플리케이션의 설정 정보를 중앙에서 관리할 수 있습니다.
이를 통해 애플리케이션의 구성을 코드에서 완전히 분리하고, 변경 사항을 재배포 없이 동적으로 적용할 수 있습니다.
📌 Spring Cloud Config의 핵심 개념
✔ 구성 파일의 중앙 집중화 → 설정 정보를 한 곳에서 관리
✔ REST API를 통한 설정 제공 → 애플리케이션이 시작될 때 설정을 읽어옴
✔ 다중 환경 지원 → 개발(dev), 운영(prod) 등 환경별로 설정을 분리
✔ 설정 변경의 동적 반영 → 설정을 변경하면 애플리케이션이 자동으로 반영 가능
🚀 Spring Cloud Config 구성 및 설정 방법
1️⃣ 애플리케이션 구성 파일 구조
Spring Cloud Config는 환경별로 다른 설정 파일을 정의할 수 있습니다.
예를 들어 라이선싱 서비스(licensing-service)의 설정 파일을 다음과 같이 구성할 수 있습니다.
📂 구성 파일 예시
config/
├── licensing-service.properties (기본 설정)
├── licensing-service-dev.properties (개발 환경)
├── licensing-service-prod.properties (운영 환경)
📍 설정 파일은 HTTP 기반 REST API로 조회할 수 있으며,
예를 들어 http://localhost:8071/licensing-service/dev
요청 시 디폴트 설정 + 개발 환경 설정이 반환됩니다.
2️⃣ 디폴트 설정 파일 (licensing-service.properties
)
📄 파일 위치: config/licensing-service.properties
example.property= I AM THE DEFAULT
spring.jpa.hibernate.ddl-auto=none
spring.jpa.database=POSTGRESQL
spring.datasource.platform=postgres
spring.jpa.show-sql=true
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.database.driverClassName=org.postgresql.Driver
spring.datasource.testWhileIdle=true
spring.datasource.validationQuery=SELECT 1
management.endpoints.web.exposure.include=*
management.endpoints.enabled-by-default=true
💡 디폴트 값 설정
example.property= I AM THE DEFAULT
→ 디폴트 프로퍼티 값- 데이터베이스는 PostgreSQL을 사용하도록 설정
- Hibernate 관련 설정 및 JPA 속성 정의
3️⃣ 개발 환경 설정 (licensing-service-dev.properties
)
📄 파일 위치: config/licensing-service-dev.properties
example.property= I AM DEV
spring.datasource.url = jdbc:postgresql://localhost:5432/ostock_dev
spring.datasource.username = postgres
spring.datasource.password = postgres
💡 개발 환경에서만 적용되는 설정
example.property= I AM DEV
→ 기본 설정을 덮어씌움- 데이터베이스 연결 URL, 사용자명, 비밀번호 개발 환경에 맞게 변경
4️⃣ Spring Cloud Config의 동작 방식
🔎 디폴트 환경 요청
http://localhost:8071/licensing-service/default
- licensing-service.properties 파일이 반환됨
🔎 개발 환경 요청
http://localhost:8071/licensing-service/dev
- 기본 설정 + 개발 환경 설정을 함께 반환
- 환경별 값이 존재하면 기본값을 덮어씌움
📌 Spring Boot의 프로파일 기반 설정 로직
Spring Boot는 프로파일 기반 설정 계층 구조를 따릅니다.
즉, licensing-service.properties
값이 기본적으로 로드되고,licensing-service-dev.properties
값이 해당 프로파일에서만 덮어씌워짐
⚠️ 주의할 점 (Think Before You Implement)
❌ 파일 시스템 기반 설정의 한계
- 공유 파일 시스템이 필요 → 유지보수 부담 증가
- 클라우드 환경에서 확장성 부족
- 설정 변경 시 모든 서버에 반영 어려움
✅ Git 또는 HashiCorp Vault 사용 권장
- Git 저장소를 활용하면 변경 이력 추적 가능
- HashiCorp Vault를 사용하면 보안이 강화됨
- 클라우드 환경에서 자동화 및 배포가 용이
🏁 Summary
✅ Spring Cloud Config를 활용하면 환경별 설정을 중앙에서 관리하고,
✅ REST API를 통해 설정 정보를 동적으로 제공할 수 있으며,
✅ 환경별 설정을 자동으로 병합하여 유연한 설정 관리가 가능합니다! 🎯
👉 다음 단계에서는 Spring Cloud Config를 라이선싱 서비스에 통합하는 방법을 살펴봅니다! 🚀
'Spring Microservice' 카테고리의 다른 글
Spring Cloud Config 서버를 이용한 Data Source 설정 (1) | 2025.03.07 |
---|---|
Spring Cloud Config 서비스와 라이선싱 서비스 연동 설정 (0) | 2025.03.07 |
Spring Cloud Config Server bootstrap 클래스 설정 및 파일 시스템 저장소 구성 (1) | 2025.03.04 |
Integrating Spring Cloud Config with a Spring Boot client (0) | 2025.03.04 |
Building our Spring Cloud Configuration Server (0) | 2025.03.04 |