マイクロサービス・オーケストレーションとは

コンピュータをー見ている2人

執筆者

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

マイクロサービス・オーケストレーションとは

マイクロサービス・オーケストレーションは、一貫性のあるアプリケーションシステムとして連携して動作する分散型マイクロサービスを自動的に調整するものです。サービスのインタラクション、依存関係の管理、フォールト・トレランス、障害回復、エンドツーエンドのデプロイメントを処理します。

シンフォニー・オーケストラの指揮者がそれぞれの演奏者に適切なタイミングで演奏するよう指示するところを想像してください。同様に、オーケストレーションによって各マイクロサービスは、シームレスなユーザー体験を実現するために、必要に応じて特定の機能を実行できます。この調整がなければ、サービスがランダムに呼び出し合ったり、コンポーネントに障害が発生したときにワークフローが中断したり、多様なITインフラストラクチャー全体で何が起こっているかを把握できなかったりするなど、混乱が生じます。

今日のアプリケーションは複雑で、何百もの個別のサービスで構成されているため、組織はオーケストレーション(調整)を必要とします。マイクロサービス・オーケストレーションは、分散アーキテクチャーの拡張性と柔軟性のメリットを維持しながら、これらの独立したサービスを適切に調整されたアプリケーションに変換するシステムとして機能します。

Research Nesterのレポートによると、マイクロサービス・オーケストレーションの市場規模は2024年に47億米ドルと評価され、2032年には723億米ドルに達すると予想されています。この調査では、予測期間中の年平均成長率(CAGR)が23.4%であることが示されています。1

市場の着実な拡大を牽引しているのは、GoogleやAmazonなどの世界的なテクノロジー企業によるアプリケーションの成長と、 eコマース、フィンテック、ストリーミングサービスからの需要の増加です。

NetflixやHuluなどの大手ストリーミング・サービスは、ユースケースの典型例です。ユーザー認証やコンテンツの推奨からビデオ・ストリーミングや課金まで、あらゆることを処理する何百ものマイクロサービスを調整するために、オーケストレーションを活用しています。何百万ものパーソナライズされた視聴エクスペリエンスを同時に提供するには、すべてが連携して機能する必要があります。

The DX Leaders

AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。

ご登録いただきありがとうございます。

ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。

マイクロサービスとは

マイクロサービスは、連携して完全なアプリケーションを形成する、小規模で独立した自己完結型のソフトウェア・コンポーネントです。組織はマイクロサービスを利用することで、アプリケーションをより効率的に構築、導入、拡張できます。

従来のモノリシックなアプリケーションとは異なり、クラウド・ネイティブなマイクロサービス・アーキテクチャーでは、特定のビジネス機能を処理する小規模で集中的なサービスにアプリを分割します。各マイクロサービスは独立して実行され、アプリケーション・プログラミング・インターフェース(API)を介して通信し、個別に開発、導入、拡張できます。

たとえば、UberやLyftなどのライド・シェア・アプリを考えてみましょう。アプリケーションが乗車リクエストを処理すると、オーケストレーターは位置情報サービスを呼び出してドライバーを検索し、マッチング・アルゴリズムを開始して、料金体系を計算します。また、オーケストレーターは、利用者とドライバーの両方に、調整された順序で通知を送信します。

このアプローチにより、組織は変化するビジネス要件に迅速に適応できる、より柔軟でスケーラブルなシステムを構築できます。Netflix、Amazon、Uberなどのテクノロジー企業は、大規模かつ迅速なソフトウェア開発に対応するためにマイクロサービスを導入しました。2021年のIBM調査によると、85%の組織がマイクロサービス・アーキテクチャーを採用しているか、採用を計画しており、その重要性が高まっていることが浮き彫りになっています。

アプリケーション開発

さあ、クラウドでエンタープライズ・アプリケーション開発を始めましょう

この動画では、Peter Haumer博士が、IBM Z Open Editor、IBM Wazi、Zoweなどのさまざまなコンポーネントとプラクティスを実演しながら、ハイブリッドクラウドでの最新エンタープライズ・アプリケーション開発について説明します。

マイクロサービス・オーケストレーションの仕組み

マイクロサービス・オーケストレーション・フレームワークでは、同期サービス・コールを通じてビジネス・プロセスを分散する、集中型ワークフロー管理システムを使用します。オーケストレーターは、ワークフローの定義を維持し、サービスの依存関係を理解して、マイクロサービスを正しい順序で確実に実行させることができます。

たとえば、Amazonなどの電子商取引企業が顧客の注文を処理する際、オーケストレーターは在庫サービスを呼び出して在庫状況を確認し、支払い処理を開始し、配送を手配し、顧客通知を送信します。オーケストレーターは、これらすべてのタスクを調整された順序で実行します。

この調整は、アプリケーションをコンテナ化するためのDockerや、コンテナの展開、スケーリング、サービスの検出を管理するためのKubernetesなどのコンテナ・オーケストレーション・プラットフォームなどの主要なテクノロジーに依存しています。これらのツールにより、インフラストラクチャー全体のリソースの割り当てを最適化しながら、サービスが動的に通信できるようになります。オーケストレーターはプロセス・フローの各ステップを継続的に監視するため、問題が発生した場合には、失敗した操作を自動的に再試行し、問題のある変更をロールバックしたり、管理者に警告してシステムの信頼性を維持したりできます。

