EnvoyをベースにしたAPI GatewayのGlooが最新バージョン1.3をリリース
オープンソースソフトウェアのProxy、EnvoyをベースにしたAPI GatewayであるGlooの最新バージョン1.3のリリースが、開発元であるSolo.ioのブログにて発表された。Soloは元EMCのIdit Levine氏がCEOとして起こしたベンチャーで、他にも元Red HatのChristian Posta氏がField CTOという肩書で在籍している。クラウドネイティブなシステムを推進するためのソフトウェアを開発していることで知られている。
GlooはCNCFにもホスティングされ、今はGraduationという状態にある。Soloは、マイクロサービスに最適なEnvoyをベースにしてAPI gatewayであるGlooを開発した。API gatewayはGoogleが買収したApigeeやRed Hatの3Scale、NGINXをベースにして開発されたKong、Datawireが開発を行っているAmbassador(こちらもGlooと同じくEnvoyがベースとなっている)などが競い合っているエリアだ。
GlooはKubernetesをベースにしていることで、すでにKubernetesを使っているシステムであればスムーズに導入が可能であるという。その大きな根拠は、GlooがKubernetesのCRD(Custom Resource Definition)を利用していることが大きい。これはAPI gatewayとして実行される際に必要となる設定情報などのデータストアにCRD、つまりKubernetesがデータを保存している分散型キーバリューストアであるetcdを使っていることに由来している。これによって運用する側が個別にデータストアとなるデータベースを用意する必要がなくなり、Kubernetesの運用と一体化して管理ができるという意味でKubernetesに最適化した優れた設計といえる。
Gloo自体はEnterprise版とオープンソースソフトウェア版の2種が存在し、機能差が存在するようだ。Soloのページから「Enterprise」として記述されている部分がEnterprise版、つまり有償版の差別化ポイントということだ。
Glooの製品ページ:Gloo - Envoy Proxy based API Gateway and Ingress Controller - Solo.io
最新リリースの1.3もエンタープライズ版、オープンソースソフトウェア版それぞれがリリースされている。その特徴について見ていこう。
デベロッパーポータル
これはEnterprise版の機能だが、デベロッパーがAPIを登録して公開するポータル機能が追加された。これはChristian Posta氏のデモでも最初に紹介されていた機能だ。
Christian Posta氏による解説動画:Gloo Developer Portal (Gloo Enterprise 1.3)
マイクロサービスで構成されたシステムではアプリケーションが利用する数多くのAPIが存在している。日々開発が行われて更新が続くようなアジャイル開発を行う場合、そのAPIを利用するデベロッパーがAPIを解説したドキュメントやリポジトリーに格納されたソースコードなどを参照して対応するよりも、デベロッパーが直接更新できる自前のポータルに解説情報などを公開して、それを個々のデベロッパーが参照するという開発手法が有効だ。特に開発チームが大規模、分散化するような場合にはデベロッパーの労力を省く意味で効果的だろう。APIをアクセスする際のトークンやアクセスキーなどの扱いには十分注意が必要だが、ポータルの中でサンプルを参照しながら設定が行えるのは学習コストを抑える意味でも価値がある。Kubernetesが実装されている環境であれば、すべてがCRD上に展開されるため、別のインフラストラクチャーやデータストアを用意する必要がないということも魅力的なオプションだろう。
またダッシュボード機能も用意されているため、Kubernetes上のAPIの状況を確認することが可能だ。ダッシュボードからの操作を可能にするためにはEnterprise版が必要だが、オープンソースソフトウェア版でもRead-Onlyで利用が可能になるようだ。
WebAssemblyによる拡張性
最新リリースの2つ目の大きな特徴はWebAssemblyに関するものだ。WebAssemblyはブラウザー上でJavaScript以外のプログラミング言語を実装するという目的の元に、Mozilla Foundationで開発が進められているバイナリーフォーマットだが、WASI(WebAssembly System Interface)という下位のシステムへのアクセスを実装するAPIによって、ブラウザー以外にもさまざまなOS上でプログラムを実行するプラットフォームとして使われるようになっている。
DockerのエンジニアであるSolomon Hykes氏が、2019年3月に「LinuxコンテナやWindowsコンテナと同様にサーバーサイドでコードを実行するプラットフォームとして重要になる」と予言したように、WebAssemblyはブラウザーだけではなく今やサーバーサイドのアプリケーション実行プラットフォームとして大きく注目されている。またGo言語やRustなどの新しいプログラミング言語からコンパイルしてバイナリーを実行する連携機能が強化されており、その面からもGlooがAPI gatewayにWebAssemblyによる拡張性を強化したのは大きな意味がある。
Soloは2019年12月にWebAssembly Hubを発表しており、ポータブルで高速なコード実行プラットフォームとしてWebAssemblyに注目していることがわかる。WebAssembly HubはWebAssemblyで書かれたコードをホストするリポジトリーで、Envoyの拡張のためのコードだけをホスティングするというのが目的だ。元々EnvoyはC++で書かれており、Envoyを拡張するためにはC++をプログラミング言語として選択することは理にかなっている。Envoyを拡張するために毎回C++からビルドするのではなく、Extensionとして機能を随時追加できるようにすれば、WebAssemblyが持つサンドボックスやC/C++と遜色ない高速性、ポータビリティーが得られるという効果は大きい。その意味でも、WebAssemblyをベースにして拡張機能を強化するWebAssembly HubのサポートはGlooにおいては重要だ。
2019年12月に発表されたWebAssembly Hubについては下記のブログを参照されたい。
ここにはWebAssembly Hubの目的を「WebAssemblyの拡張コードをビルド、実装、共有、発見するためのサービスである(Today, we are announcing WebAssembly Hub, a service for building, deploying, sharing, and discovering Wasm extensions for Envoy.)」と明記している。API gatewayを拡張するためにリポジトリーを用意して実装することで、Solo以外のデベロッパーがコードをここに集約できるようになり、Portalの機能と合わせて開発のためのフローがスムーズになることが予想できる。
使いやすさと障害時対応の改善
使いやすさという部分では、管理ツールであるGlooctlの強化にも注目だ。これはKubernetesの管理ツールであるkubectlになぞったコマンドラインツールだが、Helm 3 Chartのサポートなど地味に進化していることがわかる。
その他にも「パフォーマンスと安定性の向上」、「ドキュメンテーションの向上」などが挙げられており、ドキュメントについてはGloo専用のドキュメントサイトを設けているようにかなり充実しておいる。この辺りからも、デベロッパーに対する情報提供の重要性を理解していることがわかる。
Glooのドキュメントサイト:An Envoy-Powered API Gateway
またコードだけではなく、ドキュメントに対するPull RequestもGitHub上で受け付けられるようになっていることもポイントだ。現状、日本には拠点がなく、エンタープライズ企業においてはサポートが気になるところだが、北米ではすでに多くの企業でGlooが採用されている。GlooはGoogleのApigeeやRed Hatの3Scale、Kongなどに比べて露出が少なく認知度が低いが、これから注目されていくべきソフトウェアと言えるだろう。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- API gatewayのGlooとAmbassadorがそれぞれ最新バージョンをリリース
- KubeCon EU 2022のショーケースからみるKubeConの変化とは
- All Things OpenからSolo.ioのBrian Gracely氏にインタビュー。サイドカーレスサービスメッシュとは?
- 「KubeCon NA 2022」から、サイドカーレスを実装したサービスメッシュのIstioのセッションを紹介
- Kubernetesをサービスメッシュ化するIstioとは?
- Istioがマイクロサービスからモノリシックなアプリに変化。その背景とは
- Kubernetesクラスターの遠隔操作による開発を支援するTelepresence
- 写真で見るKubeCon Europe 2019ショーケース
- Kubernetesの新しいネットワーク機能、Gateway APIを理解する(後編)
- Rustで書かれたKubernetesのためのWASM実行環境Krustletとは?