KubeCon+CloudNativeCon NA 2023の併催イベントCloud Native Wasm Dayのキーノートを紹介
![](https://thinkit.co.jp/sites/default/files/styles/main_image_730x/public/main_images/22648_main.jpg?itok=8x-8QA5B)
KubeCon+CloudNativeCon North America 2023から、2023年11月6日に開催されたWebAssemblyに特化したミニカンファレンスCloud Native Wasm Dayを紹介する。WebAssemblyが注目を集めていることは2023年の9月6日、7日にシアトルでWebAssemblyだけのカンファレンスWasmConが開催されたことでもわかる。KubeConはCNCF主催、WasmConはCNCFの親組織であるThe Linux Foundation主催ということで、オープンソースをリードする2つの組織が強力にプッシュしているテクノロジーがWebAssemblyである。
今回はキーノートとして行われたキーノートセッションを紹介する。タイトルは「WebAssembly Component Model: Enhancing Security, Productivity and Green Computing」で、WebAssemblyに対して新たに導入されたコンポーネントモデルを、デモを交えて解説するという内容だ。プレゼンテーションを行ったのはKate Goldenring氏(Senior Engineer, Fermyon)とBailey Hayes氏(CTO, Cosmonic)だ。
●動画:WebAssembly Component Model: Enhancing Security, Productivity, and Green Computing
新たに導入されたコンポーネントモデル
タイトルが示すようにコンポーネントモデルについての解説だが、「技術的にこうなっている」という解説ではなく、ソフトウェア開発に求められる「あるべき姿」を示しながら「どうしてそれがコンポーネントモデルで可能になるのか?」を解説しており、今までの概念的な説明からより現実的な問題解決のための手法に踏み込んでいるところに意味がある内容だ。
このスライドでは良いソフトウェアが持つべき特徴として「独立していること(Isolated)」「緩和可能であること(Mitigatable)」「効率的(Efficient)」という3点を挙げて説明した。
「独立」については近年のオープンソースソフトウェアを使った開発において、ライブラリーなどにおける依存関係が深いソフトウェアよりも単独で実行可能なソフトウェアであるべきと解説しており、Hayes氏がGitHubのDependabotにも言及しているところからもわかるように、強い依存関係にあるソフトウェアから脆弱性が発生することなどを念頭において説明している。
これは「緩和可能」という部分にも関連する内容であり、ソフトウェアの脆弱性を修正するためになるべくシンプルな依存関係を維持できるような構成を取るべきということになる。最後の「効率的」については、実行時のメモリーやファイルサイズなどについて最小限のリソースを消費するシステムを選択するべきという提言だ。これらの特徴はどれもWebAssemblyに当てはまる内容となっており、技術面の特徴をモダンなソフトウェアにおいて必要な特性に当てはめた説明となっている。
ここからはエンジニアらしいカジュアルな説明スタイルとなり、WASMの特徴を表したビンゴカードをスライドに使って解説。ここではWASMが多種多様なプログラミング言語から生成できるフォーマットであること、オープンな標準仕様に準拠していることなどを説明した。
コンポーネントモデルの解説に移ったが、これまでの単一のプログラムから違う言語で書かれた2つのモジュールが定義されたインターフェース(WebAssembly Interface Type)を通じて通信するようすを解説した。特に再利用可能なモジュールが実現可能であり、多言語間の通信、サンドボックスなどの特徴も合わせて解説している。
セキュリティについて強調したこのスライドでは、Sysdigが行ったリサーチの結果を引用して多くのコンテナイメージに脆弱性が内包されていること、そしてそのうちの重大な脆弱性について約15%しか修正が行われていないことなどを紹介した。
このスライドではEUやNIST、PCI DSSなどのセキュリティ仕様が多数存在し、それらをすべてクリアすることがいかに大変かを説明している。会場からは笑いも起きた瞬間だったが、改めて多くの仕様が存在し、それをリストアップしたHayes氏の労力に対する賛同という意味合いもあったように思える。== コンポーネントモデルを用いたデモ
ここからコンポーネントモデルを用いたアプリケーションのデモを使って、脆弱性がそれぞれの部分で発見されたというシナリオを元にコンポーネントモデルにおける特徴を解説するフェーズに入った。これは認証のミドルウェアを用いるビジネスアプリケーションがランタイム上にコンポーネントモデルで実装されているサンプルだ。
デモに使われたサンプルコードは以下を参照されたい。
●サンプルアプリのリポジトリ:https://github.com/fermyon/http-auth-middleware
最初のシナリオは認証のコンポーネントに脆弱性が発見されたというもので、アップデートを行う際にWargというWebAssemblyのリポジトリを利用可能であること、コンポーネントのアップデートが終わればビジネスロジック側をリビルドする必要がないことなどを強調した。
またビジネスロジック側に脆弱性が発見された場合も、すべてのコンポーネントをリビルドする必要がないことも解説。
インフラストラクチャー側で用意されるデータベースなどの部分においても同様で、それぞれが独立している利点が十分に発揮されている。
次に通常のCI/CDのプロセスにおける優位点についても解説を行った。現状ではさまざまなバージョン、OSを意識してCI/CDのプロセスを構築する必要があるが、コンポーネントモデルを使えば、それらのマトリクス状のビルドからテスト及びパッケージ化の複雑なプロセスが簡易化されることを強調した。
しかしプラットフォームに依存しないWebAssemblyとコンポーネントモデルを使うことで、複雑なビルドからテストのマトリクスが不要になる。
また最後にさまざまなプラットフォームとツールで同じコードが実装できるデモを実施。ここではBytecode Allianceの標準ツールを使ってビルド&実行したコードを、Goldenring氏が所属するFermyonが開発するSpinというプラットフォームでもHayes氏が所属するCosmonicが開発するwasmCloudでもツールを変えるだけで実行できることを解説した。
最後にまとめとしてWebAssemblyとコンポーネントモデルの特徴を再度、振り返ってセッションを終えた。
これまでの解説ではコンポーネントモデルの概要の紹介や通信のためのインターフェースタイプ(WIT)の解説などが中心であり、コンポーネントモデルの利点についてはあまり解説していなかったが、今回はその部分に集中的にポイントを置いた内容とデモとなった。単なる技術解説ではなく現実の問題解決のためにWebAssemblyとコンポーネントモデルがあるということを強調する姿勢は大いに評価したい。
WASM Dayのスケジュールは以下から参照可能だ。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- ヨーロッパ最大のテックカンファレンスKubeCon Europe 2023の共催イベントのWASM Dayを紹介
- KubeCon Europe 2023共催のWasm Day、Cosmonicが作成したWASMを解説する絵本を紹介
- Wasmの現状と将来の計画をBytecode Allianceが公開。CosmonicのBailey Hayes氏によるセッションを紹介
- CloudNativeSecurityConから、WebAssemblyのパッケージレジストリプロトコルWargのセッションを紹介
- KubeCon Europe 2024、共催イベントのCloud Native WASM DayからCosmonicが行ったセッションを紹介
- WasmCon 2023からCosmonicのCEOがコンポーネントモデルを用いたデモを紹介
- 初めてのWasmCon開催。キーノートからコンポーネントモデルを解説するFastlyのセッションを紹介
- WasmCon 2023からLLMをWASMで実装するセッションを紹介
- KubeCon+CloudNativeCon North America 2023のキーノートとショーケースを紹介
- 「KubeCon NA 2022」のプレカンファレンスからCloudNative Wasm DAYを紹介