閉じる

Spring Cloud

2020.0.2

Spring Cloud は、開発者が分散システムの一般的なパターン(構成管理、サービスディスカバリ、サーキットブレーカー、インテリジェントルーティング、マイクロプロキシ、コントロールバス、ワンタイムトークン、グローバルロック、リーダー選出、分散セッション、クラスタ状態など)を素早く構築するためのツールを提供します。分散システムの調整は、ボイラープレートパターンにつながり、Spring Cloud を使用することで、開発者はこれらのパターンを実装したサービスやアプリケーションを迅速に立ち上げることができます。これらは、開発者自身のラップトップ、ベアメタルのデータセンター、Cloud Foundry のようなマネージドプラットフォームを含む、どのような分散環境でもうまく動作します。

機能

Spring Cloud は、一般的なユースケースですぐに使用できる優れたエクスペリエンスと、他のケースをカバーする拡張性メカニズムの提供に重点を置いています。

  • 分散 / バージョン構成

  • サービス登録およびディスカバリ

  • ルーティング

  • サービス間呼び出し

  • 負荷分散

  • サーキットブレーカー

  • グローバルロック

  • リーダー選出とクラスター状態

  • 分散メッセージング

入門

新しい Spring Cloud プロジェクトの生成

開始する最も簡単な方法は、start.spring.io (英語) にアクセスし、使用する Spring Boot バージョンと Spring Cloud プロジェクトを選択することです。これにより、プロジェクトを生成するときに、対応する Spring Cloud BOM バージョンが Maven/Gradle ファイルに追加されます。

Spring Cloud を既存の Spring Boot アプリケーションに追加する

既存の Spring Boot アプリで Spring Cloud をそのアプリに追加する場合、最初のステップは、使用する Spring Cloud のバージョンを決定することです。アプリで使用するバージョンは、使用している Spring Boot のバージョンによって異なります。

次の表は、Spring Cloud のどのバージョンが Spring Boot のどのバージョンにマップされるかを示しています。

表 1: リリーストレイン Spring Boot の互換性
リリーストレイン Boot バージョン

2020.0.x: GitHub (英語) 別名 Ilford

2.4.x

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 はすべて保守終了状態に達し、サポートされなくなりました。

バグ修正と下位互換性機能は、サービスリリース(SR)を介して各リリーストレインに追加されます。使用する Spring Cloud のバージョンを決定したら、そのリリーストレインの最新のサービスリリースを使用する必要があります。最新のサービスリリース情報については、リリースノートページを参照してください: GitHub (英語)

使用するリリーストレインとそのリリーストレインの最新のサービスリリースがわかったため、Spring Cloud BOM をアプリケーションに追加できます。

<properties>
    <spring.cloud-version>Hoxton.SR8</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>
buildscript {
  dependencies {
    classpath "io.spring.gradle:dependency-management-plugin:1.0.10.RELEASE"
  }
}

ext {
  set('springCloudVersion', "Hoxton.SR8")
}


apply plugin: "io.spring.dependency-management"

dependencyManagement {
  imports {
    mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
  }
}
メモ
リリーストレインには、spring-cloud-dependencies と spring-cloud-starter-parent が含まれています。spring-boot-starter-parent と同じように親を使用できます(Maven を使用している場合)。依存関係管理のみが必要な場合、「依存関係」バージョンは同じものの BOM 専用バージョンです(依存関係管理のみが含まれ、プラグイン宣言や Spring または Spring Boot への直接参照は含まれません)。Spring Boot 親 POM を使用している場合、Spring Cloud の BOM を使用できます。その反対は真実ではありません。Cloud 親を使用すると、Boot 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 {
  compile 'org.springframework.cloud:spring-cloud-starter-config'
  compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
  //...
}

主なプロジェクト

Spring Cloud Config

git リポジトリに一元化された集中外部設定管理。構成リソースは Spring Environment に直接マップされますが、必要に応じて、Spring 以外のアプリケーションで使用できます。

Spring Cloud Netflix

さまざまな Netflix OSS コンポーネント(Eureka、Hystrix、Zuul、Archaius など)との統合。

Spring Cloud Bus

サービスとサービスインスタンスを分散メッセージングとリンクするためのイベントバス。クラスター全体に状態変更を伝播できます(例: 構成変更イベント)。

Spring Cloud Cloudfoundry

アプリケーションを Pivotal Cloud Foundry と統合します。サービス検出の実装を提供し、SSO および OAuth2 で保護されたリソースの実装も簡単にします。

Spring Cloud Open Service Broker

Open Service Broker API を実装する Service Broker を構築するための出発点を提供します。

Spring Cloud Cluster: GitHub (英語)

Zookeeper、Redis、Hazelcast、Consul の抽象化と実装によるリーダーシップの選出と一般的なステートフルパターン。

