サービス指向アーキテクチャ(SOA)とは何か

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

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

SOAとマイクロサービスの違い

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

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

多くの人がマイクロサービスをSOAの最終形態と考えていますが、実際は、両者を分ける重要な違いがいくつもあり、多くの点で、複雑なアプリケーションにはマイクロサービスの方がより効果的なアーキテクチャであると言えます。SOAとマイクロサービスの詳細については、無料のEブック「マイクロサービスの構築:粒度の細かいシステムの設計」をダウンロードしてご覧ください。

NGINXがお手伝いできること

NGINX PlusNGINXは、クラス最高レベルのロード バランシング ソリューションであり、Dropbox、Netflix、Zyngaなどの高トラフィックのWebサイトで使用されています。世界中で3億5,000万以上のWebサイトが、NGINX PlusとNGINX Open Sourceを利用してコンテンツを迅速に、確実に、そして安全に提供しています。

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

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