2018年5月17日(木)に開催されたJava Day Tokyo 2018に行ってきました。 基調講演は途中から参加で、用事があった夕方頃までセッションを聞きました。 で、気になった点をメモ書き。ラスト。書くの遅くなりました。
[TEC-4] Java in Serverless Land
Serverlessとはサーバを管理しなくてよく、サーバを意識せずにアプリケーションが作れる
という特徴を持つアーキテクチャです。
Function as a Service(Fass)はServerlessアーキテクチャの1つです。
FaaSは短命(Short-lived)で、状態を持たず(Stateless)、イベント駆動型(Event Driven)というのが特徴です。
Serverlessで使用されているプログラミング言語の内訳は以下のような状態です。
lang | % | |
---|---|---|
1 | Python | 35% |
2 | JS | 35% |
3 | Java | 10% |
ServerlessにおいてJavaが何故利用されていないのでしょうか。
今日の成長したJava開発はどのように見えているでしょうか。
Fn ProjectはオープンソースのFaaSプラットフォームです。 これはJavaで簡単に導入・使用することができます。
Fn Flowは以下の特徴があります。
- 信頼性の高いスケーラブルなアプリケーションを構築できる
- 豊富な並列処理オプションをサポート
- 関数でワークフローを定義できる
- 関数は純粋にコードとして書かれる
Fn FlowはJDK8のCompletionStage APIに着想を得ています。
CompletionStageは、非同期アクションのワークフローはメモリに構築され、ForkJoinPoolを使用して非同期にて完了します。
Fn Flowは非同期のワークフローはFlow Serverで構築され、FaaSを使用して非同期に完了します。
これまで、CompletionStage APIで行なっていたことを、Fn Flowで出来ます。
Fn Functionは単なるコンテナです。 私たちは、早く起動し、コンテナイメージを小さく、環境を汚さないことを望んでいます。
早く起動するためにメモリをJVMとシェアします。 また、起動アクティビティをキャッシュして、起動時間を短縮します。(CDS、AppCDS、AOT)
コンテナイメージを小さくするために、Alpineを使ったり、jlinkで不要なJDKモジュールを排除したり工夫をします。
最後に
Fn Projectが面白そうなので、とりあえず動かしてみよう。