Spring Cloud Consul

Hashicorp Consul によるサービスの検出と構成管理。

Spring Cloud Security

Zuul プロキシで負荷分散された OAuth2 REST クライアントと認証ヘッダーリレーのサポートを提供します。

Spring Cloud Sleuth

Spring Cloud アプリケーションの分散トレース。Zipkin、HTrace、ログベース(ELK など)のトレースと互換性があります。

Spring Cloud Data Flow

最新のランタイムで構成可能なマイクロサービスアプリケーション向けのクラウドネイティブオーケストレーションサービス。使いやすい DSL、ドラッグアンドドロップ GUI、および REST-API を組み合わせることにより、マイクロサービスベースのデータパイプラインの全体的なオーケストレーションが簡素化されます。

Spring Cloud Stream

外部システムに接続できるアプリケーションを迅速に構築するための、軽量のイベント駆動型マイクロサービスフレームワーク。Apache Kafka または RabbitMQ を使用して Spring Boot アプリ間でメッセージを送受信するための単純な宣言モデル。

Spring Cloud Stream Applications

Spring Cloud Stream Applications は、Spring Cloud Stream のバインダー抽象化を使用して、Apache Kafka、RabbitMQ などの外部ミドルウェアシステムとの統合を提供する、すぐに使用できる Spring Boot アプリケーションです。

Spring Cloud Task

有限量のデータ処理を実行するアプリケーションを迅速に構築する、短命のマイクロサービスフレームワーク。Spring Boot アプリに機能と非機能の両方の機能を追加するための単純な宣言。

Spring Cloud Task App Starters

Spring Cloud Task App Starters は Spring Boot アプリケーションであり、永久に実行されない Spring Batch ジョブを含む任意のプロセスである可能性があり、一定期間のデータ処理後に終了 / 停止します。

Spring Cloud Zookeeper

Apache Zookeeper を使用したサービス検出と構成管理。

Spring Cloud Connectors: GitHub (英語)

さまざまなプラットフォームの PaaS アプリケーションが、データベースやメッセージブローカー(以前は「Spring Cloud」として知られていたプロジェクト)などのバックエンドサービスに簡単に接続できるようにします。

Spring Cloud スターター : GitHub (英語)

Spring ブートスタイルのスタータープロジェクトは、Spring Cloud のコンシューマーの依存関係管理を容易にします。(プロジェクトとして廃止され、Angel.SR2 の後、他のプロジェクトと統合されました。)

Spring Cloud CLI: GitHub (英語)

Groovy で Spring Cloud コンポーネントアプリケーションをすばやく作成するための Spring Boot CLI プラグイン

Spring Cloud Contract

Spring Cloud Contract は、ユーザーがコンシューマードリブン契約アプローチをうまく実装するのに役立つソリューションを保持する包括的なプロジェクトです。

Spring Cloud Gateway

Spring Cloud Gateway は、Project Reactor に基づくインテリジェントでプログラム可能なルーターです。

Spring Cloud OpenFeign

Spring Cloud OpenFeign は、Spring 環境およびその他の Spring プログラミングモデルのイディオムへの自動構成およびバインドにより、Spring Boot アプリの統合を提供します。

Spring Cloud Pipelines

Spring Cloud Pipelines は、アプリケーションをダウンタイムなしでデプロイし、問題が発生した場合に簡単にロールバックできるようにするための手順を備えた、デプロイパイプラインを提供します。

Spring Cloud Function: GitHub (英語)

Spring Cloud Function は、関数を介してビジネスロジックの実装を促進します。サーバーレスプロバイダー全体で統一されたプログラミングモデルをサポートし、スタンドアロン(ローカルまたは PaaS)で実行することもできます。

リリーストレイン

Spring Cloud は、原則として異なるリリース頻度を持つ独立したプロジェクトで構成される包括的なプロジェクトです。ポートフォリオを管理するために、BOM(Bill of Materials)が公開され、個々のプロジェクトに依存するキュレーションセットが公開されます。リリーストレインの命名規則については、こちらを参照してください: GitHub (英語)

Spring Initializr

プロジェクトのクイックスタート

Spring Initializr (英語) を使用してアプリケーションをブートストラップします。

ドキュメント

Spring プロジェクト別に用意されています。プロジェクトの機能を使用する方法と、それを使用して達成できることを詳細に説明しています。
2020.0.2 CURRENT GA リファレンスドキュメント
2020.0.3-SNAPSHOT SNAPSHOT リファレンスドキュメント (英語)
Hoxton.SR10 GA リファレンスドキュメント (英語)
Hoxton.BUILD-SNAPSHOT SNAPSHOT リファレンスドキュメント (英語)

ガイド

15-30 分で完成するように設計されたガイドは、Spring を使用した開発タスク用のスターターアプリ構築するための、迅速で実践的な手順を提供します。