サービスメッシュのIstio、機能拡張にWebAssemblyを採用。EnvoyにV8エンジンのWebAssemblyランタイムを統合

2020年3月10日

サービスメッシュを実現する「Istio 1.5」正式版が登場しました。注目すべき新機能の1つは、Istioの拡張やカスタマイズを行うための統合的な手段としてWebAssemblyが採用されたことです。

fig

Istioが実現するサービスメッシュは、Kubernetes上のさまざまなサービス間のトラフィックの管理やルーティング、ロードバランシング、暗号化通信や認証サービス、モニタリングなどを実現します。

Istioの拡張手段をEnvoy上でのWebAssemblyによる実装で統一へ

これまで、Istioの機能を拡張して外部ツールと連係させたり動作をカスタマイズするためには、Mixerプラグインを用いたポリシーやテレメトリのカスタマイズと、Istio内部で使われているプロキシであるEnvoyの拡張機能を利用したデータプレーンのカスタマイズという2つの手段が提供されてきました。

今回正式リリースされたIstio 1.5からは、このIstioのカスタマイズ手段をEnvoyの拡張機能に統一。その実装手段としてWebAssemblyが採用されました。これによりIstioをさまざまなテレメトリシステムやモニタリングシステムと連係させることや、ルーティングの管理、メッセージのボディ内容を書き換えるといったカスタマイズがWebAssemblyによって可能になります(まだアルファ版としての実装です)。

GoogleはIstioの開発にあたり過去18カ月のあいだ、EnvoyをWebAssemblyによって拡張およびカスタマイズ可能にする実装を進めてきており、この実現のためにEnvoyにJavaScriptエンジンであるV8のWebAssemblyランタイムを組み込んだと説明しています。

それに加えて、WebAssembly対応のEnvoyコンフィグレーションAPI群を策定。さらに、従来のMixerによるカスタマイズをWebAssemblyによるカスタマイズへとマイグレーションしやすくなる支援ツールなどを開発中とのことです。

Webブラウザだけでなく多様な環境で使われ始めるWebAssembly

WebAssemblyはもともと、Webブラウザ上でネイティブコード並の実行速度でアプリケーションを実行することを目的に策定されたバイナリフォーマットでした。

バイナリフォーマットであるため、さまざまなプログラミング言語から生成することが可能になっており、主なものだけでもC/C++、Go言語、Rust、TypeScriptを拡張したAssemblyScriptなど多数あるため、プログラマは好みの言語を選んでプログラミング可能です。

仕様策定はW3Cを中心に行われ、2019年12月にはW3Cの勧告に到達。すでに主要なWebブラウザでは利用可能です。

WebAssemblyをサーバサイドやデスクトップ環境で実行可能にする動きも始まっています。

例えば、CDNプロバイダとして知られるFastlyは、WebAssemblyのコンパイラとランタイムで構成される「Lucet」をオープンソースで公開。自社のサービスとしても活用しようとしています。

MozillaやNode.jsらもこの動きに賛同し、WebAssemblyをWebブラウザ以外の実行環境でも実行可能にするため、システムインターフェイスへのアクセスを可能にする「WASI」の策を定開始

これらの企業にインテルやRed Hatらも加わり、さまざまなプラットフォームでWebAssemblyをセキュアに実行するための仕様や実装などを策定する団体「Bytecode Alliance」が2019年11月に発足。

一方、マイクロソフトはWebAssemblyを用いてWebアプリケーションをはじめとするさまざまなアプリケーションの開発基盤である「Blazor」を発表。.NET戦略の中でWebAssemblyの活用を着々と進めています。

Istioの拡張手法としてWebAssemblyが使われるのは、こうした多様化するWebAssemblyの実行環境や実装というトレンドの中でも大きな出来事だと言えるでしょう。

Istioのコントロールプレーンがマイクロサービスからモノリスに変更

そのほかIsito 1.5では、これまでマイクロサービスで構成されていたコントロールプレーンがモノリス化し、Istiodという1つのバイナリになったことで扱いやすくなったことや、よりセキュアになり、可観測性の向上など、多数の改善点が含まれています。

あわせて読みたい

Kubernetes WebAssembly コンテナ型仮想化 Istio




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本