Skip to content

Commit

Permalink
refactor: 퇴고
Browse files Browse the repository at this point in the history
  • Loading branch information
ChoiEungi committed Jan 21, 2024
1 parent 77b47b5 commit a64bf0a
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions _posts/2024-01-21-spring-cloud-refresh.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ categories: [Development]


근래에 [요즘 우아한 개발](https://m.yes24.com/Goods/Detail/122535338)이라는 책을 읽으면서 내용 중에 배포 없이 Spring Cloud Config에서 받아오는 프로퍼티를 변경해 서버에 적용하려는 내용을 접했습니다.
이는 단일 장애 지점(SPOF)을 제거하기 위해 [외부 메시지 플랫폼을 이중화](https://techblog.woowahan.com/7724/)하면서 각 외부 플랫폼 연동에 대한 트래픽 분배를 어플리케이션이 실행 중에도 유연하게 변경하려는 의도였습니다.
또, 최종적으로 선택한 방법이 일반적으로 사용하는 Spring Cloud Bus를 이용하기보다 Spring Boot만을 활용해 프로퍼티를 재배포 없이 수정하는 방법이 흥미롭게 느껴져 호기심에 구현해보게 되었습니다.
해당 팀은 [외부 메시지 플랫폼을 이중화](https://techblog.woowahan.com/7724/)하면서 각 외부 플랫폼 연동에 대한 트래픽 분배를 어플리케이션 실행 중에도 변경할 수 있도록 구현해 단일 장애 지점(SPOF)을 제거하려 했습니다.
이를 위해 어플리케이션의 배포 없이 Config 서버의 프로퍼티를 변경함으로 트래픽 분배를 변경하는 방법을 고려했고, 팀에서 최종적으로 일반적으로 사용하는 Spring Cloud Bus를 이용하기보다 Spring Boot만을 활용해 프로퍼티를 재배포 없이 수정하는 방법을 선택했습니다. 이 부분이 흥미롭게 느껴져 호기심에 구현해보게 되었습니다.


### 배포 없이 프로퍼티를 변경
### 배포 없이 프로퍼티를 변경하는 방법, refresh
Spring Boot를 이용하면 로깅 레벨, 데이터 소스 정보, 타임아웃 설정, 환경 변수 등 여러 설정 정보(이하 프로퍼티)를 application.yml 혹은 application.properties 파일에 명시해서 외부화(externalize)할 수 있습니다. 이를 통해 다양한 환경(local, dev, prod 등) 설정을 코드가 아닌 외부 파일에 명시함으로 해당 관심사를 코드에서 분리할 수 있습니다.

책에 나온 사례와 같이 외부 시스템 장애와 같은 기민한 대응을 하려면 어플리케이션 배포 없이도 런타임 환경에서 변경할 수 있어야 합니다. 만약 해당 기능이 비즈니스에서 중요한 역할을 하는 부분이라면 더더욱 조심스럽고 기민하게 다뤄야 합니다.
Expand Down

0 comments on commit a64bf0a

Please sign in to comment.