クラウドネイティブで拡がるAkkaの未来
Akkaの開発をサポートしているLightbend社のWebサイトでは、2021年現在クラウドネイティブへの対応を強く打ち出しています。Lightbend社は2019年にCNCF(Cloud Native Coumpting Foundation)に参加しており、CNCF技術スタックに含まれるプロダクト群と親和性の高いプロダクト開発を行っていくのではないかと予想されます。この記事ではその中でも2点、Kubernetesへの対応とCloudstateによるステートフル・サーバーレス実現についてお話しします。
CNCFスタック技術の中でも中心的な役割を果たすことが多いKubernetesですが、AkkaもKubernetesと連携できます。どこで使われるかというと、Akkaクラスター構築時の基盤として使うことが主用途です。Akka DiscoveryのKubernetes APIに技術的な詳細が載っています。
Kubernetes自体がクラスターを構成し、その上にAkkaクラスターも構成するとなると、クラスターの2段構えのようになりますが、それぞれのクラスターは目的が異なります。Kubernetesはインフラ全体を構成するもので、複数のマイクロサービスをそのうえで稼働させるものです。一方Akkaクラスターはあくまで単一のマイクロサービスに閉じた使い方をすべきで、前回でもその点について触れています。

Kubernetesはインフラ層での通信を担い、Akkaクラスターはアプリケーション層の通信を担います。アプリケーション層の通信は、JavaやScalaで定義したメッセージを、ノードを越えたアクター間で送りあう仕組みです。
数年前まではAkkaクラスターで初期クラスターの構成とノードの追加・削除をおこなうのは手間のかかる作りこみが必要でした。より具体的には、Akkaでメッセージを送信するコードを書く際は、tell APIを使うときはノードを意識する必要はないのですが、クラスターの管理をする時にはどうしてもIPアドレスなどのインフラ寄りの情報を使って、初期クラスターの構成やノードの追加・削除を行います。
そういったインフラよりの仕組みが、Akka DiscoveryのKubernetes APIでだいぶ楽になりました。Akka DiscoveryではKubernetesのほかにAWS APIやConsul APIも備えており、自分で一からノード特定の仕組みを作りこまなくても、それらのサービスとシームレスに接続できます。
次に紹介するのはCloudstateです。Lightbend社のサポートする新たなオープンソース製品として、2019年に発表されました。Akkaの開発で培われた知見と技術を活かし、ステートフル・サーバーレスとよばれる分野での利用を意図したものです。
近年サーバーレス技術は大きく発展し、利用者の数も用途も飛躍的に拡大しています。代表例の一つと言えばAWS Lambdaですが、Lambdaが登場した2014年と比べ、今では各クラウドベンダが複数のサーバーレス製品を提供し、しばらくは新しいサーバーレス製品の投入は止まることがなさそうです。
コンピュータ・サイエンス分野で有名な、カリフォルニア大学バークレー校から発表された論文、Cloud Programming Simplified: A Berkeley View on Serverless Computingでは「私たちはサーバーレスが、クラウド・コンピューティングの未来において、支配的な勢力となるまで成長すると予想しています」という、なかなか刺激的な見通しを発表しています。
Lightbend社CTOのJonas Bonér氏の見立てでは、現在のサーバーレスはFunction as a Serviceに代表されるような、内部状態を包有しないモデルばかりで、内部状態を包有するモデルによってカバーできる領域が広がってはじめて、サーバーレスが未来のアプリケーション作成での当たり前の選択肢になる、としています。
CloudstateはKnative、gRPC、Akka ClusterやGraalVMを組み合わせてKubernetes上で動かし、内部状態を方ゆするサーバーレス、つまりステートフル・サーバーレスを実現します。下支えとなる技術としてAkkaが含まれていますが、アクターを意識することなくGo、JavaScript、Java、KotolinやPythonなどでアプリケーションを書けます。APIを介してアクターのもつ内部状態に間接的にアクセスするので、自らアクターの状態遷移を作りこまずに、イベント・ソーシングなどAkkaの提供するメリットを享受できます。
クラウドネイティブやサーバーレスといったトレンドは、すでに一過性ではなく今後のコンピューティングの世界において大きな役割を占めることは、多くの人々が賛同するところでしょう。その中でも内部状態をもつステートフル・サーバーレスという新しい分野は、すでにCloudsate以外の競合製品がでるように注目を集め始めています。クラウドの新しい分野を支えるこのテクノロジーを身に着けるために、ここまで学んできたAkkaをきっかけに入り込むのも面白いと思います。
