Spring Cloud Config(feat.RabbitMQ)


現在社内で行われているプロジェクトはMSAアーキテクチャを採用し、11台のサーバを用いてサービス区分を行っている.各サービスには、プロファイルを変更するたびに構築および配布が非効率になるため、プロファイルを個別に削除する必要があります.
Spring Cloud Configとは?
分散した環境から設定ファイルを分離できるサービス
利点1)複数のサーバの設定ファイルを中央サーバ上で管理できる.
利点2)サーバの再構築と再配置を必要とせずに、プロファイルの変更を反映できます.

動作順序
1.ユーザが設定ファイルを変更しgitにプッシュする
2.configサーバはgitから最新の設定値を取得します.
3.Spring Cloud Bus-Message Brokerを使用して、最新の設定を変更したイベントを各サービスに送信します.(POST方式-url://./refresh)
4.イベントを受信した各サービスはconfig serverに最新の設定値を要求し、反映する.
コードの設定
// 각 서비스 내 application.properties에서는 config-server에 연결하는 코드만 작성
spring.application.name=api-commute
spring.profiles.active=dev

# config-server
spring.config.import=optional:configserver:http://localhost:[포트번호]
// config-server에 등록된 파일 내 실제 구성 정보 코드 작성
spring.application.name=api-commute
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
server.servlet.encoding.charset=utf-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true

# rabbitmq
spring.rabbitmq.host=[host]
spring.rabbitmq.port=[port]
spring.rabbitmq.username=[username]
spring.rabbitmq.password=[password]

// ...그 외 구성 정보들 생략
現在、実際のプロジェクトと構成情報リポジトリは別々ですが、git hooksを使用して実際のプロジェクト内で構成ファイルを作成して管理することもできます.
hooksを登録すると、変更イベントurlを呼び出す必要がなく、構成情報を自動的に変更できます.ただし、外部ipを使用する場合はアクセス可能にしなければならないが、現在のプロジェクトでは社内ipを使用しているためアクセスできないためhooksは使用されていない.
リファレンス