이 접근 방식은 구성 파일의 버전 관리, 감사 기능, 보안 등을 강화할 수 있어 실무에서 가장 많이 추천되는 방법입니다.
먼저, GitHub 리포지토리에 구성 파일을 저장합니다. 예를 들어, eazybytes-config라는 리포지토리를 생성하고, 여기에 accounts, cards, loans 마이크로서비스와 관련된 모든 yaml 파일을 업로드합니다. 이후, 이 리포지토리를 Spring Cloud Config 서버와 연결하여 해당 리포지토리에서 구성 파일을 로드할 수 있도록 합니다.
application.yml 업데이트:
기존의 native 프로필을 git 프로필로 변경하고, GitHub 리포지토리의 URL을 설정합니다. GitHub 리포지토리 URL을 spring.cloud.config.server.git.uri 속성에 설정합니다.
cloud:
config:
server:
# native:
# search-locations: "classpath:/config"
# search-locations: "file:///Users//eazybytes//Documents//config"
git:
uri: "https://github.com/eazybytes/eazybytes-config.git"
default-label: main
timeout: 5 #연결 5초 기다림
clone-on-start: true
force-pull: true
default-label 속성을 사용하여 기본 브랜치(main)를 설정하고, clone-on-start 및 force-pull 속성을 true로 설정하여 서버가 시작될 때마다 최신 구성 파일을 가져오도록 합니다.
Config 서버를 시작하고, 이후 각 마이크로서비스를 순차적으로 시작하여 Config 서버와의 통합이 제대로 이루어지는지 확인합니다.
각 마이크로서비스가 Config 서버와 통합되어 올바르게 구성 파일을 로드하는지 확인하기 위해 Postman을 사용해 테스트를 진행합니다. 예를 들어, cards 마이크로서비스의 contact-info API를 호출하여 prod 프로필과 관련된 구성이 올바르게 적용되었는지 확인합니다.
Spring Cloud Config 서버는 GitHub 외에도 다양한 백엔드를 지원합니다. 공식 문서를 참조하여 파일 시스템, 데이터베이스(JDBC), Vault, AWS CodeCommit 등 다양한 백엔드 옵션을 사용할 수 있습니다. 또한, 프라이빗 GitHub 리포지토리와의 연동 시 인증 방법에 대한 내용도 문서에서 확인할 수 있습니다.
이번 챕터에선 Spring Cloud Config 서버를 GitHub 리포지토리와 연결하여 마이크로서비스 구성 파일을 중앙에서 관리하는 방법을 배웠습니다. 이 접근 방식은 실무에서 추천되며, 버전 관리, 보안, 감사 기능을 효과적으로 지원합니다. 다음 챕터에서는 더 발전된 방법을 탐구하거나, 이러한 설정을 기반으로 추가적인 실습을 진행해 볼 예정입니다.