KubeCon EU 2022、WebAssemblyでダウンタイムのないアプリ実装を解説するセッションを紹介

wasmCloudを使った止まらないWebアプリケーション実装のデモを解説。

松下 康之 - Yasuyuki Matsushita

2022年9月8日 6:00

KubeCon EU 2022からwasmCloudのセッションを紹介する。これはWebAssemblyを使ったクラウドサービスのwasmCloudを提供するCosmonicのエンジニアが行ったもので、「Disrupting the Downtime Continuum」というタイトルのセッションとなる。プレゼンテーションとデモを行ったのはTaylor Thomas氏とBrooks Townsend氏だ。wasmCloudがCNCFにホストされたのは約1年前だが、最近のKubeConではプレカンファレンスとしてWasm Dayが開催されることが当たり前になってきた。その経緯については以下の記事を参照して欲しい。

参考:WASMを実行するためのランタイム、wasmCloudがCNCFのサンドボックスに

セッションの動画:Disrupting the Downtime Continuum - Taylor Thomas & Brooks Townsend

セッションの資料(PDF):Disrupting the Downtime Continuum.pdf

ポータビリティが高くどんなプラットフォームでもソフトウェアを実行できるという意味では、JavaScriptがさまざまなブラウザーで稼働することをさらに拡張した形になったが、サーバーサイドのWebAssemblyには移植性に加えてメモリーセーフな特徴や軽量で高速に稼働するという特性がある。このセッションでは移植性を中心に解説を行った内容となった。

セッションを行うTownsend氏(左)とThomas氏(右)

セッションを行うTownsend氏(左)とThomas氏(右)

タイトルとなっているDisrupting the Downtime Continuumは直訳すれば「連続性のあるダウンタイムを破壊する」、つまりアプリケーション更新の際に必要となる入れ替えのための時間であるダウンタイムをどうやってなくすか? について解説するものだ。ここではメモリーセーフについては特に触れずに、ローカルの開発用マシンとパブリッククラウドでアプリケーションを実行するための仕組みについてデモを使って解説している。

このセッションのアジェンダを紹介

このセッションのアジェンダを紹介

冒頭の自己紹介に続いて、このセッションで解説する内容を紹介した。特にWebAssemblyについては会場に挙手を求めて「WebAssemblyを知っている人はどれくらい居るの?」と問いかけた。

WebAssemblyの紹介のスライド。Webでもアセンブリ言語でもないというタイトル

WebAssemblyの紹介のスライド。Webでもアセンブリ言語でもないというタイトル

想定よりも多く挙手があったことで、イントロダクションとなるWebAssemblyについては簡単に紹介するに留めたが、新しいテクノロジーであることから現状の課題についても紹介した。

WebAssemblyの現状。ネットワークについてはまだ課題が多い

WebAssemblyの現状。ネットワークについてはまだ課題が多い

開発言語が限られていることやネットワークについてもKubernetesのような多種多様なネットワークスタックがあるわけではなく、この領域については現在進行形で進化しているが、その部分に利点を求める場合は良く検討したほうが良いと率直に語った。

これまでのコンピューティングモデルを振り返って紹介するスライドでは、OSからライブラリー、アプリケーションまでデベロッパーがすべてのソフトウェアに責任を持つ形から仮想化、コンテナ(Kubernetes)、そしてWebAssemblyへと進化してきたという段階を解説。ここではwasmCloudが進化の最終形に位置付けられていることがわかる。実行モデルとしてWebAssemblyは統合、wasmCloudに至って初めて分散型の実行モデルを実装できているというのが、このスライドにおける目立たないが重要なメッセージだ。今回はこの部分にフォーカスしたセッションとなっている。

コンピューティングモデルの進化。最新がwasmCloudだ

コンピューティングモデルの進化。最新がwasmCloudだ

ここでwasmCloudのランタイムについて解説。特にwasmCloudで実装されているwasmCloud Application Runtimeやアクターモデルについても解説を行っている。wasmCloudはアプリケーションの実行をアクターモデルで行うというのがポイントだろう。デベロッパーがビジネスロジックを実装する部分がアクター、それを手助けする外部機能(例えばHTTP処理)をケイパビリティとして区別している。前のスライドのHost(wasmCloud)のブロックの上にある「Cap」と書かれている部分だ。それ以前のモデルではライブラリーと呼ばれていた機能を、ここでは「ケイパビリティプロバイダー」と呼んでいることに注意して欲しい。

アクターとケイパビリティプロバイダーの意味についてはwasmCloudの公式ドキュメントを参照されたい。

参考:wasmCloud Documentation

NATSを使って実装されたアクターをつなぐLatticeというネットワークスタック

NATSを使って実装されたアクターをつなぐLatticeというネットワークスタック

そしてそのアクターとケイパビリティプロバイダーをつなぐ部分がLatticeと呼ばれるネットワークスタックになる。これはCNCFにホストされているNATSというプロジェクトで実装されている。

そしてここからはデモを使って、タイトルにある「ダウンタイムを破壊する」ことを実装する内容となった。

