PR

KubeCon NA 2021開催。プレカンファレンスのWASM Dayの前半を紹介

2022年2月16日(水)
松下 康之 - Yasuyuki Matsushita
2021年のKubeCon NA、前日のプレカンファレンスからWASM Dayを紹介する。

クラウドネイティブなシステムに関するカンファレンス、KubeCon/CloudNativeCon North America 2021は、2021年10月11日から15日までカリフォルニア州ロスアンゼルスのLA Convention Centerで開催された。

会期は11日から15日となっているが、11日と12日は併催される各コミュニティやベンダー主導のミニカンファレンスが行われ、キーノートを含むKubeCon自体は13日から15日の3日間という構成だ。新型コロナウィルスによるパンデミックにより、2020年以降イベントやカンファレンスはオンラインで行われてきた。KubeConが、参加者が現地に集うリアルイベントとして行われるのは、2019年のサンディエゴ以来である。公式の発表によれば、今回の参加者はリアルが3300人、オンラインを通じて参加した視聴者は2万人だそうだ。

このレポートでは10月12日に行われたミニカンファレンスの中から「Cloud Native WASM Day」の前半を紹介する。

WASM(WebAssembly)はプラットフォームに限定されずにメモリーセーフで高速な実行を可能にするバイナリーフォーマットとしてブラウザー上の実装が先に始まり、JavaScriptを置き換える存在として注目された。そして現在は、サーバーサイドやIoTデバイスでの実装が可能になったことで、コンテナの次の進化形としてエコシステムが急速に拡大しているオープンソースプロジェクトだ。

オープニングはMicrosoftのエンジニアが登壇

今回のCloud Native WASM Dayは、wasmCloudの開発元であるCosmonicとMicrosoftがスポンサーについている。カンファレンスでは、CosmonicのCEOであるLiam Randall氏のキーノートに続いてWASMとWASI(WebAssembly System Interface)の分散コンピューティング、WASMを使った分散オブジェクトストア、IoTデバイスでの実装、ニューラルネットワークの実装などストレージから分散処理、エッジデバイス実装、そして機械学習まで単なるバイナリーフォーマットに留まらない多様なユースケースが紹介された。

オープニングはMicrosoftのRalph Squillance氏

オープニングはMicrosoftのRalph Squillance氏

オープニングトークを行ったのはMicrosoftのRalph Squillance氏だ。Squillance氏はAzureのPrincipal Program ManagerであるとともにBytecode Alliance Foundationのメンバーでもあるエンジニアで、キーノートを担当したLiam Randall氏とはKubeCon EU 2021でもセッションを行っている。

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

KubeCon EUが行われた2021年5月の段階では、WASMとWASIそしてwasmCloudに関して概要の紹介というレベルだったが、今回のミニカンファレンスではWASMを取り巻く周辺のエコシステムについてもセッションを行われたことが特徴的だったと言える。

キーノートではRandall氏が、分散処理における重要なパートをWASMが担うというKubeCon EUとほぼ同様の解説を行った。

カンファレンスを仕切っていたLiam Randall氏

カンファレンスを仕切っていたLiam Randall氏

Randall氏は、コンピュータシステムが集中から分散に向かっているとして、自動運転カーなどの例を挙げて解説。ここではデータが発生する場所の近くで演算処理が必要となること、プライバシーなどの法規制などによって集中処理が分散していくことを強調した。

PCからクラウド、コンテナを経てWASM、wasmCloudに進化

PCからクラウド、コンテナを経てWASM、wasmCloudに進化

このスライドではPCのようにシステムからOS、アプリまでが垂直統合された世界から、徐々にインフラストラクチャー部分が分離可能なシステムに移行していく流れを解説している。実行の単位もPCから仮想マシン、コンテナ、WASMのコード、そしてWASMのコードを連携させるActorモデルに進化するという部分に注目だろう。WASMのランタイムであるwasmCloudが新たにActorモデルを提唱してきたのは、複数のプロセスを並列協調させて実行させることが必要であるという発想からだろう。

コンテナもDockerが登場した当初は業界全体がDockerに浮かれた状態になったが、その熱狂はすぐに醒め、ビジネスで使うためには複数のコンテナを協調させる仕組みが必要だと言うことに気付いてKubernetesに興味が移ったことによく似ている。これはカンファレンスの後にRandall氏と会話した時にも語られたことだ。

さらにKubernetesが出てきた時もコンテナオーケストレーションだけでは足らず、ネットワークやストレージ、セキュリティなど多くのエコシステムが拡がったことを考えても、WASMもランタイムだけではなくリアルなワークロードをどうやって乗せるのか? という視点が必要であることを示していると思われる。同じくActorモデルを採用するDaprを何度も例に挙げて、分散並列コンピューティングには最適であることを強調し、WASMとwasmCloudが次のパラダイムシフトであることを強調してキーノートを終えた。

エッジからクラウドまでカバーするWASMとwasmCloud

エッジからクラウドまでカバーするWASMとwasmCloud

エッジについては、かつてOpenStack Summitに参加していたテレコム事業社のエンジニアとの会話で「エッジについて通信事業者が話し出したら『エッジの定義』だけで1日が終わってしまう」という冗談を交わした記憶がある。Randall氏の解説ではエッジのOSやインフラストラクチャーが何であれ、WASMは実行できるという観点から「エッジとは何か?」についてはすでに議論のポイントではないという自信を感じるセッションとなった。

