NGINX(エンジンエックス)|日本公式サイト

NGINXはF5ファミリーの一員となりました。新体制の詳細はこちらを御覧ください。

サービス指向アーキテクチャ(SOA)は、独立したサービスの集合体を中心にアプリケーションを設計するアーキテクチャのアプローチです。サービスとは、注文の処理や、在庫レポートの作成といったアクションを完了し、具体的な成果を提供するあらゆるビジネス機能を指します。複数のサービスを組み合わせ、複合的なアプリケーションを作り出すことにより、エンドユーザにより大きな機能を提供できます。

SOAのアプローチの利点として、サービスコンポーネントの保守や更新が容易になることが挙げられます。各コンポーネントがより凝縮されて包含されるため、他のすべての要素に影響を与えることなく、コードの修正や要素の交換を容易に実行できます。その一方で、サービス間のコミュニケーションをどのように実現するかが課題となります。SOAは、通常はESB(Enterprise Service Bus)に関連付けられ、サービス間の中心的な通信手段として使用されます。ESBは変化に対応できないことが多く、往々にして複雑化するため、サービスがどこから始まり、どこで終わるのかを確認するのが困難です。

SOAとMicroservicesの違い

SOAが、現在のマイクロサービスの定義によく似ていると思われることは珍しくありません。マイクロサービスは、1 つ 1 つが独立し、同じタスクを達成するために連動することを目的とした、自己完結型の小さなサービスです。しかし、SOAとマイクロサービスには決定的な違いがいくつかあります。その例として、以下に2つの点を紹介します。

  • マイクロサービスは、非常に細かい粒度のサービスです。機能上の理由により、一定レベルの粒度で分離されています。つまり、マイクロサービスアーキテクチャでは、データベース、アプリケーションサーバ、製品サポートを含むサービスが、同じチームによってエンドツーエンドで管理されます。一方、SOAはサービスを論理的に分離します。ここでの違いは、論理的にグループ化されたサービスが機能間で共有される点です。これにはメリットがある一方で、サービスに障害が発生すると、依存するすべての機能が影響を受けることになります。マイクロサービスアーキテクチャは、この影響を排除するために、ビジネスサービスを、それぞれ固有の機能の中に完全に封じ込め、その機能を果たし、ビジネス価値を提供するために必要なすべてのものを内包するように設計されています。そのためには、要素の重複すらも許容します。
  • マイクロサービスは機能別に封じ込められているため、SOAで制約となる通信フレームワークやプロトコル、仕様に縛られることもありません。その代わりとして、各エンドポイントセットの中でインテリジェンスを保持し、単純なファブリックでセット間をつなぐことに重点を置いています。そのためには、システム内部のアーキテクチャを収容する単一のAPIゲートウェイを実装し、RESTなどの軽量なWebプロトコルを使用して、独立した各マイクロサービスにリクエストをルーティングすることが有効です。さらに、各マイクロサービスが他のサービスのAPIを消費することがよくありますが、ゲートウェイによって、モバイルアプリがバックエンドに接触することが防止されます。Webサービスの仕様に縛られ、アプリケーションを接続するためにESBに依存するSOAでは、このように高いレベルの柔軟性を実現することは不可能です。

マイクロサービスをSOAの最終形態と考える人が多くいますが、実際は、両者には重要な違いがいくつかあり、多くの点で、マイクロサービスの方が複雑なアプリケーションには効果的なアーキテクチャの選択肢だと言えます。SOAとマイクロサービスについて詳しく知りたい方は、『Building Microservices: Designing Fine‑Grained Systems』をダウンロードの上、詳細をご覧ください。

NGINX Plusはどのように役立ちますか?

NGINX PlusとNGINXは、クラス最高のロードバランシングソリューションであり、Dropbox、Netflix、Zyngaなどの高トラフィックのWebサイトで使用されています。世界中で4.5億以上のWebサイトがNGINX PlusとNGINX Open Sourceを利用しており、迅速かつ確実で安全なコンテンツのデリバリーを実現しています。

NGINX Plusは、ソフトウェアベースのアプリケーションデリバリーコントローラー(ADC)として、同等の機能を持つハードウェアソリューションに比べて手頃な価格で、大幅に効果的にマイクロサービスアーキテクチャを促進するよう設計されています。

  • NGINX Plusは、アプリケーションデリバリー/ロードバランシングの完備されたソリューションを提供し、各マイクロサービスのパフォーマンスと信頼性を向上させます。
  • NGINX Plusは、お客様のスタックにAPIゲートウェイとして、また各サービスのエンドポイントとして組み込むことができる柔軟性と拡張性を備えています。
  • NGINX Plusは、高性能HTTPサーバとして機能し、マイクロサービスのアクションを最大限のスピードと効率で実行します。