複雑化したアプリケーションのインフラをもっとシンプルに
田辺氏はまず、NGINX社の現在の主要製品として「NGINX Plus」「NGINX Controller」「NGINX Unit」を簡単に紹介した。
中心となるのは、高速軽量なオープンソースのWebサーバーとしてお馴染みの「NGINX」の商用版にあたるNGINX Plusだ。サポートが提供されるほか、オープンソース版にはない機能も複数追加されており、セキュリティ強化モジュールとしてWebアプリケーションファイアウォール(WAF)の「NGINX WAF」も用意されている。
NGINX Controllerは、そのNGINX Plusを集中管理するためのコントロールプレーン。多数のNGINX Plusから統計情報を集約してグラフ化し、モニタリングする機能なども備えている。
そしてNGINX Unitは、多言語対応の軽量なアプリケーションサーバーおよびWebサーバーだ。2018年に正式リリースされた新しい製品であり、オープンソースで提供されている。
NGINX社では、これらの製品群を「NGINXアプリケーションプラットフォーム」と呼んでいる。もともとNGINX(オープンソース版、NGINX Plus含む)はWebサーバーとしてだけではなく、ロードバランサーやコンテンツキャッシュ(リバースプロキシ)の用途でも広く活用されてきたが、さらにその製品領域を広げている背景には、「アプリケーションインフラの複雑化」があると田辺氏はいう。
ここ20年ほどのWeb技術の進化とともに、アプリケーションのインフラはかなり複雑になってきた。「ユーザー」と「アプリケーション」の間には、コンテンツキャッシュやWAF、ロードバランサー、APIゲートウェイなど、多様な要素が存在する。さらに、同種の機能でも採用されている技術や製品を提供するベンダー、ハードウェア/ソフトウェアなどの提供形態はさまざまで、それぞれ設定や管理の方法も異なる。
「こうした複雑さは管理の負荷を増大させ、安定性の低下にもつながりかねない。NGINXでは複雑さを解消するために、できる限り同じ管理体系の製品で機能を集約し、アプリケーションのインフラを包括的に提供することを目指している」(田辺氏)
その実現に向けたソリューションが、NGINXアプリケーションプラットフォームというわけだ。
NGINX Plusではロードバランス先を動的に変更可能
オープンソース版のNGINXと比較したNGINX Plusの特徴として、田辺氏はまず「詳細で豊富なメトリック」を挙げた。サーバーが現在どういう状態にあるのか、NGINX PlusではさまざまなメトリックをAPI経由で取り出し、付属のダッシュボードで見ることができる。たとえば、NGINX Plusのインスタンスごとのアクセス状況やエラーなどを確認したり、サーバーの状況をゾーンに分けて表示したり、キャッシュや共有メモリーの使用状況などを確認することも可能。なお、このダッシュボードについてはデモサイトが用意されており、自由に体験できるようになっている。
もう1つの重要な特徴として田辺氏が挙げたのは、「Upstreamの動的変更」だ。Upstreamとは、ロードバランス先であるバックエンドのサーバーのこと。オープンソース版のNGINXでは、Upstreamの追加・削除やweight(重み付け)などのパラメータを変更する場合、設定ファイルのnginx.confを書き換えてからリロードする必要がある。NGINX Plusでは、こうした変更をAPI経由で実行し、リロード不要で適用させることができるという。
ほかにも、NGINX Plusでは負荷分散のアルゴリズムやヘルスチェックなどの機能がオープンソース版よりも強化されている。
NGINX Plusの導入パターンとしては、新しいサービスを構築する際に導入するケースと既存サービスの環境を置き換えるケースが考えられるが、後者はなかなかハードルが高い。そこで、既存環境はそのまま活かしながら、フロントにNGINX Plusを置いてリバースプロキシ(コンテンツキャッシュ)として機能させるのも有効な利用法だと田辺氏は話す。
「たとえば静的なイメージなどはキャッシュの有効期限を長めに、WordPressのドキュメントなどダイナミックに生成されるものは短めの5秒程度に設定する。5秒のキャッシュでアクセスのパフォーマンス向上が期待できるし、ダイナミックなコンテンツでもそれほど古いものが出ることもなく、ちょうどいい環境が実現できる」
こうしたリバースプロキシとしての利用のほか、最近ではAPIゲートウェイの機能に対するニーズが高まっており、実際にNGINX Plusユーザーの3~4割程度がAPIゲートウェイとして活用しているという。