BackEnd/Spring
[Spring Cloud]Config Server로 구성 관리및 동적으로 설정 적용
Hero_O
2022. 8. 29. 20:31
Spring Cloud Conifg
Spring Cloud Config 는 설정 파일을 관리하는 서버를 통해 각 마이크로 서비스들이 외부에 설정 파일을 참조하여 사용할 수 있게 하는 것을 의미한다. 설정파일을 외부에서 관리하는 덕분에 추가 배포 없이 설정파일 변경을 동적으로 할 수 있다.
Spring Cloud Conifg 동작 방식
- Micro Service는 해당 인스턴스 생성 시점에 Config Server로 부터 설정파일을 조회해 사용한다.
- Config Server는 이러한 설정파일 저장소(Git Repository)에서 가져와 반환한다.
- 설정파일이 서비스 동작중 변경하게 되면 변경 내용 적용을 위해 각 Micro Service에 Refrest 요청을 전달한다.
Spring Cloud Config Server&Client 구현
Spring Config Server
1. Config Server Project 생성
Spring Cloud Config-Server 의존성을 포함한 프로젝트 생성
2. 설정파일 저장소 생성
3. Config-Server 설정 파일 (yml) 작성
위에서 생성한 설정파일 저장소인 Git Hub 저장소 위치를 YML 파일에 작성한 git uri 에 추가해 준다.
4. @EnableConfigServer 어노테이션을 통해 설정
Spring Cloud Client
Spring Cloud Client 로 User Micro Service를 등록
1. Client Service 생성
2. Cleint 설정 파일(YAML) 작성
Repository 로 부터 가져오기 위해 Config Server 위치를 application.yml 파일에 설정한다.
해당 내용은 Spring boot 2.4x 부터 유효하며 그 이전 버전이라면 bootstrap.yml 을 작성하는 방법으로 찾아 보세요.
User Service 라는 Micro Service의 설정파일을 Git Hub 저장소에 생성한다. 이름은 위 cloud.confg에 작성한 내용을 바탕으로 {config.name}-{config.profile}.yml 의 형태로 작성한다. ex. user-default.yml
3. Client 비즈니스 로직 작성
@RefeshScope 어노테이션이 추가된 스프링 빈의 경우 POST: /acturator/refresh 명령을 통해 변경된 설정파일이 적용되었을 때 해당 내용이 반영된다. 라이프 사이클이 싱글톤인 스프링 빈의 경우 애플리케이션 시작 단계에 생성되어 애플리케이션 종료 시점까지 존재하기 때문에 @RefeshScope 로 지정해주지 않으면 해당 내용이 반영되지 않는다.
4. 설정 파일 변경 후 해당 내용 반영
설정 파일을 변경한 이후 각 Micro Service에 POST: /acturator/refresh 요청을 통해 적용 할 수 있다.