Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

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

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

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

目次

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

 続いて田辺氏は、NGINXのマイクロサービスへの取り組みについて言及。マイクロサービスアーキテクチャとして成熟度に応じた3モデルを例示し、NGINXはそれらすべてをサポートしていると説明した。

マイクロサービス化のレベルに応じたさまざまなアーキテクチャに対応
マイクロサービス化のレベルに応じたさまざまなアーキテクチャに対応

1. Proxy Model

 マイクロサービスへの移行初期段階となる単純なモデル。サービス群のフロントにNGINXを置き、プロキシとして使う。外からのアクセスをルーティングして、適切に各サービスに振り分ける。サービス間は直接つながっていて、サービス同士で通信を行う。

2. Router Mesh Model

 Proxy Modelではサービスが増えるほど各サービスの負荷が大きくなり、運用も煩雑になる。そこで次の段階として、サービス群の中央にNGINXをルーターとしてもう1台置き、サービス間の通信はすべてルーター(NGINX)を通して行うようにする。

3. Fabric Model

 Router Mesh Modelでもさらにサービスが増えれば1台のルーターで捌ききれなくなり、ルーターが増えすぎると、やはりサービス間通信が複雑になっていく。最終的には、各サービスにNGINXが入り、そこを通してやりとりするモデルが望ましい。他のサービスとの通信はすべてNGINXに任せ、各サービスは自立して通信以外の処理に集中する。

 この最終段階のFabric Modelにおいて、各サービスで動くWebサーバーとして機能するのが、NGINX Unitだ。NGINX Unitは「ダイナミックWeb・アプリケーションサーバー」と呼ばれ、アプリケーションありきで動作する。静的なファイルを提供する機能がなく、アプリケーションが出すHTTPの中身を返すという機能に限られている。

 Python、PHP、Go、Perl、Ruby、JavaScript(Node.js)など多言語に対応(3月リリース済みのバージョン1.8.0でJavaにも対応)するほか、設定はすべてRESTful JSON APIで行うという特徴を持つ。設定ファイルを編集する必要がなく、必要なところだけREST APIで変えればよい。

 田辺氏は、Dockerのイメージを使ったNGINX UnitのインストールやPHPアプリケーションの作成、設定変更などをデモで紹介。シンプルな手順で、動的に必要な部分だけ設定をスピーディに変更できることを示した。

DNSサービスディスカバリでサービス側の変更にも動的に対応

 たとえば新しいサービスが追加されたり、既存のサービスのインスタンスが追加された場合などに、NGINX側でその変更に対応するには「設定ファイルを書き換えてリロードする」という単純な方法がある。しかし、マイクロサービスの環境ではさまざまなサービスが稼働し、サービスの増減や変更も頻繁に発生するため、そのようなやり方ではすぐに追随できなくなってしまう。そこで重要となるのが、「サービスの検出(サービスディスカバリ)」の機能だ。

 NGINX Plusは、さまざまな方法でこのサービスの検出に対応できるという。田辺氏はその1つである「DNSサービスディスカバリ」について、Kubernetes上でのデモを交えながら説明した。基本的な仕組みとしては、DNSのSRVレコードを一定間隔で参照し、Upstreamとして設定されている対象のDNS情報に変更があればNGINX側の設定にも動的に反映することで、変更後のサービスを検出するというものだ。

 デモでは実際に、NGINX PlusのUpstreamとしたサービス(Pod)をスケールアウト/スケールインさせると、NGINX Plus側の設定もすばやく変更されていく様子が見てとれた。

DNSのSRVレコードを使った動的なサービスの検出が可能
DNSのSRVレコードを使った動的なサービスの検出が可能

 最後に、田辺氏は「『Webシステムが複雑になりすぎた』『ロードバランサーのハードウェアが更新時期を迎える』『マイクロサービスやコンテナでの運用を検討中』など、思い当たる項目がある方は、ぜひ一度、NGINX Plusのフリートライアルを活用していただきい」と呼びかけ、セッションを終えた。

お問い合わせ

 NGINX



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

著者プロフィール

バックナンバー

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

もっと読む

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