マイクロサービス・オーケストレーションのメリット

マイクロサービス・オーケストレーションの主なメリットは次のとおりです。

  • 拡張性とリソース管理の向上:オーケストレーション・プラットフォームは、すべてのマイクロサービスにわたってインテリジェントな自動スケーリングとリソース管理を提供し、需要パターンに基づいてシステム全体のスケーリングを決定します。
  • システムのレジリエンスと障害分離の強化:集中オーケストレーションによって操作を再試行することで自動的に障害を処理し、1つの失敗したサービスがアプリケーション全体をダウンさせるのを防ぎ、すべてのサービスでデータの一貫性を維持します。
  • 開発と導入サイクルの短縮: 自動化されたサービス調整により、手動による統合作業が不要になり、開発者はビジネス・ロジックに集中できると同時に、調整されたロールアウトを通じてより安全なデプロイメントが可能になります。
  • テクノロジーのダイバーシティーと柔軟性の向上:開発チームは、統合されたオーケストレーションを通じて調整されたワークフローに参加しながら、特定のサービスに最適な言語、データベース、フレームワークを選択できます。
  • AI/MLワークロードのサポート:オーケストレーションは、データの前処理やモデルのトレーニングから、導入や監視まで、機械学習パイプラインに必要な複雑な調整を処理します。また、さまざまな人工知能(AI)サービスのさまざまなコンピューティング要件も管理します。

主要なマイクロサービス設計パターンとオーケストレーション

オーケストレーションの成功は、一般的な分散システムの課題に対処する実証済みのマイクロサービス設計パターンに依存します。ここでは、最も重要な例をいくつかご紹介します。

Sagaパターン

Sagaパターンは、分散トランザクションを可逆的なステップに分割して管理します。いずれかのステップが失敗した場合、Sagaは補償アクションを実行し、前の操作を取り消し、サービス間でのデータの一貫性を維持します。

たとえば、eコマース・サイトでチェックアウト時に支払いが失敗した場合、Sagaは在庫の確保をキャンセルし、ショッピング・カートを復元します。

ブレーカー・パターン

ブレーカーは、ダウンストリーム・サービスへの呼び出しを監視し、障害が検出された場合に要求を停止することで、連鎖的な障害を防ぎます。

たとえば、製品推奨サービスが失敗し始めると、ブレーカーは自動的にそのサービスへのリクエストをブロックし、代わりに以前にキャッシュされた推奨事項を表示します。

再試行とタイムアウトのパターン

再試行とタイムアウトのパターンは、失敗したリクエストを適切なタイミングで待機して再試行することで、一時的なサービス障害を自動的に処理します。

たとえば、支払いサービスが一時的に利用できない場合、システムは待機してから再試行します。

マイクロサービス・オーケストレーションとコレオグラフィーの比較

分散システムを構築する場合、DevOpsチームと開発者は、サービスを一元的に調整するか、自分たちで調整するかを決定する必要があります。この決定が、マイクロサービスの通信方法、チームによる複雑さの管理方法、そしてシステムの長期的な拡張方法を形成します。

  • マイクロサービス・オーケストレーションでは、すべてのサービスのやり取りを管理する集中型コーディネーターを使用します。プロジェクト・マネージャーのように、オーケストレーターはワークフロー全体を把握し、各サービスにいつ行動するかを指示します。この方法では、複雑なプロセスを明確に可視化し、ビジネス・ルールの実装と監査証跡の維持が容易になります。
  • マイクロサービス・コレオグラフィー(振付)は逆のアプローチを採用し、中央制御なしでイベントを通じてサービスが自ら調整を行います。サービスが作業を完了すると、他のサービスの動作をトリガーするイベントを発行します。Apache Kafkaなどのイベント・ストリーミング・プラットフォームは多くの場合、サービス間でメッセージを確実かつ大規模に配信することで、これらのやり取りを強化します。、

チームは、明示的なワークフロー制御、一元化されたガバナンス、厳密なデータ一貫性が必要な場合にオーケストレーションを選択します。規制遵守と監査可能性が不可欠な財務、医療、物流分野では、特に価値を発揮します。

拡張性、レジリエンス、サービスの自律性が優先される場合、チームはコレオグラフィーを選択します。イベント駆動型アーキテクチャー、リアルタイム・システム、大容量処理(コンテンツ・プラットフォームやモノのインターネット(IoT)システムなど)に適しています。

最も成功しているマイクロサービス・アーキテクチャーは、ハイブリッド・アプローチを採用しています。このアプローチは、厳密な制御を必要とする重要なビジネス・ワークフローのオーケストレーションと、個別処理のメリットを得られる疎結合のやり取りを実行するコレオグラフィーを意味する場合があります。

上位のマイクロサービス・オーケストレーション・ツール

