このバージョンはまだ開発中であり、まだ安定しているとは考えられていません。最新の安定バージョンについては、spring-cloud-function 5.0.4 を使用してください。

導入

Spring Cloud Function は、次の高レベルのゴールを持つプロジェクトです。

  • 関数を介したビジネスロジックの実装を推進します。

  • 同じコードを Web エンドポイント、ストリームプロセッサー、タスクとして実行できるように、ビジネスロジックの開発ライフサイクルを特定のランタイムターゲットから分離します。

  • サーバーレスプロバイダー全体で統一されたプログラミングモデルをサポートし、スタンドアロン(ローカルまたは PaaS)で実行する機能をサポートします。

  • サーバーレスプロバイダーで Spring Boot 機能(自動構成、依存性注入、メトリクス)を有効にします。

すべてのトランスポートの詳細とインフラストラクチャを抽象化し、開発者が使い慣れたツールとプロセスをすべて維持し、ビジネスロジックにしっかりと集中できるようにします。

完全な実行可能かつテスト可能な Spring Boot アプリケーション(単純な文字列操作を実装)は次のとおりです。

@SpringBootApplication
public class Application {

  @Bean
  public Function<String, String> uppercase() {
    return value -> value.toUpperCase();
  }

  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}

これは単なる Spring Boot アプリケーションであるため、他の Spring Boot アプリケーションと同じように、ローカルおよび CI ビルドでビルド、実行、テストできます。Function は java.util からのものであり、Flux は Project Reactor (英語) からの Reactive Streams (英語)  Publisher です。この機能には、HTTP またはメッセージングを介してアクセスできます。

Spring Cloud Function には次の機能があります。

  • プログラミングスタイルの選択 - リアクティブ、命令形またはハイブリッド。

  • 関数の構成と適応(たとえば、リアクティブ型の命令型関数の構成)。

  • 複数の入力と出力を備えたリアクティブ関数のサポートにより、マージ、結合、その他の複雑なストリーミング操作を関数で処理できます。

  • 入力と出力の透過的な型変換。

  • ターゲットプラットフォームに固有のデプロイのパッケージ化関数(Project Riff、AWS Lambda など)

  • HTTP エンドポイントとして外部に関数を公開するためのアダプターなど

  • そのようなアプリケーションコンテキストを含む JAR ファイルを分離されたクラスローダーでデプロイし、単一の JVM にまとめてパックできるようにします。

  • AWS Lambda [GitHub] (英語) 、Azure [GitHub] (英語) 、Google クラウド機能 [GitHub] (英語) 、その他の「サーバーレス」サービスプロバイダー用のアダプター。