このバージョンはまだ開発中であり、まだ安定しているとは考えられていません。最新の安定バージョンについては、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] (英語) 、その他の「サーバーレス」サービスプロバイダー用のアダプター。