WASMを実行するためのランタイム、wasmCloudがCNCFのサンドボックスに
WebAssembly
WebAssembly(WASM)はさまざまなプログラミング言語によって生成される実行コードを、ブラウザー上でセキュアかつ高速に実行することを可能にするバイナリーフォーマットだ。今、WebAssemblyが注目を集めているのは、サーバーサイドにおいてポリグロット(polyglot、多言語使用者)なコードを実行するための仕組みという部分だ。
かつてはコンピュータのハードウェア、OS、ミドルウェア、ライブラリー、アプリケーションは垂直に統合され、密に結合されていた。Windowsのために書かれたアプリケーションをMacintoshで実行することはできなかったし、IBMのメインフレームのために開発されたアプリケーションを、Linuxで実行することも不可能だった。
しかしWebブラウザーが登場し、JavaScriptがロジックを実行できるようになったことで、OSやハードウェアを超えてブラウザー内であれば同じコードが実行できるようになった。ブラウザーのためのプログラミング言語だったJavaScriptが、Node.jsの登場によりサーバーサイドで実行できるようになったことも転換期といえるだろう。しかしJavaScriptはセキュリティという面では不足していることも多く、脆弱性の面では必ずしも十分とは言えない。また実行時のオーバーヘッドなどもあり、メリットとリスクが同時に増殖してしまった感は否めない。その状況を変えたのが、Mozillaが開発したWebAssemblyだ。
wasmCloudがCNCFのサンドボックスプロジェクトへ
前置きが長くなったが、WebAssemblyを実行するためのプラットフォームwasmCloudが、CNCFのサンドボックスプロジェクトとして承認された。wasmCloudはCosmonicというベンチャーが開発したWebAssemblyのためのランタイムだが、単なるランタイムという領域を超えて、ネットワークのバックプレーンを備えていることやコマンドラインインターフェースなども含まれていることが特徴的だ。その意味でランタイムではなくプラットフォームという用語を使っていると思われる。
Cosmonicのブログ記事:wasmCloud Joins Cloud Native Computing Foundation as Sandbox Project
CNCFはコンテナランタイムにおいてDockerやRed Hat、AWSなどのベンダーが支持するランタイムが乱立したことを教訓に、WebAssemblyにおいてはいち早くエコシステムの中核となるプロジェクトをホストすることで、ソフトウェアの進化の方向性を統一したいという気持ちがあるように思える。それはMicrosoftのMatt Butcher氏も同じことを考えているようで、2021年5月4日に行われたKubeCon EUの併催イベントCloud Native WASM Dayのセッションでも「ランタイムが乱立している」という現状認識を述べている。
それを踏まえて今回のCNCFによるサンドボックスプロジェクト化を考えれば、WebAssemblyはコミュニティが望むような良い方向へと進んでいるということになるだろう。WebAssemblyと下位のシステムとのインターフェースを定義するWASI(WebAssembly System Interface)はBytecode Allianceがホストするプロジェクトだが、Bytecode AllianceではなくCNCFがwasmCloudをホストすることで、CNCFのエコシステムの中にWebAssemblyが組み込まれていくことは確実だろう。
wasmCloudについて
そして今回の本題となるwasmCloudについて解説しよう。
wasmCloudについては、CosmonicのCEO兼創業者のLiam Randall氏がKubeCon EUで実施したセッションを紹介したい。これはKubeCon EUに併催されたCloud Native WASM Dayのセッションとなる。
KubeCon EUからの公式動画:Sponsored Keynote: WebAssembly: The future of distributed computing - Liam Randall, Wasmcloud
まずは今回の発表を行ったCosmonicのサイトから引用したい。
この図は、一番左から右の最新の姿に移行していくアプリケーションとインフラストラクチャーの結合具合を表現している。つまりかつてのサーバーやPCではハードウェア、OSからアプリケーションまでが密結合していたが、仮想マシン、コンテナと進んで行くに従って分離し、疎結合になっていくようすを表現している。ここでの注目は、WebAssemblyをさらに進化させた形態としてWebAssemblyのコードを実行するものとしてwasmCloudが位置付けられている点だろう。
ここからはKubeCon EUのCloud Native WASM Dayのキーノート、Liam Randall氏のセッションを紹介する。これは先ほどのMicrosoftのButcher氏のセッションと同じく2021年5月4日に行われたもので、上記スライドはその後にアップデートされていることに留意されたい。
「WebAssemblyは分散コンピューティングの未来である」というのは随分と振り被ったタイトルだが、Randall氏が挙げるWebAssemblyの特徴を見れば、自ずとその自信の源泉も見えてくるだろう。
高速でセキュア、そしてW3Cで標準化が進んでいることからオープンであることはすでに知られているが、Randall氏が強調したかったのは下の2つのポイントだろう。多種多様なプログラミング言語からWebAssemblyのバイトコードを生成できること(polyglot)、そしてブラウザーは元よりスーパーコンピュータからサーバー、エンベデッドデバイスまでをカバーできるポータビリティがあることによって、分散コンピューティングの構成要素の救世主に躍り出たと言っても良いだろう。
そしてこのスライドと冒頭に使ったスライドを見比べて欲しい。2021年5月の時点ではwasmCloudは存在しておらず、あくまでもWebAssemblyが最も進化した姿として置かれている。しかし今回のCNCFによるサンドボックスプロジェクト化によって、やや乱立気味だったWebAssemblyのランタイム&フレームワーク問題にも終止符が打たれたと認識すべきだろう。実際にコミュニティが同じような機能を果たす複数のプロジェクト間の競争に明け暮れることを避けられたというのは、ガバナンスとしては最良の結果だったと思える。
ここではコネクテッドデバイスが爆発的に増加することを受けて、その上で稼働するアプリケーションをどうやって開発するのか? という問題について、WebAssemblyがそのエコシステムの中でその違いを吸収していくだろうという予測を解説している。
また今回の発表を受けてクラウドネイティブなシステムに特化したインターネットメディア、The New StackがWebAssemblyに関連深いエンジニアを集めて配信を行った。
The New Stackの動画:WebAssembly comes to Cloud Native Computing
この動画は、wasmCloudを開発したCosmonicのCEOであるLiam Randall氏、MicrosoftのプリンシパルエンジニアであるMatt Butcher氏、AtmoというWebAssemblyをベースにしたサーバーレスフレームワークを開発するSuborbital Software Systemsのエンジニア、Rustをプロダクションで使っていることで有名なFastlyのCTO、さらにMozillaでWebAssemblyを開発した創始者など錚々たるメンバーによるセッションとなった。
このセッションでは、WASMに対する期待と今後の展開についてさまざまな角度から意見が出されており、非常に興味深いものとなった。特に印象的だったコメントをいくつか紹介したい。
MicrosoftのMatt Butcher氏のコメントは以下のとおりだ。「仮想マシン、コンテナにはそれぞれ問題に特化した解決策として利用されている。コンテナによって仮想マシンが消えることはなく、今でも使われている。ただ、IoTやエッジなどのより軽量なデバイス向けの実行環境というものがなかった。WASMはその穴を埋めるテクノロジーである。今回のCNCFにホスティングを最大限に評価している」。
またエコシステムを構成するサーバーレスフレームワークであるAtmoプロジェクトを推進するSuborbital software systemsのエンジニアも、これによってエコシステムが拡大することを評価している。
この写真では中央にLiam Randall氏、Randall氏の下にMicrosoftのMatt Butcher氏、Randall氏の右にWebAssemblyに特化した新しいプログラミング言語であるGrainを開発するOscar Spencer氏、Spencer氏の上はFastlyのCTO、Tyler McMullen氏だ。McMullen氏はかつてWebAssemblyのためのコンパイラーとランタイム、LucetをBytecode Alliance配下で開発していたことでも知られているが、このラウンドテーブルではwasmCloudを大いに評価していることがわかる。
今回のCNCFによるサンドボックスプロジェクトはあくまでも始まりに過ぎず、実際にはここからコミュニティとユーザー、そしてベンダーが協力しあっていくことが必要だ。wasmCloudのネットワークプレーンであるLatticeにはCNCFのNATSが使われているということも、クラウドネイティブなコミュニティにとっては近しい存在なのかもしれない。KubeCon NAでもWebAssemblyに特化した併催イベントが開かれる予定だ。引き続き注目していきたい。
wasmCloud公式サイト:https://wasmcloud.dev/
Grain公式サイト:https://grain-lang.org/
Atmo公式サイト:https://atmo.suborbital.dev/
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- KubeCon Europe 2023共催のWasm Day、Cosmonicが作成したWASMを解説する絵本を紹介
- KubeCon NA 2021開催。プレカンファレンスのWASM Dayの前半を紹介
- KubeCon EU 2021からセキュアでコンパクトなバイナリーフォーマットWASMのセッションを紹介
- KubeCon Europe 2023共催のWasm Dayから、AdobeのWASMユースケースを紹介
- KubeCon NA 2021プレカンファレンスのWASM Dayの後半を紹介
- 写真で見るKubeCon Europe 2024 ベンダーやコミュニティプロジェクトの展示を紹介
- 「KubeCon NA 2022」のプレカンファレンスからCloudNative Wasm DAYを紹介
- Wasmの現状と将来の計画をBytecode Allianceが公開。CosmonicのBailey Hayes氏によるセッションを紹介
- WebAssemblyを取り巻く最新情報をMeetupから紹介(後半)
- KubeCon Europe 2024、共催イベントのCloud Native WASM DayからCosmonicが行ったセッションを紹介