스프링 5.0 마스터를보고 정리한 자료 입니다. 전체 코드는 Github에서 확인할 수 있습니다.
스프링 클라우드 컨피그는 중앙 집중식 마이크로서비스 구성을 지원한다. 여기서 두 가지 중요한 구성 요소의 조합이다.
- 스프링 클라우드 컨피그 서버 : 버전 관리 리포지토리로 백업된 중앙 집중식 구성 노출을 지원한다.
- 스프링 클라우드 컨피그 클라이언트 : 애플리케이션이 스프링 클라우드 컨피그 서버에 연결하도록 지원한다.
GitHub Repository 연결
GitHub Repository에
- micoroservice-a-default.yml
- micoroservice-a-dev.yml
아래 처럼 작성합니다.
1 | application: |
{ENV}
에 ddefault, dev 환경에 맞는 값을 작성합니다.
Config Server
1 | implementation 'org.springframework.cloud:spring-cloud-config-server' |
config server 의존 성을 추가합니다. actuator도 편의를 위해서 추가합니다.
1 | server: |
config server는 8888 port를 사용하는 관례가 있어 port를 8888로 지정합니다. Github Repository URI 주소를 입력합니다.
1 |
|
@EnableConfigServer
어노테이션을 추가만 하면 별다른 설정없이 Config Server가 설정됩니다.
actuator 의존성이 있으면 IntellJ Endpoints -> Mappings에서 현재 서버의 API mapping 정보를 쉽게 확인할 수 있습니다.
마우스 왼쪽 클릭을 한 이후에 Open In Http Request…를 클릭하면 쉽게 HTTP 콜을 할 수 있습니다.
URL 형식은 /{appliation-name}/{profile}/{label}입니다. 위에서 등록한 micoroservice-a-default.yml
을 확인해보기 위해서 http://localhost:8888/microservice-a/default
을 호출합니다.
1 | { |
응답 값을 보면 해당 properties를 잘 읽어 오는 것을 확인할 수 있습니다.
http://localhost:8888/microservice-a/dev
을 호출하면 micoroservice-a-dev.yml
의 값을 제대로 읽어 오는지 확인할 수 있습니다.
1 | { |
Client
1 | dependencies { |
필요한 의존성을 추가합니다.
1 |
|
프로퍼티를 읽을 ConfigurationProperties 객체를 만듭니다.
1 |
|
해당 메시지를 확인할 수 있는 컨트롤러를 만듭니다. getMessage()
메시지는 각 환경마다 다른 메시지를 출력합니다.
1 | spring: |
파일명은 bootstrap.yml
으로 지정합니다. active
는 각 환경마다 지정합니다. dev으로 지정하고 http://127.0.0.1:8080/message
API를 호출해보겠습니다.
이것도 인텔리제이를 이용해서 호출하면 간편합니다.
1 | { |
Dev
메시지가 출력되는 것을 확인 할 수 있습니다. profiles
을 default
으로 지정하면 메시지에는 local 이라는 문자가 출력됩니다.
Refresh
마이크로서비스 A의 properties의 변경이 생겼을 경우 Refresh API를 호출해서 설정을 변경할 수 있다.
message API를 호출하면 기존 메시지가 그대로 출력된다.
1 | # microservice-a-default.yml |
microservice-a-default.yml
메시지를 위와 같이 변경한 이후에
POST http://127.0.0.1:8080/actuator/refresh을 호출하면
1 | [ |
Response으로 application.message의 변경을 알려준다. 이후 message api를 호출하면 아래 그림처럼 변경된 Response를 확인 할 수 있다.
결론
Github Repository와 같은 버전 관리 리포지토리로 백업된 중앙 집중 구성으로 properties를 제공해줍니다. 또 Properties 설정 및 단순한 설정으로 클라이언트 애플리케이션이 스프링 클라우드 컨피그 서버에 쉽게 연결되도록 지원해줍니다.