wasmCloudのCosmonicのCEOが新しいデモを紹介

2023年9月4日(月)
松下 康之 - Yasuyuki Matsushita
wasmCloudのCosmonicのCEOがWasmCon前で公開予定の新しいデモを紹介。

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が用意している新しいデモを先に紹介してくれるものだった。

最初に説明したのが、以下のスライドだ。

モノリシックからコンテナを経てWASMによるコンポーネント化に至るまでを解説

モノリシックからコンテナを経てWASMによるコンポーネント化に至るまでを解説

ここではコンピューティングスタイルの進化を概観しているが、このスライドは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によるイノベーションが起こるエリアを解説

WebAssemblyによるイノベーションが起こるエリアを解説

次にアプリケーションの抽象化のレベルを上げることによって、多くのプログラミング言語からWebAssemblyが生成できること、コンポーネントによって再利用可能になること、そしてコントラクトという名称で呼ばれる外部機能(キーバリューストアやSQLデータベースなど)によってレゴブロックのように標準的なインターフェースで接続可能になることを挙げた。

アプリケーションコード以外のモジュールを組み合わせて構成する方法

アプリケーションコード以外のモジュールを組み合わせて構成する方法

またコアとなるロジック以外にさまざまなライブラリーや依存関係によって肥大化することについて、運用コストが増大してしまうことを問題点として説明した。

アプリケーションが定型的なボイラープレートによって過度に肥大することを指摘

アプリケーションが定型的なボイラープレートによって過度に肥大することを指摘

これは多くのプログラミング言語で見られる現象で、厳密には必要な機能だけをライブラリーとして利用するべきなのに多くの機能を含んだライブラリー群がリンクされてしまうことで、アプリケーションサイズが大きくなってしまうことへの危機的な認識を示しているといえる。

そしてここからはデモとして少し前に紹介したxkcdというデモアプリケーションを使って、特定のクラウド環境以外にオンプレミス、AWS、GCP、Azure、Oracle Cloudというパブリッククラウドに対して抽象化された実装モデルを解説した。これは3つのコンポーネント(xkcd Generator、HTTP Client、HTTP Server)で構成されるシンプルなアプリケーションで、クライアントからのリクエストに対してランダムにRandall Munroe氏が描いているコンピュータオタクをネタにしたイラストを返すというアプリケーションだ。

●参考:https://xkcd.com/

wasmCloudのコンソールから実行されているインスタンスをブラウズ

wasmCloudのコンソールから実行されているインスタンスをブラウズ

ここではAzureやOracle Cloud、そしてRandall氏の自宅やオフィスで稼働しているコンピュータ上のインスタンスを見せて、複数のプラットフォームでワークロードを実行可能であることを示している。このデモの目的は、同じアプリケーションがOAM(Open Application Model)のManifestに従ってどのプラットフォームでも即座に実行可能であるという部分だ。Azureで動いているジェネレーターを終了して、クライアント上でエラーが起こっているところを見せ、その後にOracle Cloudで同じモジュールを実行すれば即座にイラストが表示されることを示した。

ちなみにOAMは、アプリケーションの実行環境を定義する標準を定めたモデル/マニフェスト記法とでもいうもので、KubeVelaというオープンソースコミュニティが開発を推進している。Kubernetes上のアプリケーションが、Kubernetesでの運用を前提として過度にKubernetes専用となっている状況からの脱却を目指すというKubeVela/OAMの発想は、WebAssemblyをプラットフォーム依存から脱却させるためには良い選択と言える。

3つのモジュールがダイアグラムとして表示されるwasmCloudのコンソール

3つのモジュールがダイアグラムとして表示されるwasmCloudのコンソール

以下のスクリーンショットでは、Azureで実行されているxkcdアプリケーション(OCIイメージ)をどのクラウド、プラットフォームで実行させるかを選択しているダイアログボックスが表示されている。ActorモデルはDaprでも採用されているアプリケーション実行の単位だが、wasmCloudでも同じ名称を使っているところが興味深い。

ホストの部分にAzure、Cosmonic、Oracleという表記が確認できる

ホストの部分にAzure、Cosmonic、Oracleという表記が確認できる

どのマニフェストで実行されたのかが時系列に表示され、マニフェストの中身はどうなっているのかもYAMLのソースを確認できることを見せているのが次のスクリーンショットだ。単に同じクラスター内でActorを起動/停止するだけではなく、パブリッククラウド、オンプレミスを問わずに即座にネットワークが復元されアプリケーションの機能が実行されるというのは、シンプルでありながら拡張性と柔軟性が高いNATSの機能によるものだろう。

マニフェストがどのプラットフォームで実行されたのかを確認できる

マニフェストがどのプラットフォームで実行されたのかを確認できる

次に見せたデモは機械学習のモデルを複数用意(大小二つのモデル)用意したうえで、それらをクライアントから選択して使い分けるという内容だ。これも複数のクラウド、そしてエッジでの実行まで想定して画像推定を実行しているデモアプリケーションだ。

機械学習のモデルを複数用意して使い分け、結果の違いを見せるデモ

機械学習のモデルを複数用意して使い分け、結果の違いを見せるデモ

Randall氏の説明では「Policy Based Workload Execution」というスライドで解説されているが、パブリッククラウド、エッジ、IoTデバイスなどいろいろと実行環境を入れ替えてもアプリケーションの設定や再実装が必要ないという部分を強調するデモだ。

Policy Based Workload Execution、ポリシーに従ってどこで実行するのかを選択

Policy Based Workload Execution、ポリシーに従ってどこで実行するのかを選択

xkcdと比べて少し複雑になっているが、HTTPクライアントからのリクエストで画像ファイルに前処理を行い、モデルを使って画像を認識して文字列を返すというアプリケーションだ。

画像ファイルを受け取って画像認識を行い、推定された文字列を返す

画像ファイルを受け取って画像認識を行い、推定された文字列を返す

ここではモデルが大きいResNetと小さいImageNetでは同じ画像を認識しても結果が異なることを見せており、ImageNetではエスプレッソの確率が84.2%であるのに対し、ResNetでは同じ画像でも99.5%でエスプレッソであるという結果が出ていることが確認できる。

ImageNetだと認識の確率が低い

ImageNetだと認識の確率が低い

ResNetだと高い確率で認識できる

ResNetだと高い確率で認識できる

このデモの目的は認識の差を見せることではなく、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について理解を深める良いチャンスとなるだろう。

データセンターからIoTエッジまでをカバーするwasmCLoudの概念図

データセンターからIoTエッジまでをカバーするwasmCLoudの概念図

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

OSイベント

RHEL互換LinuxのAlmaLinuxがセミナーを開催。サイバートラストのセッションを主に紹介

2024/3/28
RHEL互換LinuxのAlmaLinuxがセミナーを開催。サイバートラストのセッションを主に紹介する。
セキュリティイベント

FIDOが東京でセミナーを開催、パスキーについてデジタル庁の責任者が講演を実施

2024/3/19
FIDO Allianceが東京でセミナーを開催した。パスキーについてデジタル庁の責任者が実施した講演の内容を紹介する。
データベースSponsored

【事例から学ぶ】アーキテクチャ多様化時代にデータベースを「TiDBにまとめる」という選択

2024/2/9
実際にマイクロサービスアーキテクチャでありながらも、データベースをTiDBへまとめている合同会社DMM.com、Micoworks株式会社、menu株式会社が、なぜその判断に踏み切ったのか、そもそもどこに課題感があったのかなどを背景と共に紹介します。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています