Spring Cloud Config

Sean·2025년 5월 19일

Spring Cloud Config

분산 시스템에서 외부화된 설정 정보를 서버 및 클라이언트에게 제공하는 시스템. Config server는 모든 환경에 대한 정보들을 관리해주는 중앙 서버. 설정 정보 저장 위해 git 사용. 버전관리 가능함.

장점과 단점

장점 :

  • 여러 서버의 설정 파일을 중앙 서버에서 관리할 수 있다
  • 서버 재배포 없이, 설정 파일의 변경사항 반영할 수 있다

단점 :

  • Git 서버 or 설정 서버 의한 장애가 전파될 수 있음
  • 우선 순위에 의해 설정 정보가 덮어씌워질 수 있다

spring cloud config server 구축

  1. 설정 파일 저장소 구축
  • 앱이름-프로파일.yml 구조로 작성.
  1. 설정 서버 구축
  • config 의존성 추가.
  • 설정 서버에서 application.yml에 다음과 같이 설정 내용 추가.
  • config 서버는 기본적으로 8888 포트 사용.그 외에 설정 파일이 있는 위치와 디렉토리 잡아주기.
    uri : 설정 파일 있는 깃 주소
    default-label : 브랜치 이름
    search-paths : 설정 파일들을 찾을 경로

메인 클래스에 @EnableConfigServer 붙여주기


spring cloud config client 구축

  1. 클라이언트 서버 구축
  2. 설정 파일 읽기 위한 코드 추가
  3. 클라이언트 실행 및 확인

http get 요청 -> config server가 git에서 받아옴 -> JSON 형식으로 반환 -> 애플리케이션은 그 값을 메모리에 로딩해서 사용.



예를 들어 A,B,C 서비스가 있고 있다. 만약 각각 서비스에서 설정 정보 관리하면, 설정 정보 변경시 모든 서비스의 설정 정보 수정해야한다. 또한 설정 정보 변경했으므로 모두 재배포 해야함.
-> 설정 정보 변경 용이 위해, 각 서비스의 외부에서 중앙으로 관리하는 것이 관리적으로 유리.


  • 분산 시스템에서 외부화된 설정 정보를 서버 및 클라이언트에 제공하는 시스템
  • config server : 모든 환경 정보 관리해주는 "중앙 서버"
  • 설정 정보를 외부로 분리한 후, 설정 정보 변경했을 때 별도 재배포 필요 없음.
  • 설정 정보 분리함으로서 보안적인 측면 강화.

spring cloud config server : client-저장소 간의 중간 다리.
client, server, 저장소

설정 정보 저장소

git 이외에도 여럿 있음. AWS S3, Redis, JDBC, File, Vault

spring cloud config 설정 정보 갱신

Spring cloud config 설정 정보 갱신

저장소 변경 사항 발생하면, Config server가 탐지함. 하지만 client에 반영되려면 아래 방법들 중 하나 사용해야함.
1. actuator API 사용
2. Spring Cloud Bus

  1. Watcher 통한 변경 여부 확인

설정 정보 저장소

@ConfigurationProperties("com.test")
@RefreshScope
public class Config {
	private String minFileSize;
    private String maxFileSize;
}

@RefrshScope : 설정 정보 변경시 설정 정보를 다시 불러오는 역할. git repo에 수정 발생 시, /actuator/refresh 호출하면 변경된 설정 정보 반영.

Config Server 와 연동 위해 Cilent yml 파일에 설정을 추가.

spring:
	application:
    	name: application
	profiles:
    	active: dev
    config:
    	import: optional:configserver:http://localhost:8888
  • name : client에서 설정하는 application name 보고 설정 정보 찾기에, 원하는 설정 정보의 application name 적어줘야 함.
  • active : 구동 환결 설정. dev면, 저장소에서 application-dev 파일 읽음.
  • import : config server 주소 입력. 여러 주소 입력시, 실패하면 다음 주소로 연결하도록 할 수 있음. 통신 실패시 서버 중지시키려면 optional 제거. 만약 optional 있을 때 연결 실패시, 내부 설정 정보 읽으러 감.
profile
저스트두잇

0개의 댓글