Page History
...
어플리케이션에 사용되는 설정을 중앙화하여 관리하는것은 여러가지 이점이 있으며
어플리케이션을 클라우드에 분산하기위해서 중요한 요소중에 하나입니다계층화되어 관리 되어야 합니다.
고전적인 문제점을 먼저 체크해보겠습니다.
고전적 설정의 문제점
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
spring.application.name="config-service" server.port=8888 spring.cloud.config.server.git.uri=http://git.webnori.com/scm/sb2/cloudconfig.git |
설정 ㄱ설정 서버가 띄워질 포트와 , 설정저장소를 지정합니다.
설정 서버의 셋팅 리소스로 깃을 지정합니다. Git Pull 명령을 주기적으로 날려서
설정의 추가/삭제등을 Config 서버가 감지 가능합니다.
어플리케이션
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
spring.application.name=front-web spring.cloud.config.uri=http://localhost:8888 |
Config 중앙서버의 접속정보와 자신의 어플리케이션이름 설정을 합니다.
여기서 어플리케이션 이름이 중요한 이유는, 중앙 서버에서 front-web.yml 와같이 자신의 어플리케이션 설정을 탐색하기 때문입니다.
Spring boot 은 기본적으로 application.peroperties 라는 기본설정을 사용하지만, application.yml 설정도 인식이됩니다.
yml의 장점은 구조화된 가동성을 가독성을 제공하며, 여러 환경을 하나의 파일에 정리할수 있는 장점이 있습니다.
...
스프링에서는 로컬에서 설정을 읽어온것과 같은 방식으로 사용하면 됩니다.
어플리케이션이 로드될시 중앙서버에서 이미 설정값을 읽어왔기때문입니다.
여기서 RefreshScope 어노테이션은 , 설정변경시 노드 재시작없이 적용가능하게 합니다.
API 자체 모니터링툴인 actuator를 내장하면 변경적용 명령이 가능합니다.
curl localhost:8080/actuator/refresh -d {} -H "Content-Type: application/json"
설정 저장소 분리
git:http https://git.webnorigithub.com/scm/sb2/cloudconfig.gitpsmon/mycloudconfig
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
message: "hello, spring cloud -default" --- spring: profiles: local server: port: 8080 message: "hi, spring cloud -local" --- spring: profiles: dock-local server: port: 80 message: "hello, spring cloud -doc local" --- |
...
spring.application.name=lobbyapi
spring.cloud.config.uri=http://localhost:8888설정은 원격지에 있으나,원격지 설정을 찾기위해 위 두가지는 로컬에서 파일혹은 전달인자로 필수로 지정해줘야하는 설정입니다.모든 셋팅은 원격에 중앙화가 되어있음으로 로컬에서 파일혹은 전달인자로 전달하여 환경별로 분기를 태울수 있으며
필요하면 설정의 개인화가 가능합니다.
설정서버 로그
Panel |
---|
2018-12-02 22:25:04.647 INFO 12212 --- [nio-8888-exec-3] o.s.c.c.s.e.NativeEnvironmentRepository : Adding property source: file:/C:/Users/psmon/AppData/Local/Temp/config-repo-3303566354724094937/application.yml (document #0) |
설정서버가 Git Module이 내장되어 있어서, 중앙 설정파일의 변경처리를 유연하게 해줍니다. 똑똑한 녀석입니다.
우리는 설정이 바뀔때 단지 git에 커밋만 하면됩니다.
올인원 로컬
설정의 중앙화를 통해서 local 에서 충돌없는 포트 구성이 손쉽게 가능합니다.
어플리케이션 포트가 Listen되기전에 ConfigSever에 지정한 내용을 적용할수 있다란 의미 입니다.
그외
이것은 스테이징/운영에서도 이점이 있지만 로컬개발환경에서 다음과같은 이점이 있을수 있습니다.
...