先にジャンプ
VMware は、あなたの進歩を加速させるトレーニングと認定を提供します。
さらに学習したい方に (英語)Spring Cloud は、開発者が分散システムの一般的なパターンの一部 (構成管理、サービス検出、サーキットブレーカー、インテリジェントルーティング、マイクロプロキシ、制御バス、短期間のマイクロサービス、契約テストなど) を迅速に構築するためのツールを提供します。分散システムの調整により定型パターンが生成され、開発者は Spring Cloud を使用することで、それらのパターンを実装するサービスやアプリケーションを迅速に立ち上げることができます。これらは、開発者自身のラップトップ、ベアメタルデータセンター、Cloud Foundry などのマネージドプラットフォームなど、あらゆる分散環境でうまく機能します。
Spring Cloud は、一般的なユースケースですぐに使用できる優れたエクスペリエンスと、他のケースをカバーする拡張性メカニズムの提供に重点を置いています。
分散 / バージョン構成
サービス登録およびディスカバリ
ルーティング
サービス間呼び出し
負荷分散
サーキットブレーカー
分散メッセージング
有効期間が短いマイクロサービス (タスク)
コンシューマー主導およびプロデューサー主導の契約テスト
開始する最も簡単な方法は、start.spring.io にアクセスし、使用する Spring Boot バージョンと Spring Cloud プロジェクトを選択することです。これにより、プロジェクトを生成するときに、対応する Spring Cloud BOM バージョンが Maven/Gradle ファイルに追加されます。
既存の Spring Boot アプリで Spring Cloud をそのアプリに追加する場合、最初のステップは、使用する Spring Cloud のバージョンを決定することです。アプリで使用するバージョンは、使用している Spring Boot のバージョンによって異なります。
次の表は、Spring Cloud のどのバージョンが Spring Boot のどのバージョンにマップされるかを示しています。
表 1: リリーストレイン Spring Boot 対応(詳細はこちら [GitHub] (英語) )。
リリーストレイン | Spring Boot 世代 |
---|---|
2023.0.x [GitHub] (英語) 別名 Leyton | 3.3.x、3.2.x |
2022.0.x [GitHub] (英語) 別名 Kilburn | 3.0.x、3.1.x (2022.0.3 から) |
2021.0.x [GitHub] (英語) 別名 Jubilee | 2.6.x、2.7.x (2021.0.3 から) |
2020.0.x [GitHub] (英語) 別名 Ilford | 2.4.x、2.5.x (2020.0.3 から) |
Hoxton [GitHub] (英語) | 2.2.x、2.3.x (SR5 以降) |
Greenwich [GitHub] (英語) | 2.1.x |
Finchley [GitHub] (英語) | 2.0.x |
Edgware [GitHub] (英語) | 1.5.x |
Dalston [GitHub] (英語) | 1.5.x |
Spring Cloud、Dalston、Edgware、Finchley、Greenwich、2020.0 (別名 Ilford)、2021.0 (別名 Jubilee)、および 2022.0 (別名 Kilburn) はすべてサポート終了となり、サポートされなくなりました。
バグ修正と下位互換性機能は、サービスリリース(SR)を介して各リリーストレインに追加されます。使用する Spring Cloud のバージョンを決定したら、そのリリーストレインの最新のサービスリリースを使用する必要があります。最新のサービスリリース情報については、リリースノートページを参照してください [GitHub] (英語) 。
使用するリリーストレインとそのリリーストレインの最新のサービスリリースがわかったため、Spring Cloud BOM をアプリケーションに追加できます。
<properties>
<spring-cloud.version>2023.0.2</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.0'
id 'io.spring.dependency-management' version '1.1.4'
}
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', "2023.0.2")
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
リリーストレイン BOM
spring-cloud-dependencies
を使用することをお勧めします。これは BOM のみのバージョンであり、依存関係管理のみが含まれており、プラグイン宣言や Spring または Spring Boot への直接参照は含まれていません。Spring Boot 親 POM を使用することも、Spring Boot (spring-boot-dependencies
) の BOM を使用して Spring Boot バージョンを管理することもできます。
Spring Boot と同じように、多くの Spring Cloud プロジェクトには、さまざまなクラウドネイティブ機能をプロジェクトに追加するための依存関係として追加できるスターターが含まれています。多くの場合、スターターをクラスパスに追加するだけで、多くの機能が有効になります。スターター名は、個々のプロジェクト内にドキュメント化されています。以下は、Spring Cloud Config クライアントと Spring Cloud Netflix Eureka クライアントをアプリケーションに追加する方法の例です。
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
...
</dependencies>
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-config'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
//...
}
git リポジトリに一元化された集中外部設定管理。構成リソースは Spring Environment
に直接マップされますが、必要に応じて、Spring 以外のアプリケーションで使用できます。
Spring Cloud Gateway は、Spring Framework および Spring Boot をベースにしたインテリジェントでプログラム可能なルーターです。
Netflix OSS の Eureka Services Discovery との統合。
Hashicorp Consul によるサービスの検出と構成管理。
最新のランタイムで構成可能なマイクロサービスアプリケーション向けのクラウドネイティブオーケストレーションサービス。使いやすい DSL、ドラッグアンドドロップ GUI、REST-API を組み合わせることにより、マイクロサービスベースのデータパイプラインの全体的なオーケストレーションが簡素化されます。
Spring Cloud Function は、関数を介してビジネスロジックの実装を促進します。サーバーレスプロバイダー全体で統一されたプログラミングモデルをサポートし、スタンドアロン(ローカルまたは PaaS)で実行することもできます。
外部システムに接続できるアプリケーションを迅速に構築するための軽量のイベント駆動型マイクロサービスフレームワーク。Spring Boot アプリ間で Apache Kafka または RabbitMQ を使用してメッセージを送受信するためのシンプルな宣言型モデル。
Spring Cloud Stream Applications は、Spring Cloud Stream のバインダー抽象化を使用して、Apache Kafka、RabbitMQ などの外部ミドルウェアシステムとの統合を提供する、すぐに使用できる Spring Boot アプリケーションです。
有限量のデータ処理を実行するアプリケーションを迅速に構築する、短命のマイクロサービスフレームワーク。Spring Boot アプリに機能と非機能の両方の機能を追加するための単純な宣言。
Spring Cloud Task App Starters は Spring Boot アプリケーションであり、永久に実行されない Spring Batch ジョブを含む任意のプロセスである可能性があり、一定期間のデータ処理後に終了 / 停止します。
Apache Zookeeper によるサービス検出と構成管理。
Spring Cloud Contract は、ユーザーがコンシューマードリブン契約アプローチをうまく実装するのに役立つソリューションを保持する包括的なプロジェクトです。
Spring Cloud OpenFeign は、Spring 環境およびその他の Spring プログラミングモデルのイディオムへの自動構成およびバインドにより、Spring Boot アプリの統合を提供します。
サービスとサービスインスタンスを分散メッセージングとリンクするためのイベントバス。クラスター全体に状態変更を伝播できます(例: 構成変更イベント)。
Open Service Broker API を実装する Service Broker を構築するための出発点を提供します。
Spring Cloud は、原則として異なるリリース頻度を持つ独立したプロジェクトで構成される包括的なプロジェクトです。ポートフォリオを管理するために、BOM(Bill of Materials)が公開され、個々のプロジェクトに依存するキュレーションセットが公開されます。リリーストレインの命名規則については、こちらを参照してください [GitHub] (英語) 。
Spring Initializr でプロジェクトのひな形を生成します。