분산 시스템에서 외부화된 설정 정보를 서버 및 클라이언트에게 제공하는 시스템. Config server는 모든 환경에 대한 정보들을 관리해주는 중앙 서버. 설정 정보 저장 위해 git 사용. 버전관리 가능함.
장점 :
단점 :
메인 클래스에 @EnableConfigServer 붙여주기
http get 요청 -> config server가 git에서 받아옴 -> JSON 형식으로 반환 -> 애플리케이션은 그 값을 메모리에 로딩해서 사용.
예를 들어 A,B,C 서비스가 있고 있다. 만약 각각 서비스에서 설정 정보 관리하면, 설정 정보 변경시 모든 서비스의 설정 정보 수정해야한다. 또한 설정 정보 변경했으므로 모두 재배포 해야함.
-> 설정 정보 변경 용이 위해, 각 서비스의 외부에서 중앙으로 관리하는 것이 관리적으로 유리.
spring cloud config server : client-저장소 간의 중간 다리.
client, server, 저장소
git 이외에도 여럿 있음. AWS S3, Redis, JDBC, File, Vault
spring cloud config 설정 정보 갱신
저장소 변경 사항 발생하면, Config server가 탐지함. 하지만 client에 반영되려면 아래 방법들 중 하나 사용해야함.
1. actuator API 사용
2. Spring Cloud Bus
@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 있을 때 연결 실패시, 내부 설정 정보 읽으러 감.