怒Mは思いつきでモノを言う

やったことメモなどなど

「Java Day Tokyo 2018」に行ってきた。③

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が何故利用されていないのでしょうか。

  • ServerlessでJavaを使用することはできますか?⇨Yes!
  • FaaSはWebのスクリプト言語以上の物ですか?⇨Yes!
  • FaaSにJava開発の習慣を使用できますか?⇨Yes!
  • JVMが短命のアプリケーションを効果的に実行できますか?⇨Yes!

今日の成長したJava開発はどのように見えているでしょうか。

  1. 普通のJavaを使用したプログラム
  2. オープンソースの強力な受け入れ
  3. 利用可能なツール/ライブラリの豊富さ
  4. 複雑なアプリケーション
  5. JVMを効果的に使用する

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が面白そうなので、とりあえず動かしてみよう。