KubeCon EU 2021からセキュアでコンパクトなバイナリーフォーマットWASMのセッションを紹介

2021年9月10日(金)
松下 康之 - Yasuyuki Matsushita
KubeCon+CloudNativeCon EUからWebAssemblyがクラウドネイティブの未来であると解説するセッションを紹介する。

ThinkITの記事でも何回か取り上げているWASM(WebAssembly)だが、もはやWASMを「言語」や「バイナリーフォーマット」と紹介するのは無理があると感じている。これは筆者だけの感想ではないだろう。

過去の記事では「ブラウザーで実行されるバイナリーフォーマット」と紹介したが、WASMを取り囲むエコシステムはすでにより大きな広がりを見せている。コンテナを「OSの機能をベースにしてアプリケーションと必要なライブラリーをパッケージする技術」と解説しても、Kubernetesを中心とした大きなエコシステムの中では要素技術でしかないことと同様に、WASMもより大きな観点で見渡す必要があると言える。

WebAssemblyとRustが作るサーバーレスの未来

その意味ではWASMも、単なるブラウザーのバイナリーフォーマットから、サーバーサイドでセキュアにアプリケーションを高速実行するための要素技術、そしてクラウドネイティブなアプリケーションをデータセンターからエッジサーバー、さらにIoTデバイスにおいても実行可能にするプラットフォームの一部として捉えるべきだろう。

今回はKubeCon EU 2021から、クラウドネイティブなシステムとWASMの関係を解説したキーノートセッションを紹介する。

wasmCloud

キーノートに登場したWASMセッション

キーノートに登場したWASMセッション

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について紹介しよう。

元Capital OneでStackletのVP、Liam Randall氏

元Capital OneでStackletのVP、Liam Randall氏

Microsoft AzureのアップストリームチームのPM、Ralph Squillance氏

Microsoft AzureのアップストリームチームのPM、Ralph Squillance氏

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までとその先

PCからコンテナに繋がる分離の進化を解説

PCからコンテナに繋がる分離の進化を解説

このスライドでは、これまでのコンピュータシステムはハードウェア、OS、ライブラリーそしてデベロッパーがコードを書いたアプリケーションが階層かつ密接に積み重なっていることを解説している。かつてはOSからライブラリーまでデベロッパーが担当していたものが、徐々に抽象化されていくことで仮想マシンとハイパーバイザー、そしてコンテナをオーケストレーションするKubernetesに進化していったことを解説した。

ここでのポイントは徐々にハードウェアから上のスタックが疎結合になっていくという方向性だ。このスライドで青く塗られているスタックは外部から提供される(自前のこともあるが)ものであり、緑はユーザーが用意するものである。一番右側のコンテナとKubernetesの世界では、カーネル以下が置き換え可能なレイヤーとして位置付けられている。ではその先に何が来るのか? これを語る前にインフラストラクチャーは多様化していることを解説し、いわゆるデータセンターから極小サイズのデバイスまでをオーケストレーションする必要が生じているという背景を説明した。

インフラストラクチャーは多様化している

インフラストラクチャーは多様化している

その上でCNCFのランドスケープを引用して、多種多様なソフトウェア、ツール、サービスが疎結合の形で相互接続して実装されることが必要だと解説した。

エッジデバイスからクラスターまで適応できるクラウドネイティブなシステムが必要

エッジデバイスからクラスターまで適応できるクラウドネイティブなシステムが必要

WebAssembly

その上でWebAssemblyはエッジからデータセンターまで実装されていることを紹介。特にメジャーなブラウザーだけではなく、さまざまなプログラミング言語をサポートしていることを強調した。

ブラウザーからエッジ、クラスターまでカバーするWebAssembly

ブラウザーからエッジ、クラスターまでカバーするWebAssembly

また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

クラウドネイティブなシステムにおけるWasm

クラウドネイティブなシステムにおけるWasm

またwasmCloudについては公式GitHubサイトにおいて「wasmCloud is a universal host runtime for actors built with WebAssembly and capability providers」と呼んでいるように、アクターモデルをWebAssemblyで実装したランタイム環境となる。

Kubernetesの後に出てくるパラダイムがWebAssembly

Kubernetesの後に出てくるパラダイムがWebAssembly

ここで前に出てきた抽象化と疎結合によるシステムの向かう方向性の先に、WebAssemblyとその他のシステムがあることを説明した。ここではひとつ前の段階におけるアプリケーションが依存するライブラリーの部分がWebAssemblyに置き換わっていることがわかる。アプリケーションが依存するライブラリーはオープンソースソフトウェアにおいては常に頭痛の種として挙げられる点と言える。脆弱性の発生源がライブラリーであることからも、「ライブラリー依存をどうやって解決するのか?」は重要な問題だ。WebAssemblyにおいては、サンドボックスを用いてメモリーアクセス関連のバグを減らすことが期待できる。またよりセキュアなシステム開発言語としてRustが注目されているのも、異常なメモリーアクセスをコンパイル時にチェックできるという点が大きい。

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

連載バックナンバー

ネットワークイベント
第6回

KubeCon EU、欠点から逆算するKubernetesのネットワークに関するセッションを紹介

2021/10/13
eBPFを使ったネットワークスタックであるCiliumの開発元のCTOがKubernetesのネットワークの弱点を紹介。
クラウドイベント
第5回

KubeCon EU、Linkerdでマルチクラスターを実装するセッションを紹介

2021/10/12
サービスメッシュのLinkerdを使ってマルチクラスター実装を解説するセッションを紹介する。
クラウドイベント
第4回

KubeCon EUレポート Alibabaが本番環境で使うKubeVelaとDaprのセッションを紹介

2021/10/8
KubeCon EUからAlibabaのエンジニアが行ったKubeVelaとDaprに関するセッションを紹介する。

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

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

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

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