メインコンテンツへジャンプ

オーケストレーション

Databricks 無料トライアル

オーケストレーションとは

オーケストレーションとは、複数のコンピュータシステム、アプリケーション、サービスを調整および管理し、大規模なワークフローやプロセスを実行するために複数タスクをつなぎ合わせることです。これらのプロセスは、自動化された複数タスクで構成され、複数のシステムをまたぐこともあります。

オーケストレーションは、頻繁に繰り返されるプロセスの実行を効率化および最適化し、データチームが複雑なタスクやワークフローを容易に管理できるようにします。プロセスはいつでも繰り返しが可能で、タスクは自動化できるため、オーケストレーションは時間の節約、効率性の向上、重複の排除を実現します。例えば、Databricks のジョブオーケストレーションは、データや機械学習をシンプルにします。

プロセスオーケストレーションとプロセス自動化の違い

自動化とオーケストレーションは、極めて補完的な関係にあります。しかし、それぞれの意味は異なります。自動化とは、人の手を介することなく実行されるタスクをプログラミングすることです。オーケストレーションとは、複数のタスク(一部は自動化されている場合もある)を 1 つの完全なエンドツーエンドのプロセスまたはジョブに設定することです。オーケストレーションソフトウェアは、プロセス全体のイベントまたはアクティビティに反応し、1 つの自動化タスクからの出力に基づいて意思決定を行い、次のタスクを決定し調整する必要があります。

アプリケーションオーケストレーション

アプリケーションオーケストレーションとは、2 つ以上のソフトウェアアプリケーションを統合することです。プロセスを自動化する、またはデータをリアルタイムに同期させるといった目的で行われます。多くの場合、ソフトウェア開発作業には何らかのアプリケーションオーケストレーションが必要です。アプリケーションオーケストレーションが実装されていないと、アプリ開発、データ分析、機械学習、AI プロジェクトなどの拡張が極めて困難になります。

アプリケーションオーケストレーションを行うことで、アプリの統合を一元的に管理、監視できます。また、メッセージルーティング、セキュリティ、変換の機能を強化し、信頼性を向上させます。このアプローチは、ポイントツーポイントの統合よりも効果的です。統合のロジックがアプリ自体から切り離され、代わりにコンテナで管理されるからです。

サービスオーケストレーション

サービスオーケストレーションとは、アプリケーションオーケストレーションと同様に、複数のクラウドベンダーやドメインにまたがるシステムの調整と管理を可能にするものであり、今日の世界には不可欠です。このアプローチには、マイクロサービスオーケストレーション、ネットワークオーケストレーション、ワークフローオーケストレーションが含まれます。

個々のサービスには、互いの統合を可能にするネイティブ機能がなく、それぞれが依存関係や要求を有しています。システムが複雑になればなるほど、さまざまなコンポーネントのオーケストレーションが重要になります。サービスオーケストレーションにより、必要に応じたインフラの拡張、ビジネス目標にあわせたシステムの最適化、サービス提供における障害の回避が可能になります。

コンテナオーケストレーション

アプリケーションオーケストレーションやサービスオーケストレーションの関連用語として、「コンテナオーケストレーション」があります。コンテナオーケストレーションとはどういうもので、なぜ必要なのでしょうか?

コンテナオーケストレーションとは、コンテナの管理と調整を自動化することです。ソフトウェアチームは、最適なコンテナオーケストレーションツールを利用して、コンテナのプロビジョニングとデプロイメント、コンテナ間のリソースの割り当て、コンテナのヘルスモニタリング、コンテナ間の相互作用の保護などのタスクを管理し、自動化します。

コンテナオーケストレーションの仕組み

ソフトウェアオーケストレーションチームは、一般的に、Kubernetes や Docker Swarm などのコンテナオーケストレーションツールを使用します。まず、アプリの構成をファイルに記述し、コンテナイメージを収集する場所と、コンテナ間のネットワークの構築方法をツールに指示します。

ツールは、クラスタへのコンテナのデプロイメントをスケジュールし、ラベルやメタデータといったあらかじめ設定された制約に基づいて最適なホストを検出します。次に、ファイルに記述された仕様に基づいて、コンテナのライフサイクルを管理します。

しかし、コンテナオーケストレーションが必要な理由は何でしょうか?また、自動化とオーケストレーションの目的は何でしょうか?コンテナオーケストレーションを自動化することにより、1 つのコマンドでアプリの拡張が可能になります。増加するトラフィックを処理するコンテナ化されたアプリを迅速に作成して、インストールプロセスをシンプルにします。また、セキュリティの向上にもつながります。

クラウドオーケストレーション

クラウドオーケストレーションとは、プライベートクラウドやパブリッククラウド上の接続を管理するタスクを自動化するプロセスです。また、自動化されたタスクとプロセスをワークフローに統合し、特定のビジネス機能の実行をサポートします。

パブリッククラウド、プライベートクラウド、ハイブリッドクラウドを含むクラウドコンピューティングの台頭により、複雑さが増しています。このため、複数のクラウドにまたがる複数の依存関係を管理し、デプロイできるクラウドオーケストレーションソフトウェアのニーズが高まっています。クラウドサービスのオーケストレーションには、サーバーのワークロードやストレージ容量のプロビジョニング、サービスやワークロード、リソースのオーケストレーションといったタスクが含まれます。

