(57)【要約】【課題】コンテナオーケストレーションサービスを使用した動的ルーティングを提供すること。【解決手段】本開示は、一般に、クラウド内でリソースを使用するための方法、ソフトウェア、およびシステムを説明する。クラウド統合システムによって、統合フロー(iFlow)がリソースとしてデプロイされる。コンテナオーケストレーションサービスによって、リソースが1つまたは複数のポッドに割り当てられる。ポッド同期エージェントによって、リソースにマッピングされているiFlow定義が、対応するポッド内にコピーされる。ポッド同期エージェントによって、ポッド内にデプロイされたiFlowに基づいて、一意のラベルが各リソースに割り当てられる。クラウド統合システムによって、リソースを収容している1つまたは複数のポッドにコールを仕向け直すルールにより、リソースに対するエンドポイントとしてサービスが作成される。【選択図】図2
2020096357.tif 000002
【特許請求の範囲】
【請求項１】
クラウド統合システムによって、統合フロー(iFlow)をリソースとしてデプロイするステップと、
コンテナオーケストレーションサービスによって、前記リソースを1つまたは複数のポッドに割り当てるステップと、
ポッド同期エージェントによって、前記リソースにマッピングされているiFlow定義を、対応するポッド内にコピーするステップと、
前記ポッド同期エージェントによって、前記ポッド内にデプロイされたiFlowに基づいて、一意のラベルを前記ポッドに割り当てるステップと、
前記クラウド統合システムによって、前記リソースを収容している前記1つまたは複数のポッドにコールを仕向け直すルールにより、前記リソースに対するエンドポイントとしてサービスを作成するステップと
を含む、コンピュータ実装方法。
【請求項２】
前記クラウド統合システムによって、特定のリソースのサービスにコールせよとの要求を受信するステップと、
ルールを使用して、前記要求を仕向ける先の特定のポッドを決定するステップと、
前記クラウド統合システムによって、前記特定のリソースを収容しているポッドの現在の負荷を決定するステップと、
一意のラベルを使用して、低負荷のポッドに前記要求を転送するステップと
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項３】
前記低負荷が、中央処理装置(CPU)使用率またはメモリ使用率のうちの1つまたは複数に基づく、請求項2に記載のコンピュータ実装方法。
【請求項４】
前記特定のリソースを収容しているポッドの現在の負荷を決定するステップが、ロードバランサによって実行される、請求項2に記載のコンピュータ実装方法。
【請求項５】
前記ポッド同期エージェントを使用して、各ポッド上で稼働しているリソースに関する情報を維持するステップをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項６】
前記ポッド上で稼働しているリソースのロードバランシングを実行するステップをさらに含む、請求項2に記載のコンピュータ実装方法。
【請求項７】
前記ロードバランシングが、サービスに対するエンドポイントを公開するユニフォームリソースロケータ(URL)にアクセスする前記コンテナオーケストレーションサービスを使用する、請求項6に記載のコンピュータ実装方法。
【請求項８】
デプロイされたリソース/iFlowおよびiFlow定義を格納したテーブルを格納するメモリと、
クラウド統合システムによって、iFlowをリソースとしてデプロイすること、
コンテナオーケストレーションサービスによって、前記リソースを1つまたは複数のポッドに割り当てること、
ポッド同期エージェントによって、前記リソースにマッピングされているiFlow定義を、対応するポッド内にコピーすること、
前記ポッド同期エージェントによって、前記ポッド内にデプロイされたiFlowに基づいて、一意のラベルを前記ポッドに割り当てること、および
前記クラウド統合システムによって、前記リソースを収容している前記1つまたは複数のポッドにコールを仕向け直すルールにより、前記リソースに対するエンドポイントとしてサービスを作成すること
を含む動作を実行するサーバと
を備える、システム。
【請求項９】
前記動作が、
前記クラウド統合システムによって、特定のリソースのサービスにコールせよとの要求を受信することと、
ルールを使用して、前記要求を仕向ける先の特定のポッドを決定することと、
前記クラウド統合システムによって、前記特定のリソースを収容しているポッドの現在の負荷を決定することと、
一意のラベルを使用して、低負荷のポッドに前記要求を転送することと
をさらに含む、請求項8に記載のシステム。
【請求項１０】
前記低負荷が、CPU使用率またはメモリ使用率のうちの1つまたは複数に基づく、請求項9に記載のシステム。
【請求項１１】
前記特定のリソースを収容しているポッドの現在の負荷を決定することが、ロードバランサによって実行される、請求項9に記載のシステム。
【請求項１２】
前記動作が、前記ポッド同期エージェントを使用して、各ポッド上で稼働しているリソースに関する情報を維持することをさらに含む、請求項8に記載のシステム。
【請求項１３】
前記動作が、前記ポッド上で稼働しているリソースのロードバランシングを実行することをさらに含む、請求項9に記載のシステム。
【請求項１４】
前記ロードバランシングが、サービスに対するエンドポイントを公開するURLにアクセスする前記コンテナオーケストレーションサービスを使用する、請求項13に記載のシステム。
【請求項１５】
コンピュータプログラムが符号化された非一時的コンピュータ可読媒体であって、前記プログラムは、命令を備え、前記命令は、1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、
クラウド統合システムによって、iFlowをリソースとしてデプロイすることと、
コンテナオーケストレーションサービスによって、前記リソースを1つまたは複数のポッドに割り当てることと、
ポッド同期エージェントによって、前記リソースにマッピングされているiFlow定義を、対応するポッド内にコピーすることと、
前記ポッド同期エージェントによって、前記ポッド内にデプロイされたiFlowに基づいて、一意のラベルを前記ポッドに割り当てることと、
前記クラウド統合システムによって、前記リソースを収容している前記1つまたは複数のポッドにコールを仕向け直すルールにより、前記リソースに対するエンドポイントとしてサービスを作成することと
を含む動作を実行させる、非一時的コンピュータ可読媒体。
【請求項１６】
前記動作が、
前記クラウド統合システムによって、特定のリソースのサービスにコールせよとの要求を受信することと、
ルールを使用して、前記要求を仕向ける先の特定のポッドを決定することと、
前記クラウド統合システムによって、前記特定のリソースを収容しているポッドの現在の負荷を決定することと、
一意のラベルを使用して、低負荷のポッドに前記要求を転送することと
をさらに含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項１７】
前記低負荷が、CPU使用率またはメモリ使用率のうちの1つまたは複数に基づく、請求項16に記載の非一時的コンピュータ可読媒体。
【請求項１８】
前記特定のリソースを収容しているポッドの現在の負荷を決定することが、ロードバランサによって実行される、請求項16に記載の非一時的コンピュータ可読媒体。
【請求項１９】
前記動作が、前記ポッド同期エージェントを使用して、各ポッド上で稼働しているリソースに関する情報を維持することをさらに含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項２０】
前記動作が、前記ポッド上で稼働しているリソースのロードバランシングを実行することをさらに含む、請求項16に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、クラウド内で稼働しているアプリケーションの負荷分散をハンドリングすることに関する。
【背景技術】
【０００２】
一部のクラウド統合システムは、例えば、あまりにも多くの統合シナリオ(integration scenarios)が1つのランタイムノード上で稼働するときに、メッセージ交換の負荷分散に奮闘することがある。統合シナリオを複数のノードに分散させるための既存の技法は、ルーティング情報を動的に定める上での限界に直面している。統合シナリオの分散は、多くの手法で行われ得る。例えば、一部の従来システムは、NGINXや別のロードバランサなどの別個のランタイムを使用して、ウェブアプリケーションのためのルーティングを行っている。別個のインスタンスは、分散システム内にインストールすることができ、そのコンフィギュレーションは、別個のシステム内で稼働させることができるが、これにより、別個のシステムが維持および更新されなければならないという欠点が生じる。別個のランタイムの使用は、プラットフォームに支障を来すことがあり、さらなる複雑さを以て解決しなければならない問題を生じることがある。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示では、一般に、クラウド内での統合シナリオの分散を達成する技法を使用するための、コンピュータ実装方法、ソフトウェア、およびシステムについて説明する。1つのコンピュータ実装方法は、クラウド統合システムによって、統合フロー(integration flow)(iFlow)をリソースとしてデプロイするステップと、コンテナオーケストレーションサービスによって、リソースを1つまたは複数のポッドに割り当てるステップと、ポッド同期エージェント(pod sync agent)によって、リソースにマッピングされているiFlow定義を、対応するポッド内にコピーするステップと、ポッド同期エージェントによって、ポッド内にデプロイされたiFlowに基づいて、一意のラベルをポッドに割り当てるステップと、クラウド統合システムによって、リソースを収容している1つまたは複数のポッドにコールを仕向け直すルールにより、リソースに対するエンドポイントとしてサービスを作成するステップとを含む。
【０００４】
前述の実装形態および他の実装形態はそれぞれが、任意選択で、以下の特徴のうちの1つまたは複数を単独で、または組み合わせて含むことができる。特に、1つの実装形態が以下の特徴全てを含むことができる。
【０００５】
先の態様のうちのいずれかと組合せ可能な第1の態様では、方法は、クラウド統合システムによって、特定のリソースのサービスにコールせよとの要求を受信するステップと、ルールを使用して、要求を仕向ける先の特定のポッドを決定するステップと、クラウド統合システムによって、特定のリソースを収容しているポッドの現在の負荷を決定するステップと、一意のラベルを使用して、低負荷のポッドに要求を転送するステップとをさらに含む。
【０００６】
先の態様のうちのいずれかと組合せ可能な第2の態様では、低負荷が、中央処理装置(CPU)使用率またはメモリ使用率のうちの1つまたは複数に基づく。
【０００７】
先の態様のうちのいずれかと組合せ可能な第3の態様では、特定のリソースを収容しているポッドの現在の負荷を決定することが、ロードバランサによって実行される。
【０００８】
先の態様のうちのいずれかと組合せ可能な第4の態様では、ポッド同期エージェントを使用して、各ポッド上で稼働しているリソースに関する情報を維持することをさらに含む。
【０００９】
先の態様のうちのいずれかと組合せ可能な第5の態様では、ポッド上で稼働しているリソースのロードバランシングを実行することをさらに含む。
【００１０】
先の態様のうちのいずれかと組合せ可能な第6の態様では、ロードバランシングが、サービスに対するエンドポイントを公開するユニフォームリソースロケータ(URL)にアクセスするコンテナオーケストレーションサービスを使用する。
【００１１】
本明細書の本主題の1つまたは複数の実装形態の詳細については、添付の図面および以下の説明中に記載されている。本主題の他の特徴、態様、および利点が、説明、図面、および特許請求の範囲から明らかとなろう。
【図面の簡単な説明】
【００１２】
【図１】リソースをデプロイするための例示的環境のブロック図である。
【図２】クラウド内で稼働しているアプリケーションの負荷分散をハンドリングするための例示的環境のブロック図である。
【図３】リソースをデプロイするための例示的方法のフローチャートである。
【図４】サービス要求をハンドリングするための例示的方法のフローチャートである。
【図５】スケーリングモジュールを使用してリソースを新規のまたは他の利用可能なポッドに割り当てるための例示的方法のフローチャートである。
【図６】リソースを新規のポッドに割り当てるための例示的方法のフローチャートである。
【図７】本開示において説明する、記載のアルゴリズム、方法、機能、プロセス、フロー、および手順に関連するコンピュータ機能性を提供するために使用される例示的コンピュータシステムのブロック図である。
【発明を実施するための形態】
【００１３】
本開示では、一般に、クラウド内で稼働しているアプリケーションの負荷分散をハンドリングするためのコンピュータ実装方法、ソフトウェア、およびシステムについて説明する。例えば、要求をアプリケーションにルーティングする手法を提供するために、諸技法を使用することができる。これらの技法では、エンドポイントを外部に公開するサービス、およびランタイムインスタンスを提供するポッドを使用することができる。1つまたは複数のリソースを、各ポッドにデプロイすることができる。本開示において説明する技法では、新規のリソースタイプを追加することなどへの拡張が可能なメカニズムを含むことができる。ラベルをポッドインスタンスのためのマーカーとして使用することができ、各ラベルが、サービスに関連するルーティングを定める。
【００１４】
本開示において説明する技法は、ネイティブな技術を活用して、統合シナリオにおけるルーティングの課題を解決することができる。例えば、同一の統合シナリオを複数のポッドにデプロイして、統合シナリオのスケーリングアウト(または負荷ハンドリング)を行うことができる。統合シナリオは、コンテナオーケストレーションサービスという観点からのリソースとして扱うことができ、1つまたは複数のポッドインスタンスにデプロイすることができる。統合シナリオがリソースとしてデプロイされた後に、各ポッドインスタンスにラベルを割り当てることができる。ラベル情報は、要求のルーティングに使用できるポッドインスタンスはどれかを特定するために、使用することができる。
【００１５】
本開示において説明する技法から生じる利点としては、次のものがあり得る。プラットフォームにより提供される技術を使用するということは、NGINXインスタンスを使用することなどによる追加のランタイムがデプロイされなくてもよい、ということを意味する。これにより、プラットフォームはルーティングを行う処理をしさえすればよいので、保守および開発の労力が低減し得る。各統合フローは、拡張されたプラットフォームリソースとして働くことができるので、プラットフォームにネイティブな構造(construct)およびアプリケーションプログラミングインターフェース(API)を使用して、統合フローを個別に管理することができる。統合フローは、個別にスケーリングされ得、またプラットフォームによって自動スケーリングされ得る。作成、削除、および自動再開などのライフサイクル動作は、ポッドなどのプラットフォームリソースと同様に管理され得る。ローリングアップデートやゼロダウンタイムなどの概念も、統合フローに対して拡張することができる。統合フローは、プラットフォームによって管理される仮想リソースであり、したがって、プラットフォームのシステムリソースに直接的にリンクされないので、統合フローを、ポッドや仮想マシンなど、他のシステムリソースとは独立にスケーリングすることができる。スケーリングは、利用可能なシステムリソース上での最大密度の達成を助けることができる。
【００１６】
図1は、リソースをデプロイするための例示的環境100のブロック図である。環境100は、例えば統合フロー(iFlow)をデプロイしてそのiFlowを(リソースとして)ポッドインスタンスに入れよとの、クライアント/要求側システム104からの要求を受信することのできる、クラウド統合システム102を含む。クライアント/要求側システム104は、要求をクラウド統合システム102に送る任意のシステムを含むことができる。例えば、クライアント/要求側システム104は、ユーザ108によって使用されるクライアント106を含むことができる。ネットワーク110が、クライアント/要求側システム104をクラウド統合システム102に接続することができる。いくつかの実装形態では、ネットワーク110は、クラウド統合システム102の一部または全部を含むことができる。クライアント/要求側システム104からネットワーク110を通じて受信される要求を、インターフェース111が受信することができる。
【００１７】
クラウド統合システム102は、コンテナインスタンスのライフサイクルをハンドリングするように構成されたコンテナオーケストレーションサービス112を含む。クラウド統合システム102は、ルーティング、スケーリング、およびAPI公開などのサービスを実行することもできる。クラウド統合システム102は、受信された、iFlowをデプロイしてそのiFlowを(リソースとして)ポッドインスタンスに入れよとの要求をハンドリングすることができる。
【００１８】
ルーティング解析モジュール114は、ポッドに関連する情報を使用して、どのポッドに要求が送られるべきかを決定することができる。プラットフォームによって実行されるロードバランシングをサポートするために、ルート解析を使用して、各統合フローおよびポッド上のトラフィックを解析することができる。解析の結果として、メトリクスが生成されるとともに、コンテンツオーケストレーションサービスを使用した統合フローの増減またはあるポッドから別のポッドへの統合フローの移動をトリガすることなどの、さらなるリソース最適化が行われ得る。スケーリングモジュール116が、より多くのポッドを追加すべき時を決定することができる。
【００１９】
API118は、コンテナオーケストレーションサービス112の拡張機能またはサービスとして設けることができる。APIは、異なるポッドへのクエリ、およびポッド同期エージェントへのクエリをサポートすることを含む、ラベル付与されたリソースのポッド特定を可能にすることができる。例示的クエリとしては、リソースがそこで稼働しているポッドを特定するためのクエリがあり得る。APIは、要求が送られるべき場所を特定した後で要求を送るためにポッドへの接続を行うことを含むポッド送信を可能にすることができる。エンドポイントAPIを使用して、外部システムが要求を通信することのできるロケーションを管理することができる。
【００２０】
デプロイ済みポッド/コンテナコンポーネント120は、ポッド内のリソースを解析してリソースについてのラベルを生成するように構成することができる。デプロイ済みポッド/コンテナコンポーネント120は、デプロイされたリソース/iFlow122のデータストア、および少なくとも1つのポッド同期エージェント124を含む。ポッド同期エージェント124は、ポッド特定が送られたときに、コンテナオーケストレーションサービス112に応答を返すことができる。ポッド同期エージェント124は、エンドポイントAPIに戻る接続に関連する情報を管理することもできる。
【００２１】
メモリ126は、デプロイ済みポッドについてのiFlow定義128のデータストアを含む。少なくとも1つのプロセッサ130が、クラウド統合システム102の処理機能を実行することができる。例えば、少なくとも1つのプロセッサ130が、インターフェース111およびコンテナオーケストレーションサービス112(そのコンポーネントを含む)の命令を実行することができる。
【００２２】
図2は、クラウド内で稼働しているアプリケーションの負荷分散をハンドリングするための例示的環境200のブロック図である。例えば、環境200は、環境100に対応する動作を含むことができる。
【００２３】
ロードバランサ202が、例えばクラウド内で稼働している統合シナリオのロードバランシングを実行することができる。ロードバランサ202は、ロードバランシングエージェント204(例えばcatchall.sap.io/*)を使用して、コンテナオーケストレーションサービス206とインターフェースすることができる。コンテナオーケストレーションサービス206は、例えばコンテナオーケストレーションサービス112として実装することができる。コンテナオーケストレーションサービス206は、少なくとも一部には、サービス214に対するユニフォームリソースロケータ(URL)を使用したエンドポイントを公開することのできるリレーショナルデータベース管理システム(RDBMS)のサービスを使用して、実装することができる。例えば、コンテナオーケストレーションサービス206は、それぞれサービス216、218、および220に対応する、エンドポイント208、210、および212を公開することができる。
【００２４】
サービス214は、ポッド222へのアクセスを提供することができる。ポッド222a〜222cは、ポートまたはワーカーセットとして働くことができる。ドキュメント224a〜224cは、iFlowを表すことができ、ポートの各々は、サービス214によってアクセスが提供されるリソースに関連付けられた異なるラベル(例えばaa、bb、およびcc)を有することができる(例えば、サービス216「AA」はラベル「aa」に対応し、以下同様である)。ラベルリスト226a〜226cは、ポッド222の各々内のラベル、したがってリソースを特定することができる。例えば、ラベル「aa」および「bb」が、ラベルリスト226a内に含まれており、これらはポッド222a上で稼働しているリソースについてのラベルである。それぞれポッド222a〜222c内のポッド同期エージェント228a〜228cは、ポッド上で稼働しているリソースに対応するラベルを常に把握していることを含めて、ポッド222の同期をハンドリングすることができる。ポッド222は、例えば、デプロイ済みポッド/コンテナコンポーネント120として実装することができる。
【００２５】
図3は、リソースをデプロイするための例示的方法300のフローチャートである。方法300は、クラウド統合システム102によって実行され得る。提示を分かりやすくするために、続く説明では一般に、方法300について、図1および図2の文脈において説明する。
【００２６】
302において、クラウド統合システムによって、iFlowがリソースとしてデプロイされる。例えば、コンテナオーケストレーションサービス112によって、(後に「aa」とラベル付与されることになる)リソースとしてのiFlowがデプロイされ得る。
【００２７】
304において、コンテナオーケストレーションサービスによって、リソースが1つまたは複数のポッドに割り当てられる。一例として、コンテナオーケストレーションサービス112が、(後に「aa」というラベルを有することになる)リソースを、ポッド222aにデプロイすることができる。
【００２８】
306において、ポッド同期エージェントによって、リソースにマッピングされているiFlow定義が、対応するポッド内にコピーされる。一例として、ポッド同期エージェント124が、iFlow定義128をポッド222aにコピーすることができる。
【００２９】
308において、ポッド同期エージェントによって、各リソースに、ポッド内にデプロイされたiFlowに基づいて一意のラベルが割り当てられる。例えば、ポッド同期エージェント124が、リソースにラベル「aa」を割り当てることができる。
【００３０】
310において、クラウド統合システムによって、サービスが、リソースに対するエンドポイントとして、リソースを収容している1つまたは複数のポッドにコールを仕向け直すルールにより作成される。一例として、コンテナオーケストレーションサービス112が、ラベル「aa」を有するリソースに対応するサービス216を作成することができる。
【００３１】
いくつかの実装形態では、方法300は、ロードバランシングのためのステップをさらに含むことができる。例えば、ロードバランシングは、ポッド222上で稼働しているリソースの負荷のバランスをとるために使用することができる。ロードバランシングのためのステップについて、図4を参照して説明する。
【００３２】
図4は、サービス要求をハンドリングするための例示的方法400のフローチャートである。方法400は、クラウド統合システム102によって実行され得る。提示を分かりやすくするために、続く説明では一般に、方法400について、図1および図2の文脈において説明する。
【００３３】
402において、クラウド統合システムによって、特定のリソースのサービスをコールせよとの要求が受信される。例えば、クラウド統合システム102が、クライアント/要求側システム104からの、現在実行中のiFlowをサービスせよとの要求を受信することができる。
【００３４】
404において、クラウド統合システムによってルールが使用されて、要求を仕向ける先の特定のポッドが決定される。例えば、クラウド統合システム102が、「aa」とラベル付与されたリソースを現在実行しているポッド222を、決定することができる。
【００３５】
406において、クラウド統合システムによって、特定のリソースを収容しているポッドの現在の負荷が決定される。一例として、ロードバランサ202が、「aa」とラベル付与されたリソースを実行しているポッド222にかかる負荷を決定することができる。負荷は、CPU使用率またはメモリ使用率のうちの1つまたは複数に基づいてよい。
【００３６】
408において、クラウド統合システムが、一意のラベルを使用して、低負荷のポッドに要求を転送することができる。一例として、ロードバランサ202が、ポッド222bが他のポッド222よりも軽い負荷を負っている場合にポッド222bに要求を転送することができる。
【００３７】
図5は、スケーリングモジュールを使用してリソースを新規のまたは他の利用可能なポッドに割り当てるための例示的方法500のフローチャートである。方法500は、クラウド統合システム102によって実行され得る。提示を分かりやすくするために、続く説明では一般に、方法500について、図1および図2の文脈において説明する。
【００３８】
502において、クラウド統合システムによって、iFlowが、スケールファクタXをもつリソースとしてデプロイされる。例えば、クラウド統合システム102が、デプロイされたリソース/iFlow122のうちの1つとしてのiFlowをデプロイすることができる。
【００３９】
504において、スケーリングモジュールによって、iFlowリソースがX個のポッドに割り当てられる。例えば、スケーリングモジュール116が、iFlowをX個のポッドに割り当てることができる。
【００４０】
506において、スケーリングモジュールによって、影響を受けたリソースが新規のまたは他の利用可能なポッドに、スケーリングファクタに一致するように割り当てられる。例えば、iFlowリソースに影響を及ぼす任意のポッドクラッシュが検出された場合、スケーリングモジュール116がリソースを他のポッドに割り当てることができる。
【００４１】
図6は、リソースを新規のポッドに割り当てるための例示的方法600のフローチャートである。方法600は、クラウド統合システム102によって実行され得る。提示を分かりやすくするために、続く説明では一般に、方法600について、図1および図2の文脈において説明する。
【００４２】
602において、クラウド統合システムによって、iFlowが、自動スケールファクタをもつリソースとしてデプロイされる。例えば、自動スケールファクタは、クラウド統合システム102によるiFlowの初期デプロイメントについてのポッドの初期数を表すことができる。
【００４３】
604において、個別のiFlowによる負荷およびトラフィックがルーティング解析モジュールによって解析され、負荷およびトラフィックがXにスケーリングされる。例えば、個別のiFlowにかかるトラフィックを解析した後に、スケーリングモジュール116がXを決定することができる。
【００４４】
606において、スケーリングモジュールによって、iFlowリソースがX個のポッドに割り当てられる。一例として、スケーリングモジュール116は、デプロイ済みポッド/コンテナ120を更新して、iFlowリソースをX個の既存のポッドに割り当てることができる。
【００４５】
608において、スケーリングモジュールによって、コンテナオーケストレーションサービス内のプラットフォームスケーラがトリガされて、新規のポッドが作成される。例えば、コンテナオーケストレーションサービス112スケーリングモジュール116がトリガされて、デプロイ済みポッド/コンテナ120内に新規のポッドが作成され得る。
【００４６】
610において、スケーリングモジュールによって、iFlowリソースが新規に作成されたポッドに割り当てられる。例えば、新規のポッドが作成された後、スケーリングモジュール116が、iFlowリソースを新規のポッドに割り当て、デプロイ済みポッド/コンテナ120を更新することができる。
【００４７】
本開示において説明する技法を使用して、統合フローを管理し、ランタイム統合エンジン内に配信することができる。統合フローは、例えば表1にリストされた例を使用して、対応する動的ランタイムエンジンに対して提供される動的ランタイムコンテンツの代わりに使用することができる。
【００４８】
【表１】
2020096357.tif 000003
【００４９】
図7は、本開示において説明する、記載のアルゴリズム、方法、機能、プロセス、フロー、および手順に関連するコンピュータ機能性を提供するために使用される例示的コンピュータシステム700のブロック図である。
【００５０】
図示のコンピュータ702は、サーバ、デスクトップコンピュータ、ラップトップ/ノートブックコンピュータ、ワイヤレスデータポート、スマートフォン、パーソナルデータアシスタント(PDA)、タブレットコンピューティングデバイス、これらのデバイス内の1つまたは複数のプロセッサ、あるいはコンピューティングデバイスの物理インスタンスもしくは仮想インスタンス(またはその両方)を含む他の任意の適切な処理デバイスなど、任意のコンピューティングデバイスを包含することが意図されている。加えて、コンピュータ702は、キーパッド、キーボード、タッチスクリーン、またはユーザ情報を受領することのできる他のデバイスなどの入力デバイス、およびデジタルデータ、視覚情報もしくはオーディオ情報(または情報の組合せ)を含む、コンピュータ702の動作に関連する情報を伝達する出力デバイス、あるいはグラフィカルユーザインターフェース(GUI)を含む、コンピュータを備えてよい。
【００５１】
コンピュータ702は、本開示において説明する本主題を実行するためのコンピュータシステムの、クライアント、ネットワークコンポーネント、サーバ、データベースもしくは他の永続性(persistency)、または他の任意のコンポーネントとしての役割(あるいは役割の組合せ)を果たすことができる。図示のコンピュータ702は、ネットワーク730と通信可能に結合される。いくつかの実装形態では、コンピュータ702の1つまたは複数のコンポーネントが、クラウドコンピューティングベースのローカル環境、グローバル環境、もしくは他の環境(または環境の組合せ)を含む環境内で動作するように構成されてよい。
【００５２】
高いレベルで見ると、コンピュータ702は、説明する本主題に関連するデータおよび情報を受信、送信、処理、格納、または管理するように動作可能な電子コンピューティングデバイスである。いくつかの実装形態によれば、コンピュータ702は、アプリケーションサーバ、電子メールサーバ、ウェブサーバ、キャッシングサーバ、ストリーミングデータサーバ、ビジネスインテリジェンス(BI)サーバ、もしくは他のサーバ(またはサーバの組合せ)を含んでもよく、それと通信可能に結合されてもよい。
【００５３】
コンピュータ702は、(例えば別のコンピュータ702上で実行されている)クライアントアプリケーションからネットワーク730経由で要求を受信し、前記要求を適切なソフトウェアアプリケーションにおいて処理することによって、受信した要求に応答することができる。加えて、要求はコンピュータ702に、内部ユーザから(例えばコマンドコンソールから、または他の適切なアクセス方法によって)、外部またはサードパーティから、他の自動化されたアプリケーションから、ならびに他の任意の適切な実体、個人、システム、またはコンピュータから、送られてもよい。
【００５４】
コンピュータ702のコンポーネントの各々は、システムバス703を使用して通信することができる。いくつかの実装形態では、ハードウェアもしくはソフトウェア(またはハードウェアとソフトウェアとの組合せ)であるコンピュータ702のコンポーネントのうちのいずれかまたは全てが、互いにもしくはインターフェース704(またはその両方の組合せ)と、API712もしくはサービスレイヤ713(またはAPI712とサービスレイヤ713との組合せ)を使用してシステムバス703経由でインターフェースしてよい。API712は、ルーチン、データ構造、およびオブジェクトクラスについての仕様を含んでよい。API712は、コンピュータ言語非依存であってもよく、コンピュータ言語依存であってもよく、完全なインターフェースを指していてもよく、単一の機能を指していてもよく、APIのセットでさえも指していてもよい。サービスレイヤ713は、コンピュータ702、またはコンピュータ702に通信可能に結合されている(図示されているか否かに関わらない)他のコンポーネントに、ソフトウェアサービスを提供する。コンピュータ702の機能性は、このサービスレイヤを使用する全てのサービス消費者にとってアクセス可能となり得る。サービスレイヤ713によって提供されるようなソフトウェアサービスは、定められた再利用可能なビジネス機能性を、定められたインターフェースを通じて提供する。例えば、このインターフェースは、Java(登録商標)、C++、または拡張マークアップ言語(XML)形式もしくは他の適切な形式のデータを提供する他の適切な言語で記述された、ソフトウェアであってよい。API712またはサービスレイヤ713は、コンピュータ702の統合されたコンポーネントとして図示されているが、代替実装形態では、コンピュータ702の他のコンポーネント、またはコンピュータ702に通信可能に結合されている(図示されているか否かに関わらない)他のコンポーネントに対して、スタンドアロンのコンポーネントとして図示されることもある。さらに、API712またはサービスレイヤ713のうちのいずれかまたは全ての部分は、本開示の範囲から逸脱することなく、別のソフトウェアモジュール、エンタープライズアプリケーション、またはハードウェアモジュールの、子モジュールまたはサブモジュールとして実装されてもよい。
【００５５】
コンピュータ702は、インターフェース704を含む。図7には単一のインターフェース704として示されているが、コンピュータ702の特定の必要性、要望、または特定の実装形態に従って、2つ以上のインターフェース704が使用されてよい。インターフェース704は、ネットワーク730に接続されている分散環境内の(図示されているか否かに関わらない)他のシステムと通信するために、コンピュータ702によって使用される。一般に、インターフェース704は、ソフトウェアもしくはハードウェア(またはソフトウェアとハードウェアとの組合せ)に符号化された、ネットワーク730と通信するように動作可能な、論理を備える。より具体的には、インターフェース704は、ネットワーク730またはインターフェースのハードウェアが図示のコンピュータ702内およびその外側で物理的信号を通信するように動作可能であるように、通信に関連する1つまたは複数の通信プロトコルをサポートするソフトウェアを備えてよい。
【００５６】
コンピュータ702は、プロセッサ705を含む。図7には単一のプロセッサ705として示されているが、コンピュータ702の特定の必要性、要望、または特定の実装形態に従って、2つ以上のプロセッサが使用されてよい。一般に、プロセッサ705は、コンピュータ702の動作、ならびに本開示において説明する任意のアルゴリズム、方法、機能、プロセス、フロー、および手順を実行するために、命令を実行し、データを操作する。
【００５７】
コンピュータ702は、コンピュータ702、もしくはネットワーク730に接続することのできる(図示されているか否かに関わらない)他のコンポーネント(またはその両方の組合せ)のためのデータを保持する、メモリ706も含む。例えば、メモリ706は、本開示と整合するデータを格納するデータベースとすることができる。図7には単一のメモリ706として示されているが、コンピュータ702の特定の必要性、要望、または特定の実装形態、および説明する機能性に従って、2つ以上のメモリが使用されてよい。メモリ706は、コンピュータ702の一体化したコンポーネントとして図示されているが、代替実装形態では、メモリ706は、コンピュータ702の外部にあってもよい。
【００５８】
アプリケーション707は、特に本開示において説明する機能性に関して、コンピュータ702の特定の必要性、要望、または特定の実装形態による機能性を提供する、アルゴリズムソフトウェアエンジンである。例えば、アプリケーション707は、1つまたは複数のコンポーネント、モジュール、アプリケーションなどとして働くことができる。さらに、アプリケーション707は、単一のアプリケーション707として図示されているが、複数のアプリケーション707としてコンピュータ702上に実装されてもよい。加えて、アプリケーション707は、コンピュータ702に一体化したものとして図示されているが、代替実装形態では、コンピュータ702の外部にあってもよい。
【００５９】
コンピュータ702を収容しているコンピュータシステムに関連付けられているかまたはその外部の、任意の数のコンピュータ702があってよく、各コンピュータ702がネットワーク730経由で通信する。さらに、「クライアント」、「ユーザ」という用語、および他の適切な術語は、本開示の範囲から逸脱することなく、適宜交換可能に使用され得る。さらに、本開示は、多くのユーザが1つのコンピュータ702を使用し得ること、または1人のユーザが複数のコンピュータ702を使用し得ることを企図するものである。
【００６０】
いくつかの実装形態では、上で説明した環境およびシステムのコンポーネントは、例えば、ブレードサーバ、汎用パーソナルコンピュータ(PC)、Macintosh、ワークステーション、UNIXベースのワークステーション、または他の任意の適切なデバイスなど、任意のコンピュータまたは処理デバイスであってよい。換言すれば、本開示は、汎用コンピュータ以外のコンピュータ、ならびに従来のオペレーティングシステムを用いないコンピュータを企図するものである。さらに、コンポーネントは、Linux(登録商標)、UNIX(登録商標)、Windows、Mac OS(登録商標)、Java(登録商標)、Android(商標)、iOS、または他の任意の適切なオペレーティングシステムを含む、任意のオペレーティングシステムを実行するように適合されてよい。いくつかの実装形態によれば、コンポーネントは、電子メールサーバ、ウェブサーバ、キャッシングサーバ、ストリーミングデータサーバ、および/または他の適切なサーバを含んでもよく、それと通信可能に結合されてもよい。
【００６１】
上で説明した環境およびシステム内で使用されるプロセッサは、中央処理装置(CPU)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または別の適切なコンポーネントであってよい。一般に、各プロセッサは、さまざまなコンポーネントの動作を実行するために、命令を実行し、データを操作することができる。具体的には、各プロセッサは、外部デバイスと、中間デバイスと、ターゲットデバイスとの間での通信などにおいて、要求および/またはデータを環境のコンポーネントに送り、環境のコンポーネントからデータを受信するために必要となる、機能性を実行することができる。
【００６２】
上で説明したコンポーネント、環境、およびシステムは、1つまたは複数のメモリを含んでよい。メモリは、任意のタイプのメモリまたはデータベースモジュールを含んでよく、限定はしないが、磁気媒体、光学式媒体、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、リムーバブルメディア、または他の任意の適切なローカルもしくはリモートメモリコンポーネントを含む、揮発性および/または不揮発性メモリの形態をとってよい。メモリは、キャッシュ、クラス、フレームワーク、アプリケーション、バックアップデータ、ビジネスオブジェクト、ジョブ、ウェブページ、ウェブページテンプレート、データベーステーブル、ビジネス情報および/または動的情報を格納するリポジトリ、ならびにターゲットデバイス、中間デバイス、および外部デバイスの目的に関連したそこへの参照のための、任意のパラメータ、変数、アルゴリズム、命令、ルール、制約を含む他の任意の適切な情報を含む、さまざまなオブジェクトまたはデータを格納してよい。メモリ内の他のコンポーネントも可能である。
【００６３】
特定の実装形態に関わらず、「ソフトウェア」は、実行されると、少なくとも本明細書において説明したプロセスおよび動作を実行するように動作可能な、(適宜一時的または非一時的な)有形の媒体上のコンピュータ可読命令、ファームウェア、配線されたハードウェアおよび/もしくはプログラムされたハードウェア、またはそれらの任意の組合せを含んでよい。実際のところ、各ソフトウェアコンポーネントは、C、C++、Java(登録商標)、Visual Basic、アセンブラ、Perl(登録商標)、4GLの任意の適切なバージョン、ならびに他のものを含む任意の適切なコンピュータ言語で、全体的または部分的に記述されるかまたは記載されてよい。ソフトウェアはその代わりに、いくつかのサブモジュール、サードパーティサービス、コンポーネント、ライブラリなどを適宜含んでもよい。反対に、さまざまなコンポーネントの特徴および機能性を、単一のコンポーネントに適宜組み合わせることもできる。
【００６４】
デバイスは、スマートフォン、タブレットコンピューティングデバイス、PDA、デスクトップコンピュータ、ラップトップ/ノートブックコンピュータ、ワイヤレスデータポート、これらのデバイス内の1つもしくは複数のプロセッサ、または他の任意の適切な処理デバイスなど、任意のコンピューティングデバイスを包含することができる。例えば、デバイスは、キーパッド、タッチスクリーン、もしくはユーザ情報を受領することのできる他のデバイスなどの入力デバイス、ならびにデジタルデータ、視覚情報を含む、上で説明した環境およびシステムのコンポーネントに関連する情報を伝達する出力デバイス、またはGUIを含む、コンピュータを備えてよい。GUIは、上で説明した環境およびシステムの少なくとも一部分と、ウェブブラウザの視覚表示を生成することを含む任意の適切な目的のためにインターフェースする。
【００６５】
先出の図および添付の説明は、例示的プロセスおよびコンピュータ実装可能技法を示している。上で説明した環境およびシステム(またはそれらのソフトウェアもしくは他のコンポーネント)は、これらのタスクおよび他のタスクを実行するための任意の適切な技法を使用すること、実装すること、または実行することを企図し得る。これらのプロセスは、例示を目的としたものにすぎないこと、および説明した技法または類似の技法が、並行して、個別に、並列に、かつ/または組み合わせて、を含む、任意の適切なタイミングにおいて実行されてよいことが理解されよう。加えて、これらのプロセスにおける動作の多くは、同時に、並行して、並列に、かつ/または図示されたのとは異なる順序で行われてよい。さらに、プロセスは、方法が適切なままである限り、追加の動作、より少ない動作、および/または異なる動作を有してよい。
【００６６】
換言すれば、本開示について、ある特定の実装形態および一般に関連のある方法の点から説明してきたが、これらの実装形態および方法の改変形態および置換形態(permutation)が、当業者には明らかとなろう。したがって、例示的実装形態についての上の説明は、本開示を定めることも、制限することもない。本開示の趣旨および範囲から逸脱することなく、他の変更形態、代替形態(substitution)、および改変形態も可能である。
【符号の説明】
【００６７】
100  例示的環境
102  クラウド統合システム
104  クライアント/要求側システム
106  クライアント
108  ユーザ
110  ネットワーク
111  インターフェース
112  コンテナオーケストレーションサービス
114  ルーティング解析モジュール
116  スケーリングモジュール
118  API
120  デプロイ済みポッド/コンテナコンポーネント、デプロイ済みポッド/コンテナ
122  デプロイされたリソース/iFlow
124  ポッド同期エージェント
126  メモリ
128  iFlow定義
130  プロセッサ
200  例示的環境
202  ロードバランサ
204  ロードバランシングエージェント
206  コンテナオーケストレーションサービス
208  エンドポイント
210  エンドポイント
212  エンドポイント
214  サービス
216  サービス
218  サービス
220  サービス
222  ポッド
222a  ポッド
222b  ポッド
222c  ポッド
224a〜224c  ドキュメント
226a〜226c  ラベルリスト
228a〜228c  ポッド同期エージェント
300  例示的方法
400  例示的方法
500  例示的方法
600  例示的方法
700  例示的コンピュータシステム
702  コンピュータ
703  システムバス
704  インターフェース
705  プロセッサ
706  メモリ
707  アプリケーション
712  API
713  サービスレイヤ
730  ネットワーク
【図１】
2020096357.tif 000004
【図２】
2020096357.tif 000005
【図３】
2020096357.tif 000006
【図４】
2020096357.tif 000007
【図５】
2020096357.tif 000008
【図６】
2020096357.tif 000009
【図７】
2020096357.tif 000010
【外国語明細書】
2020096357000001.pdf