マイクロサービスアーキテクチャでは、多数のサービスが協調して動作しますが、各サービスには固有の設定が必要です。サービス数が増大するにつれ、個別の設定ファイルを個別に管理・更新することは運用コストを著しく増大させます。Spring Cloud Configは、これらの設定を外部化・一元管理するためのソリューションを提供します。
Spring Cloud Config の構成要素
- Config Server(設定サーバー): 設定ファイルの一元的なリポジトリ(主にGitを使用)に接続し、各サービスに対して設定値の提供や暗号化・復号の機能を提供する独立したサービスです。
- Config Client(クライアント): アプリケーションの起動時にConfig Serverから設定をフェッチするサービスです。これにより、各サービスは外部化された設定を利用可能になります。
主な機能と利点
- 設定ファイルの一元管理とバージョン管理(Gitによる変更履歴の保持)。
- 環境(開発、ステージング、本番など)ごとの動的な設定切り替え。
- サービスの再起動なしでの設定更新(ライフサイクル管理の最適化)。
- 設定情報のREST APIによる公開。
クライアント側の設定
Config Clientとして動作させるには、依存関係の追加と接続先情報の定義が必要です。まず、プロジェクトのビルドファイルに以下の依存関係を追加します。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
次に、bootstrap.ymlまたはbootstrap.propertiesを使用して、Config Serverへの接続情報を設定します。通常、アプリケーション固有の設定よりも先に読み込まれる必要があるため、bootstrap階層に記述します。
spring:
application:
name: service-app
cloud:
config:
profile: development
uri: http://config-server.local:8083/
フェイルファスト設定
アプリケーション起動時にConfig Serverが利用可能であることを即座に確認し、接続できない場合に起動を中断させるには、fail-fastオプションを有効にします。これにより、設定の読み込み失敗による予期しない動作を未然に防ぐことができます。
spring:
cloud:
config:
fail-fast: true