クラウドオーケストレーションと自動化は、異なるものです。クラウドオーケストレーションは IT プロセス全体に、自動化は個々の部分に重点を置いています。オーケストレーションは、マルチクラウド環境における自動化をシンプルにすると同時に、ポリシーとセキュリティプロトコルを維持します。

セキュリティオーケストレーション

セキュリティオーケストレーションとは、自動化されたセキュリティツールを効果的に連携させ、セキュリティチームにおけるツールの利用方法を効率化することです。ツール間の連携とデータ共有により、ヒューマンエラーの発生を抑制し、脅威への対応を強化して、時間とコストを削減することを目的としています。

SOAR(Security Orchestration, Automation and Response:セキュリティオーケストレーション、自動化およびレスポンス)とは、ガートナーが定義した 3 つのソフトウェア機能を表す略称です。

  • オーケストレーション:脅威および脆弱性の管理
  • 自動化 :セキュリティに関する運用の自動化
  • レスポンス:セキュリティに関するインシデント対応

このアプローチでは、自動化とオーケストレーションの相乗効果により、組織における脅威ハンティング、脅威インテリジェンスの収集、低レベルの脅威へのインシデント対応の自動化が可能になります。

オーケストレーションレイヤー

複数の API サービスを調整する必要がある場合、オーケストレーションレイヤーは不可欠です。オーケストレーションレイヤーにより、任意のコネクタとサードパーティアプリのコネクタ間における接続または命令が可能になります。これにより、1 件の API リクエストに応答するために複数の異なるサービスに数回の呼び出しを行う単一の API が効果的に作成されます。

また、リクエストとレスポンスの分割、統合、ルーティングが必要な個別のサービス間のデータフォーマットも管理します。この抽象化レイヤーを追加することで、サービス間の通信に必要なレベルのインテリジェンスを API に提供します。オーケストレーションレイヤーは、データ変換、サーバー管理、認証処理、レガシーシステムの統合をサポートします。

クラウドでは、クラウドベースとオンプレミスのコンポーネント間の相互作用と相互接続を管理します。これらには、サーバー、ネットワーク、仮想マシン、セキュリティ、ストレージが含まれます。

ジャーニーオーケストレーション

カスタマージャーニーオーケストレーションとは、カスタマージャーニーのマッピングの概念をさらに一歩進めたものです。履歴データに依存するのではなく、自動化によってリアルタイムにジャーニーをパーソナライズします。最適なカスタマージャーニーを作成し、形成することを目標としています。

また、ジャーニーオーケストレーションによって、企業は俊敏性を高め、変化に適応し、潜在的な問題を事前に察知できるようになります。

オーケストレーションツール

複雑なタスクに必要なオーケストレーションでは、データチームに多大な負担がかかります。パイプラインの開発、管理、監視、および確実な実行を可能にするには、専門ツールが不可欠です。これらのツールは、通常、実際のデータや機械学習のタスクと連結していません。このように統合されていないことで、企業全体の取り組みは分断され、ユーザーはコンテキストを何度も切り替える必要があります。

企業におけるビジネスインテリジェンス(BI)や人工知能(AI)への取り組みの強化に伴い、シンプルでスケーラブルかつ信頼性の高いオーケストレーションツールへのニーズが高まっています。ワークロードを自動化するフレームワークにより、オーケストレーションのメリットを最大限に引き出すさまざまなツールが存在します。

サービスオーケストレーションツールは、異なるアプリやシステムの統合をサポートします。クラウドオーケストレーションツールは、複数のクラウドシステムをつなぎ合わせます。また、オーケストレーションツールは、エンドツーエンドのプロセスを一元管理し、プロセス構築をシンプルにすることで、従来は実現できなかったワークフローの作成をサポートします。

例えば、Databricks では、データウェアハウスと AI のユースケースを単一のプラットフォームに集約するサポートをします。Databricks のワークロードをオーケストレートする方法については、こちらをご覧ください。

アプリケーションリリースオーケストレーション

アプリケーションリリースオーケストレーション(ARO)は、DevOps チームによるアプリのデプロイメントの自動化、継続的インテグレーションと継続的デリバリーのパイプラインの管理、およびリリースワークフローのオーケストレーションを可能にします。新しいリリースの品質、高速性、およびガバナンスを向上させることを目的としています。

ARO ツールは、デプロイメントの自動化やパイプライン管理に加えて、複数の多様なチーム、テクノロジー、方法、パイプラインにまたがるリリースの拡張も可能にします。主要な ARO ツールには、GitLab、Microsoft Azure Pipelines、FlexDeploy などがあります。

プロセスオーケストレーション

効果的なオーケストレーションには、プロセスの自動化が不可欠です。しかし、個々のタスクに対し、複数のベンダーから調達した異なるツールを使用することで、サイロ化のリスクが発生します。そのため、ツールやワークフローの統合、すなわち、プロセスオーケストレーションが必要になります。

