yaml 등 환경 설정 정보를 각각의 Micro Service가 아닌 외부에서 관리한다
또한 재기동하지 않고 동적으로 환경 설정 정보를 반영할 수 있다
재미있게도 Config server는 spring.cloud.config.server.git.url을 넣지 않으면 기동이 되지 않는다.
(.git디렉터리 존재해야 하고 그 안에 remote 등의 정보도 있어야함... 즉 완전한 .git이 필요하다)
상대, 절대 주소
spring:
application.name: config-service
cloud.config.server:
# git.uri: 'file://${user.dir}/../../../../leedowon-msa-spring-cloud-configuration' // 상대주소, ..의 의미를 인식하지 못함
git.uri: 'file://c/dev/5. projects/3. global/leedowon-msa-spring-cloud-configuration' // 절대주소. 특별한 경우가 아니면 이걸로 하는게 정신건강에 좋다
결론: 마음편히 하려면 절대주소로 하자
위 설정에서 많은 고민을 했다.
spring.cloud.config.server.git.uri 설정은 기본적으로 절대 주소를 지원한다고 하지만 나는 상대 주소를 넣고 싶었다.
그러나 상대 주소의 경우 "../.." 문법이 지원되지 않았다. (그대로 이것 자체가 경로인줄 앎)
서브모듈로 import하는 방법을 생각해봤으나 너무 번거로워 보였다 (서브 모듈 자체도 형상관리, 그걸 임포트하는 부모도 지속적으로 반영해야 한다. 이게 꼬이기라도 하면... 어휴)
아무래도 토이도 아닌 클론코딩으로 배우는 단계에서는 이렇게까지 할 필요는 굳이 없어 보인다...
따라서 강의대로 절대주소 + 독립된 git repo로 진행하기도 했다.
주소를 복붙할때, mac, win 표기, 공백 처리, 이스케이프 등... 멘탈을 해롭게 하는게 있는데 아래처럼 하면 보다 수월하다
파일 프로토콜을 웹브라우저도 지원하는데... 이렇게 하면 내가 맞는 주소 인지를 확인하면서 url을 복사할 수 있다.
아래와 같은 화면을 출력하면 성공이다!
Spring Acutuator
아래에서 Endpoint들을 확인할 수 있다
Spring Acutuator Refresh
환경 설정 정보를 재기동 없이 동적으로 가져올 수 있다
아래 설정을 하거나
implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'
밑에 설정을 하면 된다 (yml은 안 되며, jvm 인자로 전달해야 한다) (참고, boot 2.4 cloud config 설정)
spring.cloud.bootstrap.enabled=true
### Direct Health Check
GET http://localhost:8228/users/health-check
변경 내역이 아래처럼 응답한다
Profiles 분리
prod, dev등 환경별로 설정 정보를 분리할 수 있다
config server (설정 정보를 가진 쪽)
confie client (그 반대)
bootstrap.yml에 위처럼 설정하거나,
실행할때 JVM 옵션 정보 혹은 Active profiles에 기입하면 된다
Config Server Repo: Git Remote 로 변경
spring:
application.name: config-service
cloud.config.server:
git:
uri: https://github.com/progress0407/leedowon-msa-spring-cloud-configuration
# username: [your username]
# password: [your password]
Config Server Repo: (Native) Local File System으로로 변경
spring:
application.name: config-service
profiles:
active: native
cloud.config.server:
native:
search-locations: 'file:///C:/dev/5.%20projects/3.%20global/leedowon-msa-spring-cloud-configuration'
Spring 3.x 설정
역시나 여기도 3.x로 버전 업하면서 바뀐 게 있다.
httptrace -> httpexchanges로 변경됨 (이전 네이밍이 혼란스럽기 때문)
[참고]
How to Enable Actuator's HttpTrace in Spring Boot 3 - Apps Developer Blog
HttpTraceRepository를 찾을수가없는데 어떻게해야하나요 - 인프런 | 질문 & 답변 (inflearn.com)
Spring Boot 3.0 Migration Guide · spring-projects/spring-boot Wiki (github.com)
이상현상 발견 (Config Repo 되돌아감)
config repository를 변경후 커밋한 후에
config client (나의 경우 user service)를 재기동하면,
config repository의 내용이 commit 버전을 포함해서, 이전으로 돌아간다 (정확히는 config client가 지니고 있던 버전)
저 현상을 막기 위해서는 로컬에 있는 config repo를 push해야 한다
그러면 저런 이상 현상이 일어나지 않는다 (이유는 아직 모른다)
.http 변수 관리 (잘 되지 않음)
응답 값을 가져와서 변수에 저장하는 등의 사용이 가능하다
그러나 어째서인지 본인은 응답 헤더값을 가져올 수 없었다 ㅠㅠ
아래는 관련 링크들이다
아직도 postman 쓰세요? Intellij http를 통해 api를 테스트해보자! (oopy.io)
Postman 탈출! IntelliJ로 쉽고 빠르게 Http 테스트하기 (velog.io)
IntelliJ http Client 응답값 변수로 저장하고 사용하기 (tistory.com)
Exploring the HTTP request syntax | IntelliJ IDEA Documentation (jetbrains.com)
어째선지 다 아는 블로그들이다 (얼굴들도 한 번씩 본... 웨지, 주캉, 킹동욱님)
'Book & Lecture > 이도원님 MSA' 카테고리의 다른 글
Section 10: Micro Service간 통신 (0) | 2023.06.03 |
---|---|
Section 8: Cloud Bus (0) | 2023.05.28 |
Section 6: User Service (Security in Spring Boot 3.x) (삽질..) (0) | 2023.05.22 |
Section 3 ~ 5 E-Commerse App, User, Catalog, Orders MicroSerivce (0) | 2023.05.22 |
Secion 0~2: Micro Service와 Spring Cloud 소개, Service Discovery, API Gateway (0) | 2023.05.22 |
hi hello... World >< 가장 아름다운 하나의 해답이 존재한다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!