Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

아낌없이 주는 자바 개발자

제4장 Spring Cloud Config - Config Client 기본 본문

Spring/Cloud

제4장 Spring Cloud Config - Config Client 기본

홍캐리 2016. 7. 22. 10:45

0.본 포스팅은

1~3장에 걸쳐 Cloud Config 에 대한 대략적인 설명과 Config Server 에 대한 간략한 가이드가 마무리 되었고,

이번 포스팅 부터는 실제 Application 이 어떻게 Config Server 로 부터 properties 를 가져오는지 안내합니다.

Config Client 는 두번으로 나눠서 포스팅할 계획인데요,

그 첫번째로, Cloud Config 를 사용하는 Application 생성과 Config Server 로부터 properties 값 가져오기를 시작합니다.


1. Cloud Config 를 사용하는 Web Application 생성

1) Application 생성

제1장에서 계획한 프로젝트 구성에 따라서 New > Other > Spring > Spring Starter Project 를 거쳐 account-service 를 만들어봅니다.


2) Dependencies 선택

사용할 Dependencies 는 아래와 같습니다.

Web Application 을 만들거라 기본적으로 Web을 선택하고

Cloud Config 를 사용해야 하므로 Config Client, Actuator 를 선택합니다.

※ Actuator 는 Cloud Config 를 사용하기 위해 반드시 필요한 것은 아니나 Application health 체크, trace, beans 는 물론
   config server의 properties 가 갱신된 내용 즉시 반영(refresh) 등 유용한 기능이 많다.


3) Application 확인

Finish 를 하면 아래와 같이 account-service 가 생성된 걸 볼 수 있습니다. 마찬가지로 똑같이 product-service 도 만들어봅니다.

※ 참고로 전 application.properties 를 모두 application.yml 파일로 변경했습니다.


2. Config Server 연결

Config Client 가 추가된 Application 은 Config Server 와 연결에 필요한 정보가 반드시 필요합니다.

그 정보를 제공하는 방법이 두가지가 있는데 그 두가지 방법은 아래와 같습니다.


1) spring.cloud.config 설정법

보이는 바와 같이 spring cloud config 서버의 uri 는 제 3장에서 띄웠던 Config Server 를 지정합니다.(http://localhost:8888)

해당 Config Server 에서 제공되는 config 들 중 account-service 라는 설정파일을 쓰겠다는 의미로 name 도 지정합니다.

이는 쉽게 말하면 http://localhost:8888/account-service/{profile} 을 뜻한다고 보시면 됩니다.

참고로 로컬 개발환경과 개발서버, 스테이징 서버간에 서로 다른 config uri 를 갖는다는 건 너무나 당연합니다.

이전 포스팅에서 언급했던 profiles 별로 다른 값을 할당하는 걸 응용하시면 됩니다.


2) spring.application 설정법

Config Client 는 기본적으로 spring.application.name 과 동일한 이름의 .yml 혹은 .properties 파일을 config server 로부터 찾습니다.


너무나 간단하게 연결을 위한 설정이 끝났습니다. 이제 확인하는 일만 남았습니다.


3. Config Server 로부터 받는 properties 확인

1) 요청을 받을 Controller 생성

이제 사용자로부터 요청을 받아 처리하는 Controller 를 하나 만들어서, Config Server 로부터  greeting 이라는 property 값을 

제대로 받아오는지 확인해봅니다. 당연히 account-service의 application.yml 에는 greeting 이 없습니다.

만약 Config Server 로부터 값을 받아오지 못하면 서버 구동 중에 오류가 나겠죠.


2) Controller 로 요청하여 응답확인

제대로 받아오는걸 확인할 수 있습니다. 

근데 받아온 값을 보니 default profile 에 해당하는 값을 가져왔네요.

account-service 를 구동할 때 spring.profiles.active argument 를 주지 않았으니 당연합니다.

로컬 개발환경의 값을 가져올 수 있도록 argument 를 부여해봅니다.


3) spring.profiles.active argument 설정

혹시나 Spring boot 실행이 처음이신 분들을 위해 추가 설명드리자면, 

STS 는 Spring boot 로 Application 이 만들어지면 Boot Dashboard 에 해당 Application 이 추가됩니다. 

거기서 설정할 Application 을 선택하여 우클릭 후 'Open Config' 를 실행하면 아래와 같은 창이 뜹니다.

아래와 같이 설정하고 저장한 뒤, 다시 서버를 시작합니다.


4) Controller 로 요청하여 응답 재확인

변경된 profiles 에 맞는 값으로 제대로 가져온걸 확인할 수 있습니다.

여기서 주의할 것이 하나 있습니다. @Value 어노테이션으로 주입된 properties 값은 static 이므로,

Config Server 에서 갱신하더라도 Client 에서 갱신되지 않습니다. 이건 다음 장에서 다뤄보도록 하겠습니다.


4. 다음은

properties 를 영역별로 계층화 하여 Bean 에 매핑하는 방법과,

Application 재시작없이 변경된 Config Server 의 properties 를 갱신하는 걸 확인해보도록 하겠습니다.


끗 'ㅅ'


Comments