プロセスオーケストレーションでは、個々のタスクをエンドツーエンドのプロセスに統合し、ユニバーサルコネクタ、直接統合、または API アダプタを使用したシステム統合の効率化が行われます。その結果、IT チームは、プロセスのライフサイクル全体を一元管理できます。

プロセスオーケストレーションには、異種ツールの調整と統合による複雑性の低減、プロセスの監視とログの一元化による平均修復時間(MTTR)の改善、単一のオーケストレーションプラットフォームでの新規ツールやテクノロジーの統合といったメリットがあります。このようなソフトウェアオーケストレーションにより、実質的にあらゆるツールやテクノロジーの迅速な統合が可能になります。

データオーケストレーションプラットフォームの目的

データオーケストレーションとは、複数のストレージからサイロ化したデータを取り出し、組み合わせて整理し、分析に利用できるようにするための自動化されたプロセスです。このプロセスでは、レガシーシステム、クラウドベースのツール、データレイクといったあらゆるデータセンターが接続されます。データは標準形式に変換されるため、理解しやすく、容易に意思決定に利用できます。

企業の多くは、膨大な量のデータを蓄積しています。そのため、データの整理に自動化されたツールが必要です。ビッグデータオーケストレーションでは、従来の方法では処理しきれないほど膨大で、高速、または複雑なデータを整理するプロセスを実行します。データオーケストレーションは、サーバー上で容量を占めていながらも使用されることのない情報である「ダークデータ」の特定も行います。

データオーケストレーションプラットフォームは、コンプライアンスの確保や問題の発見に最適です。例えば、決済オーケストレーションプラットフォームでは、顧客データへのリアルタイムなアクセスが可能なため、リスクのあるトランザクションを発見できます。

DevOps におけるオーケストレーション

DevOps オーケストレーションとは、企業全体の DevOps のプラクティスと、それを完結させるために使用する自動化ツールの調整のことです。本番環境での問題を最小限に抑え、新しいリリースの市場投入にかかる時間を短縮することが目的です。

自動化されたタスクをオーケストレートすることで、自動化ツールの可能性を最大限に引き出すことができます。ここで、オーケストレーションと自動化の関係に戻ります。基本的に、多数の機能を自動化して同時実行することで、効率性は高まります。しかし、これらの機能を確実に連携させるためには、オーケストレーションが不可欠です。

例えば、クラウドベースのデプロイメントパイプライン用 DevOps オーケストレーションは、開発、QA、本番環境の連結を可能にします。

Docker オーケストレーション

Docker とは、コンテナ化されたアプリを開発するためのツールを提供するユーザーフレンドリーなコンテナランタイムのことです。このツールにより、コードをイメージにパッケージ化し、それを使用してコンテナを作成できます。従って、Docker オーケストレーションとは、Docker コンテナの管理におけるプラクティスとテクノロジーだと言えます。

このようなコンテナオーケストレーションは、コンテナ化されたアプリを多数のコンテナに拡張する場合に必要です。コンテナのプロビジョニング、スケールアップ/スケールダウン、ネットワーキングの管理、ロードバランシングなどのタスクに使用されます。

Docker エコシステムでは、Swarm などのオーケストレーション用ツールをいくつか提供しています。Docker コンテナのオーケストレーションには、一般的に Kubernetes が使用されます。また、クラウドコンテナプラットフォームも基本的なオーケストレーション機能を提供しています。

Databricks におけるデータと機械学習パイプラインのオーケストレーション

Databricks は、複数タスクのオーケストレーションをシンプルにし、データと機械学習ワークフローの作成を容易にします。

ノートブック、Python スクリプト、JAR からなる相互依存のモジュール式タスクを活用し、複数ステップのタスクをオーケストレーションすることで、データと機械学習パイプラインを容易に定義できます。データチームは、データの変換や改良、機械学習アルゴリズムのトレーニングといった複数ステップのパイプラインを容易に作成、管理することが可能です。これらは全て使い慣れた Databricks のワークスペース内で実行できるため、チームにおける膨大な時間や労力、コンテキストスイッチの数を削減します。

上図の例では、複数のタスクからなるジョブにおいて、Clicks_Ingest と Orders_Ingest という 2 つのタスクがデータの取り込みに使用されています。取り込まれたデータは Match タスクで集約、フィルタリングされます。そこから新たな機械学習機能が生成(Build_Features)、持続(Persist_Features)され、新しいモデルのトレーニング(Train)に使用されます。

ジョブオーケストレーションは、Databricks に完全に統合されており、追加のインフラ、DevOps リソースは不要です。ユーザーは、Jobs API や UI を使用して、ジョブの作成、管理、監視のメール通知などの機能を利用できます。

データチームは、ジョブオーケストレーションを利用するために新たな知識を習得する必要はありません。この機能により、Databricks の外部および全てのクラウドにわたり、API を持つあらゆるものをオーケストレーションできるようになります。CRM からデータを引き出すことも可能です。任意のワークスペース(AWSAzureGCP)で新しいジョブオーケストレーションをお試しいただけます。

関連資料

用語集に戻る