IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7355404クラウド・マイクロサービス埋め込み用自動チューナ
<>
  • 特許-クラウド・マイクロサービス埋め込み用自動チューナ 図1
  • 特許-クラウド・マイクロサービス埋め込み用自動チューナ 図2
  • 特許-クラウド・マイクロサービス埋め込み用自動チューナ 図3
  • 特許-クラウド・マイクロサービス埋め込み用自動チューナ 図4A
  • 特許-クラウド・マイクロサービス埋め込み用自動チューナ 図4B
  • 特許-クラウド・マイクロサービス埋め込み用自動チューナ 図5
  • 特許-クラウド・マイクロサービス埋め込み用自動チューナ 図6
  • 特許-クラウド・マイクロサービス埋め込み用自動チューナ 図7
  • 特許-クラウド・マイクロサービス埋め込み用自動チューナ 図8
  • 特許-クラウド・マイクロサービス埋め込み用自動チューナ 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-25
(45)【発行日】2023-10-03
(54)【発明の名称】クラウド・マイクロサービス埋め込み用自動チューナ
(51)【国際特許分類】
   G06F 8/60 20180101AFI20230926BHJP
   G06F 9/46 20060101ALI20230926BHJP
   G06F 11/34 20060101ALI20230926BHJP
   G06N 20/00 20190101ALI20230926BHJP
