サービス指向アーキテクチャ(SOA)は、独立したサービスの集合を中心にアプリケーションを設計するアーキテクチャ手法です。サービスとは、顧客の注文処理や在庫レポートの作成など、アクションを完了して特定の結果を提供する任意のビジネス機能を指します。複数のサービスを組み合わせて複合アプリケーションを構築することで、エンドユーザーにより多くの機能を提供できます。

SOAアプローチには、サービスコンポーネントの保守や更新が容易になるというメリットがあります。各コンポーネントがより小さくまとまって独立しているため、他のすべての要素に影響を与えることなく、コードを修正したり要素を置き換えたりしやすくなります。しかし、サービス間の通信を実現する最適な方法を検討する際には、課題が生じます。SOAでは通常、サービス間の通信を一元的に担う手段として、Enterprise Service Bus(ESB)が使用されます。ESBは多くの場合、変更への対応が難しく、複雑さが増す傾向があるうえ、サービスの境界も把握しにくくなります。

SOAとマイクロサービスの比較

SOAは現在のマイクロサービスの定義とよく似ていると感じる方も多いでしょう。マイクロサービスも、小規模で自己完結型のサービスであり、それぞれが独立して機能しながら相互に連携するよう設計されています。ただし、SOAとマイクロサービスには重要な違いがあります。主な違いを2つ紹介します。

  • マイクロサービスは非常に細かく分割されたサービスであり、機能上の理由から一定の粒度で分離されています。つまり、マイクロサービスアーキテクチャでは、データベースやアプリケーションサーバー、製品サポートを含むサービス全体を、同じチームが一貫して管理します。一方、SOAではサービスを論理的に分離します。ここでの違いは、論理的にグループ化されたサービスが複数の機能間で共有される点です。一見すると優れた仕組みに思えますが、サービスに障害が発生すると、そのサービスに依存するすべての機能が影響を受けます。マイクロサービスアーキテクチャは、途中で何らかの重複が生じる場合でも、各ビジネスサービスを、その固有の機能と、機能の実現およびビジネス価値の提供に必要なすべての要素とともに完全に内包することで、この影響を排除するように設計されています。
  • マイクロサービスは機能ごとに完全に独立しているため、SOAを最終的に制約する同一の通信フレームワーク、プロトコル、仕様にも縛られません。代わりに、各エンドポイント群にインテリジェンスを持たせ、それらを接続するシンプルなファブリックを使用することに重点を置きます。多くの場合、これを実現する最適な方法は、内部システムアーキテクチャを内包し、RESTなどの軽量なWebプロトコルを使用して各独立マイクロサービスにリクエストをルーティングする単一のAPIゲートウェイを実装することです。さらに、各マイクロサービスは他のサービスのAPIを利用することがよくありますが、ゲートウェイにより、モバイルアプリがバックエンドに直接アクセスすることはありません。このレベルの柔軟性は、Webサービス仕様に制約され、アプリケーション間の接続をESBに依存するSOAでは、決して実現できません。

マイクロサービスは「SOAをようやく正しく実現したもの」と考えられがちですが、実際には両者を分ける重要な違いがいくつもあり、多くの点で、複雑なアプリケーションにはマイクロサービスの方が効果的なアーキテクチャとなります。SOAとマイクロサービスの詳細については、無料のeBook『Building Microservices: Designing Fine‑Grained Systems』をダウンロードしてください。

NGINXはどのように役立つのか

NGINX PlusとNGINXは、Dropbox、Netflix、Zyngaなど、トラフィック量の多いWebサイトで利用されている最高クラスの負荷分散ソリューションです。世界中で3億5,000万を超えるWebサイトが、コンテンツを迅速かつ確実、安全に配信するために、NGINX PlusとNGINX Open Sourceを利用しています。

ソフトウェアベースのアプリケーションデリバリーコントローラー(ADC)であるNGINX Plusは、同等の機能を備えたハードウェアソリューションよりもはるかに効果的かつ低コストで、マイクロサービスアーキテクチャを実現できるよう設計されています。

  • NGINX Plusは、各マイクロサービスのパフォーマンスと信頼性を向上させる、包括的なアプリケーションデリバリおよび負荷分散ソリューションを提供します
  • NGINX Plusは、APIゲートウェイとして、また各サービスのエンドポイントとして、お使いのスタックに柔軟かつスケーラブルに組み込めます
  • NGINX Plusは高性能HTTPサーバーとして機能し、マイクロサービスの処理を最大限の速度と効率で完了します