最初のデモはxkcdというテクノロジーに関する1コママンガを紹介するサイトを使ったデモだ。これはHTTPリクエストに対してランダムに1コママンガのHTMLを返すシンプルなHTTPサーバーを実装するRustのプログラムを題材として使っている。Webアプリケーションとして多機能なWebサーバーではなくwasmCloudが用意しているHTTPのライブラリー、ここではケイパビリティプロバイダーを使って自前でWebサーバーを実装している。xkcdの作者であるランドール・マンロー氏は「ホワット・イフ?――野球のボールを光速で投げたらどうなるか」という著書が日本語訳されていることで、このマンガの画風に見覚えがある人も多いのではないだろうか。xkcdについては以下を参照されたい。

参考:xkcd: Artemis Quote

このデモではアクターとして実装されたランダムなIDを付けてリクエストを行うプログラムと、HTTPのリクエストを処理するケイパビリティプロバイダーの2つが存在している。そしてケイパビリティプロバイダー側のコードにわざと脆弱性が発生したというシナリオで修正を行うというのがデモの内容だ。ここでアプリケーション側の変更をしなくてもケイパビリティプロバイダーのRustのコードを修正するだけでアプリケーションの動作が元に戻ることを示す内容となった。

デモを行うThomas氏。実際に操作を行ったのはTownsend氏だ

デモを行うThomas氏。実際に操作を行ったのはTownsend氏だ

このデモではビジネスロジックとライブラリー(ケイパビリティプロバイダー)のコードを明確に分けて実装することが可能であり、wasmCloudのダッシュボードによる操作でケイパビリティプロバイダーを最新バージョンに変えるだけでダウンタイムなしにアプリケーションの動作を変更できることを示している。

次にもっと現実的なアプリケーションを使ってダウンタイムを減らすことは可能か? についてデモを行った。これはSpring Bootのデモアプリケーションとして公開されているPet ClinicというアプリケーションをwasmCloudで実装、複数あるモジュールをAWS、Azureに移動してもアプリケーション自体が動き続けるということを見せるデモとなる。

オリジナルとなるSpring Bootのデモアプリの概要

オリジナルとなるSpring Bootのデモアプリの概要

オリジナルのデモアプリケーションではユーザーインターフェースとなるモジュールに加えて顧客管理のモジュール、PostgreSQLデータベース、治療データやペット情報のためのモジュールなど以外に、サービスディスカバリーのためのモジュール、管理やモニタリングのためのZipkinモジュールなどが必要なモジュールとして描かれている。それをシンプルなwasmCloudのアプリケーションとして実装するというのがこのデモの前半だ。

デモの前半は移植するだけ

デモの前半は移植するだけ

Spring Bootでは多くのビジネスロジック以外のコードが必要だったが、wasmCloudでは非常にシンプルに構成されている。外部機能はケイパビリティプロバイダーとして切り出され、ビジネスロジックがアクターとして実装されている。

これをwasmCloudのダッシュボードで概観したのが以下のスライドになる。

PostgreSQLにつながっている3つのアクターが見える

PostgreSQLにつながっている3つのアクターが見える

ここからデモの後半として、Townsend氏はケイパビリティプロバイダーやアクターをダッシュボードから削除したり、実行されるパブリッククラウドを切り替えて再実行したりすることで、簡単にアクターとケイパビリティプロバイダーが再接続されることなどを見せた。

AWSでフロントエンド顧客管理をAzure、データベースをローカルで実行

AWSでフロントエンド顧客管理をAzure、データベースをローカルで実行

このスライドではフロントエンドとなるUIをAWSで実行し、データベースを必要とするモジュールをAzureで実行、そしてデータベースの実体はローカルのMacBookで実行するというデモを行った。ここでもダウンタイムは発生せず、データベースの切り替えも何の設定もせずにスムーズに行われていることを実際にデモンストレーションした形になった。満員のセッションルームから拍手が起こったほどの見事なデモンストレーションとなった。システムの変更を行ってもダウンタイムはなくなり、破壊されたという形になった。

「ダウンタイムを破壊する」ために複数のインフラストラクチャーを切り替えるための複雑なネットワーク設定やユーザーの切り替えなどがすべてwasmCloudで吸収されていることを見せた。WebAssemblyが注目される中で、ビジネスに即した具体的なデモを行うことで実証したことは大きな意味があるだろう。冒頭ではまだ進化の余地があると認めながらも、Latticeという柔軟性のあるネットワークスタックによってマルチクラウドでのネットワークがスムーズに処理できることを見せた。またWebAssemblyがPCやサーバーだけではなくIoTなどにも実装できることから、デバイスの大小を問わずにシステムの中に組み込むことができることは大きな意味があると言える。

セッションの前にCosmonicのCEOであるLiam Randall氏、Thomas氏、Townsend氏に個別にインタビューを行った。

左からThomas氏、Randall氏、Townsend氏

左からThomas氏、Randall氏、Townsend氏

ここではwasmCloudの将来について「PaaSとして使えるように進化していく」ことを語ったRandall氏だが、より詳しくは「次のデトロイトでまた会おう!」というコメントをくれた。パブリッククラウドが自社のサービスとの連携を強化することでマネージドサービスとしてのKubernetesがサイロ化していく中、PaaS的な使い方(ビジネスロジックだけをアプリケーションとして開発して実行)をしたいというニーズに応えるための方向性だ。WebAssemblyが確実にエンタープライズでの利用という領域に入ってきたことを感じるセッションとなった。

wasmCloud公式サイト:https://wasmcloud.com/

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30