KubeCon EU 2021からセキュアでコンパクトなバイナリーフォーマットWASMのセッションを紹介
ThinkITの記事でも何回か取り上げているWASM(WebAssembly)だが、もはやWASMを「言語」や「バイナリーフォーマット」と紹介するのは無理があると感じている。これは筆者だけの感想ではないだろう。
過去の記事では「ブラウザーで実行されるバイナリーフォーマット」と紹介したが、WASMを取り囲むエコシステムはすでにより大きな広がりを見せている。コンテナを「OSの機能をベースにしてアプリケーションと必要なライブラリーをパッケージする技術」と解説しても、Kubernetesを中心とした大きなエコシステムの中では要素技術でしかないことと同様に、WASMもより大きな観点で見渡す必要があると言える。
その意味ではWASMも、単なるブラウザーのバイナリーフォーマットから、サーバーサイドでセキュアにアプリケーションを高速実行するための要素技術、そしてクラウドネイティブなアプリケーションをデータセンターからエッジサーバー、さらにIoTデバイスにおいても実行可能にするプラットフォームの一部として捉えるべきだろう。
今回はKubeCon EU 2021から、クラウドネイティブなシステムとWASMの関係を解説したキーノートセッションを紹介する。
wasmCloud
WASMのキーノートセッション:Cloud Native & WebAssembly: Better Together - Liam Randall & Ralph Squillace
セッションのタイトルは「Cloud Native and WebAssembly:Better together」、プレゼンテーションを担当したのはwasmCloudの共同創業者であるLiam Randall氏とMicrosoft AzureのコアチームのプログラムマネージャーであるRalph Squillance氏だ。
まずはRandall氏と氏が創設したWasmをベースにしたオープンソースソフトウェアwasmCloudについて紹介しよう。
LinkedInでLiam Randall氏の経歴を見ると、StackletのVP Business Developmentという肩書きを持っているが、他にもCloud Custodianのコントリビュータであり、wasmCloudの共同創業者でもあるという。以前はアメリカの先進的な金融機関として有名なCapital OneのVP, Software Innovationとして、Capital Oneがクラウドネイティブなシステムの開発に進む際のリーダーの一人として活躍した。Capital Oneが公開したAWSのアカウントを管理するツールであるCloud Custodianを開発していたことを考えると、クラウドネイティブなシステム開発についてはユーザーのとして視点と、オープンソースソフトウェアのコントリビュータとしての視点の双方を持ち合わせている稀な人材ということになるだろう。
また共同創業者でもあるオープンソースソフトウェアのwasmCloudは、アクターモデルを実装したWasmのランタイムプラットフォームという説明がこの段階では妥当だろう。wasmCloudについては最後にもう一度解説を行いたい。
コンテナ/Kubernetesまでとその先
このスライドでは、これまでのコンピュータシステムはハードウェア、OS、ライブラリーそしてデベロッパーがコードを書いたアプリケーションが階層かつ密接に積み重なっていることを解説している。かつてはOSからライブラリーまでデベロッパーが担当していたものが、徐々に抽象化されていくことで仮想マシンとハイパーバイザー、そしてコンテナをオーケストレーションするKubernetesに進化していったことを解説した。
ここでのポイントは徐々にハードウェアから上のスタックが疎結合になっていくという方向性だ。このスライドで青く塗られているスタックは外部から提供される(自前のこともあるが)ものであり、緑はユーザーが用意するものである。一番右側のコンテナとKubernetesの世界では、カーネル以下が置き換え可能なレイヤーとして位置付けられている。ではその先に何が来るのか? これを語る前にインフラストラクチャーは多様化していることを解説し、いわゆるデータセンターから極小サイズのデバイスまでをオーケストレーションする必要が生じているという背景を説明した。
その上でCNCFのランドスケープを引用して、多種多様なソフトウェア、ツール、サービスが疎結合の形で相互接続して実装されることが必要だと解説した。
WebAssembly
その上でWebAssemblyはエッジからデータセンターまで実装されていることを紹介。特にメジャーなブラウザーだけではなく、さまざまなプログラミング言語をサポートしていることを強調した。
またWebAssemblyの特徴である「高速実行可能であること」「サンドボックスによるセキュアな実行」「複数のプログラミング言語のサポート」「サーバーからブラウザーまでカバーするポータビリティ」などを挙げて解説した。
またクラウドネイティブという観点では、wasmCloud、Kubewardenの中で使われていることを紹介。KubewardenはKubernetesのカスタムリソースをベースにして開発されたポリシーエンジンで、ポリシーの記述にWebAssemblyを利用しているという。Kubernetes上のポリシーエンジンとしては、CNCFのプロジェクトでもあるOpen Policy Agent(OPA)や、同じくカスタムリソースをベースにしてポリシーを実装するKyvernoなどがある。OPAはLua、KyrvernoはYAMLでポリシーを記述するが、KubewardenはWebAssemblyにコンパイルできる言語ならどの言語でもポリシーを記述できる。これは、他にないKubewardenの特徴と言えるだろう。
参考:Kubewarden Kubernetes Dynamic Admission at your fingertips
またwasmCloudについては公式GitHubサイトにおいて「wasmCloud is a universal host runtime for actors built with WebAssembly and capability providers」と呼んでいるように、アクターモデルをWebAssemblyで実装したランタイム環境となる。
ここで前に出てきた抽象化と疎結合によるシステムの向かう方向性の先に、WebAssemblyとその他のシステムがあることを説明した。ここではひとつ前の段階におけるアプリケーションが依存するライブラリーの部分がWebAssemblyに置き換わっていることがわかる。アプリケーションが依存するライブラリーはオープンソースソフトウェアにおいては常に頭痛の種として挙げられる点と言える。脆弱性の発生源がライブラリーであることからも、「ライブラリー依存をどうやって解決するのか?」は重要な問題だ。WebAssemblyにおいては、サンドボックスを用いてメモリーアクセス関連のバグを減らすことが期待できる。またよりセキュアなシステム開発言語としてRustが注目されているのも、異常なメモリーアクセスをコンパイル時にチェックできるという点が大きい。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- KubeCon NA 2021開催。プレカンファレンスのWASM Dayの前半を紹介
- WASMを実行するためのランタイム、wasmCloudがCNCFのサンドボックスに
- CNCFのサンドボックスプロジェクトとなったwasmCloudの動画を紹介
- WasmCon 2023からCosmonicのCEOがコンポーネントモデルを用いたデモを紹介
- wasmCloudのCosmonicのCEOが新しいデモを紹介
- KubeCon NA 2021プレカンファレンスのWASM Dayの後半を紹介
- KubeCon EU 2022、WebAssemblyでダウンタイムのないアプリ実装を解説するセッションを紹介
- KubeCon Europe 2024、共催イベントのCloud Native WASM DayからCosmonicが行ったセッションを紹介
- Rustで書かれたKubernetesのためのWASM実行環境Krustletとは?
- WebAssemblyとRustが作るサーバーレスの未来