B2C 플랫폼 설계/설계

💻 [B2C 플랫폼 설계] 2편. Config Server로 설정 외부화하기

프로그래민구찌 2025. 5. 19. 21:51

🎯 개요

마이크로서비스 아키텍처에서는 각 서비스가 개별적으로 관리되기 때문에 설정 파일이 수십 개로 늘어날 수 있습니다.
이때, 설정 파일을 중앙에서 관리할 수 있는 Config Server를 도입하면 설정 관리 효율성과 보안성을 크게 높일 수 있습니다.

이번 글에서는 Spring Cloud Config의 개념과 함께,
Git 저장소를 통한 설정 외부화 구조를 어떻게 구성하는지 설명드리겠습니다.


✔ 주요 기능 요약

기능 설명
설정 중앙화 설정 파일을 Git에 저장하고 Config Server에서 각 서비스에 전달
Git 연동 별도 저장소(spring-cloud-demo-config)에 환경별 설정 파일 관리
프로파일 기반 설정 분리 dev, prod 등 환경별로 yml 파일을 구분하여 운영 환경 구성 가능
실시간 반영 가능 이후 Cloud Bus + Kafka를 통해 실시간 변경 반영 가능 (7편에서 다룸 예정)
 

🛠 기술 스택 및 구조

  • Spring Boot 3.2.x
  • Spring Cloud Config Server 2023.x
  • Git 저장소 기반 설정 관리
  • profile에 따른 설정 분기 (user-service-dev.yml, application-prod.yml 등)

🔄 구성 흐름도

[Git 저장소: spring-cloud-demo-config]
        ↓
[Config Server (port: 8888)]
        ↓
[각 서비스: user-service, order-service, ...]
     → bootstrap.yml에서 설정 요청

📁 디렉토리 구조

1️⃣ 애플리케이션 리포: spring-cloud-demo

📁 config-server/ ← Spring Cloud Config Server 모듈
📁 user-service/
📁 order-service/
...

 

2️⃣ 설정 전용 리포: spring-cloud-demo-config

📁 spring-cloud-demo-config/
├── application-dev.yml
├── user-service-dev.yml
├── order-service-dev.yml
├── gateway-service-dev.yml
└── ...
Config Server는 위 리포지토리에서 설정을 읽어와서 각 서비스에 전달합니다.

📂 설정 흐름 설명

✅ Config Server application.yml 설정 예시

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/mingstagram/spring-cloud-demo-config
          default-label: main
Git의 main 브랜치를 명시해야 오류를 방지할 수 있습니다.

 

✅ Config Client (user-service 등)의 bootstrap.yml

spring:
  application:
    name: user-service
  cloud:
    config:
      uri: http://localhost:8888
각 서비스는 이름과 profile(dev 등)에 따라 설정을 요청하게 됩니다.

💡 회고 및 팁

이번 설정 구조를 통해 설정 파일을 서비스 코드와 분리해 관리하는 것이 얼마나 유리한지 체감할 수 있었습니다.
특히 Git을 통한 버전 관리, 실시간 반영 가능성, 민감 설정 분리 등의 이점이 마이크로서비스 환경에서 더욱 중요하게 느껴졌습니다.

또한 오류가 발생했던 spring.profiles.active 설정 이슈를 통해
profile 전용 설정 파일에서 사용할 수 없는 속성들을 명확히 인지하는 계기도 되었습니다.


📚 추가 자료

전체 설정 파일과 실습 예제는 GitHub에서 확인하실 수 있습니다.

실습 예제 및 서비스 코드: 👉 https://github.com/mingstagram/spring-cloud-demo

설정 파일(Config): 👉 https://github.com/mingstagram/spring-cloud-demo-config