マイクロサービス・オーケストレーションは、一貫性のあるアプリケーションシステムとして連携して動作する分散型マイクロサービスを自動的に調整するものです。サービスのインタラクション、依存関係の管理、フォールト・トレランス、障害回復、エンドツーエンドのデプロイメントを処理します。
シンフォニー・オーケストラの指揮者がそれぞれの演奏者に適切なタイミングで演奏するよう指示するところを想像してください。同様に、オーケストレーションによって各マイクロサービスは、シームレスなユーザー体験を実現するために、必要に応じて特定の機能を実行できます。この調整がなければ、サービスがランダムに呼び出し合ったり、コンポーネントに障害が発生したときにワークフローが中断したり、多様なITインフラストラクチャー全体で何が起こっているかを把握できなかったりするなど、混乱が生じます。
今日のアプリケーションは複雑で、何百もの個別のサービスで構成されているため、組織はオーケストレーション(調整)を必要とします。マイクロサービス・オーケストレーションは、分散アーキテクチャーの拡張性と柔軟性のメリットを維持しながら、これらの独立したサービスを適切に調整されたアプリケーションに変換するシステムとして機能します。
Research Nesterのレポートによると、マイクロサービス・オーケストレーションの市場規模は2024年に47億米ドルと評価され、2032年には723億米ドルに達すると予想されています。この調査では、予測期間中の年平均成長率(CAGR)が23.4%であることが示されています。1
市場の着実な拡大を牽引しているのは、GoogleやAmazonなどの世界的なテクノロジー企業によるアプリケーションの成長と、 eコマース、フィンテック、ストリーミングサービスからの需要の増加です。
NetflixやHuluなどの大手ストリーミング・サービスは、ユースケースの典型例です。ユーザー認証やコンテンツの推奨からビデオ・ストリーミングや課金まで、あらゆることを処理する何百ものマイクロサービスを調整するために、オーケストレーションを活用しています。何百万ものパーソナライズされた視聴エクスペリエンスを同時に提供するには、すべてが連携して機能する必要があります。
IBMニュースレター
AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。
ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。
マイクロサービスは、連携して完全なアプリケーションを形成する、小規模で独立した自己完結型のソフトウェア・コンポーネントです。組織はマイクロサービスを利用することで、アプリケーションをより効率的に構築、導入、拡張できます。
従来のモノリシックなアプリケーションとは異なり、クラウド・ネイティブなマイクロサービス・アーキテクチャーでは、特定のビジネス機能を処理する小規模で集中的なサービスにアプリを分割します。各マイクロサービスは独立して実行され、アプリケーション・プログラミング・インターフェース(API)を介して通信し、個別に開発、導入、拡張できます。
たとえば、UberやLyftなどのライド・シェア・アプリを考えてみましょう。アプリケーションが乗車リクエストを処理すると、オーケストレーターは位置情報サービスを呼び出してドライバーを検索し、マッチング・アルゴリズムを開始して、料金体系を計算します。また、オーケストレーターは、利用者とドライバーの両方に、調整された順序で通知を送信します。
このアプローチにより、組織は変化するビジネス要件に迅速に適応できる、より柔軟でスケーラブルなシステムを構築できます。Netflix、Amazon、Uberなどのテクノロジー企業は、大規模かつ迅速なソフトウェア開発に対応するためにマイクロサービスを導入しました。2021年のIBM調査によると、85%の組織がマイクロサービス・アーキテクチャーを採用しているか、採用を計画しており、その重要性が高まっていることが浮き彫りになっています。
マイクロサービス・オーケストレーション・フレームワークでは、同期サービス・コールを通じてビジネス・プロセスを分散する、集中型ワークフロー管理システムを使用します。オーケストレーターは、ワークフローの定義を維持し、サービスの依存関係を理解して、マイクロサービスを正しい順序で確実に実行させることができます。
たとえば、Amazonなどの電子商取引企業が顧客の注文を処理する際、オーケストレーターは在庫サービスを呼び出して在庫状況を確認し、支払い処理を開始し、配送を手配し、顧客通知を送信します。オーケストレーターは、これらすべてのタスクを調整された順序で実行します。
この調整は、アプリケーションをコンテナ化するためのDockerや、コンテナの展開、スケーリング、サービスの検出を管理するためのKubernetesなどのコンテナ・オーケストレーション・プラットフォームなどの主要なテクノロジーに依存しています。これらのツールにより、インフラストラクチャー全体のリソースの割り当てを最適化しながら、サービスが動的に通信できるようになります。オーケストレーターはプロセス・フローの各ステップを継続的に監視するため、問題が発生した場合には、失敗した操作を自動的に再試行し、問題のある変更をロールバックしたり、管理者に警告してシステムの信頼性を維持したりできます。
マイクロサービス・オーケストレーションの主なメリットは次のとおりです。
オーケストレーションの成功は、一般的な分散システムの課題に対処する実証済みのマイクロサービス設計パターンに依存します。ここでは、最も重要な例をいくつかご紹介します。
Sagaパターンは、分散トランザクションを可逆的なステップに分割して管理します。いずれかのステップが失敗した場合、Sagaは補償アクションを実行し、前の操作を取り消し、サービス間でのデータの一貫性を維持します。
たとえば、eコマース・サイトでチェックアウト時に支払いが失敗した場合、Sagaは在庫の確保をキャンセルし、ショッピング・カートを復元します。
ブレーカーは、ダウンストリーム・サービスへの呼び出しを監視し、障害が検出された場合に要求を停止することで、連鎖的な障害を防ぎます。
たとえば、製品推奨サービスが失敗し始めると、ブレーカーは自動的にそのサービスへのリクエストをブロックし、代わりに以前にキャッシュされた推奨事項を表示します。
再試行とタイムアウトのパターンは、失敗したリクエストを適切なタイミングで待機して再試行することで、一時的なサービス障害を自動的に処理します。
たとえば、支払いサービスが一時的に利用できない場合、システムは待機してから再試行します。
分散システムを構築する場合、DevOpsチームと開発者は、サービスを一元的に調整するか、自分たちで調整するかを決定する必要があります。この決定が、マイクロサービスの通信方法、チームによる複雑さの管理方法、そしてシステムの長期的な拡張方法を形成します。
チームは、明示的なワークフロー制御、一元化されたガバナンス、厳密なデータ一貫性が必要な場合にオーケストレーションを選択します。規制遵守と監査可能性が不可欠な財務、医療、物流分野では、特に価値を発揮します。
拡張性、レジリエンス、サービスの自律性が優先される場合、チームはコレオグラフィーを選択します。イベント駆動型アーキテクチャー、リアルタイム・システム、大容量処理(コンテンツ・プラットフォームやモノのインターネット(IoT)システムなど)に適しています。
最も成功しているマイクロサービス・アーキテクチャーは、ハイブリッド・アプローチを採用しています。このアプローチは、厳密な制御を必要とする重要なビジネス・ワークフローのオーケストレーションと、個別処理のメリットを得られる疎結合のやり取りを実行するコレオグラフィーを意味する場合があります。
最新のオーケストレーションは、導入や拡張から通信や監視に至るまで、マイクロサービス・ライフサイクルを管理するために連携する、複数のカテゴリーのツールを利用しています。次に示す各カテゴリーは、効果的なマイクロサービス・オーケストレーションを実現する上で特定の役割を果たします。
コンテナ・オーケストレーション・プラットフォームは、コンテナ化されたアプリケーションの導入、スケーリング、管理を自動化します。サービス検出、負荷分散、自動スケーリング、ローリング展開を処理することで、マイクロサービス・オーケストレーションの基盤となる層を提供します。
主要なクラウド・プロバイダーは、AWSのAmazon ECSおよびEKS、Google GKE、Microsoft AKS、IBM Cloud Kubernetes Serviceなどのマネージド・オーケストレーション・サービスを提供しています。
サービスメッシュは、アプリケーション・コードを変更することなく、サービス間の通信、セキュリティー、 オブザーバビリティーを処理します。自動負荷分散、回路遮断、タイムアウト、マイクロサービスの相互作用に関する包括的なテレメトリーを提供します。
構成可能なオープンソース・サービスメッシュであるIstioは、高度なトラフィック管理とポリシー適用機能を使用して、既存のアプリケーションに透過的に重ねます。これは、Kubernetesやその他の多くのサービスメッシュと隣接するテクノロジーと、うまく連携します。
オープンソースでもあるLinkerdは、シンプルさとパフォーマンスに重点を置いており、運用上のオーバーヘッドを最小限に抑えながら必要不可欠なサービス・メッシュ機能を提供しています。
API ゲートウェイは、認証、レート制限、リクエスト変換、包括的なログ記録を処理するマイクロサービスへの統合エントリ・ポイントを提供します。APIゲートウェイは、外部クライアントと内部サービス間のやり取りを調整する上で不可欠です。
Kongなどのオープンソースのオプションから大手プロバイダーのクラウド管理サービスまで、多数のAPIゲートウェイ・ソリューションが利用可能です。
サービス検出ツールを使用すると、マイクロサービスは動的に相互に検索して通信できるようになり、ハードコードされた依存関係が排除されます。そしてサービス登録、ヘルスチェック、負荷分散の調整を処理します。
一般的なソリューションには、Kubernetes環境用のetcdや、Amazon Web Services(AWS)Cloud Mapなどのクラウドネイティブ・オプションなどがあります。
ワークフローとオーケストレーション・エンジンは、複数のマイクロサービスにわたる複雑な複数ステップのプロセスを時間をかけて調整します。これらのプラットフォームは、分散ビジネス・プロセスを管理するための視覚的なワークフロー定義、自動エラー処理、および組み込みの再試行ロジックを提供します。
Netflix Conductorは、マイクロサービス環境向けに特別に設計されたワークフロー・オーケストレーションを処理します。Camunda Zeebeは、ビジネス・プロセス・モデリング表記法(BPMN)を使用して視覚的なワークフローの定義と包括的なプロセス管理を行うことにより、エンタープライズ・グレードのプロセス・オーケストレーションを実現します。
Javaアプリケーションを開発および配信するためのフルマネージドのシングルテナント・サービス。
DevOpsソフトウェアとツールを使用して、複数のデバイスや環境でクラウドネイティブ・アプリケーションを構築、デプロイ、管理します。
クラウド・アプリケーション開発は、一度構築すれば、迅速に反復し、どこにでもデプロイできます。
1. 「Microservices Global Market Size and Share」 Research Nester、2024年