Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Webサーバーだけじゃない! マイクロサービス化を支援するNGINXのサービスとは【デブサミ2019】

【15-A-7】 Webサーバー利用だけではないNGINXソリューション

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2019/03/25 12:00

 2018年10月に東京オフィスを開設し、日本市場への本格参入を発表したNGINX社。高速軽量なオープンソースのWebサーバー「NGINX」で知られる同社では、その商用版としてエンタープライズ向けに機能拡張を図ったサポート付きの「NGINX Plus」も開発・販売している。さらに近年では、複数のNGINX Plusをモニタリングして集中管理できる「NGINX Controller」や、アプリケーションサーバー機能も備えたWebサーバー「NGINX Unit」などをリリース。これらの製品群により、アプリケーションインフラの複雑さを解消し、マイクロサービスへのスムーズな移行を支援するという。NGINXが目指すアプリケーションプラットフォームの姿について、同社テクニカル ソリューションズ アーキテクトの田辺茂也氏が解説した。

目次

複雑化したアプリケーションのインフラをもっとシンプルに

 田辺氏はまず、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サーバーとしてだけではなく、ロードバランサーやコンテンツキャッシュ(リバースプロキシ)の用途でも広く活用されてきたが、さらにその製品領域を広げている背景には、「アプリケーションインフラの複雑化」があると田辺氏はいう。

NGINX テクニカル ソリューションズ アーキテクト 田辺茂也氏
NGINX テクニカル ソリューションズ アーキテクト 田辺茂也氏

 ここ20年ほどのWeb技術の進化とともに、アプリケーションのインフラはかなり複雑になってきた。「ユーザー」と「アプリケーション」の間には、コンテンツキャッシュやWAF、ロードバランサー、APIゲートウェイなど、多様な要素が存在する。さらに、同種の機能でも採用されている技術や製品を提供するベンダー、ハードウェア/ソフトウェアなどの提供形態はさまざまで、それぞれ設定や管理の方法も異なる。

こうした「複雑さ」を解消するためにNGINXアプリケーションプラットフォームを提供
こうした「複雑さ」を解消するためにNGINXアプリケーションプラットフォームを提供

 「こうした複雑さは管理の負荷を増大させ、安定性の低下にもつながりかねない。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では負荷分散のアルゴリズムやヘルスチェックなどの機能がオープンソース版よりも強化されている。

ダッシュボード(GUI)やHTTPインタフェースからUpstreamの設定を動的に変更可能
ダッシュボード(GUI)やHTTPインタフェースからUpstreamの設定を動的に変更可能

 NGINX Plusの導入パターンとしては、新しいサービスを構築する際に導入するケースと既存サービスの環境を置き換えるケースが考えられるが、後者はなかなかハードルが高い。そこで、既存環境はそのまま活かしながら、フロントにNGINX Plusを置いてリバースプロキシ(コンテンツキャッシュ)として機能させるのも有効な利用法だと田辺氏は話す。

 「たとえば静的なイメージなどはキャッシュの有効期限を長めに、WordPressのドキュメントなどダイナミックに生成されるものは短めの5秒程度に設定する。5秒のキャッシュでアクセスのパフォーマンス向上が期待できるし、ダイナミックなコンテンツでもそれほど古いものが出ることもなく、ちょうどいい環境が実現できる」

 こうしたリバースプロキシとしての利用のほか、最近ではAPIゲートウェイの機能に対するニーズが高まっており、実際にNGINX Plusユーザーの3~4割程度がAPIゲートウェイとして活用しているという。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:【デブサミ2019】セッションレポート

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5