wasi-data

次に紹介したいのは、wasi-dataというWASMをデータと同じ場所で実行させる新しい発想のテクノロジーを開発しているベンチャー企業のSingleStoreのエンジニア2名によるセッションだ。

WASI-DATAを紹介

WASI-DATAを紹介

「Distributed Computation with WASM and WASI」と題されたセッションでは、WASMを分散データベースのフレームワーク上で実行するという内容だ。SingleStoreは2020年に名前を変えるまではMemSQLとして知られていたインメモリー型のRDBMSだが、このセッションでは、Pythonと分析用のパッケージであるDaskを使って、StackOverflowのコメントを例にポジティブ/ネガティブを判定するというデモを行った。

背景として「どのようなアプリケーションもデータが必要」そして「データは増加している」そのためにデータを処理するロジックとデータを分けて実行することは効率的ではないという発想だ。

講演するCarl Sverre氏(左)とBailey Hayes氏(右)

講演するCarl Sverre氏(左)とBailey Hayes氏(右)

デモはPythonで書いたネガポジ判定のコードをRustで書き直したファンクションを、Jupyter Notebookから呼び出して実行するというものだった。非常に興味深いのは、データとして利用された8百万行のデータをMacBookにダウンロードしてJupyter Notebookで実行するのではなく、Rustで書かれたWASMモジュールを実行している場所がデータの存在するGoogle Cloudの中であるという部分だろう。これが「データのあるところで演算を実行する」という根幹の部分であり、それを実行可能にしたのはポータビリティのあるWASMのコードであるということを示している。

ネガポジ判定の結果をグラフに描画

ネガポジ判定の結果をグラフに描画

またWASMを並列化するパッケージ、wasi-parallel、WASMから機械学習を実行するwasi-nn、WASMのランタイムであるWASMTIMEとも連携しながら、wasi-dataを標準化したいと語った。

WASMと分散処理を進化させるwasi-data

WASMと分散処理を進化させるwasi-data

Bindle

次に紹介するのはMicrosoftのMatt Butcher氏とCosmonicのTylor Thomas氏によるBindleのセッションだ。

Tylor Thomas氏(左)とMatt Butcher氏(右)

Tylor Thomas氏(左)とMatt Butcher氏(右)

BindleはDeis Labが2020年12月にブログで発表したオブジェクトストレージシステムで、概要についてはMatt Butcher氏自身が書いたブログを参照されたい。例として「食器の引き出し」を使って解説を行っている。ここではスプーンやフォーク、ナイフは同じ引き出しにしまわれるが用途に応じて必要なものだけが取り出されて使われる、それをソフトウェアのパッケージマネージャーとして応用するというのがアイデアだという。

BindleはAggregate Object Storageでありパッケージマネージャーでもある

BindleはAggregate Object Storageでありパッケージマネージャーでもある

Bindleの構成(PercelとInvoice、セキュリティのためのハッシュ値の利用など)についてはここでは触れないが、ユースケースとしてChowTimeというレストランのレコメンドアプリケーションを使って解説を行った部分を紹介したい。

ChowTimeというサンプルを使って解説

ChowTimeというサンプルを使って解説

この例では、レコメンドを実装する際に大量のデータと機械学習を使って大量のコンピュータ資源を使って実装する場合もあれば、ユーザーからのコメントやお勧め度だけを使って小さく実装することもできるという前提に立って、食器の引き出しのように必要に応じて使う食器(ここでは機械学習のアプリかコメントだけを表示するアプリか)を選んで実装することがWASMなら可能であるという。なぜなら、コンパクトでポータビリティの高いコードを使えるからであるというわけだ。そしてそのように必要に応じてモジュールを構成するためのストレージシステムとして設計されたのが、Bindleであるということになる。

それを説明したのが、次のスライドだ。

Bindleを作った背景を説明

Bindleを作った背景を説明

ここでスワップできるモジュールがWASMで実装されるのであれば、それに適したストレージ、パッケージマネージャーが必要であるが、それがBindleであると解説されている。実際にnpmやHelmなどを応用することも検討したが、目的には合わなかったことを解説した。

Deis LabsによるBindleを紹介するブログ:Aggregate Object Storage Explained

また今回のKubeConで何度も目にすることになるSoftware Supply Chainについても、ここでも言及している。つまりビルドされたアプリケーションに何が含まれるのか? はBindleの場合、Invoiceというツリー構造のリストで管理され、単に効率的にモジュールを管理するだけではなく監査やセキュリティの観点からも必要な機能となることが解説された。

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

連載バックナンバー

サーバー技術解説

Tigeraのアドボケイトが、x86とARMのマルチアーキテクチャークラスターを解説

2022/4/7
ARMの優位性を解説しながら、ARMをx86クラスターに追加するマルチアーキテクチャークラスターを、デモを用いて解説。
システム開発イベント

KubeCon NA 2021からサービスメッシュの2セッションを紹介

2022/3/18
KubeCon NA 2021からサービスメッシュのLinkerdの最新情報とIstioを使ったユースケースのセッションを紹介する。
セキュリティイベント

KubeCon NA 2021、ソフトウェア開発工程のタンパリングを防ぐSLSAを解説

2022/3/9
KubeCon NA 2021のプレカンファレンスから、ソフトウェアサプライチェーンを実装するフレームワークSLSAを取り上げたセッションを紹介する。

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

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

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

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