最新のオーケストレーションは、導入や拡張から通信や監視に至るまで、マイクロサービス・ライフサイクルを管理するために連携する、複数のカテゴリーのツールを利用しています。次に示す各カテゴリーは、効果的なマイクロサービス・オーケストレーションを実現する上で特定の役割を果たします。

  • コンテナ・オーケストレーション・プラットフォーム
  • サービス・メッシュ
  • サーバーレス・プラットフォーム
  • APIゲートウェイ
  • サービス検出ツール
  • ワークフローおよびオーケストレーション・エンジン

コンテナ・オーケストレーション・プラットフォーム

コンテナ・オーケストレーション・プラットフォームは、コンテナ化されたアプリケーションの導入、スケーリング、管理を自動化します。サービス検出、負荷分散、自動スケーリング、ローリング展開を処理することで、マイクロサービス・オーケストレーションの基盤となる層を提供します。

主要なクラウド・プロバイダーは、AWSのAmazon ECSおよびEKS、Google GKE、Microsoft AKS、IBM Cloud Kubernetes Serviceなどのマネージド・オーケストレーション・サービスを提供しています。

サービス・メッシュ

サービスメッシュは、アプリケーション・コードを変更することなく、サービス間の通信、セキュリティー、 オブザーバビリティーを処理します。自動負荷分散、回路遮断、タイムアウト、マイクロサービスの相互作用に関する包括的なテレメトリーを提供します。

構成可能なオープンソース・サービスメッシュであるIstioは、高度なトラフィック管理とポリシー適用機能を使用して、既存のアプリケーションに透過的に重ねます。これは、Kubernetesやその他の多くのサービスメッシュと隣接するテクノロジーと、うまく連携します。

オープンソースでもあるLinkerdは、シンプルさとパフォーマンスに重点を置いており、運用上のオーバーヘッドを最小限に抑えながら必要不可欠なサービス・メッシュ機能を提供しています。

サーバーレス・プラットフォーム

サーバーレス・プラットフォームは、需要に応じて自動的にスケーリングされるイベント駆動型のマイクロサービスを実現します。ゼロから数千のインスタンスまでの自動スケーリングと、安全な導入のための組み込みトラフィック管理を提供します。

KnativeはKubernetes上で実行され、コンテナ化されたワークロードにサーバーレス機能を提供し、自動スケーリングと簡素化された導入を可能にします。

APIゲートウェイ

API ゲートウェイは、認証、レート制限、リクエスト変換、包括的なログ記録を処理するマイクロサービスへの統合エントリ・ポイントを提供します。APIゲートウェイは、外部クライアントと内部サービス間のやり取りを調整する上で不可欠です。

Kongなどのオープンソースのオプションから大手プロバイダーのクラウド管理サービスまで、多数のAPIゲートウェイ・ソリューションが利用可能です。

サービス・ディスカバリー・ツール

サービス検出ツールを使用すると、マイクロサービスは動的に相互に検索して通信できるようになり、ハードコードされた依存関係が排除されます。そしてサービス登録、ヘルスチェック、負荷分散の調整を処理します。

一般的なソリューションには、Kubernetes環境用のetcdや、Amazon Web Services(AWS)Cloud Mapなどのクラウドネイティブ・オプションなどがあります。

ワークフローとオーケストレーション・エンジン

ワークフローとオーケストレーション・エンジンは、複数のマイクロサービスにわたる複雑な複数ステップのプロセスを時間をかけて調整します。これらのプラットフォームは、分散ビジネス・プロセスを管理するための視覚的なワークフロー定義、自動エラー処理、および組み込みの再試行ロジックを提供します。

Netflix Conductorは、マイクロサービス環境向けに特別に設計されたワークフロー・オーケストレーションを処理します。Camunda Zeebeは、ビジネス・プロセス・モデリング表記法(BPMN)を使用して視覚的なワークフローの定義と包括的なプロセス管理を行うことにより、エンタープライズ・グレードのプロセス・オーケストレーションを実現します。

関連ソリューション
IBMのエンタープライズ向けJavaアプリケーション・サービス

Javaアプリケーションを開発および配信するためのフルマネージドのシングルテナント・サービス。

Javaアプリの詳細はこちら
DevOpsソリューション

DevOpsソフトウェアとツールを使用して、複数のデバイスや環境でクラウドネイティブ・アプリケーションを構築、デプロイ、管理します。

DevOpsソリューションの詳細はこちら
エンタープライズ・アプリケーション開発サービス

クラウド・アプリケーション開発は、一度構築すれば、迅速に反復し、どこにでもデプロイできます。

アプリケーション開発サービス
次のステップ

IBM Cloudアプリケーション開発コンサルティング・サービスは、クラウド戦略を合理化するための専門家のガイダンスと革新的なソリューションを提供します。IBMのクラウドおよび開発のエキスパートと提携して、アプリケーションをモダナイズ、拡張、高速化し、ビジネスに変革をもたらします。

アプリケーション開発サービスの詳細はこちら IBM Cloudを無料で構築開始
脚注

1. 「Microservices Global Market Size and Share」 Research Nester、2024年