wasmCloudのCosmonicのCEOが新しいデモを紹介
WebAssemblyがコンテナとKubernetesを補完する新しいコンピューティングモデルとして注目されている。コンテナが実行形態として注目された直後、コンテナだけでは複雑なアプリケーションモデルを実装できないとして、Googleが社内で使っていたオーケストレーターをオープンソースとして公開、これがKubernetesの始まりだ。新たなインフラストラクチャーとして持て囃されたKubernetesであるが、Microsoftは「デベロッパーがKubernetesを理解して運用するのは負担が大きい」と述べてDaprを開発したし、多くの企業ユーザーが「Kubernetes as a Services」を開発して抽象化しPaaS的に使う方向にある。つまりKubernetes自体は素晴らしいものの、その使用をデベロッパー側に強いるのは大きなコストが発生しするというのが多くのデベロッパー、運用担当者の認識だろう。
仮想マシンが登場した際は物理マシンとの差異は大きくなく、運用側もデベロッパーも手慣れたものとして扱えたが、宣言的でクラスター側が自律的にシステムを運用するKubernetesには彼らが戸惑いを感じたのは明らかだ。
そして、かつてJavaが目指した「一度書けばどこでも実行できる(Write once, run anywhere)」ことをブラウザーから始めたWebAssemblyは、サーバーサイドで実行できる環境が揃ったことでその高速な実行とセキュアなサンドボックスを使ったサーバーサイドの実行形態の選択肢になりつつある。
今回は2023年9月6日と7日にシアトルでThe Linux Foundationの主催で行われるWasmConに先駆けて、ダイヤモンドスポンサーの1社であるCosmonicの創業者兼CEOであるLiam Randall氏から新しいデモについてブリーフィングを受けた内容を紹介する。ブリーフィングはZoomを介して行われた。
「WasmConでは多くのWebAssembly関連の発表があるだろう」と語ったRandall氏だったが、ブリーフィングの内容はCosmonicが用意している新しいデモを先に紹介してくれるものだった。
最初に説明したのが、以下のスライドだ。
ここではコンピューティングスタイルの進化を概観しているが、このスライドは2022年のKubeCon EU 2022でRandall氏にインタビューした際に使われていたスライドを更新した内容となっている。そのスライドとこれから説明するxkcdというコミックをランダムに返すデモアプリケーションについては以下の記事を参照して欲しい。
●参考:KubeCon EU 2022、WebAssemblyでダウンタイムのないアプリ実装を解説するセッションを紹介
2022年のバージョンでは、PC→CLOUD→CONTAINER→WEBASSEMBLY→WASMCLOUDという5つのステップだったものが、PC→CLOUD→CONTAINER→K8S→WASM→COSMONIC(COMPONENTS)と表記され、より詳細にフェーズ分けが行われていることがわかる。そして1年前はコンピューティング環境の進化だったものが、最終的にコンポーネントモデルがこの時点の最終形として提示されていることに注目したい。つまりコンピューティングスタイルがモノリシックなものから分散系に移行し、Kubernetesによるオーケストレーションを経て、WebAssemblyによる小さなモジュールに必要な機能がレゴブロックのように組み込まれるというのがポイントだ。
そしてイノベーションのエリアとして開発の加速(Faster Devex)、運用コストの削減(Reduce OpEx)、保有コストの削減(Reduce CapEX)、リソースの削減(Slash COGS)が推進されることを提示した。
次にアプリケーションの抽象化のレベルを上げることによって、多くのプログラミング言語からWebAssemblyが生成できること、コンポーネントによって再利用可能になること、そしてコントラクトという名称で呼ばれる外部機能(キーバリューストアやSQLデータベースなど)によってレゴブロックのように標準的なインターフェースで接続可能になることを挙げた。
またコアとなるロジック以外にさまざまなライブラリーや依存関係によって肥大化することについて、運用コストが増大してしまうことを問題点として説明した。
これは多くのプログラミング言語で見られる現象で、厳密には必要な機能だけをライブラリーとして利用するべきなのに多くの機能を含んだライブラリー群がリンクされてしまうことで、アプリケーションサイズが大きくなってしまうことへの危機的な認識を示しているといえる。
そしてここからはデモとして少し前に紹介したxkcdというデモアプリケーションを使って、特定のクラウド環境以外にオンプレミス、AWS、GCP、Azure、Oracle Cloudというパブリッククラウドに対して抽象化された実装モデルを解説した。これは3つのコンポーネント(xkcd Generator、HTTP Client、HTTP Server)で構成されるシンプルなアプリケーションで、クライアントからのリクエストに対してランダムにRandall Munroe氏が描いているコンピュータオタクをネタにしたイラストを返すというアプリケーションだ。
ここではAzureやOracle Cloud、そしてRandall氏の自宅やオフィスで稼働しているコンピュータ上のインスタンスを見せて、複数のプラットフォームでワークロードを実行可能であることを示している。このデモの目的は、同じアプリケーションがOAM(Open Application Model)のManifestに従ってどのプラットフォームでも即座に実行可能であるという部分だ。Azureで動いているジェネレーターを終了して、クライアント上でエラーが起こっているところを見せ、その後にOracle Cloudで同じモジュールを実行すれば即座にイラストが表示されることを示した。
ちなみにOAMは、アプリケーションの実行環境を定義する標準を定めたモデル/マニフェスト記法とでもいうもので、KubeVelaというオープンソースコミュニティが開発を推進している。Kubernetes上のアプリケーションが、Kubernetesでの運用を前提として過度にKubernetes専用となっている状況からの脱却を目指すというKubeVela/OAMの発想は、WebAssemblyをプラットフォーム依存から脱却させるためには良い選択と言える。
以下のスクリーンショットでは、Azureで実行されているxkcdアプリケーション(OCIイメージ)をどのクラウド、プラットフォームで実行させるかを選択しているダイアログボックスが表示されている。ActorモデルはDaprでも採用されているアプリケーション実行の単位だが、wasmCloudでも同じ名称を使っているところが興味深い。
どのマニフェストで実行されたのかが時系列に表示され、マニフェストの中身はどうなっているのかもYAMLのソースを確認できることを見せているのが次のスクリーンショットだ。単に同じクラスター内でActorを起動/停止するだけではなく、パブリッククラウド、オンプレミスを問わずに即座にネットワークが復元されアプリケーションの機能が実行されるというのは、シンプルでありながら拡張性と柔軟性が高いNATSの機能によるものだろう。
次に見せたデモは機械学習のモデルを複数用意(大小二つのモデル)用意したうえで、それらをクライアントから選択して使い分けるという内容だ。これも複数のクラウド、そしてエッジでの実行まで想定して画像推定を実行しているデモアプリケーションだ。
Randall氏の説明では「Policy Based Workload Execution」というスライドで解説されているが、パブリッククラウド、エッジ、IoTデバイスなどいろいろと実行環境を入れ替えてもアプリケーションの設定や再実装が必要ないという部分を強調するデモだ。
xkcdと比べて少し複雑になっているが、HTTPクライアントからのリクエストで画像ファイルに前処理を行い、モデルを使って画像を認識して文字列を返すというアプリケーションだ。
ここではモデルが大きいResNetと小さいImageNetでは同じ画像を認識しても結果が異なることを見せており、ImageNetではエスプレッソの確率が84.2%であるのに対し、ResNetでは同じ画像でも99.5%でエスプレッソであるという結果が出ていることが確認できる。
このデモの目的は認識の差を見せることではなく、WebAssemblyで書かれたモジュールを入れ替えて即座に実行でき、それをwasmCloudのコンソールから簡単に行えるという部分だ。HerokuなどのPaaSで実現された単一のクラスター環境での使い易さを知るデベロッパーにとっては魅力的な機能だろう。またマルチクラスター、ハイブリッドクラウドに展開するKubernetesを柔軟に使いこなすことの難しさを知る運用担当者にとっても興味深いデモとなるだろう。
WasmConではこれらのデモも実演されるだろうし、2023年9月6日の午前中には「From Napkin Sketch to Running your Apps at Scale」というwasmCloudのハンズオンも開催される。そこで実際にマルチクラスター、ハイブリッドクラウドをPaaS的に操作することを可能にするwasmCloudを体験して欲しい。新しい機能であるコンポーネントモデル、クラウドの違いを吸収するOAM、デプロイメントを管理するWASM Deployment Managerについて理解を深める良いチャンスとなるだろう。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- WasmCon 2023からCosmonicのCEOがコンポーネントモデルを用いたデモを紹介
- KubeCon EU 2022、WebAssemblyでダウンタイムのないアプリ実装を解説するセッションを紹介
- CNCFのWebinarから、AdobeとAkamaiがwasmCloudを解説したセッションを紹介
- KubeCon Europe 2023共催のWasm Day、Cosmonicが作成したWASMを解説する絵本を紹介
- KubeCon Europe 2024、共催イベントのCloud Native WASM DayからCosmonicが行ったセッションを紹介
- KubeCon EU 2021からセキュアでコンパクトなバイナリーフォーマットWASMのセッションを紹介
- KubeCon Europe 2023共催のWasm Dayから、AdobeのWASMユースケースを紹介
- Cloud Native Wasm DayからWebAssemblyのスケジューラーWADMを解説するセッションを紹介
- WASMを実行するためのランタイム、wasmCloudがCNCFのサンドボックスに
- KubeCon NA 2021開催。プレカンファレンスのWASM Dayの前半を紹介