티스토리 뷰

Spring Cloud Conifg 


Spring Cloud Config 는 설정 파일을 관리하는 서버를 통해 각 마이크로 서비스들이 외부에 설정 파일을 참조하여 사용할 수 있게 하는 것을 의미한다. 설정파일을 외부에서 관리하는 덕분에 추가 배포 없이 설정파일 변경을 동적으로 할 수 있다.

 

 

 

 

Spring Cloud Conifg 동작 방식

  1. Micro Service는 해당 인스턴스 생성 시점에 Config Server로 부터 설정파일을 조회해 사용한다.
  2. Config Server는 이러한 설정파일 저장소(Git Repository)에서 가져와 반환한다.
  3. 설정파일이 서비스 동작중 변경하게 되면 변경 내용 적용을 위해 각 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 요청을 통해 적용 할 수 있다.

 

 

 

 

댓글