KubeCon Europe 2024、共催イベントのCloud Native WASM DayからCosmonicが行ったセッションを紹介
KubeCon+CloudNativeCon Europe 2024から、2024年3月19日に行われた共催イベントのCloud Native Wasm Dayのセッションを紹介する。これは当日午後から開催されたCloud Native Wasm Dayの最初の2つのセッションで、プレゼンターはいずれもCosmonic所属で、Cosmonicと言えばCNCFにホストされているプロジェクトであるwasmCloudの開発をリードしていることで知られている。
Wasm Dayの企画と運営は事実上Cosmonicが担当していたと想定される。実際、このセッションの後に行われた2つのユースケースのセッションはいずれもwasmCloudの導入事例であり、全体としてCosmonicのプロモーションのために上手く構成されたカンファレンスという印象を残すイベントとなった。
WebAssemblyはDockerと同じように流行るか? という問いかけ
前半はCosmonicのCTOであるBailey Hayes氏による「Components, WebAssembly's Docker's Moment」というタイトルのセッションだ。
●Bailey Hayes氏の動画:Components, WebAssembly's Docker's Moment
ここではDockerが2013年3月に登場しIT業界の新星としてもてはやされた状況を振り返り、「DockerのようなモメンタムがWebAssemblyにも起こるのだろうか?」という問いかけについて解説する内容となった。
Hayes氏は2024年3月というタイミングに、Dockerが登場した時のような状況になっているかどうかを検証してみようという問いかけからセッションを開始した。
ちなみにこのスライドでLiamと呼ばれているのは、CosmonicのCEOであるLiam Randall氏のことだ。Randall氏はCapital Oneの出身で、WebAssemblyの未来に賭けるためにCosmonicの創業者兼CEOとなった人物である。頻繁にWebAssembly関連のカンファレンスで登壇するRandall氏が「Liamが前にDockerと同じモメンタムが来てるよね? と書いていたかもしれないけど」というのがスライドの意味するところだろう。
その上でHayes氏はDockerとKubernetesの歴史を振り返った。単にDockerの登場だけではなくネームスペースやcgroupsなどにも触れているところがエンジニアらしい。Dockerが発表された当時、すでに膨大な数のコンテナとオーケストレーターであるBorgを社内で使っていたGoogleが「Let me contain that for you」という論文を発表することで、「Dockerこそがコンテナのパイオニア」という認識に対して抗ったこと、そしてその翌年2014年にKubernetesが発表され、それをホストするためのニュートラルな組織としてのCNCFがThe Linux Foundation配下で創立されたことも、前提知識として覚えておく必要があるだろう。
●参考:https://github.com/google/lmctfy
そして走り高跳びの背面飛びを生み出したエピソードを添えて「歴史のどこかのタイミングで何かが突然進化することがある」と説明し、それがコンテナについて起こったと解説した。
さらにWebAssemblyにおいてその進化は、WASI(WebAssembly System Interface)0.2であると語った。
特に異なるプログラミング言語同士をカップリングできるという部分については、現状の言語ごとのパッケージマネージャーやフレームワーク、ライブラリー、プロトコルなどでサイロ化していることに言及し、システムが複雑、大規模になっていく現状の課題について解説した。
このスライドではUnixの哲学がWASIにおいて活かされているとして、そのUnixの哲学の特徴を3点挙げて説明している。
その3点とは、「ひとつだけの機能を実装すること」「他のプログラムと協調すること」そして「ユニバーサルなインターフェイスであるテキストストリームを処理できること」である。その上でWebAssemblyがその3つをどのように実現しているのかを解説した。
複数のプログラムが協調して実行され通信を行うためのインターフェイスを定めたのがWIT(WebAssembly Interface Type)だ。
このスライドでは複数のプログラムがWITを通じて協調して実行されることが説明されているが、重要なのは2つのプログラムは協調しているが、プログラム間では何も共有されずにアイソレーションされていることだ。これによって不必要な特権や環境変数の共有は不要となる。
そしてUnixの標準ストリームに相当するのがWebAssembly Interface Typesだと説明。このスライドで使われているWITのチートシートはCosmonicが作成した簡易マニュアルと言えるもので、実際にイベントなどでラミネート加工されたうえで配布されている。ラミネート加工されているのは、マニュアルとして長く使って欲しいというCosmonicの配慮だろう。
Hayes氏は実際にWITの記述についても説明を行った。実際にチートシートの裏面にはソースコードについて個別に解説する内容が記載されており、マニュアルとして参照しやすい作りになっている。
そしてDockerが成功した要因についても解説し、WebAssemblyが同じ状況になっていると語った。WASIの進化についても0.2.0で安定版となり、worldと称されるコンポーネントの定義についてもCLIやキーバリューストアなどが用意されているが、それらに加えてWebGPUやエンベデッドなどの新しい環境についても追加されていくことが説明された。
最後に「DockerのモメンタムがWebAssemblyに起こっているのか?」という最初の質問については、すでにCNCFのエコシステムの中でWebAssemblyを活用しているプロジェクトが多数存在することを示して、セッションを終えた。
WebAssemblyのコンポーネントモデルを解説
次に行われたTaylor Thomas氏のセッションはデモを中心にしてWebAssemblyのコンポーネントモデルを解説したセッションだ。
ここではシンプルなWebサーバーを実装し、いわゆるHello World的なメッセージを表示させるデモアプリケーションを使ってWebAssemblyがWITの記述でさまざまな外部サービスを接続できることを見せる内容となっている。
●デモのGitHubページ:https://github.com/thomastaylor312/wasmdayeu2024-demo
●Taylor Thomas氏のデモセッション:Choosing Customizability and Distributing Dependencies with Wasm Components
単にメッセージを表示するだけではなく、Redisを使ってキーバリューストアにデータを保存するデモ、最後は独自のコンポーネントを組み込むところまでを見せることで、拡張できることを示した。
Hayes氏のプレゼンテーションとThomas氏のデモでWebAssemblyがコンポーネントモデルによって拡張できるだけではなく、import/exportによって外部に露出するインターフェイスを限定することでセキュアに実装できることを示した点は、セキュリティに敏感なエンジニアには朗報と感じられたことだろう。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- WasmCon 2023からCosmonicのCEOがコンポーネントモデルを用いたデモを紹介
- KubeCon Europe 2023共催のWasm Day、Cosmonicが作成したWASMを解説する絵本を紹介
- KubeCon NA 2021開催。プレカンファレンスのWASM Dayの前半を紹介
- Wasmの現状と将来の計画をBytecode Allianceが公開。CosmonicのBailey Hayes氏によるセッションを紹介
- ヨーロッパ最大のテックカンファレンスKubeCon Europe 2023の共催イベントのWASM Dayを紹介
- 写真で見るKubeCon Europe 2024 ベンダーやコミュニティプロジェクトの展示を紹介
- 写真で見る「KubeCon NA 2022」活気が戻ったショーケースを紹介
- WASMを実行するためのランタイム、wasmCloudがCNCFのサンドボックスに
- KubeCon EU 2022、WebAssemblyでダウンタイムのないアプリ実装を解説するセッションを紹介
- KubeCon+CloudNativeCon NA 2023の併催イベントCloud Native Wasm Dayのキーノートを紹介