マーベリック株式会社、技術広報のリチャード 伊真岡です。
10月4日金曜日にChatworkさんのオフィスで、ステートフルなサーバーレス技術、オープンソース・プロダクトであるCloudStateの上映会を行いました。
Chatworkさんには突然の申し出にもかかわらず快く会場を提供していただき、また上映会のあとも様々な知見を共有していただきました。ありがとうございます!
上映会の様子
上映会ではビデオを理解するために必要な背景知識の種類や量が多く、既存のサーバーレス技術の背景や現状、KubernetesやKnative、gRPC、そしてAkkaといった分野の理解が要求される内容でした。しかし参加者の皆さんは真剣に見入っていて、上映会のあとの感想の共有でも活発な意見交換がなされました。
かとじゅんさんによるAkka自体の紹介もあり、それがCloudStateのUser Functionsとどう組み合わされるのか?CloudStateの謳うメリット、とくに費用対効果の高さは本当に実現できるのか?私が事前にもっていた疑問や印象もぶつけてみて、わかっている部分とこれから検証していきたい部分の境界がよりはっきりしてきたと思います。
CloudStateとステートフルなサーバーレス技術の紹介
さてここからは、以下は上記Connpassでのイベント説明からの引用ですがステートフルなサーバーレス技術の必要性、そしてCloudStateの紹介をします。
FaaS == サーバーレス ???
サーバーレスはサーバーの管理・運用業務に頭を悩ませることなくシステム(の一部)を構成することが出来、開発者たちからも歓迎され、未来のクラウド技術の主軸を担うとの意見もあるほど注目されています。現状はサーバーレスの主な利用例としてはFaas(Function as a Service)形式のものがあり、マネージドなFaaSの代表格としてはAmazon Lambda、Google Functions、Firebase Functions等が挙げられるでしょう。
参考資料: サーバーレスアーキテクチャ再考 - ゆううきブログ
FaaSを例に取るとその主なメリットは:
- 費用対効果が高い
- 従量課金制である
- 様々な自動化が容易である
- 開発者体験(DX)を向上させる仕組みに富む
- シンプルな構成でシステム開発時間を短縮できる
などが挙げられます。メリットだけをみるとまるで夢の技術のようですが、FaaSにはもちろん弱点もあります。それは:
一般用途のアプリケーションを構築するには制限が強すぎる
ということです。FaaSではFaaSに向いたシステムしか構築することが出来ず、そしてFaaSに向いたシステムとは思ったよりも範囲が狭いものであるということです。例えば、Webサービスを展開している多くの企業にとってそのバックエンドを全てFaaSに移すことは現実的ではないかもしれません。それを阻む主な要因としては:
- Functionの寿命が短い
- システム内部データの取得のために毎回データストアに問い合わせなくてはならない
などがあります。 多くの開発者は「サーバーレスはそういうもの」として受け入れていたのではないでしょうか。しかし、もしこれらの制限にとらわれないサーバーレス技術が利用可能だとしたらどうでしょう?つまりFaaSとは異なる制限をもつ別の種類のサーバーレス技術があるとしたらどうでしょう?
CloudState.io
CloudStateはLightbendが2019年8月に立ち上げた新しいオープンソース・プロジェクトです。 その目的はまさに上記で上げた問題点の解決、「クラウドの未来」であるサーバーレスの可能性を広げるためのプロジェクトです。
CloudStateという名のとおり、このプロジェクトではサーバーレス・システムでの分散ステートを扱います。AakkaのCluster、Event SourcingやCRDT、Kubernetes、 Knative、gRPCなどの技術を利用しサーバーレス・システム上での分散ステート管理に対する解決策を提供します。
感想
あらためて、参加者の皆さんのご協力で楽しく有意義な上映会になりました。上映会を終えてからもこのCloudStateという技術、そしてステートフルなサーバーレス技術という領域は非常に面白い分野なので、私は追いかけていくつもりです。