SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2019】セッションレポート (AD)

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

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

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

 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ゲートウェイとして活用しているという。

次のページ
さまざまなマイクロサービスアーキテクチャをサポート

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
【デブサミ2019】セッションレポート 連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11417 2019/03/25 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング