KubeCon NA 2021プレカンファレンスのWASM Dayの後半を紹介
クラウドネイティブなシステムに関するカンファレンス、KubeCon/CloudNativeCon North America 2021は、2021年10月11日から15日までカリフォルニア州ロスアンゼルスのLA Convention Centerで開催された。このレポートでは10月12日に行われたミニカンファレンスの中から「Cloud Native WASM Day」の後半の内容を紹介する。
KubeCon/CloudNativeConは非常に盛り上がっているカンファレンスであるが、今回現地に集まったのは約3300名だった。当然、プレカンファレンスの参加者も限られた人数となっており、WASM Dayの参加者は約30名と非常にコンパクトなセッションとなった。
WASMとwasmCloudでマルチクラウド上にサービスを構築
後半のセッションからは「Helping One of Europe's Banks Re-platform with Declarative, Self-healing, Multi-cloud WasmCloud Clusters on Kubernetes」と題されたセッションを紹介する。これはロンドンのコンサルティングファームRed Badgerの創業者であるStuart Harris氏とエンジニアのAayush Attri氏によるセッションで、マルチクラウド上に構築したサービスをWASMとwasmCloudで実装したデモを使って解説するというものだ
まずはHarris氏が顧客であるヨーロッパの銀行が求めるクラウドベースのシステムについて、単にプラットフォームを移し替えるだけではなくマルチクラウドで運用できること、障害時の素早い対応などを目的に新しいシステムを求めていたことを紹介した。そしてその要求に応えるためのプラットフォームとして、wasmCloudを選択したことを説明。その理由を深く説明することはせずにデモを行うことで、マルチクラウドでのサービスが障害時に切り替わる部分を解説した。
このデモはGCPとAWS双方にHTTPを受け付けるアプリ、Actorとしてそのリクエストを受けるアプリ、そしてGCP側だけにRedisのストレージにデータを書き込むというシンプルな構成になっている。このイラストにあるようにそれぞれはKubernetesのPodとして実装されているが、Pod間の通信はwasmCloudのサービス通信機能であるLatticeが受け持っている。LatticeはCNCFのプロジェクトでもあるNATSを使って実装されている。そして、クラスター間を繋ぐサービスとしてNGSが使われている。このNGSは、NATSの開発をリードしているSynadiaが提供するマネージドサービスである。
NGSもNATSをベースにしたコミュニケーションサービスであり、Synadiaは有償でのサービスとして提供している。
デモの中では故意にGCP側のActorを削除して、HTTPの送信がAWS側に切り替わるようすを示した。ここでは特にサービスディスカバリーのための操作をするわけでもなく、自動的にLatticeがメッセージ送信の相手を切り替えたことになる。実際の設定などが説明されることもなく終わってしまったため、若干消化不良という感は否めなかった。
ここからはこのデモを可能にしたwasmCloudの概要としてWASMのランタイム、wasmCloudのランタイム、分散型で自律的に構成が行われるLatticeなどを紹介した。ちなみにデモの中でPodのログを確認するために使っていたのはSternというツールだ。
参考:https://github.com/wercker/stern
また次のスライドでwasmCloudのランタイムについても言及している。「ボイラープレートが少ない」という部分はさまざまなOSSのライブラリーなどを定型的に挿入しなくても良いという辺りを指すのだろう。また「開発言語を選ばない」というのもWASMの利点としていつも挙げられる部分だ。
Latticeに関してはメッシュネットワークとして説明されており、NATSのPub/Subを使ったメッセージングを、サービス間を接続するネットワークスタックとして利用していることがわかる。
SynadiaのNGSについては簡単な説明にとどまったが、マルチクラウドでの接続機能を実装するためには必要なピースということになる。ここまででマルチクラウドでのサービスメッシュを解説したが、サービス自体が軽量化に向かうことでプラットフォーム自体の機能が増えていくという傾向を説明したスライドでは、KubernetesからIstio、Microsoftが強力にプッシュするDaprなども紹介された。ここではすでにKubernetesがレガシー扱いされていた。
DockerのSolomon Hykes氏の「サーバーサイドのWASMがあればDockerは作らなくても良かった」という発言やSingleStoreのwasi-dataなどを見ても、演算処理そのものをポータブルにすることでコンテナやそのためのオーケストレーション機能自体が余計な仕組みとして見なされていることは、WASM Dayのプレゼンターの中ではある程度一致している見方なのだろう。
WASMによるWebhookの置き換え
次に紹介するセッションも、サービスとサービスを繋ぐためのWebhookについてWASMで繋ぐという発想自体を止めて、WASMのコードを埋め込むことでより性能を上げられるという内容のものだ。
これはSuborbital Software SystemsのConner Hicks氏が行ったセッションで「Create an Extensible Cloud Native Application with WebAssembly」と題されているようにWASMを使ってWebhookを置き換える試みについて解説している。
どうしてWebhookが良くないのか? については次のスライドで説明されている。ここではインターネットを超えて行く必要があり、それはレスポンスタイムとコストの両方とも無駄にしていること、セキュリティの観点からはお互いのサービスを認証する標準的な仕組みがなく、センシティブなデータを送受信する場合にそれを守るために手間がかかること、さらにWebhookを使う側にとってみればWebhookを実装するためのサーバー等が必要になることなどを挙げた。
その解決方法として、Webhookで呼ばれる機能を元のアプリケーションにエンベッドするアイデアを説明。この利点は高い性能と低いコスト、より良いセキュリティ、実装するための特別なサーバーなどを必要としないというWebhookの問題点をすべて解決する内容となっている。
そしてロジックをエンベッドするという部分にWASMが使えるのではないか? というのがHicks氏の提案だ。
このアイデアを実証するために、クラウドプロバイダーを使って実験を行ったというのが次のスライドだ。
これは同じクラウドプロバイダーのインスタンスを用意して、Webhookでロジックを起動する方法とWASMのコードを元のアプリケーションに埋め込んで起動する方法を比べた結果を示したものだ。パフォーマンス的には30秒間で5000回しか実行できなかったWebhookに比べて30,000回実行でき、レイテンシーは30ms以上かかったのに比べて平均で5msだったと解説した。さらにコストについては、Webhookにはデータ転送が発生するためにコストが発生しているが、WASM埋め込みの場合はデータ転送自体が発生しないということを説明した。
ただすべてがこの方法で解決するわけではないとして、欠点も解説している。
埋め込まれる側のアプリケーションに対する注意点以外にも、これまでデベロッパーが使っていたツールとの親和性がない可能性があること、利用する言語によっては起動に時間がかかることなどを挙げていた。時間がかかる例としてSwiftが、起動が速い言語の例としてRustがそれぞれ挙げられているのが興味深い。
Akriの一部をWASMで書き直すプロジェクト
その他にも監視カメラなどのIoTエッジデバイスをKubernetesから利用できるようにするためのオープンソースソフトウェアAkriの一部をWASMで書き直すという非常に実験的なプロジェクトを、Microsoftのエンジニアがブラジルの大学生と共同で発表したセッションなどがあった。ポータブルで高速、ミニマムなファイルサイズというWASMの利点を活かした内容となった。
セッションのタイトルは「Living on the Edge: Using IoT Devices on Kubernetes WebAssembly Applications - Kate Goldenring, Microsoft; Rodrigo Farias Rodrigues Lemos, Federal University of Pernambuco」。
このセッションでは、書き換えたWASMモジュールによってOCIイメージが1/54まで小さくなったことを説明していた。
このAkriというプロジェクトはDeis Labs発祥のもののようだが、2021年10月にCNCFのサンドボックスプロジェクトとして採用されたことがブログ記事として発表された。この記事を書いているのは、このセッションのプレゼンターでもあるKate Goldenring氏だ。
Akriについては以下の公式ドキュメントも参照されたい。
参考:Akri
Cloud Native WASM DayはWASMにフォーカスしたミニカンファレンスであるため、WASMがコンテナを置き換えるポータブルなワークロードのデファクトスタンダードであることが、多くの参加者の共通認識となっていることを感じさせる一日となった。最後にSolomon Hykes氏のツイートを使ってWASMを紹介しているワンシーンを紹介してこの項を終えたい。これもMicrosoftのKate Goldenring氏のセッションで使われたスライドだ。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- KubeCon Europe 2024併催のCloud Native Wasm DayでOrangeが行ったセッションを紹介
- KubeCon EU 2022、WebAssemblyでダウンタイムのないアプリ実装を解説するセッションを紹介
- Cloud Native Wasm DayからWebAssemblyのスケジューラーWADMを解説するセッションを紹介
- CNCFのWebinarから、AdobeとAkamaiがwasmCloudを解説したセッションを紹介
- CNCFのサンドボックスプロジェクトとなったwasmCloudの動画を紹介
- KubeCon Europe 2024併催のCloud Native Wasm Dayから、FA機器にWebAssemblyを適用したセッションを紹介
- KubeCon+CloudNativeCon NA 2023の併催イベントCloud Native Wasm Dayのキーノートを紹介
- WASMを実行するためのランタイム、wasmCloudがCNCFのサンドボックスに
- KubeCon NA 2021開催。プレカンファレンスのWASM Dayの前半を紹介
- WasmCon 2023からCosmonicのCEOがコンポーネントモデルを用いたデモを紹介