【FI】
G06F8/60
G06F9/46 420Z
G06F11/34 157
G06N20/00
【請求項の数】 16
(21)【出願番号】P 2021518112
(86)(22)【出願日】2019-10-03
(65)【公表番号】
(43)【公表日】2022-01-13
(86)【国際出願番号】 IB2019058416
(87)【国際公開番号】W WO2020075017
(87)【国際公開日】2020-04-16
【審査請求日】2022-04-18
(31)【優先権主張番号】16/159,597
(32)【優先日】2018-10-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】パルタサラシー、スリニバサン
(72)【発明者】
【氏名】ラビチャンドラン、シュシュマ
(72)【発明者】
【氏名】オリベイラ、ファビオ
(72)【発明者】
【氏名】エイラム、テイマー
(72)【発明者】
【氏名】ナグプルカー、プリヤ、アショク
【審査官】今城 朋彬
(56)【参考文献】
【文献】特開2018-067302(JP,A)
【文献】特表2017-538200(JP,A)
【文献】特開2015-092354(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/60
G06F 9/46
G06F 11/34
G06N 3/00-99/00
H04L 67/00
(57)【特許請求の範囲】
【請求項1】
コンピューティング・デバイス上で実行される方法であって、前記コンピューティング・デバイスは、
プロセッサと、
前記プロセッサに結合された記憶デバイスと、
前記記憶デバイスに記憶された自動チューナ・エンジンとを含み、前記プロセッサによる前記自動チューナ・エンジンの実行は、前記方法の以下のステップ:
マイクロサービスベースのアプリケーションのマイクロサービス・インフラストラクチャを決定することと、
前記マイクロサービスベースのアプリケーションに関する1つ以上の最適化目的を決定することと、
前記マイクロサービスベースのアプリケーションのマイクロサービスごとに、タイムアウト値および再試行値の異なる組み合わせを検証することと、
タイムアウト値および再試行値の前記異なる組み合わせごとに、報酬値を算出することと、
前記1つ以上の最適化目的に対して最も高い報酬値を有するタイムアウト値および再試行値の組み合わせに、前記マイクロサービス・インフラストラクチャを設定することと、 を実行するように前記コンピューティング・デバイスを構成する、方法。
【請求項2】
前記マイクロサービスベースのアプリケーションの前記マイクロサービス・インフラストラクチャを決定することが、
前記マイクロサービスベースのアプリケーションによって使用されるマイクロサービスを特定することと、
前記マイクロサービス間における相互接続を特定することと、
を含む、請求項1に記載の方法。
【請求項3】
最適化目的が、前記マイクロサービスベースのアプリケーションの所定の最大誤り率の範囲内における最も低いエンド・ツー・エンドのレイテンシを含む、請求項1または2に記載の方法。
【請求項4】
最適化目的が、前記マイクロサービスベースのアプリケーションの所定の最大エンド・ツー・エンドのレイテンシの範囲内における最も低い誤り率を含む、請求項1または2に記載の方法。
【請求項5】
前記自動チューナ・エンジンの実行はさらに、さらなる以下のステップ:
前記マイクロサービスベースのアプリケーションのマイクロサービスごとの既存のタイムアウト値を決定することと、
前記マイクロサービスベースのアプリケーションのマイクロサービスごとの既存の再試行値を決定することと、
前記既存のタイムアウト値および再試行値が、参照データ・ソースから受信される履歴の訓練データに基づくことと、
前記マイクロサービスベースのアプリケーションのマイクロサービスごとにタイムアウト値および再試行値の前記異なる組み合わせを検証することが、前記決定された既存のタイムアウト値および再試行値に基づくことと、
を実行するように、前記コンピューティング・デバイスを構成する、請求項1~4のいずれか1項に記載の方法。
【請求項6】
前記自動チューナ・エンジンの実行はさらに、さらなる以下のステップ:
前記マイクロサービスベースのアプリケーションのマイクロサービスごとの既存のタイムアウト値を決定することと、
前記マイクロサービスベースのアプリケーションのマイクロサービスごとの既存の再試行値を決定することと、
マイクロサービスごとの前記既存のタイムアウト値および再試行値が、標準的な負荷を上回る高負荷状態下で動作する前記マイクロサービスに基づくことと、
を実行するように、前記コンピューティング・デバイスを構成する、請求項1~4のいずれか1項に記載の方法。
【請求項7】
前記1つ以上の最適化目的が、前記マイクロサービスベースのアプリケーションのエンド・ユーザからパックされたデータ内で受信されるサービス水準合意(SLA)に由来するものである、請求項1~6のいずれか1項に記載の方法。
【請求項8】
タイムアウト値および再試行値の前記異なる組み合わせの各々を前記検証することが、前記マイクロサービスベースのアプリケーションのシミュレータを介して行われる、請求項1~7のいずれか1項に記載の方法。
【請求項9】
タイムアウト値および再試行値の前記異なる組み合わせの各々を前記検証することが、各々の組み合わせを前記マイクロサービスベースのアプリケーション上で直接検証することを含む、請求項1~7のいずれか1項に記載の方法。
【請求項10】
タイムアウト値および再試行値の前記異なる組み合わせを前記検証することが、
タイムアウト値および再試行値の前記異なる組み合わせを前記マイクロサービスベースのアプリケーション上で直接検証するための時間の長さを推定することと、
前記時間の長さが所定のしきい値以下であると判断されると、タイムアウト値および再試行値の前記異なる組み合わせの各々を、前記マイクロサービスベースのアプリケーション上で直接検証することと、
前記時間の長さが所定のしきい値を上回ると判断されると、タイムアウト値および再試行値の前記異なる組み合わせごとに前記マイクロサービスベースのアプリケーションの性能をエミュレートするために、シミュレータを使用することと、
を含む、請求項1~7のいずれか1項に記載の方法。
【請求項11】
マイクロサービスごとのタイムアウト値および再試行値の前記異なる組み合わせが、(i)ブラックボックス最適化と、(ii)グレーボックス最適化と、(iii)強化学習技術と、のうちの少なくとも1つによって生成される、請求項1~10のいずれか1項に記載の方法。
【請求項12】
前記マイクロサービスベースのアプリケーションのマイクロサービスごとに、前記タイムアウト値の前記設定が各再試行の後に増加される、請求項1~11のいずれか1項に記載の方法。
【請求項13】
前記自動チューナ・エンジンの実行はさらに、さらなる以下のステップ:
各々の決定された報酬値に修正モデルを適用することであって、前記修正モデルが、統計および機械学習技術に基づいて、入力として前記決定された報酬値を取り入れ、出力として前記報酬値の新規推定値を生成する、ことを実行するように、前記コンピューティング・デバイスを構成する、請求項1~12のいずれか1項に記載の方法。
【請求項14】
コンピュータ・システムであって、
プロセッサと、
前記プロセッサに結合された記憶デバイスと、
前記記憶デバイスに記憶された自動チューナ・エンジンと
を含み、前記プロセッサによる前記自動チューナ・エンジンの実行により、
マイクロサービスベースのアプリケーションのマイクロサービス・インフラストラクチャを決定することと、
前記マイクロサービスベースのアプリケーションに関する1つ以上の最適化目的を決定することと、
前記マイクロサービスベースのアプリケーションのマイクロサービスごとに、タイムアウト値および再試行値の異なる組み合わせを検証することと、
タイムアウト値および再試行値の前記異なる組み合わせごとに、報酬値を算出することと、
前記1つ以上の最適化目的に対して最も高い報酬値を有するタイムアウト値および再試行値の組み合わせに、前記マイクロサービス・インフラストラクチャを設定することと、 を実行するように構成されたコンピュータ・システム。
【請求項15】
コンピュータ・プログラムであって、前記コンピュータ・プログラムがコンピュータ・システム上で実行されるときに、請求項1~13のいずれか1項に記載の前記方法のすべての前記ステップを実行するための命令を含む、コンピュータ・プログラム。
【請求項16】
請求項15に記載のコンピュータ・プログラムをコンピュータ可読に記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般にネットワーク・コンピューティングに関し、より具体的には、クラウドベースの分散アプリケーションに関する。
【背景技術】
【0002】
近年、インフラストラクチャ、プラットフォームおよびアプリケーション・サービスなどの広範囲のコンピューティング・リソースを提供する最も一般的な手法として、クラウド・コンピューティング・プラットフォームが台頭してきている。この点について、各種ベンダーは、自身のデータ・センタの利用を最適化するために、クラウドベースのソリューションを提供している。最新のクラウドベースのアプリケーションは、分散され、異機種混在型であり、需要に応じるために迅速にスケーリングすることが可能である。この柔軟性は、時にマイクロサービス・アーキテクチャと称される、きめ細やかなサービス指向アーキテクチャを用いることによって促進される。
【0003】
マイクロサービスとは、単一の目的を提供し、一連のAPIを他のマイクロサービスに公表するウェブ・サービスのことであり、これにより所定のアプリケーションが集合的に実装される。そのようなアプリケーションは、モノリシックなアプリではなく、異なるマイクロサービスのコレクションとして構築することができる。マイクロサービスベースのアプリケーションの各々のマイクロサービスは、それ自身で実行することができ、異なるコーディングまたはプログラミング言語を使用して作成することができる。さらに、マイクロサービスベースのアプリケーションの他の構成要素のマイクロサービスと独立して、各々のマイクロサービスを開発、デプロイ、管理することが可能である。マイクロサービスへの新規の特徴および更新は、迅速で漸進的なやり方で、連続的に配信することが可能であり、さらなる新規のバージョンのマイクロサービスを本番環境に継続的に組み込むことができる。このようにして開発されたマイクロサービスベースのアプリケーションは、それらを頻繁に更新してデプロイすることができるため、動的なものとなる。
【発明の概要】
【0004】
各種実施形態によれば、マイクロサービスベースのアプリケーションのパラメータを最適化するためのコンピューティング・デバイス、非一過性コンピュータ可読記憶媒体、および方法が提供される。マイクロサービスベースのアプリケーションのマイクロサービス・インフラストラクチャが決定される。マイクロサービスベースのアプリケーションに関する1つ以上の最適化目的が決定される。マイクロサービスベースのアプリケーションのマイクロサービスごとに、タイムアウト値および再試行値の異なる組み合わせが検証される。タイムアウト値および再試行値の異なる組み合わせごとに、報酬値が算出される。1つ以上の最適化目的に対して最も高い報酬値を有するタイムアウト値および再試行値の組み合わせに、マイクロサービス・インフラストラクチャが設定される。
【0005】
一実施形態では、マイクロサービスベースのアプリケーションのマイクロサービス・インフラストラクチャを決定することは、マイクロサービスベースのアプリケーションによって使用されるマイクロサービスを特定することと、マイクロサービス間における相互接続を特定することとを含む。
【0006】
一実施形態では、最適化目的は、マイクロサービスベースのアプリケーションの所定の最大誤り率の範囲内における最も低いエンド・ツー・エンドのレイテンシを含む。
【0007】
一実施形態では、最適化目的は、マイクロサービスベースのアプリケーションの所定の最大エンド・ツー・エンドのレイテンシの範囲内における最も低い誤り率を含む。
【0008】
一実施形態では、タイムアウト値および再試行値の異なる組み合わせの各々を検証することは、マイクロサービスベースのアプリケーションのシミュレータを介して行われる。
【0009】
一実施形態では、タイムアウト値および再試行値の異なる組み合わせの各々を検証することは、各々の組み合わせをマイクロサービスベースのアプリケーション上で直接検証することを含む。
【0010】
一実施形態では、タイムアウト値および再試行値の異なる組み合わせを検証することは、作成されたタイムアウト値および再試行値の異なる組み合わせをマイクロサービスベースのアプリケーション上で直接検証するための時間の長さを推定することを含む。時間の長さが所定のしきい値以下であると判断されると、タイムアウト値および再試行値の異なる組み合わせの各々は、マイクロサービスベースのアプリケーション上で直接検証される。しかしながら、時間の長さが所定のしきい値を上回ると判断されると、シミュレータを使用して、タイムアウト値および再試行値の異なる組み合わせごとに、マイクロサービスベースのアプリケーションの性能をエミュレートする。
【0011】
一実施形態では、各々の決定された報酬値に修正モデルが適用され、この修正モデルは、統計および機械学習技術に基づいて、入力として決定された報酬値を取り入れ、出力として報酬値の新規推定値を生成する。
【0012】
これらおよび他の特徴は、添付の図面と併せて読まれる、それらの例示的な実施形態の以下の詳細な説明から明らかとなるであろう。
【0013】
図面は、例示的な実施形態であり、それらはすべての実施形態を図示するものではない。他の実施形態を付加的に、または代わりに使用してもよい。明確であるかまたは不要である可能性のある詳細については、スペースを節約するため、またはより効果的に説明するために省略される場合がある。いくつかの実施形態は、追加の構成要素もしくはステップによって、および/または図示されるすべての構成要素もしくはステップを伴わずに実行されてもよい。同一の数字が異なる図面に表示される場合は、同一もしくは類似の構成要素、またはステップを意味する。
【図面の簡単な説明】
【0014】
図1】例示的な実施形態と一致する、自動的にチューニングするマイクロサービスベースのアプリケーション用のシステムを実装するための例示的なアーキテクチャである。
図2】例示的な実施形態と一致する、マイクロサービスを使用するシステムのブロック図である。
図3】例示的な実施形態と一致する、相互作用するマイクロサービスのメッシュを含むシステムである。
図4A】例示的なシナリオにおけるタイムアウトの異なる設定を図示する。
図4B】例示的なシナリオにおけるタイムアウトの異なる設定を図示する。
図5】クラウド上に実装されたマイクロサービスのパラメータを自動的に調整するために自動チューナ・エンジンを使用するシステムの概念的なブロック図である。
図6】例示的な実施形態と一致する、マイクロサービスベースのアプリケーションのパラメータを自動的にチューニングするためのプロセスを提示する。
図7】各種のネットワーク化された構成要素と通信することができる、コンピュータ・ハードウェア・プラットフォームを図示する機能ブロック図である。
図8】例示的な実施形態と一致する、クラウド・コンピューティング環境を図示する。
図9】例示的な実施形態と一致する、抽象化モデルのレイヤを図示する。
【発明を実施するための形態】
【0015】
概要
以下の発明を実施するための形態において、関連する教示を完全に理解できるように、一例として多くの具体的な詳細が記載される。しかしながら、本教示は、そのような詳細が無くても実行することができるということは明らかである。他の場合では、本教示の態様を不必要に不明瞭にすることを回避するために、周知の方法、手順、構成要素もしくは回路またはその組み合わせが、詳細を伴わず、比較的概観して記載されている。
【0016】
本開示は一般に、マイクロサービスを有するクラウドベースのアプリケーションを、自動的にチューニングするシステムおよび方法に関する。マイクロサービスのアプリケーションは、分散アーキテクチャに基づいており、サービスは別個のアプリケーションとしてデプロイされ、リモート・アクセスのプロトコルを介して遠隔でアクセスされる。このような分散アーキテクチャの重要な考慮事項としては、マイクロサービスの可用性および応答性を管理することが含まれる。サービス可用性は、イベントが生じるようにマイクロサービスを結合する性能(例えば、そこから情報が受信される)に関する。一方で、サービス応答性は、通信が確立された時点で、サービスが要求に応答するのにかかる時間に関する。
【0017】
マイクロサービス・アーキテクチャが、定義された境界によって障害を隔離する場合であっても、ネットワーク、ハードウェア、データベースまたはアプリケーションに問題が存在する可能性が高く、結果としてマイクロサービスが一時的に利用不能となる可能性があり、これは本明細書においてマイクロサービスの障害と総称される。サービス可用性が所定時間内に提供されない場合、マイクロサービスは、マイクロサービスに対する要求が打ち切られるタイムアウト状態になりやすくなる。
【0018】
マイクロサービスに対する要求は、所定の回数で繰り返すことができ、これは本明細書において再試行と称される。エラーが本質的に一過性である場合に、再試行が有効となり得る。例えば、マイクロサービスは、一時的に高負荷状態下となる場合があり、そのために応答しない場合があるが、その後に試行した際に利用可能となる可能性がある。エンド・ユーザの観点からすると、マイクロサービスベースのアプリケーションの複雑性とは関係なく、エンド・ツー・エンドのレイテンシは最小化されるべきである。この点について、本明細書の教示により、再試行の回数と各再試行の間に経過する時間(すなわち、タイムアウト)パラメータとを自動的に調整する方法およびシステムが提供される。
【0019】
本明細書で述べられる概念により、クラウドのコンピューティング技術が向上する。より具体的には、アプリケーションのマイクロサービスが自動的に微調整され、それらの性能が向上する。本明細書に記載される技術は、多数の手法で実装されてもよい。以下の図を参照しながら、下記で例示的な実装形態を提供する。
【0020】
例示的なアーキテクチャ
図1は、例示的な実施形態と一致する、自動的にチューニングするマイクロサービスベースのアプリケーション用のシステムを実装するための例示的なアーキテクチャ100である。アーキテクチャ100は、各種コンピューティング・デバイス102(1)~102(N)が互いに通信するだけでなく、分析サーバ116およびクラウド120などの、ネットワーク106に接続されている他の要素とも通信することを可能にするネットワーク106を含む。ネットワーク106は、限定されるものではないが、インターネットなどのグローバル・コンピュータ・ネットワーク、ワイド・エリア・ネットワーク(WAN:wide area network)、ローカル・エリア・ネットワーク(LAN:local area network)、仮想プライベート・ネットワーク(VPN:virtual private network)、衛星ネットワーク、電話網もしくはケーブル・ネットワーク、セルラ・ネットワーク、Wi-FiもしくはWiMAXなどの無線ネットワーク、またはこれらおよび他の種類のネットワークの様々な部分もしくは組み合わせ(例えば、インターネット・プロトコル(IP:Internet Protocol)ベースのネットワーク)を含み得る。ネットワーク106は、(ルータ、スイッチ等などの)中間点、ゲートウェイ、および通信経路を確立するためのネットワーク・バックボーンを形成し、ネットワークのエンドポイント間の通信を可能にする他の要素を含む。
【0021】
ネットワーク106により、分析サーバ116上で実行されるプログラムであってもよい自動チューナ・エンジン110が、参照データ・ソース112、クラウド120、およびコンピューティング・デバイス102(1)~102(N)と通信し、本明細書で述べられるマイクロサービスに自動チューニングを提供することができる。クラウド120は、プライベートまたはパブリック・クラウド・コンピューティング・システムを含んでもよい。クラウド120の各種構成要素は、クラウド120の一部であるネットワーク106、もしくはLANおよびWANまたはその両方を通じて互いに通信することができる。一実施形態では、クラウド120は、複雑なアプリケーションの動作を容易にする、マイクロサービスのサービス・ファブリックを提供する。クラウド120のアーキテクチャについては、後でより詳細に説明する。
【0022】
後に述べるために、コンピューティング・デバイス102(1)~102(N)は、エンド・ユーザを表すために使用され得るコンピューティング・プラットフォームのいくつかの例を表すように図面に表示されている。今日では、コンピューティング・デバイスは通常、携帯用送受話器、スマートフォン、タブレット・コンピュータ、携帯情報機器(PDA:personal digital assistant)およびスマート・ウォッチという形態をとるが、それらは消費者用および事業者用電子デバイスを含む他の形態要素で実装されてもよい。他の実施形態では、エンド・ユーザは、別のアプリケーションもしくはマイクロサービスまたはその両方であってもよい。コンピューティング・デバイス102(1)~102(N)は、チューナ・エンジン110によって最適化されたリソースに対する要求103(1)~103(N)を生成するために使用することができる。
【0023】
分析サーバ116の自動チューナ・エンジン110は、リソースに対する要求(例えば、103(1))をエンド・ユーザ(例えば、102(1))から受信するように動作する。これらのリソースは、クラウド120上に実装され得るマイクロサービスベースのアプリケーション(単数または複数)に関連するものである。要求された各リソースに対し、自動チューナ・エンジン110は、要求されたリソースに関連するマイクロサービス・インフラストラクチャを、それと関連するマイクロサービスのネットワークを特定することによって決定するように構成される。各マイクロサービスは、異なる負荷条件(例えば、最良の場合(軽度の使用)、名目上の場合(標準的な使用)、および最悪の場合(高負荷))下における、関連する平均遅延時間を有する。マイクロサービスごとに存在する遅延時間は、参照データ・ソース112によって、後述する履歴データとして提供することができる。
【0024】
いくつかの実施形態では、リソースに対する要求には、クラウド120と関連するサービス提供者と、コンピューティング・デバイス(例えば、102(N))と関連する顧客のアカウントとの間で有効な義務または制約を規定する、サービス水準合意(SLA:service level agreement)のパラメータが含まれる。他の実施形態では、そのようなSLAは、自動チューナ・エンジン110がネットワーク106を介してアクセスすることが可能な、別個のビジネス・ルールのデータベース(図示せず)によって提供されてもよい。SLAは、最大誤り率、遅延時間、信頼性レベル、計算処理上のコスト、タイムアウト制限、再試行制限等、またはそれらの任意の組み合わせを特定するために、自動チューナ・エンジン110によって使用され得る。
【0025】
時に本明細書では履歴データと称される訓練データ113を、自動チューナ・エンジン110に提供する、参照データ・ソース112が存在し得る。一実施形態では、自動チューナ・エンジン110は、参照データ・ソース112によって提供される重要業績評価指標(KPI:key performance indicator)を含む訓練データ113のコーパスから学習する、もしくはこれに基づいて予測する、またはその両方が可能なアルゴリズムを使用するように構成される。KPIには、これらに限定されるものではないが、異なる負荷条件における特定のマイクロサービス間の遅延時間、誤り率、タイムアウト設定、成功に至るまでの再試行の回数等などの各種通信パラメータが含まれ得る。いくつかの実施形態では、訓練データはまた、同一のマイクロサービスを使用する他のアプリケーションに由来するものであってもよい。静的基準に厳格に従うのではなく、データ駆動型の予測または決定を下すために、受信された訓練データ113からモデルを構築することによってそのような学習アルゴリズムが機能する。最適化されたタイムアウト値および再試行値を履歴データに基づいて自動的に選択するために、機械学習を使用することができる。各種実施形態では、機械学習は、教師あり学習、教師なし学習、半教師あり学習、ナイーブ・ベイズ、ベイジアン・ネットワーク、決定木、ニューラル・ネットワーク、ファジー論理モデル、もしくは確率論的分類モデルまたはその両方などの技術を使用してもよい。最適化は、各々特定されたアプリケーションのマイクロサービスに対して、タイムアウトおよび再試行パラメータを調整することによって実現されてもよく、それにより最も高い報酬値がアプリケーションに提供される。報酬値の概念については、後でより詳細に説明する。
【0026】
各種実施形態では、本明細書で述べられる機械学習は、教師あり学習または教師なし学習であってよい。教師あり学習では、自動チューナ・エンジン110に、例示的な訓練データ113のしきい値条件が提示され得る。換言すると、訓練データ113は、自動チューナ・エンジン110の学習アルゴリズムの教師としての機能を果たす。教師なし学習では、訓練データ113は、許容可能なものとして任意のラベルを提供せず、むしろ、訓練データ113の中にあるそれ自身の構造を見つけ出し、そこからモデルを生成するために使用することができる自動チューナ・エンジン110の学習アルゴリズムに、単に履歴データを提供する。各種実施形態では、自動チューナ・エンジン110のモデルは、続いて、マイクロサービスベースのアプリケーションの性能をエミュレートし、任意のシミュレーション結果ならびに物理的結果またはその両方を修正するための修正モデルを生成する、および/または、アプリケーションのマイクロサービスごとにタイムアウトおよび再試行パラメータを初期化するシミュレータを生成するために使用することができる。修正モデルは、統計および機械学習技術に基づいて、入力として決定された報酬値を取り入れ、出力として新規の報酬値の推定値を生成する。
【0027】
各種実施形態では、誤り率、レイテンシ制約の違反、推定値の信頼性レベル、および他のKPIに基づいて、最も高い報酬値を達成してもよい。例えば、最も低いエンド・ツー・エンドのレイテンシ(すなわち、エンド・ユーザのコンピューティング・デバイス(例えば102(1))に認識されるような)が達成される一方で、しきい値の誤り率を上回らないように、アプリケーションのマイクロサービスのネットワーク内のマイクロサービスごとに、タイムアウトおよび再試行の異なる組み合わせを評価することができる。別の実施形態では、最も低い誤り率が達成される一方で、最大しきい値のエンド・ツー・エンドのレイテンシを上回らないように、タイムアウトおよび再試行の異なる組み合わせが評価される。従って、少なくとも各々特定されたマイクロサービスのタイムアウトおよび再試行パラメータを最適化することによって、誤り率を制御するとともに、マイクロサービスベースのアプリケーションの性能が向上する。
【0028】
参照データ・ソース112および分析サーバ116は、一例として異なるプラットフォーム上にあるように図示されているが、各種実施形態では、参照データ・ソース112と学習サーバとを組み合わせてもよいということが理解されよう。他の実施形態では、これらのコンピューティング・プラットフォームは、クラウド120上にホストされる仮想マシンまたはソフトウェア・コンテナの形態で、仮想コンピューティング・デバイスによって実装されてもよく、それによって処理および記憶のための弾性的なアーキテクチャが提供される。
【0029】
例示的なブロック図
次に、例示的な実施形態と一致する、マイクロサービスを使用するシステムのブロック図である図2を参照する。エンド・ユーザ202は、ユーザ・デバイスまたは別のアプリケーションであってもよい。エンド・ユーザ202は、システム200のサービス・ファブリックを使用して、リソースに対する1つ以上の要求を満たすことができる。
【0030】
時に本明細書では入口(ingress)と称されるゲートウェイ204は、システム200のサービス・ファブリックにアクセスを提供するフロント・エンドである。例えば、ゲートウェイ204は、図2では一例としてバックエンド・サービス1~Nとして示される、1つ以上のマイクロサービスに関連するAPI要求を受信することが可能であり、続いて、1つ以上のマイクロサービスからコンピューティング・デバイスまたは別のアプリケーションであってもよい(一例としてエンド・ユーザ202として示されている)適切な受信者に応答を中継することができる。ゲートウェイ204は、また、セキュリティ・ポリシーの実施、スロットリングの提供、認可、認証、監査および規制遵守等などの、ゲートウェイに関連する他の機能を提供することができる。一実施形態では、ゲートウェイ204は、各バックエンド・サービス1~Nと関連する遅延時間もしくはタイムアウトまたはその両方の分析データを収集することができる。ゲートウェイは、また、エンド・ツー・エンドのレイテンシおよび誤り率、ならびにマイクロサービス間のレイテンシおよび対応する誤り率を監視することができる。これらのKPIおよびその他は、図1における参照データ・ソース112と同様に、参照データベース内に記憶することができる。
【0031】
例えば、アプリケーションは、例えば第1のマイクロサービス210(例えば、バックエンド・サービス1)、第2のマイクロサービス212(例えば、バックエンド・サービス2)等、第Nのマイクロサービス214(例えば、バックエンド・サービスN)までを含む、複数の異なるマイクロサービスの集合体を含んだ分散型のマイクロサービスベースのアプリケーションであってもよい。マイクロサービス210~214は、RESTベースのウェブ・サービスなどの、分散型のきめ細やかなウェブ・サービスのコレクションを含んでもよい。マイクロサービス210~214は、HTTPなどの標準アプリケーション・プロトコル、およびその意味が十分に理解される、通信パターン、要求-応答、パブリッシュ-サブスクライブ等を使用して、通信ネットワークを通じて互いに相互作用することができる。マイクロサービス210~214は、これらのマイクロサービス210~214が呼び出すAPIが下位互換性を持つ限り、マイクロサービス210~214を使用するアプリケーションの他のマイクロサービスと独立し、各マイクロサービスを更新してデプロイすることができるように、互いに疎結合されている。そのような疎結合は、例えば、HTTPなどの標準アプリケーション・プロトコルを使用することによって達成され、他のマイクロサービスと容易に統合することを促進することができる。
【0032】
例えば、マイクロサービスベースのアプリケーションは、限定されるものではないが、きめ細やかなマイクロサービス210~214のコレクションを使用するエンド・ユーザ202のためのウェブ・サービスまたはモバイル・コンピューティング・サービスに関連し得る。マイクロサービスベースのアプリケーションは、例えば、データ分析等などのマネージド・データベースおよび他の種類のサービスを含む、(例えば、図1のクラウド120のそれに類似した)ホスティング・クラウドによって提供される各種マネージド・サービスを利用する。そのようなアプリケーションは、また、例えば、ソーシャル・ネットワーク・サービス、モバイル・プッシュ通知サービス、地理的位置サービス等を含む、1つ以上のサード・パーティのウェブ・サービスと統合することができる。
【0033】
図2の例では、指定されたイベント(すなわち、タイムアウト)が発生する前にシステムにおいて経過することが許容される特定の期間は、マイクロサービス210では3秒に設定されている。さらに、再試行(すなわち、マイクロサービスとの相互作用が失敗したとみなされる前の試行回数)は、2回に限定されている。再試行により、前回失敗した動作を呼び出すための機能が提供される。システム200は、所定の回数(例えば、本例におけるマイクロサービス210では2回である)で失敗した動作を再試行し、続いてフォールバック(リカバリ)に進んで、キャッシュまたはデフォルト値からのデータを返す。例えば、マイクロサービス210は、ある時間では高負荷のために応答しない可能性があるが、本明細書では再試行期間と称される所定の待機期間(例えば数秒)後、利用可能となり、ゲートウェイ204またはそのサービスを要求している他のマイクロサービスと通信するであろう。本例では、再試行は、マイクロサービス210からの結果を受信するのに役立つ。
【0034】
しかしながら、有意義な間隔を伴わずに連続的にサービスを再試行することにより、マイクロサービス210の固有の遅延時間よりもタイムアウトが短くなる可能性があるために、容認できない遅延時間が結果としてもたらされる場合がある。それによって失敗が繰り返されることとなり、最終的にはエンド・ユーザの時間が犠牲になる。そのような遅延時間を低減するために、3秒のタイムアウト制限によってマイクロサービス210に中断がもたらされる。タイムアウトに十分な時間を提供することにより、無効な再試行による過度な遅延が回避される。一実施形態では、各再試行の後にタイムアウトを増加させる。換言すると、最初のタイムアウトはよりアグレッシブである可能性があるのに対し、マイクロサービスとの良好な相互作用の可能性を高めるために、2回目のタイムアウトではより多くの時間が提供される。
【0035】
一実施形態では、バックエンド・サービス(例えば、マイクロサービス210)がSLAの限度内で実行されない場合に、デフォルトのエラー応答がエンド・ユーザに提示されるリカバリ機構がある。例えば、所定期間後に応答を再試行するようにしてもよい。
【0036】
各マイクロサービスは、異なる遅延時間を有し得ることが理解されよう。例えば、マイクロサービス210が2秒の平均遅延時間を有し得る一方で、別のマイクロサービス(例えば、214)は、50ミリ秒の平均遅延時間を有し得る。一態様では、本明細書で述べられる自動チューナ・エンジンは、エンド・ユーザ202に認識される全体的なレイテンシを最小限に抑える一方で、しきい値の誤り率を上回らないように、再試行およびタイムアウト値を最適化するように構成される。そのために、自動チューナ・エンジンは、エンド・ユーザが、SLAによるレイテンシ制約を特定するだけでなく、サービスごとにタイムアウトおよび再試行パラメータを自動的にチューニングし、システムの誤り率を最小化することを可能にする機械学習技術の一揃いを含んでもよい。
【0037】
図3は、例示的な実施形態と一致する、相互作用するマイクロサービスのメッシュを含むシステムである。エンド・ユーザ302からの要求は、クラウド320上にホストされていてもよいサービス・ファブリックにアクセスを提供しているゲートウェイ304によって受信される。要求は、第2のマイクロサービス312と第3のマイクロサービス314に連結された第1のマイクロサービス310に関与し得る。第3のマイクロサービス314は、次に第4のマイクロサービス316と連結されている。図3の例では、第1のマイクロサービス310は、約50ミリ秒の平均遅延時間を有する一方で、他のマイクロサービスでは、1秒の平均遅延時間が経験される。例示的なシナリオ300によって提起される課題とは、エンド・ユーザ302に対してエンド・ツー・エンドのレイテンシが最小化されるには、どのようにして各マイクロサービスのタイムアウトおよび再試行パラメータを個別に(すなわち、従って310~316)最適化するかということである。
【0038】
次に、例示的なシナリオにおけるタイムアウトの異なる設定を図示する図4Aおよび図4Bを参照する。異なるマイクロサービスは、異なる通信特性、従って異なる遅延時間を有し得ることが理解されよう。例えば、第1のマイクロサービス410は、製品ページに関連しており、通常の条件下で40ミリ秒の小さな遅延時間を有し得る。第2のマイクロサービス412は、追加の詳細に関連していてもよく、第3のマイクロサービス414は、レビューを提供してもよく、第4のマイクロサービス416は、評価に関連していてもよいが、各々は名目上の条件下で1秒の平均遅延時間を有する。さらに、各マイクロサービスは、異なる負荷状態下において異なる応答をする可能性がある。例えば、第3のマイクロサービス414は、第4のマイクロサービス416よりも、より顕著に高負荷の影響を受ける可能性がある。これらの遅延時間は、処理、通信レイテンシ(例えば、インターネットを横断する移動)、および応答を遅延させる障害に関係し得る。遅延時間は、マイクロサービス間で著しく変動する可能性がある。この点について、製品ページ(すなわち、マイクロサービス410)は、詳細に関するマイクロサービス(すなわち、412)、およびレビューに関するマイクロサービス(すなわち、414)に対しての要求を控えることができる。応答が所定時間内に受信されない場合、その要求はタイムアウトする。従って、各々の要求側のマイクロサービスは、2つの主要パラメータ、すなわち(i)タイムアウト、および(ii)再試行の回数に影響を受ける。
【0039】
図4Aは、エンド・ツー・エンドのレイテンシを最小化するために、マイクロサービス412、414および416のタイムアウトが、場合により高い誤り率を犠牲にして、設定されているシナリオを示す。より具体的には、マイクロサービス410と412との間、マイクロサービス410と414との間、およびマイクロサービス414と416との間の0.5秒のタイムアウトを使用することにより、約1秒のエンド・ツー・エンドのレイテンシが達成される。しかしながら、マイクロサービス412、414および416の各々の平均遅延時間が1秒であることを鑑みると、そのようなアグレッシブなタイムアウトでは、エンド・ユーザ402に認識され得る、より高い誤り率が犠牲になる可能性がある。換言すると、エンド・ユーザ402のサービスに対する要求を効率よく満たすために、(たとえそうであったとしても)システム400Aは1回以上の再試行を受ける可能性がある。
【0040】
対照的に、図4Bは、マイクロサービス412、414および416のタイムアウトがエンド・ユーザ402に認識される誤り率を最小化するように設定されているシナリオを示す。そのために、対応するマイクロサービスごとの平均遅延時間よりも実質的に長い(例えば2倍の)タイムアウトが設定されて、タイムアウトを緩和する。それに応じて、再試行の可能性が低くなる。しかしながら、より長いタイムアウト期間を使用することによって誤り率が減少する一方、エンド・ユーザ402に認識されるエンド・ツー・エンドのレイテンシは、図4Bの例では約4秒に増加する。従って、図4Aおよび図4Bは、タイムアウトと誤り率との間に逆相関が存在することを実証するものである。
【0041】
タイムアウトの最適な設定は、図4Aおよび図4Bによって示される設定の間のどこかに存在し得る。図4Aおよび図4Bの例では、マイクロサービス410は、マイクロサービス412および414の結果を使用する。しかしながら、マイクロサービス414は、本例ではマイクロサービス416により遅延される。従って、マイクロサービス410は、マイクロサービス414、ひいてはその後に設けられる拡張416の結果がさらに必要となるため、タイムアウトのアグレッシブな設定は、マイクロサービス412に対して適切なものではない可能性がある。
【0042】
一態様では、自動チューナ・エンジンは、マイクロサービス410~416ごとのタイムアウトおよび再試行の異なる順列を評価するように構成され、それによりエンド・ユーザ402に認識される有効なエンド・ツー・エンドのレイテンシが最小化される。例えば、エンド・ユーザもしくはSLA402またはその両方は、最大の許容可能なエンド・ツー・エンドのレイテンシを指定してもよい。次に、自動チューナ・エンジンは、可能な限り低い誤り率で必要条件が満たされるように、タイムアウトおよび再試行パラメータを調整する。あるいは、エンド・ユーザ402もしくはSLAまたはその両方からの仕様に基づいて、自動チューナ・エンジンは、所定のしきい値の誤り率以下とする一方で、エンド・ツー・エンドのレイテンシを最小化する。
【0043】
一実施形態では、図1の自動チューナ・エンジンは、下記の式1で得られるスカラの報酬値の観点から、タイムアウトおよび再試行パラメータを最適化する問題を公式化する。
【0044】
【数1】
【0045】
式中、
lはエンド・ユーザまたはSLAで指定されたレイテンシであり、
は、アプリケーションの第i番目のリンクの重みであり、および、
は、アプリケーションの第i番目で確認される誤り率である。
【0046】
それに応じて、上記の式1の多目的最適化により、エンド・ツー・エンドのレイテンシが所定のタイムアウトの誤り率に対して最小化されるときに、最も高いスカラの報酬値が得られる。例えば、上記の分析では、エンド・ツー・エンドのレイテンシが式1の限界値「1」内に抑えられ、誤り率が最小化するときに、最も高いスカラの報酬値が得られる。誤り率は、レイテンシの制約を受けて最小化される。システムを使用して、誤り率を所定の限界値の範囲内に抑えながら、レイテンシを最小化することもできる。例えば、最も高い報酬値がマイクロサービスベースのアプリケーションに対して達成されるように、タイムアウトおよび再試行の異なる組み合わせが、マイクロサービスごとに独立して使用される。いくつかの実施形態では、多目的最適化において、追加の検証制約もしくは信頼性レベルまたはその両方が使用される。式1の多目的最適化は、本明細書において単に一例として提供されるものであり、限定するために提供されるものではないことが理解されよう。他の多目的最適化手法も同様に使用することができる。
【0047】
ZipkinおよびIstio Analyticsなどの各種分散トレーシング技術を使用して、アプリケーションのマイクロサービスのメッシュ内の遅延時間のソースを特定することができる。例えば、ゲートウェイ404は、エンド・ユーザ402からのリソースに対する要求を受信すると、要求とともに各マイクロサービスに引き継がれる一意の識別子を割り当てることができる。各マイクロサービスは、各マイクロサービスに対する要求の入口ポートおよび出口ポートを特定するために使用されるライブラリを含んでもよい。データは続いて、分散トレーシング技術をサポートするサーバ(例えば、図1の分析サーバ116)に送り戻される。このようにして、各マイクロサービスのKPIを特定することができ、場合により参照データ・ソース112内に記憶させることができる。図4Aおよび図4Bの例では、マイクロサービスベースのアプリケーションに適応する、4つの相互接続されたマイクロサービス410~416がある。分散トレーシング・ツールにより、各マイクロサービスに関連する、時間の長さと再試行の回数とを測定することができる。このようにして、本明細書で述べたように、タイムアウトおよび再試行を適切に設定することによって、システムにおけるボトルネックを特定して解決することができる。
【0048】
次に、自動チューナ・エンジンを使用してクラウド上に実装されたマイクロサービスのパラメータを自動的に調整するシステム500の概念的なブロック図である図5を参照する。システム500は、分析サーバ516上で実行される自動チューナ・エンジン570を含む。マイクロサービスベースのアプリケーションのマイクロサービスのサービス・ファブリック(すなわち、510、512、514および516)を提供するクラウド520がある。ゲートウェイ504は、マイクロサービスベースのアプリケーションの1つ以上のマイクロサービスに関連するAPI要求を受信するように構成されている。ゲートウェイ504はまた、分析サーバ516の自動チューナ・エンジン570と通信し、クラウド520のマイクロサービスから収集された各種KPIを提供する。
【0049】
自動チューナ・エンジン570は、本明細書で述べられた報酬値によって最適なパラメータを検索するように構成されるオプティマイザ550を含む。そのために、ブラックボックス最適化または強化学習技術を使用して、最適化されたタイムアウト値および再試行値を特定することができる。これらの技術の両方において、アプリケーションから得られるスカラの報酬は、環境からの学習アルゴリズムへのフィードバックとして扱われており、ラーナーが検索するパラメータ空間は、アプリケーションの実行可能なタイムアウト値および再試行値の空間である。各種実施形態では、自動チューナ・エンジンは、マイクロサービスベースのアプリケーションにおけるタイムアウト値および再試行値の異なる順列552を、ゲートウェイ504を介して直接、または任意のシミュレータ554を介して検証し、一連のパラメータが付与された報酬値を決定してもよい。ブラックボックス最適化手法では、マイクロサービスベースのアプリケーションの異なる順列についての実際の評価が、あまりに時間がかかるか、もしくはコンピュータ的にリソース集約的となる、またはその両方の場合、シミュレータ554による手法が特に有用である。シミュレータ554は、むしろ、マイクロサービスベースのアプリケーションのモデルを使用して、最良の場合(例えば軽度の負荷)、名目上の場合(通常または平均的な条件)、最悪の場合(高負荷)等などの異なる条件下となる場合のある様々な順列をシミュレーションすることができる。一実施形態では、マイクロサービスベースのアプリケーションのモデルは、図1の参照データ・ソースによって提供される訓練データ113に基づいて生成されてもよい。このようにして、エンド・ツー・エンドのレイテンシおよび誤り率におけるパラメータ設定の異なる順列の影響を、自動チューナ・エンジン570によって効率的に評価することができる。
【0050】
一実施形態では、タイムアウトおよび再試行の異なる順列を探索するために、モンテ・カルロ・シミュレーションを使用する。具体的には、モンテ・カルロ・シミュレーションを使用して、タイムアウトおよび再試行パラメータの所定の設定に対するアプリケーションの報酬値558を推定する。
【0051】
一実施形態では、シミュレータ554によって得られた報酬結果558を修正するために動作する修正モデル560がある。そのために、修正モデルは、実際のマイクロサービスベースのアプリケーションに由来する訓練データ562に基づいた機械学習モデルを使用する。このモデルは、最初にシミュレータおよび実際のアプリケーションの両方に、いくつかの異なるタイムアウトおよび再試行設定を試し、続いてシミュレーションされた報酬を計算することによって、ならびにアプリケーションからの実際の報酬を観察することによって学習されたものである。修正モデルは、現実の報酬を目標とし、シミュレーションされた報酬を報酬予測に使用される特徴の1つとして処理することによって、回帰などの機械学習技術を使用して訓練され、シミュレーションされた報酬に基づいて現実の報酬を予測することができる。このシミュレーション報酬を得るために使用されるタイムアウトおよび再試行設定などの他の特徴もまた、この予測に使用することができる。
【0052】
オプティマイザ550が少なくとも最適化されたタイムアウトおよび再試行パラメータを決定すると、オプティマイザ550は、ゲートウェイ504を介して最終的なパラメータ556を各々の対応するマイクロサービスに送信する。このようにして、各マイクロサービスは、最も低いエンド・ツー・エンドのレイテンシが達成される一方で、しきい値の誤り率が上回らないように最適化される。一実施形態では、最大しきい値のエンド・ツー・エンドのレイテンシを上回らない一方で、最も低い誤り率が達成される。従って、少なくとも各々特定されたマイクロサービスのタイムアウトおよび再試行パラメータを最適化することによって、誤り率を制御するとともに、マイクロサービスベースのアプリケーションの性能が向上する。
【0053】
例示的なプロセス
例示的なアーキテクチャ100およびシステム200~500の前述の概要に関して、次に、例示的なプロセスの概観的な説明を考慮に入れることは有用であろう。そのために、図6では、例示的な実施形態と一致する、マイクロサービスベースのアプリケーションを自動的にチューニングするパラメータに関するプロセス600が提示される。プロセス600は、論理的フローチャートにおいて一まとまりのプロセスとして図示されており、各ブロックは、ハードウェア、ソフトウェア、またはそれらの組み合わせで実装することができる、一連の動作を表している。ソフトウェアの文脈においては、プロセスとは、1つ以上のプロセッサによって実行されるときに、明示された動作を実行するコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、機能を実行するか、または抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み得る。動作が記載される順序は、限定として解釈することを意図するものではなく、プロセスを実装するために、任意の数の記載されたプロセスを任意の順序で組み合わせる、もしくは平行して実行する、またはその両方が可能である。説明のために、プロセス600は図1のアーキテクチャ100を参照して記載される。
【0054】
ブロック602において、分析サーバ116の自動チューナ・エンジン110は、マイクロサービスベースのアプリケーションのマイクロサービス・インフラストラクチャを決定することができる。例えば、マイクロサービスベースのアプリケーションに使用されるマイクロサービス、ならびにこれらのマイクロサービス間の相互接続が特定される。
【0055】
ブロック610において、マイクロサービスベースのアプリケーションに関連するサービス水準合意(SLA:service level agreement)を決定する。各種実施形態では、SLAは、(例えば、リソース(例えば、103(1))に対する要求の文脈で)エンド・ユーザから、またはビジネス・ルールのデータベースからデータ・パケットの形式で受信されてもよい。1つ以上の最適化目標を決定するために、SLAを使用することができる。例えば、最適化目標は、所定の最大誤り率に対して最も低いレイテンシを有することであってよい。別の例では、最適化目標は、最大しきい値のエンド・ツー・エンドのレイテンシの範囲内において、最も低い誤り率を有することであってよい。
【0056】
ブロック620において、マイクロサービスベースのアプリケーションの特定されたマイクロサービスごとに、既存のタイムアウト値および再試行値を決定する。既存のタイムアウト値は、最良の場合、名目上の場合、最悪の場合等などの異なる条件下にあるものであってよい。一実施形態では、参照データ・ソース112から受信される履歴の訓練データ113から、既存のタイムアウト値および再試行値を決定する。いくつかの実施形態では、既存のタイムアウト値および再試行値は、能動的に決定される。
【0057】
ブロック630において、ブロック620の決定された既存のタイムアウト値および再試行値に基づいて、タイムアウト値および再試行値の異なる組み合わせを用意する。そのために、各種実施形態では、タイムアウト値および再試行値の異なる組み合わせを特定するために、ブラックボックス最適化、グレーボックス最適化、または強化学習技術が使用される。一実施形態では、選択される組み合わせは、各々特定されたマイクロサービスの平均的なタイムアウト値および再試行値の所定の間隔内にある範囲に基づく。このようにして、非現実的な組み合わせを回避することができる。
【0058】
ブロック640において、ブロック630の用意された組み合わせの中で試されていない(例えば新規の)タイムアウト値および再試行値の組み合わせを検証する。検証は、クラウド上のマイクロサービスベースのアプリケーション上で直接、またはシミュレータによって実行することができる。一実施形態では、自動チューナ・エンジン110は、対象のアプリケーションのタイムアウト値および再試行値の設定の各々特定された組み合わせを検証するのにかかるであろう時間の長さを推定する。時間の長さが所定のしきい値を上回る場合はシミュレータが使用され、それによってマイクロサービスをホストするクラウド120の時間もしくはコンピューティング・リソースまたはその両方が節約される。
【0059】
ブロック650において、マイクロサービスベースのアプリケーションのマイクロサービスに関するタイムアウト値および再試行値の検証された組み合わせに対して報酬値を決定する。
【0060】
一実施形態では、修正モデルを使用して、シミュレータによって得られた報酬値の結果を修正する。この点について、ブロック660では、検証された組み合わせに対する報酬値の精度を高めるために、シミュレータによって得られたデータに、修正モデルを適用する。
【0061】
ブロック670において、自動チューナ・エンジン110は、ブロック630において特定されたタイムアウト値および再試行値のすべての組み合わせが検証されたかどうかを判断する。すべての組み合わせが検証されていない場合(すなわち、判定ブロック670における「いいえ」)、プロセスはブロック640に戻り、タイムアウト値および再試行値の新規の組み合わせを検証する。すべての組み合わせが評価された(すなわち、判定ブロック670における「はい」)と判断すると、プロセスはブロック680に続く。
【0062】
ブロック680において、自動チューナ・エンジン110は、マイクロサービスベースのアプリケーションのマイクロサービスごとに最も高い報酬値を提供するタイムアウト値および再試行値の組み合わせを選択する。結果的に、特定されたマイクロサービスの各々が、それらの検証された対応するタイムアウト値および再試行値に設定される。
【0063】
例示的なコンピュータ・プラットフォーム
上記で述べた通り、ランダム系列の埋め込みを使用する有効なシンボル系列の分析に関する機能は、図1に示すように、無線または有線通信を介してデータ通信をするために接続された1つ以上のコンピューティング・デバイスを使用して実行することができる。図7は、訓練用入力データ・ソース、クラウド等などの各種のネットワーク化された構成要素と通信することができる、コンピュータ・ハードウェア・プラットフォームを図示する機能ブロック図である。具体的には、図7は、図1の分析サーバ116などのサーバを実装するために使用することができるようなネットワークまたはホスト・コンピュータ・プラットフォーム700を図示するものである。
【0064】
コンピュータ・プラットフォーム700は、中央演算処理装置(CPU:central processing unit)704、ハード・ディスク・ドライブ(HDD:hard disk drive)706、ランダム・アクセス・メモリ(RAM:random access memory)もしくはリード・オンリー・メモリ(ROM:read only memory)またはその両方708、キーボード710、マウス712、ディスプレイ714、およびシステムバス702に接続された通信インタフェース716を含み得る。
【0065】
一実施形態では、HDD706は、本明細書に記載される様式で、自動チューナ・エンジン740などの各種プロセスを実行することができるプログラムを記憶することを含む機能を有する。自動チューナ・エンジン740は、異なる機能を実行するように構成される、各種モジュールを有してもよい。例えば、1つ以上のコンピューティング・デバイスまたは参照データ・ソース112などのデータ・ソースと相互作用して、そこから訓練データまたは履歴データ113を受信するように動作する、相互作用モジュール742が存在してもよい。相互作用モジュール742は、また、本明細書で述べられた通り、クラウド120のサービスと通信するように動作する。
【0066】
一実施形態では、マイクロサービスベースのアプリケーションの各マイクロサービスのタイムアウトおよび再試行パラメータを最適化するために動作する、オプティマイザ・モジュール744がある。各種実施形態では、オプティマイザ・モジュール744は、自動チューナ・エンジン740の1つ以上の他のモジュールと相互作用して、タイムアウト値および再試行値の異なる組み合わせを特定するために、ブラックボックス最適化、グレーボックス最適化、または強化学習技術を提供してもよい。
【0067】
一実施形態では、訓練データ113、および/または、異なるタイムアウト値および再試行値の下でマイクロサービスベースのアプリケーションを実行することから得られた結果に対して、サポート・ベクトル・マシン(SVM:support vector machine)、ロジスティック回帰、ニューラル・ネットワーク等などの1つ以上の機械学習技術を実行するように動作する機械学習モジュール746がある。例えば、機械学習モジュール746を使用して、シミュレータ・モジュール748もしくは修正モジュール750またはその両方を作成することができる。
【0068】
それに応じて、数理モデルによってマイクロサービスベースのアプリケーションの性能をエミュレートするように動作する、シミュレータ・モジュール748が存在し得る。シミュレータ・モジュール748によって得られる報酬値の結果を修正するように動作する修正モジュール750が存在し得る。
【0069】
一実施形態では、システムをウェブ・サーバとして動作させるために、アパッチTMなどのプログラムが記憶されていてもよい。一実施形態では、HDD706は、JVM(JavaTM仮想マシン)を実現するために、JavaTM Runtime Environmentプログラムなどのような1つ以上のライブラリ・ソフトウェア・モジュールを含む実行アプリケーションを記憶することができる。
【0070】
例示的なクラウド・プラットフォーム
上記で述べた通り、マイクロサービスベースのアプリケーションのマイクロサービスのパラメータの自動チューニングに関する機能に、クラウド200(図1を参照のこと)が含まれていてもよい。本開示には、クラウド・コンピューティングについての詳細な説明が含まれるが、本明細書において明示された教示の実装形態は、クラウド・コンピューティング環境に限定されるものではないと理解すべきである。むしろ、本開示の実施形態は、現時点で既知の、または後に開発される任意の他の種類のコンピューティング環境とともに実装することができる。
【0071】
クラウド・コンピューティングは、最小限の管理労力またはサービス・プロバイダとの対話によって迅速にプロビジョニングおよび開放することができる、構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシンおよびサービス)の共用プールに対して便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス配信モデルである。このクラウド・モデルには、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルが含まれ得る。
【0072】
特徴は、以下の通りである。
【0073】
オンデマンドのセルフサービス:クラウド・コンシューマは、必要に応じて自動的に、サービス・プロバイダとの人的介入を必要とせずに、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
【0074】
広範なネットワーク・アクセス:機能はネットワークを通じて利用可能であり、異機種のシン・クライアント・プラットフォームまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)によって使用が促進される、標準的な機構を介してアクセスされる。
【0075】
リソース・プーリング:プロバイダのコンピューティング・リソースはプールされ、異なる物理リソースおよび仮想リソースを要求に応じて動的に割り当て、再設定するマルチテナント・モデルを使用して、複数のコンシューマに供給される。一般に、コンシューマは、提供されるリソースの正確な場所について制御することも、または知ることもないという点で、場所に依存していない感覚があるが、より高度な抽象化レベルで場所を特定することも可能であり得る(例えば、国、州、またはデータ・センタ)。
【0076】
迅速な融通性:機能は、素早くスケールアウトするために迅速かつ弾性的に、場合によっては自動的にプロビジョニングすることが可能であり、素早くスケールインするために迅速に開放することが可能である。コンシューマにとって、プロビジョニングに利用可能な機能は無制限であるように見えることが多く、いつでも任意の量を購入することができる。
【0077】
測定されるサービス:クラウド・システムは、計測機能を導入することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)に適切ないくつかの抽象化レベルでリソースの使用を自動的に制御して最適化する。リソースの使用状況を監視、制御、および報告して、利用されたサービスのプロバイダおよびコンシューマの双方に透明性を提供することができる。
【0078】
サービス・モデルは、以下の通りである。
【0079】
ソフトウェア・アズ・ア・サービス(SaaS:Software as a Service):コンシューマに提供される機能は、クラウド・インフラストラクチャ上で実行されるプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブベースの電子メール)などのシン・クライアント・インタフェースを介して、各種クライアント・デバイスからアクセスできる。コンシューマは、限られたユーザ固有のアプリケーション構成設定の考えられる例外を除き、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能までも含む、基盤となるクラウド・インフラストラクチャを管理または制御することはない。
【0080】
プラットフォーム・アズ・ア・サービス(PaaS:Platform as a Service):コンシューマに提供される機能は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、コンシューマが作成または取得したアプリケーションを、クラウド・インフラストラクチャ上にデプロイすることである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基盤となるクラウド・インフラストラクチャを管理または制御することはないが、デプロイされたアプリケーション、場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【0081】
インフラストラクチャ・アズ・ア・サービス(laaS:Infrastructure as a Service):コンシューマに提供される機能は、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングすることであり、コンシューマは、オペレーティング・システムおよびアプリケーションを含み得る、任意のソフトウェアをデプロイして実行することができる。コンシューマは、基盤となるクラウド・インフラストラクチャを管理または制御することはないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御することができる。
【0082】
デプロイメント・モデルは、以下の通りである。
【0083】
プライベート・クラウド:このクラウド・インフラストラクチャは、1つの組織のためにのみ運用される。組織またはサード・パーティによって管理されることができ、オンプレミスまたはオフプレミスに存在することができる。
【0084】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0085】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般公衆または大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【0086】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースティング)によって、固有の実体を残したままであるものの、互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合体である。
【0087】
クラウド・コンピューティング環境は、ステートレス性、疎結合性、モジュール性、および意味的相互運用性に重点を置いた、サービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0088】
次に、図8を参照すると、例示的なクラウド・コンピューティング環境800が図示されている。図示されるように、クラウド・コンピューティング環境800は、例えば、携帯情報機器(PDA:personal digital assistant)もしくはセルラ電話854A、デスクトップ・コンピュータ854B、ラップトップ・コンピュータ854C、もしくは車載コンピュータ・システム854Nまたはその組み合わせなどのクラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信することができる、1つ以上のクラウド・コンピューティング・ノード810を含む。ノード810は互いに通信していてもよい。それらは、上記で記載されるようなプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはそれらの組み合わせなどの1つ以上のネットワークに、物理的にまたは実質的に分類されていてもよい(図示せず)。これによって、クラウド・コンシューマがローカル・コンピューティング・デバイス上のリソースを維持する必要のないサービスとして、クラウド・コンピューティング環境850がインフラストラクチャ、プラットフォームもしくはソフトウェアまたはその両方を提供することができる。図8に示されるコンピューティング・デバイス854A~854Nの種類は、例示的なものにすぎないことが意図され、コンピューティング・ノード810およびクラウド・コンピューティング環境850は、任意の種類のネットワーク、もしくはネットワークアドレス可能な接続またはその両方を通じて(例えば、ウェブ・ブラウザを使用して)、任意の種類のコンピュータ化されたデバイスと通信することができるということが理解される。
【0089】
次に、図9を参照すると、クラウド・コンピューティング環境850(図8)によって提供される機能的な抽象化レイヤのセットが示されている。図9に示されるコンポーネント、レイヤおよび機能は、例示的なものにすぎないことが意図され、本開示の実施形態はこれらに限定されるものではないということがあらかじめ理解されよう。図示される通り、以下のレイヤおよび対応する機能が提供される。
【0090】
ハードウェアおよびソフトウェア・レイヤ960は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム961、RISC(縮小命令セット・コンピュータ)アーキテクチャベースのサーバ962、サーバ963、ブレード・サーバ964、記憶デバイス965、ならびにネットワークおよびネットワーク・コンポーネント966が挙げられる。いくつかの実施形態では、ソフトウェア・コンポーネントには、ネットワーク・アプリケーション・サーバ・ソフトウェア967およびデータベース・ソフトウェア968が含まれる。
【0091】
仮想化レイヤ970は、以下の仮想エンティティの例を提供することができる以下の抽象化レイヤを提供する:仮想サーバ971、仮想ストレージ972、仮想プライベート・ネットワークを含む仮想ネットワーク973、仮想アプリケーションおよび仮想オペレーティング・システム974、ならびに仮想クライアント975。
【0092】
一例では、管理レイヤ980は、下記に記載される機能を提供してもよい。リソース・プロビジョニング981は、クラウド・コンピューティング環境内でタスクを実行するために使用される、コンピューティング・リソースおよび他のリソースの動的な調達を提供する。計測および価格設定982は、クラウド・コンピューティング環境内でリソースが使用されることに伴うコスト追跡、およびこれらのリソースの消費に対する課金または支払請求を提供する。一例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでもよい。セキュリティは、クラウド・コンシューマおよびタスクの本人確認、ならびにデータおよび他のリソースの保護を提供する。ユーザ・ポータル983は、コンシューマおよびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス水準管理984は、要求されるサービス水準を満たすようにクラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス水準合意(SLA:Service Level Agreement)の計画および履行985は、クラウド・コンピューティング・リソースの事前配置およびその調達を提供するものであり、これにより、SLAに従った将来的な要件が予測される。
【0093】
ワークロード・レイヤ990は、クラウド・コンピューティング環境を使用することができる機能性の例を提供する。このレイヤから提供することのできるワークロードおよび機能の例としては、マッピングおよびナビゲーション991、ソフトウェア開発およびライフサイクル管理992、仮想クラスルームの教育提供993、データ分析処理994、トランザクション処理995、ならびに本明細書で述べたようなマイクロサービスベースのアプリケーション996が含まれる。
【0094】
結論
説明の目的のために、本教示の各種実施形態の記載を提示してきたが、包括的であること、または開示された実施形態に限定されることを意図しない。多数の変更および変形形態が、記載された実施形態の範囲および趣旨から逸脱することなく、当業者には明らかとなろう。本明細書で使用された用語は、実施形態の原理、実用的な用途または市場で見出される技術に対する技術的な改善を最もよく説明するために、または、他の当業者が本明細書にて開示される実施形態を理解することを可能にするために選択された。
【0095】
前述したものについて、最良の状態もしくは他の実施例またはその両方であると考えられるものを説明してきたが、そこに様々な変更を行ってもよく、本明細書にて開示される主題が様々な形式および実施例で実装されてもよく、本教示は、多数の用途において本明細書で説明してきたそのうちのいくつかが適用されるにすぎないということが理解される。以下の請求項によって、本教示の真の範囲内に含まれるあらゆる応用、変更、および変形を特許請求することが意図される。
【0096】
本明細書で述べられてきた構成要素、ステップ、特徴、目的、利益および利点は、例示的なものにすぎない。これらのいずれも、またそれらに関連する説明も、保護の範囲を限定することを意図するものではない。様々な利点が本明細書において述べられてきたが、すべての実施形態が、必ずしもすべての利点を含むというわけではないことが理解されよう。特に明記しない限り、本明細書に記載され、以下の請求項に含まれるすべての測定値、値、評価、場所、規模、サイズ、および他の仕様は、概算であって、正確なものではない。それらは、それらと関連する機能、およびそれらに属する従来技術において慣習的であるものと一致する、妥当な範囲を有することが意図される。
【0097】
多数の他の実施形態もまた考えられる。これらには、少数の、追加的な、もしくは異なるまたはその組み合わせの構成要素、ステップ、特徴、目的、利益および利点を有する実施形態が含まれる。これらにはまた、構成要素もしくはステップまたはその両方が配置された、もしくは異なる順序の、またはその両方の実施形態も含まれる。
【0098】
本開示の態様は、本開示の実施形態に従う、方法、装置(システム)およびコンピュータ・プログラム製品の、フローチャート図もしくはブロック図またはその両方を参照して本明細書で説明される。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令により実装することが可能であることが理解されよう。
【0099】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実行するための手段を生成するように、コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを生成するものであってよい。これらのコンピュータ可読プログラム命令はまた、コンピュータ可読記憶媒体中に記憶された命令を有するコンピュータ可読記憶媒体が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実行する命令を含む製造品を含むように、コンピュータ可読記憶媒体中に記憶され、コンピュータ、プログラム可能データ処理装置、もしくは他のデバイスまたはその両方に特定の仕方で機能するように指示することができるものであってよい。
【0100】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実行するように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させ、コンピュータ実行プロセスを生じさせてもよい。
【0101】
本明細書の図中のフローチャートおよびブロック図は、本開示の各種実施形態に従うシステム、方法、およびコンピュータ・プログラム製品の考えられる実装形態のアーキテクチャ、機能、および動作を図示する。この点について、フローチャートまたはブロック図における各ブロックは、指定された論理的機能(単数または複数)を実装するための1つ以上の実行可能な命令を含む、モジュール、セグメント、または命令の部分を表し得る。いくつかの代替的な実装形態では、ブロック内で言及される機能は、図中で言及される順序に関係なく発生する場合がある。例えば、連続的に示されている2つのブロックが、実際には実質的に同時に実行されてもよく、または、このブロックが、関与する機能性に応じて逆の順序で実行されてもよい。ブロック図もしくはフローチャート図またはその両方におけるそれぞれのブロック、ならびにブロック図もしくはフローチャート図またはその両方におけるブロックの組み合わせは、指定された機能もしくは動作を実施する、または特定用途向けハードウェアおよびコンピュータ命令の組み合わせを実行する、特定用途向けハードウェアに基づくシステムによって実装され得ることにも留意されたい。
【0102】
前述したものについて、例示的な実施形態とともに説明してきたが、「例示的な」という用語は、最良または最適なものを意味するものではなく、単に一例としての意味であるということが理解されよう。上記で直前に記載された場合を除き、記載された、または図示されたものについては、請求項に明示されているか否かに関わらず、あらゆる構成要素、ステップ、特徴、目的、利益、利点、または等価物が公衆に供されることを意図するものではなく、またはそのように解釈されるべきではない。
【0103】
本明細書において使用される用語および表現は、特定の意味が本明細書で説明されている場合以外は、それらの対応する調査および研究のそれぞれの領域に対してそのような用語および表現と一致するような、通常の意味を有するということが理解されよう。第1の、および第2の等などの関係性を示す用語は、そのような実体または動作間における、任意の実際のそのような関係性または順序を必ずしも必要としているか、または意味するものではなく、1つの実体または動作を単に別のものと区別するために使用され得る。用語「comprises(含む)」、「comprising(含む)」、またはそれらの任意の他の変形は、要素の列挙を含むプロセス、方法、物品、または装置が、それらの要素だけを含むのではなく、明示的に列挙されていない、またはそのようなプロセス、方法、物品もしくは装置に固有の他の要素を含み得るように、非排他的な包含を網羅することを意図する。「a」または「an」の後に続く要素は、要素を含むプロセス、方法、物品または装置内の追加の同一の要素の存在を、さらなる制約なしに排除するものではない。
【0104】
本開示の要約は、読者が技術的な開示の性質をすぐに確認することができるように提供される。本開示の要約は、請求項の範囲または意味を解釈したり、または限定したりするために使用されるものではないことを理解した上で提出される。加えて、前述の発明を実施するための形態では、本開示を簡素化するために、様々な特徴が各種実施形態においてまとめられていることが理解できる。本開示の方法は、特許請求される実施形態が各請求項に明示されたものよりも多くの特徴を要するという意図を反映するものと解釈すべきではない。むしろ、以下の請求項が反映するように、発明の主題は、単一の開示された実施形態のすべての特徴に満たない。従って、以下の請求項は、各請求項が別個の特許請求された主題として自立した状態で、本明細書において発明を実施するための形態に組み込まれる。
図1
図2
図3
図4A
図4B
図5
図6
図7
図8
図9