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

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

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

特許7658675ネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイする為のコンピュータ実装方法、コンピュータシステム及びコンピュータ・プログラム
<>
  • 特許-ネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイする為のコンピュータ実装方法、コンピュータシステム及びコンピュータ・プログラム 図1
  • 特許-ネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイする為のコンピュータ実装方法、コンピュータシステム及びコンピュータ・プログラム 図2
  • 特許-ネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイする為のコンピュータ実装方法、コンピュータシステム及びコンピュータ・プログラム 図3
  • 特許-ネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイする為のコンピュータ実装方法、コンピュータシステム及びコンピュータ・プログラム 図4
  • 特許-ネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイする為のコンピュータ実装方法、コンピュータシステム及びコンピュータ・プログラム 図5
  • 特許-ネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイする為のコンピュータ実装方法、コンピュータシステム及びコンピュータ・プログラム 図6
  • 特許-ネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイする為のコンピュータ実装方法、コンピュータシステム及びコンピュータ・プログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-31
(45)【発行日】2025-04-08
(54)【発明の名称】ネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイする為のコンピュータ実装方法、コンピュータシステム及びコンピュータ・プログラム
(51)【国際特許分類】
   H04W 36/38 20090101AFI20250401BHJP
   G06F 9/50 20060101ALI20250401BHJP
   H04W 92/22 20090101ALI20250401BHJP
【FI】
H04W36/38
G06F9/50 150C
G06F9/50 150A
H04W92/22
【請求項の数】 25
(21)【出願番号】P 2021178793
(22)【出願日】2021-11-01
(65)【公開番号】P2022077504
(43)【公開日】2022-05-23
【審査請求日】2024-04-11
(31)【優先権主張番号】17/094,906
(32)【優先日】2020-11-11
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ジョゼフ,コザヤ
(72)【発明者】
【氏名】ライアン,アンダーソン
【審査官】山岸 登
(56)【参考文献】
【文献】国際公開第2017/002735(WO,A1)
【文献】特開2019-211955(JP,A)
【文献】特表2019-532604(JP,A)
【文献】特表2020-506566(JP,A)
【文献】特表2007-500968(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F9/455-9/54
H04B7/24-7/26
H04W4/00-99/00
(57)【特許請求の範囲】
【請求項1】
ネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイするコンピュータ実装方法であって、
クライアントデバイス上でアプリケーションを実行すること、ここで、該アプリケーションは、1セットの2以上のエッジデバイス内の任意の1つのエッジデバイス上で実行可能な1セットのマイクロサービスを有する、
第1の時点での前記クライアントデバイスの状態を決定すること、ここで、該状態は、1以上のマイクロサービスが前記クライアントデバイスの為に現在実行されていること、及び現在実行されているマイクロサービスのそれぞれについて、エッジデバイスが該マイクロサービスを実行することを含む、
前記第1の時点に続く第2の時点で実行されそうな1以上のマイクロサービスを予測すること、
前記第2の時点での前記クライアントデバイスの場所を予測すること、及び
前記第2の時点で実行されると予測される1以上のマイクロサービスを実行する為の、前記1セットのエッジデバイス内の次の1つのエッジデバイスを、前記予測された場所に基づいて決定すること
を含む、前記コンピュータ実装方法。
【請求項2】
第1の時点で前記クライアントデバイスの状態を決定することが、
前記クライアントデバイスの前記決定された状態を、前記1セットの2以上のエッジデバイス内の少なくとも1つのエッジデバイスに送信すること
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記第1の時点に続く第2の時点で実行されそうな1以上のマイクロサービスを予測することが、
現在実行されている夫々のマイクロサービスが終了したときに、前記クライアントデバイスの為に現在実行されていないマイクロサービスが前記クライアントデバイスによって要求される確率を、該クライアントデバイスの為に現在実行されている該1以上のマイクロサービスのそれぞれについて決定すること、及び
決定された確率の順に前記マイクロサービスをランク付けすること
をさらに含む、請求項1又は2に記載のコンピュータ実装方法。
【請求項4】
現在実行されている夫々のマイクロサービスが終了したときに、前記クライアントデバイスの為に現在実行されていないマイクロサービスが前記クライアントデバイスによって要求される確率を、該クライアントデバイスの為に現在実行されている該1以上のマイクロサービスのそれぞれについて決定することが、
現在実行されているマイクロサービスが終了したときに、前記クライアントデバイスの為に現在実行されていないマイクロサービスが該クライアントデバイスによって要求されるであろう確率を、機械学習モデルを使用して決定すること
をさらに含む、請求項3に記載のコンピュータ実装方法。
【請求項5】
前記第2の時点での前記クライアントデバイスの場所を予測することが、
前記クライアントデバイスの移動の方向及び速度を決定すること、及び
前記クライアントデバイスの前記決定された移動の方向及び速度に基づいて、第2の時点での前記クライアントデバイスの位置を予測すること
をさらに含む、請求項1~4のいずれか1項に記載のコンピュータ実装方法。
【請求項6】
前記第2の時点で実行されると予測される該1以上のマイクロサービスを実行する為の、前記1セットのエッジデバイス内の次のエッジデバイスを、前記予測された場所に基づいて決定することが、
第1のエッジデバイスの計算能力を決定すること、
前記第1のエッジデバイスのワークロードを決定すること、
実行されそうな前記予測された1以上のマイクロサービスが前記第1のエッジデバイスにおいて前記第2の時点で実行される場合、運用サービスのレベルを予測すること、及び
運用サービスの前記レベルが運用サービスの閾レベル以上である場合、前記第1のエッジデバイスを次のエッジデバイスとして選択すること
によって、前記第1のエッジデバイスを次のエッジデバイスの候補として評価すること
をさらに含む、請求項1~5のいずれか1項に記載のコンピュータ実装方法。
【請求項7】
運用サービスの前記レベルが運用サービスの前記閾レベル未満である場合、前記第1のエッジデバイスを前記次のエッジデバイスとして選択しないこと、及び
第2のエッジデバイスを前記次のエッジデバイスの候補として評価すること
をさらに含む、請求項6に記載のコンピュータ実装方法。
【請求項8】
前記決定された次のエッジデバイス上で前記第2の時点で実行されると予測される前記1以上のマイクロサービスをデプロイする為に必要な時間を決定すること、及び
次のエッジデバイス上で実行されると予測される該1以上のマイクロサービスのデプロイメントを、前記決定された次のエッジデバイス上で第3の時点で開始すること、ここで、前記第3の時点は前記第2の時点の前であり、該第3の時点は、前記決定された次のエッジデバイス上で実行されると予測される該1以上のマイクロサービスをデプロイする為に必要である前記決定された時間に基づいて決定される、
をさらに含む、請求項1~7のいずれか1項に記載のコンピュータ実装方法。
【請求項9】
前記決定された次のエッジデバイス上で該第2の時点で実行されると予測される前記1以上のマイクロサービスをデプロイする為に必要な時間を決定することが、
前記決定された次のエッジデバイスの計算能力を決定すること、及び
前記決定された次のエッジデバイスのワークロードを決定すること
をさらに含む、請求項8に記載のコンピュータ実装方法。
【請求項10】
ネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイする為のコンピュータシステムであって、
1以上のプロセッサ、1以上のコンピュータ可読メモリ、1以上のコンピュータ可読有形記録媒体、及び前記1以上の可読メモリのうちの少なくとも1つを介して前記1以上のプロセッサのうちの少なくとも1つによって実行される為の、前記1以上の有形記録媒体のうちの少なくとも1つに格納されたプログラム命令を備えており、ここで、前記コンピュータシステムは、
クライアントデバイス上でアプリケーションを実行すること、ここで、該アプリケーションは、1セットの2以上のエッジデバイス内の任意の1つのエッジデバイス上で実行可能な1セットのマイクロサービスを有する、
第1の時点での前記クライアントデバイスの状態を決定すること、ここで、該状態は、1以上のマイクロサービスが前記クライアントデバイスの為に現在実行されていること、及び現在実行されているマイクロサービスのそれぞれについて、エッジデバイスが該マイクロサービスを実行することを含む、
前記第1の時点に続く第2の時点で実行されそうな1以上のマイクロサービスを予測すること、
前記第2の時点での前記クライアントデバイスの場所を予測すること、及び
前記第2の時点で実行されると予測される1以上のマイクロサービスを実行する為の、前記1セットのエッジデバイス内の次の1つのエッジデバイスを、前記予測された場所に基づいて決定すること
を含む方法を実行することができる、前記コンピュータシステム。
【請求項11】
第1の時点で前記クライアントデバイスの状態を決定することが、
前記クライアントデバイスの前記決定された状態を、前記1セットの2以上のエッジデバイス内の少なくとも1つのエッジデバイスに送信すること
をさらに含む、請求項10に記載のコンピュータシステム。
【請求項12】
前記第1の時点に続く第2の時点で実行されそうな1以上のマイクロサービスを予測することが、
現在実行されている夫々のマイクロサービスが終了したときに、前記クライアントデバイスの為に現在実行されていないマイクロサービスが前記クライアントデバイスによって要求される確率を、該クライアントデバイスの為に現在実行されている該1以上のマイクロサービスのそれぞれについて決定すること、及び
決定された確率の順に前記マイクロサービスをランク付けすること
をさらに含む、請求項10又は11に記載のコンピュータシステム。
【請求項13】
現在実行されている夫々のマイクロサービスが終了したときに、前記クライアントデバイスの為に現在実行されていないマイクロサービスが前記クライアントデバイスによって要求される確率を、該クライアントデバイスの為に現在実行されている該1以上のマイクロサービスのそれぞれについて決定することが、
現在実行されているマイクロサービスが終了したときに、前記クライアントデバイスの為に現在実行されていないマイクロサービスが該クライアントデバイスによって要求されるであろう確率を、機械学習モデルを使用して決定すること
をさらに含む、請求項12に記載のコンピュータシステム。
【請求項14】
前記第2の時点での前記クライアントデバイスの場所を予測することが、
前記クライアントデバイスの移動の方向及び速度を決定すること、及び
前記クライアントデバイスの前記決定された移動の方向及び速度に基づいて、第2の時点での前記クライアントデバイスの位置を予測すること
をさらに含む、請求項10~13のいずれか1項に記載のコンピュータシステム。
【請求項15】
前記第2の時点で実行されると予測される該1以上のマイクロサービスを実行する為の、前記1セットのエッジデバイス内の次のエッジデバイスを、前記予測された場所に基づいて決定することが、
第1のエッジデバイスの計算能力を決定すること、
前記第1のエッジデバイスのワークロードを決定すること、
実行されそうな前記予測された1以上のマイクロサービスが前記第1のエッジデバイスにおいて前記第2の時点で実行される場合、運用サービスのレベルを予測すること、及び
運用サービスの前記レベルが運用サービスの閾レベル以上である場合、前記第1のエッジデバイスを次のエッジデバイスとして選択すること
によって、前記第1のエッジデバイスを次のエッジデバイスの候補として評価すること
をさらに含む、請求項10~14のいずれか1項に記載のコンピュータシステム。
【請求項16】
運用サービスの前記レベルが運用サービスの前記閾レベル未満である場合、前記第1のエッジデバイスを前記次のエッジデバイスとして選択しないこと、及び
第2のエッジデバイスを前記次のエッジデバイスの候補として評価すること
をさらに含む、請求項15に記載のコンピュータシステム。
【請求項17】
前記決定された次のエッジデバイス上で前記第2の時点で実行されると予測される前記1以上のマイクロサービスをデプロイする為に必要な時間を決定すること、及び
次のエッジデバイス上で実行されると予測される該1以上のマイクロサービスのデプロイメントを、前記決定された次のエッジデバイス上で第3の時点で開始すること、ここで、前記第3の時点は前記第2の時点の前であり、該第3の時点は、前記決定された次のエッジデバイス上で実行されると予測される該1以上のマイクロサービスをデプロイする為に必要である前記決定された時間に基づいて決定される、
をさらに含む、請求項10~16のいずれか1項に記載のコンピュータシステム。
【請求項18】
前記決定された次のエッジデバイス上で該第2の時点で実行されると予測される前記1以上のマイクロサービスをデプロイする為に必要な時間を決定することが、
前記決定された次のエッジデバイスの計算能力を決定すること、及び
前記決定された次のエッジデバイスのワークロードを決定すること
をさらに含む、請求項17に記載のコンピュータシステム。
【請求項19】
ネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイする為のコンピュータ・プログラムであって、
クライアントデバイス上でアプリケーションを実行すること、ここで、該アプリケーションは、1セットの2以上のエッジデバイス内の任意の1つのエッジデバイス上で実行可能な1セットのマイクロサービスを有する、
第1の時点での前記クライアントデバイスの状態を決定すること、ここで、該状態は、1以上のマイクロサービスが前記クライアントデバイスの為に現在実行されていること、及び現在実行されているマイクロサービスのそれぞれについて、エッジデバイスが該マイクロサービスを実行することを含む、
前記第1の時点に続く第2の時点で実行されそうな1以上のマイクロサービスを予測すること、
前記第2の時点での前記クライアントデバイスの場所を予測すること、及び
前記第2の時点で実行されると予測される1以上のマイクロサービスを実行する為の、前記1セットのエッジデバイス内の次の1つのエッジデバイスを、前記予測された場所に基づいて決定すること
をコンピュータに実行させる、前記コンピュータ・プログラム。
【請求項20】
第1の時点で前記クライアントデバイスの状態を決定することが、
前記クライアントデバイスの前記決定された状態を、前記1セットの2以上のエッジデバイス内の少なくとも1つのエッジデバイスに送信すること
をさらに含む、請求項19に記載のコンピュータ・プログラム。
【請求項21】
前記第1の時点に続く第2の時点で実行されそうな1以上のマイクロサービスを予測することが、
現在実行されている夫々のマイクロサービスが終了したときに、前記クライアントデバイスの為に現在実行されていないマイクロサービスが前記クライアントデバイスによって要求される確率を、該クライアントデバイスの為に現在実行されている該1以上のマイクロサービスのそれぞれについて決定すること、及び
決定された確率の順に前記マイクロサービスをランク付けすること
をさらに含む、請求項19又は20に記載のコンピュータ・プログラム。
【請求項22】
現在実行されている夫々のマイクロサービスが終了したときに、前記クライアントデバイスの為に現在実行されていないマイクロサービスが前記クライアントデバイスによって要求される確率を、該クライアントデバイスの為に現在実行されている該1以上のマイクロサービスのそれぞれについて決定することが、
現在実行されているマイクロサービスが終了したときに、前記クライアントデバイスの為に現在実行されていないマイクロサービスが該クライアントデバイスによって要求されるであろう確率を、機械学習モデルを使用して決定すること
をさらに含む、請求項21に記載のコンピュータ・プログラム。
【請求項23】
前記第2の時点での前記クライアントデバイスの場所を予測することが、
前記クライアントデバイスの移動の方向及び速度を決定すること、及び
前記クライアントデバイスの前記決定された移動の方向及び速度に基づいて、第2の時点での前記クライアントデバイスの位置を予測すること
をさらに含む、請求項19~22のいずれか1項に記載のコンピュータ・プログラム。
【請求項24】
前記第2の時点で実行されると予測される該1以上のマイクロサービスを実行する為の、前記1セットのエッジデバイス内の次のエッジデバイスを、前記予測された場所に基づいて決定することが、
第1のエッジデバイスの計算能力を決定すること、
前記第1のエッジデバイスのワークロードを決定すること、
実行されそうな前記予測された1以上のマイクロサービスが前記第1のエッジデバイスにおいて前記第2の時点で実行される場合、運用サービスのレベルを予測すること、及び
運用サービスの前記レベルが運用サービスの閾レベル以上である場合、前記第1のエッジデバイスを次のエッジデバイスとして選択すること
によって、前記第1のエッジデバイスを次のエッジデバイスの候補として評価すること
をさらに含む、請求項19~23のいずれか1項に記載のコンピュータ・プログラム。
【請求項25】
運用サービスの前記レベルが運用サービスの前記閾レベル未満である場合、前記第1のエッジデバイスを前記次のエッジデバイスとして選択しないこと、及び
第2のエッジデバイスを前記次のエッジデバイスの候補として評価すること
をさらに含む、請求項24に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、モバイルアプリケーションの為のインテリジェントな動的通信ハンドオフ、特にはネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイする為のコンピュータ実装方法、コンピュータシステム及びコンピュータ・プログラムに関する。
【0002】
実施態様は、一般的に無線通信に関連し、より特には、ソフトウェアマイクロサービスをエッジノード(すなわち、エッジデバイス)に予測的にデプロイして、無線ネットワークにおける迅速な通信ハンドオフを可能にする方法に関連する。
【背景技術】
【0003】
無線ネットワークシステムは、世界中の他の人と通信し且つコンテンツに関与する為の一般的な手段になってきている。無線通信機器、例えば携帯電話、タブレットコンピュータ等、は、消費者のニーズを満たす為に並びに携帯性及び利便性を向上させる為に、より小型化し及びより高性能化が進んでいる。消費者はこれらのデバイスに依存するようになってきており、信頼性のあるサービス、対象範囲の拡大、追加サービス(例えば、Webブラウジング機能)、及びそのようなデバイスのサイズ及びコストの継続的な低減を要求している。
【0004】
ワイヤレスネットワークがユビキタスである為の最もチャレンジングな要件の1つは、サービス品質と接続性とを損なうこと無しに、いつでも且つどこでもモビリティを許す為の能力である。そのようなモビリティサポートは、様々なモビリティプロファイルを持つユーザが、様々なモバイルアプリケーションにアクセスし続けながら、様々な地理的領域を横断することを許す。モビリティ管理をサポートする中心的なコンポーネントは、ハンドオーバーメカニズム(handover mechanisms)である。セルラー遠隔通信(cellular telecommunications)において、ハンドオーバー又はハンドオフという語は、コアネットワークに接続された1つのチャネルから別のチャネルに進行中の通話又はデータセッションを転送するプロセスを云う。衛星通信において、サービスの損失又は中断無しに、衛星制御の責任を或る地球局から別の地球局に移すプロセスである。ハンドオーバーメカニズムは、ユーザが、事前にプログラムされた或る条件が満たされたときに、モバイルネットワーク内の物理的な接続ポイントを変更することを許す。例えば、ユーザにサービスを提供している現在の基地局からの受信された信号電力が或る閾値を下回り、且つ同時に、近くの別の基地局についての受信された信号電力が或る閾値を上回った場合に、接続点、すなわち基地局、を変更する決定は、ユーザデバイスと協調してネットワークインフラストラクチャ内のデバイスによって行われることができる。
【0005】
世界的なモバイルネットワークインフラストラクチャは、5G、すなわち第5世代、のテクノロジーとして知られるテクノロジーへの移行の最中である。現在のネットワークシナリオと比較すると、将来の5Gネットワークシナリオははるかにより複雑になるであろう。ネットワークのこの増大された複雑さに寄与するのは、ユーザとデバイスとによる高品質のデータについての需要の高まりであり、それらはまた指数関数的に増加すると予想される。また、例えば、仮想現実(VR:Virtual Reality)、拡張現実(AR:Augmented Reality)、ゲーム、メッセージング、ビデオ再生など、今日一般的に使用されている従来の「音声及びデータ」アプリケーションをはるかに超える、技術的に多様なアプリケーションが存在する。様々な無線アクセス技術、すなわち5G NR(5G New Radio)、LTE、3G、2G、Wi-Fi、及び幅広いモビリティプロファイル、例えば高速列車、飛行機、車又は徒歩のユーザを包含する幅広いモビリティプロファイル、がある。以前のモバイルネットワーク世代の従来のスペクトル帯域とははるかに異なる振る舞いをする新しいスペクトル帯域、例えばミリ波周波数、の追加は言うまでも無く、5Gネットワークの複雑さは、これら要因の全てによってさらに悪化される。
【0006】
そのような環境において、通信ハンドオフの既存の静的技法(static techniques)がワークロードの変動に苦しみ、コンピューティング及び接続の継続性の喪失を結果としてもたらし、最終的に不十分なユーザエクスペリエンスを結果として生じうる。例えば、現在のモバイルネットワークのシナリオにおいて、ネットワークは、ハンドオーバーをトリガーし、準備し、実行し、及び完了する為のかなりの時間を有する。しかしながら、同じことが、アクセスポイントの密度が高くなるであろう、すなわちより小さいカバレッジエリア(coverage areas)及びより広い帯域幅を有するアクセスポイントが所与のエリアにおいてより密集するであろう、将来のネットワークには当てはまらない。加えて、非常に大きいカバレッジエリアを有するマクロセルが、小さなセルを支援する為に存在するであろう。上記された現在のハンドオーバーメカニズムが使用された場合、該ハンドオーバーを完了する為の時間は、ユーザが所望された基地局に存在しうる時間よりもはるかに長くなる可能性があるが、状況は、リンクを確立する為に依然として好ましい。リソースの割り当てとネゴシエーションプロセスとを実行する為に利用可能な時間が短い場合、確立されたハンドオーバーメカニズムでは接続の損失がより高いリスクであり、及びこのことは、不十分なネットワークパフォーマンスを結果として生じる可能性がある。セルの高密度化によって引き起こされる障害、及びまた様々な無線アクセステクノロジーの存在、すなわち4G LTEと古いテクノロジー、例えばWi-Fi、との間の多くの潜在的なハンドオフ、の故に、ハンドオーバーシグナリングのオーバーヘッドがまた、ネットワークパフォーマンスのコンテキストにおいて非常に重要になるであろう。それ故に、遅延とシグナリングオーバーヘッドとが削減されるハンドオーバープロセスを最適化することは、将来のハンドオーバー管理戦略の極めて重要なコンポーネントになるであろう。
【0007】
例えば、ゲーム内で仮想的に戦闘を行っている間に、プレイヤーがARマーカーを備えた広い物理領域上を或る場所から別の場所に移動する必要があるARゲームアプリケーションのシナリオを考えてみる。プレイヤーが物理的な場所から別の場所にすばやく移動するとき、サーバが中央の場所(「クラウド」してまた知られている)にあるか又はネットワークエッジでユーザに近いかにかかわらず、ゲームサーバとのユーザ通信は、或るネットワークリピータから別のネットワークリピータへの迅速なハンドオフを介して、有効にされる必要があるだろう。上述された通り、既存のハンドオーバーメカニズムは、プレイヤーの動きの動的な性質と、高帯域幅及び高コンピューティングリソースの対応する必要性とを処理する為にはあまりにも遅すぎる可能性がある。
【0008】
5Gワイヤレスネットワークはまた、エッジコンピューティングモデルとして知られているものにも役立つ。エッジコンピューティングは、情報処理がネットワークエッジの近くに配置されている分散コンピューティングフレームワークであり、該ネットワークエッジでは、物及び人がその情報を生成又は消費する場所である。エッジコンピューティングは、5Gワイヤレスネットワークについて前述された通り、数千マイル離れた中央の場所に依存するのではなく、計算(computation)及びデータストレージが収集されるところのデバイスに近づけ、より分散化された環境を結果として生じる。
【0009】
エッジコンピューティングは、インターネット対応デバイス、例えば自動運転車、又は家庭内の日常的なデバイス、例えばセキュリティカメラ若しくはサーモスタット、又は商業環境では製造ラインの自動化されたデバイスの急激な成長の為に開発された。これらのデバイスは現在、クラウドから情報を受信するか又はクラウドにデータを返送する為にネットワークを使用する。これらの「エッジデバイス」の多くは、それらの運用の過程の間に、膨大な量のデータを生成する。例として、工場のフロアにおける製造設備を監視するデバイス、又はリモートオフィスからライブ映像を送信するインターネット接続されたビデオカメラについて考える。データを生成する単一のデバイスはネットワークを介してデータを非常に簡単に送信することができるが、同時にデータを送信するデバイスの数が増えると問題が発生する。1台のビデオカメラがライブ映像を送信する代わりに、数百又は数千のデバイスがデータを送信し又は受信している可能性があり、遅延及び莫大な帯域幅コストの故に品質の潜在的な損失を結果として生じる。
【0010】
エッジコンピューティングのハードウェア及びサービスは、これらのシステムの多くの為の処理及びストレージのローカルソースであることによって、この問題を解決するのに役立つ。エッジサーバは、例えば、エッジデバイスからのデータを処理し得、そして次に、関連するデータのみをクラウドを経由して返送し得、それによって帯域幅のニーズを削減し、又はエッジサーバは、リアルタイムのアプリケーションが必要である場合はデータをエッジデバイスに返送しうる。これらのエッジデバイスは、様々なもの、例えばスマートサーモスタット、従業員のノートブックコンピュータ、従業員の最新のスマートフォン、セキュリティカメラ、又はさらにはオフィスの休憩室にあるインターネットに接続された電子レンジ、を包含しうる。エッジサーバそれ自体は、及びさらには5Gネットワークにインストールされているネットワークリピータ、例えばセルタワー、マイクロセル、Wi-Fiアクセスポイント、が、エッジコンピューティングインフラストラクチャ内のエッジデバイスと見なされうる。
【0011】
5Gワイヤレスインフラストラクチャとエッジコンピューティングモデルと連携して、近年普及している「マイクロサービスアーキテクチャ」として知られているソフトウェア開発の方法がまた、この分散型環境(decentralized environment)にふさわしい。「マイクロサービスアーキテクチャ」は、独立してデプロイ可能なマイクロサービスのスイート(suites)としてソフトウェアアプリケーションを設計する特定の方法を云う。これらのマイクロサービスはそれらの独自のプロセスで実行され、及びネットワークを介して相互に通信し、最小限の集中された管理を用いて、テクノロジーに依存しない軽量プロトコル(technology-agnostic and lightweight protocols)、例えばハイパーテキスト転送プロトコル(HTTP:Hypertext Transfer Protocol)、を使用して目標をまとめて達成する。マイクロサービスは、特定のマイクロサービスに最適なものに応じて、様々なプログラミング言語、データベース、又はハードウェア及びソフトウェアの環境を使用して実装されうる。マイクロサービスは、サイズが小さく、メッセージング対応で、自律的に開発され、独立してデプロイ可能であり、及び自動化されたプロセスで構築及びリリースされうる。これらの特性の為に、マイクロサービスアーキテクチャは、クラウドネイティブアプリケーション(cloud-native applications)、サーバーレスコンピューティング、及びライトウェイト(軽量)コンテナデプロイメント(lightweight container deployment)を使用するアプリケーション、すなわち5Gワイヤレス環境及びエッジコンピューティング環境において一般に行われるまさにその条件、に採用されるのが一般的である。
【発明の概要】
【発明が解決しようとする課題】
【0012】
本発明は、ネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイする為のコンピュータ実装方法、コンピュータシステム及びコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【0013】
一つの実施態様は、ネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイする為のコンピュータ実装方法に向けられている。該方法は、クライアントデバイス上でアプリケーションを実行することを含み得、ここで、該アプリケーションは、1セットの2以上のエッジデバイス内の任意の1つのエッジデバイス上で実行可能な1セットのマイクロサービスを有する。
【0014】
該方法はまた、第1の時点での該クライアントデバイスの状態を決定することを含み得、ここで、該状態は、1以上のマイクロサービスが該クライアントデバイスの為に現在実行されていること、及び現在実行されているマイクロサービスのそれぞれについて、エッジデバイスが該マイクロサービスを実行することを含む。該第1のクライアントデバイスの決定された状態が、該1セットの2以上のエッジデバイス内の少なくとも1つのエッジデバイスに送信されうる。
【0015】
加えて、該方法は、該第1の時点に続く第2の時点で実行されそうな1以上のマイクロサービスを予測することを含みうる。これは、
現在実行されている夫々のマイクロサービスが終了したときに、該クライアントデバイスの為に現在実行されていないマイクロサービスが該クライアントデバイスによって要求される確率を、該クライアントデバイスの為に現在実行されている該1以上のマイクロサービスのそれぞれについて決定すること、及び、決定された確率の順に該マイクロサービスをランク付けすることを含みうる。現在実行されているマイクロサービスが終了したときに、該クライアントデバイスの為に現在実行されていないマイクロサービスが該クライアントデバイスによって要求されるであろう確率を決定する為に、機械学習モデルが使用されうる。
【0016】
該方法はさらに、該第2の時点での該クライアントデバイスの場所を予測することを含みうる。該クライアントデバイスの移動の方向及び速度が決定され得、そして該クライアントデバイスの該決定された移動の方向及び速度に基づいて、該第2の時点での該クライアントデバイスの位置が予測されうる。
【0017】
該方法はまた、該第2の時点で実行されると予測される1以上のマイクロサービスを実行する為の、該1セットのエッジデバイス内の次の1つのエッジデバイスを、該予測された場所に基づいて決定することを含みうる。次のエッジデバイスの候補としての第1のエッジデバイスは、該第1のエッジデバイスの計算能力を決定すること、該第1のエッジデバイスのワークロードを決定すること、実行されそうな該予測された1以上のマイクロサービスが該第1のエッジデバイスにおいて該第2の時点で実行される場合、運用サービスのレベルを予測すること、及び運用サービスの該レベルが運用サービスの閾レベル以上である場合、該第1のエッジデバイスを次のエッジデバイスとして選択することによって、評価されうる。運用サービスの該レベルが運用サービスの該閾レベル未満である場合、該第1のエッジデバイスが該次のエッジデバイスとして選択され得ず、及び第2のエッジデバイスが、該次のエッジデバイスの候補として評価されうる。
【0018】
最後に、該方法は、該決定された次のエッジデバイス上で該第2の時点で実行されると予測される該1以上のマイクロサービスをデプロイする為に必要な時間を決定すること、及び、次のエッジデバイス上で実行されると予測される該1以上のマイクロサービスのデプロイメントを、該決定された次のエッジデバイス上で第3の時点で開始すること、ここで、該第3の時点は該第2の時点の前であり、ここで、該第3の時点は、該決定された次のエッジデバイス上で実行されると予測される該1以上のマイクロサービスをデプロイする為に必要である該決定された時間に基づいて決定される。該決定された次のエッジデバイスの計算能力及びワークロードがまた決定されうる。
【0019】
コンピュータ実装方法に加えて、追加の実施態様は、ネットワーク内でエッジデバイスにおいてマイクロサービスを予測的にデプロイする為のシステム及びコンピュータ・プログラム製品に向けられている。
【0020】
この要約は、以下の発明の詳細な説明において更に記載されている簡略化された形式で概念の選択を紹介する為に提供されている。この要約は、特許請求された主題の主要な特徴又は本質的な特徴を特定することを意図しておらず、特許請求された主題の範囲を決定する際の補助として使用されることも意図されていない。
【図面の簡単な説明】
【0021】
図1図1は、様々な実施態様が実装されうる、例示的なコンピュータシステムのブロック図である。
図2図2は、一つの実施態様に従う、例示的なマイクロサービス相互作用図を示す。
図3図3は、一つの実施態様に従う、複数のエッジデバイスの間を移動するクライアントデバイスを備えた、例示的なモバイル無線ネットワークを示す。
図4図4は、1以上の実施態様に従う、モバイル無線ネットワークアーキテクチャにおけるマイクロサービス予測プロセスのフローチャート図である。
図5図5は、モバイルワイヤレスネットワークにおいて次に必要であるマイクロサービスの見込み(likelihood)を判断する為のマイクロサービス予測モジュールの入力及び機械学習モデルのブロック図を示す。
図6図6は、本発明の一つの実施態様に従うクラウドコンピューティング環境を示す。
図7図7は、本発明の一つの実施態様に従う抽象化モデル層を示す。
【発明を実施するための形態】
【0022】
ワイヤレス環境の例において、ネットワークインフラストラクチャ(リピータ及びサーバ)によってサポートされるべき多数のソフトウェアアプリケーションがあり、ここで、各アプリケーションは1セットのマイクロサービスを有する。このシナリオにおいて、該マイクロサービスをデプロイし、且つエッジデバイスがユーザからのデータを処理する必要があるときに、適切なエッジデバイス(この場合には、ネットワークリピータ)において実行する準備をさせることが重要である。該エッジデバイスは、限られたコンピューティング機能は有しており、従って、アプリケーションの全てのマイクロサービスをデプロイし、そして全てのエッジデバイスで実行することは実現可能でない。ネットワークによってサービスされている全てのユーザのニーズを満たす為に、どのマイクロサービスがどのエッジデバイス上で且つどの時点でデプロイされるか識別することは有用である。マイクロサービスがエッジデバイス上にデプロイされるまでには幾らかの時間がかかり、及びマイクロサービスがいつ準備される必要があるかを決定する際に、その時間が考慮されなければならない。計算及び帯域幅能力(compute and bandwidth capacity)を備えたネットワークリピータ又はエッジデバイスの数を考えると、特定のマイクロサービスが特定のエッジデバイスで次に必要とされそうであるかを判断する必要がある。
【0023】
ここで図1を参照すると、一つの実施態様において、エッジサーバ内に埋め込まれうるコンピュータシステム100を示すブロック図が示されている。他の実施態様において、コンピュータシステム100は、ネットワークリピータ、例えばセルタワー(cell tower)又は5Gマイクロセル、内に埋め込まれうる。さらに別の実施態様において、コンピュータシステム100は、クライアントデバイス又はモバイルクライアントデバイス内に埋め込まれ得、その例は、携帯電話、スマートフォン、タブレット、ラップトップ、車両に埋め込まれたコンピューティングデバイス、ウェアラブルコンピューティングデバイス、仮想又は拡張現実眼鏡又はヘッドセット等を包含する。示されている通り、コンピュータシステム100は、プロセッサユニット102、メモリユニット104、永続ストレージ106、通信ユニット112、入力/出力ユニット114、ディスプレイ116、及びシステムバス110を備えている。コンピュータ・プログラム、例えばマイクロサービス予測モジュール120、は実行の為に必要になるまで、永続ストレージ106内に格納され得、その時点で、該プログラムは、プロセッサユニット102によって直接的アクセスされることができるように、メモリユニット104内にもたらされる。プロセッサユニット102は、読み取り若しくは書き込み又はその組み合わせの要求とともに、プロセッサ102がメモリ104に与えるアドレスを使用することによって、読み取り若しくは書き込み又はその組み合わせを行うメモリユニット104の一部を選択する。通常、アドレスでの符号化された命令の読み取り及び解釈は、プロセッサ102が、後続のアドレス又は幾つかの他のアドレスのいずれかで、後続の命令をフェッチするようにさせる。プロセッサユニット102、メモリユニット104、永続ストレージ106、通信ユニット112、入力/出力ユニット114、及びディスプレイ116は、システムバス110を介して互いにインタフェースする。
【0024】
図2を参照すると、マイクロサービス相互作用の例を示す図が示されており、該図は、プロセスを説明する例として図4と組み合わせて使用される。この例において、例示的なアプリケーションのマイクロサービス202~222は、最初は特定の順序で実行されるが、最初の期間の後、様々なマイクロサービスがユーザのアクションに基づいて様々な時点でトリガーされ得、従って、マイクロサービスがどのようにトリガーされるかに固有の順序はない。マイクロサービス予測モジュール120は、どの1以上のマイクロサービスが時間Tで所与のエッジデバイスDで必要とされる可能性が最も高いかを予測し得、そして、そのようなマイクロサービスをデプロイする動作を開始し得、従って、該マイクロサービスが必要とされるときに実行するように準備される。
【0025】
図3を参照すると、モバイル無線ネットワークの例が示されている。クライアントデバイス310は、範囲306内に示されており、及び次のエッジデバイス304の範囲308内へ方向320に移動しながら現在のエッジデバイス302と通信する。携帯電話が図3のクライアントデバイスの一例として示されているが、クライアントデバイス310は任意のモバイル装置、例えば、携帯電話、スマートフォン、タブレット、ラップトップ、車両に埋め込まれたコンピューティングデバイス、ウェアラブルコンピューティングデバイス、仮想又は拡張現実眼鏡又はヘッドセット、でありうることを理解されたい。加えて、エッジノード302、304はセルタワーとして示されているが、車両、例えばコンテナ化されたエンターテインメントシステム(containerized entertainment system)を有する車両、はエッジノードでありうることが理解されるべきである。クライアントデバイス310が現在のエッジデバイス302の範囲306の外へ移動し、そして次のエッジデバイス304の範囲308内に移動すると、現在のエッジデバイス302は通信を次のエッジデバイス304にハンドオフする。現在のエッジデバイス302及び次のエッジデバイス304は、「隣接する」エッジデバイスであると言われる。この例において、マイクロサービス予測モジュール120によって次に必要とされる可能性が高いと計算されるマイクロサービスが、ハンドオーバーの前に次のエッジデバイス304上にデプロイされうる。説明を簡単にする為に、図3は、1つの現在のエッジデバイス、1つの次のエッジデバイス、及び単一の方向に移動する単一のクライアントデバイスのみを示すが、実際には、単一のエッジデバイスが2以上の方向に移動する幾つかのクライアントデバイスを一度にサービスし得、及び単一の現在のエッジデバイスが次のエッジデバイスとして働くであろう複数の隣接するエッジデバイスを有しうることを当業者によって理解されるべきである。
【0026】
図4を参照すると、必要とされるマイクロサービスをデプロイする為の予測プロセス400のフローチャートが示されている。様々な実施態様において、このプロセスの動作のうちの幾つか又は全てが、エッジサーバ又はエッジデバイスによって実行されうる。他の実施態様において、このプロセスの該動作のうちの幾つか又は全てが、モバイルネットワークリピータによって実行されうる。
【0027】
402において、マイクロサービス予測モジュール120は、各クライアントデバイス(i)の状態(ST)を決定し、そして、全てのエッジデバイス(D)に配布(又は送信)しうる、ここで、該状態は、どのエッジデバイスに該クライアントデバイスが現在接続されているか、及びどの1以上のマイクロサービスで該クライアントデバイスが、例えば第1の時点で、現在実行されているか、をキャプチャする。図2の例に示されているマイクロサービスを参照すると、N個のクライアントデバイスが与えられた場合、クライアントデバイスi=1の状態はST1={D1,202}であり、それはクライアントデバイス1が現在エッジデバイスD1に接続されており、及び現在マイクロサービス202(それは、例として認証マイクロサービスでありうる)を実行していることを示す。クライアントデバイスi=2の状態はST2={D4,202}であり、これは、クライアントデバイス2が現在デバイスD4に接続されており、及び現在マイクロサービス202を実行していることを示す。この例は、簡単にする為に、ユーザの状態毎に1つのマイクロサービスを参照しているが、同じエッジデバイスが、状態毎に単一のクライアントデバイスに対して複数のマイクロサービスを実行しうる、例えば、ST3={D1,206,216}、ことに留意されるべきである。加えて、単一のエッジデバイスは、2以上のクライアントデバイスについて同じマイクロサービスを同時に実行しうる、例えば、ST1={D1,202}及びST5={D1,202}。
【0028】
404において、マイクロサービス予測モジュール120は、どのクライアントデバイスがサービスしているかを、隣接するエッジデバイスから収集しうる。結果は、クライアントデバイスとそれらに対応する状態のリストである。例えば、エッジデバイスDjについてのクライアントデバイスのリストは、{U1,U4,U8,U9,...}であり得、及びエッジデバイスDj上のこれらのクライアントデバイスの対応する状態は、{ST1,ST4,ST8,ST9,...}でありうる。隣接するエッジデバイスで提供されるクライアントデバイス及びそれらの状態のこれらのリストから、マイクロサービス予測モジュール120は、例えば第1の時点で、現在実行されているマイクロサービスを抽出しうる。例えば、クライアントデバイス1についての状態がマイクロサービス206を示し、及びクライアントデバイス2についての状態がマイクロサービス204を示す場合、そのエッジデバイスで実行されているマイクロサービスのリストは204、206等を含む。エッジデバイスDj上で実行されているマイクロサービスのサンプルリストは、{204,206,210,206,204,214,...}でありうる。同じマイクロサービスが複数回、すなわち異なるクライアントデバイスが、同じマイクロサービスを実行している隣接するデバイスによってサービスされている場合、表示されうることが留意されるべきである。
【0029】
406において、マイクロサービス予測モジュール120は、現在実行されているマイクロサービスのリストに基づいて、次に実行されそうなマイクロサービスを識別(又は予測)しうる。最初は、これは固定された構成設定に基づきうるが、その後、時間の経過とともに、410において記載されている通り、実際の実行に従って予測が改善されうる。例として、現在実行されているマイクロサービスのリストは、204の3つのオカレンス(又はインスタンス)(204を現在使用している3つのクライアントデバイスに対応する)、206の1つのオカレンス、及び214の5つのオカレンスを含みうる。この場合、マイクロサービス予測モジュール120は、次に最も必要とされそうなマイクロサービスが222及び204であり、ここで、それぞれが確率p=(5/9)*(1/2)を有し、ここで、5/9は214のオカレンスの数(number of occurrences)に基づき、及び1/2は図2の例に基づき、ここで、最初の仮定は、222又は204が、214の後に等しい確率で実行されるであろうということである。また、このリストにおいて、次に実行されそうなマイクロサービスは、確率p=(3/9)*1を有する206、ここで、3/9は204のオカレンスの数に基づき、及び1は図2の例に基づき、ここで、206のみが204の後に実行される、並びに確率p=(1/9)*1を有する208、ここで、1/9は206オカレンスの数に基づき、及び1は図2の例に基づき、ここで、208のみが206の後に実行される、でありうる。
【0030】
ステップ406で次に実行されそうなマイクロサービスを予測することに加えて、マイクロサービス予測モジュール120はまた、適切な次のエッジデバイス304を選択する為に、該クライアントデバイス(又は該クライアントデバイスのユーザが位置している車両)の移動の方向及び速度を決定することによって、該クライアントデバイスの居そうな場所を予測しうる。マイクロサービス予測モジュール120はまた、該クライアントデバイスの移動の方向及び速度に基づいて、クライアントデバイス310が適切な次のエッジデバイス304の通信範囲(又はハンドオフ範囲)内にあると予測される時点を予測する。従って、マイクロサービス予測モジュール120は、第1の時点に続く第2の時点で実行されそうな1以上のマイクロサービス、及び第2の時点でのクライアントデバイスの場所を予測しうる。さらに、マイクロサービス予測モジュール120は、第2の時点で実行されると予測されるマイクロサービスを実行する為の、1セットのエッジデバイス内の次のエッジデバイスを、該予測された場所に基づいて決定し得、及び、該決定された次のエッジデバイス上で第2の時点で実行されると予測されるマイクロサービスをデプロイする為に必要な時間を決定しうる。
【0031】
408において、マイクロサービス予測モジュール120は、前のステップの予測と、このステップで計算されるエッジデバイスの潜在的なコンピューティング制限又はメモリ制限又は帯域幅制限との一致に従って、次のエッジデバイス304上にマイクロサービスをデプロイしうる。各次のエッジデバイス304は、各夫々のマイクロサービスをロードする為に必要とされる起動時間(start-up time)を計算し得、それは、エッジデバイスがハードウェア及びソフトウェア並びにワークロードの観点の両方で異種でありうる故に、エッジデバイスによって異なりうる。例えば、特定のマイクロサービスがセルタワーにおいてロードされる為に必要とされる時間は、5Gマイクロセルの時間とは大きく異なりうる。異なるエッジデバイスは、プロセッサの異なる種類及び数、メモリの異なる量及び種類、ソフトウェアの異なる種類及びバージョンを有しうる。その上、特定の時点での特定のエッジデバイスにおける特定のマイクロサービスについての起動時間は、その時点でエッジデバイスにおいて現在実行されている他の処理の量に依存しうる。起動時間はまた、特定のマイクロサービスの属性、例えばコードのサイズ及び必要なライブラリ、に依存する。起動時間の計算は、これらの因子の一部又は全てを説明しうる。下記のような表が計算されうる。
【0032】
【表1】
【0033】
マイクロサービス予測モジュール120が起動時間を一旦計算すると、マイクロサービス予測モジュール120は、マイクロサービスが現在のエッジデバイス302から次のエッジデバイス304への通信セッションの潜在的なハンドオーバーについて間に合って利用可能になるように、適切な時点で該マイクロサービスをデプロイすることを開始しうる。従って、実行されると予測されるマイクロサービスをデプロイすることは、次のエッジデバイス上で第3の時点(該第3の時点は該第2の時点の前であり、該第3の時点は、実行されると予測されるマイクロサービスをデプロイする為に必要な時間に基づいて決定される)で開始されうる。上記の例において、マイクロサービス204は、エッジデバイスD1上で40ミリ秒の起動時間を有し、従って、マイクロサービス204が次に必要であると予測され、及び次のエッジデバイス304がエッジデバイスD1であると決定される場合、マイクロサービス予測モジュール120は、クライアントデバイス310が次のエッジデバイス304(それはまた、この例においてエッジデバイスD1である)に到達する少なくとも40ミリ秒前に、エッジデバイス上でマイクロサービス204をデプロイすることを開始しなければならない。上述された通り、クライアントデバイス310が次のエッジデバイス304のハンドオフ範囲に到達すると予測される時間、又は該ハンドオフ範囲内にあると予測される時間は、406で決定されうる。
【0034】
加えて、次のエッジデバイス304が10個のマイクロサービスをデプロイすることができると決定された場合、次のエッジデバイス304は、元も最も必要とされそうな10個をデプロイするであろう。図2の環境例において、該システムは、現在214を使用している5つのクライアントデバイスにサービスを提供する為に222の3つのインスタンスと204の3つのインスタンスをデプロイし、現在204を使用しているクライアントデバイスにサービスを提供する為に206の3つのインスタンスをデプロイし、及び現在206を使用しているクライアントデバイスにサービスを提供する為に、208の1つのインスタンスをデプロイする。例示を簡単にするために、この例は、マイクロサービスのインスタンスとユーザとの間の1対1の相関を想定しているが、実際には、マイクロサービスの1つのインスタンスは、多数のユーザにサービスを提供しうる。別の実施態様において、デバイスが、該デバイスに接続された全てのユーザのニーズを満たす為に十分ではない幾つかのマイクロサービスしかサポートすることできない場合を処理する為に、任意的なステップが追加されうる。例えば、予測は、エッジデバイスが全てのクライアントデバイスによって最も必要とされそうである為に、15個のマイクロサービスをデプロイする必要があると判断しうるが、エッジデバイスは10の容量のみ有する。この場合、残りの5個のマイクロサービスは、該クライアントデバイスをサポートすることができる他の隣接するエッジデバイスにディスパッチされ得、及び、優先順位付け又は割り当てのスキームが、そのシナリオにおいて該マイクロサービスを処理する為に提案されうる。この代替において、起動時間、及びクライアントデバイス310が隣接するエッジデバイス304のハンドオフ範囲に到達するか、又はハンドオフ範囲内にあると予測される時点は、上述された通りに決定されうる。
【0035】
410において、マイクロサービス予測モジュール120は、次のエッジデバイス304に接続されているクライアントデバイスと次のエッジデバイス上で実行されているマイクロサービスとに関する履歴データを収集し、そして、教師あり機械学習モデルを利用して、次に最も実行されそうなマイクロサービスのプロファイルを作成し、そして、図5において更に説明される通り、その予測を改善する。
【0036】
図5を参照すると、該図は、少なくとも1つの実施態様に従うマイクロサービス予測プロセスのコンポーネント又はモジュールの例を示す。1つの実施態様に従うと、該プロセスは、教師あり機械学習520を利用して、次に必要とされるべきマイクロサービスの見込み(likelihood of a microservice)を決定するマイクロサービス予測モジュール120を含みうる。教師あり機械学習モデルは、適切な機械学習アルゴリズム、例えばサポートベクターマシン(SVM:Support Vector Machines)又はランダムフォレスト(random forests)、を使用しうる。マイクロサービス予測モジュール120は、410において記載されている通り、マイクロサービスの実際の実行を監視し、且つクライアントデバイス情報502、すなわち、隣接するエッジデバイスから現在接続されているクライアントデバイスのリストと次のエッジデバイス404に現在接続されているクライアントデバイスのリストとの両方、を追跡し、及びまた、現在の状態情報504、すなわち、402において全てのエッジデバイスによって受信される状態、を解析しうる。マイクロサービス予測モジュール120は、上記の情報を使用して、マイクロサービスが次に必要とされるであろう実行の見込み(likelihood of execution)を決定し510、そして、上記のステップ210において構成ファイルから最初に決定された確率を更新する。例えば、ユーザが(構成ファイルにおける50%の確率とは対照的に)時間の80%で214の後に222を選択することが発見され得、そして、マイクロサービス予測モジュール120は、実行する必要がある次のマイクロサービスの為に、その変化に適応し、そしてその予測又は見込みの確率(probability of likelihood)を更新しうる。
【0037】
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書に列挙される教示の実装はクラウドコンピューティング環境に限定されないことが理解されるべきである。むしろ、本発明の実施態様は、現在知られている又は後で開発される任意の他のタイプのコンピューティング環境と組み合わせて実装されることができる。
【0038】
クラウドコンピューティングは、最小限の管理労力又はサービスのプロバイダとの相互作用で迅速にプロビジョニングされ且つ解放されることができる構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理(processing)、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの便利なオンデマンドネットワークアクセスを可能にする為のサービス提供のモデルである。このクラウドモデルは、少なくとも5つの特徴、少なくとも3つのサービスモデル、及び少なくとも4つのデプロイメント(deployment)モデルを含みうる。
【0039】
特徴は下記の通りである。
【0040】
オンデマンドセルフサービス:クラウドコンシューマ(cloud consumer)は、サービスのプロバイダとのヒューマンインターラクション(human interaction)を必要とせずに、必要に応じて、コンピューティング機能、例えばサーバ時間及びネットワークストレージ、を一方的にプロビジョニングすることができる。
【0041】
ブロードネットワークアクセス:機能は、ネットワークを介して利用可能であり、及び異種のシン(thin)クライアント・プラットフォーム又はシック(thick)クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的なメカニズムを介してアクセスされる。
【0042】
リソースのプーリング:プロバイダのコンピューティングリソースは、マルチテナントモデルを使用して複数のコンシューマにサービスを提供するためにプールされ、及び様々な物理リソースと仮想リソースが需要に従って動的に割り当てられ及び再割り当てされる。コンシューマは一般的に、提供されたリソースの正確な場所についての制御又は知識を有していないが、より高いレベルの抽象化での場所(例えば、国、州又はデータセンター)を特定できうるという点で、場所に依存しないといえる。
【0043】
迅速な順応性:機能は、迅速かつ弾力的にプロビジョニングされ、場合によっては自動的に、迅速にスケールアウトされ、迅速にリリースされて迅速にスケールインされうる。コンシューマにとって、プロビジョニングに利用可能な機能はしばしば、無制限であり及びいつでも任意の量で購入されることができる。
【0044】
測定されたサービス:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザアカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御し及び最適化する。リソース使用は監視され、制御され、及び報告され、利用されるサービスのプロバイダ及びコンシューマの両方についての透明性を提供することができる。
【0045】
サービスモデルは下記の通りである。
【0046】
サービスとしてのソフトウェア(SaaS:Software as a Service):クラウド・インフラストラクチャにおいて実行しているプロバイダのアプリケーションを使用する為に、コンシューマに提供される機能である。該アプリケーションは、シン・クライアント・インターフェース、例えばウェブブラウザ(例えば、ウェブ・ベースの電子メール)、を通じて、様々なクライアントデバイスからアクセス可能である。該コンシューマは、制限されたユーザ固有のアプリケーション構成設定のありうる例外として、基礎をなすクラウド・インフラストラクチャ、例えばネットワーク、サーバ、オペレーティングシステム、ストレージ、又は個々のアプリケーション機能さえも包含する基礎をなすクラウド・インフラストラクチャ、を管理又は制御しない。
【0047】
サービスとしてのプラットフォーム(PaaS Platform as a Service):プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上に配備する為に、該コンシューマに提供される機能である。該コンシューマは、基礎をなすクラウド・インフラストラクチャ、例えばネットワーク、サーバ、オペレーティングシステム、又はストレージを包含する基礎をなすクラウド・インフラストラクチャ、を管理又は制御しないが、展開されたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成に対して制御を有する。
【0048】
サービスとしてのインフラストラクチャ(IaaS:Infrastructure as a Service):コンシューマが、オペレーティングシステム及びアプリケーションを含むことができる任意のソフトウェアを展開及び実行することができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティングリソースをプロビジョニンングする為に、該コンシューマに提供される機能である。該コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティングシステム、ストレージ、展開されたアプリケーションに対する制御、及び場合によっては、ネットワーク・コンポーネント(例えば、ホストのファイアウォール)の選択することの制限された制御を有する。
【0049】
デプロイメントモデル(Deployment Models)は下記の通りである。
【0050】
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織の為のみに運営される。該クラウド・インフラストラクチャは、該組織又は第三者によって管理され得、及びオンプレミス(on-premises)又はオフプレミス(off-premises)に存在しうる。
【0051】
コミュニティ・クラウド:クラウド・インフラストラクチャは、幾つかの組織によって共有され、及び共通の関心事項(例えば、ミッション、セキュリティ要件、ポリシー、及びコンプライアンス考慮事項)を有する特定のコミュニティをサポートする。該クラウド・インフラストラクチャは、該組織又は第三者によって管理され得、及びオンプレミス又はオフプレミスに存在しうる。
【0052】
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに対して利用可能であり、及びクラウドサービスを販売する組織によって所有される。
【0053】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散のためのクラウド・バースティング)によって一緒にされる2以上のクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
【0054】
クラウドコンピューティング環境は、無国籍性(statelessness)、低結合性、モジュール性、及びセマンティック相互運用性(semantic interoperability)に焦点を有する指向されたサービスである。クラウドコンピューティングの中核(heart)は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0055】
ここで図6を参照すると、例示的なクラウドコンピューティング環境50が図示されている。示される通り、クラウドコンピューティング環境50は、1以上のクラウドコンピューティングノード10を包含し、クラウドコンシューマによって使用されるローカルコンピューティングデバイス、例えば携帯情報端末(PDA:personal digital assistant)又は携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C若しくは自動車コンピュータシステム54N等又はそれらの組み合わせ、が、該クラウドコンピューティングノード10と通信しうる。ノード10は互いに通信しうる。該ノード10は、物理的又は仮想的に、1以上のネットワーク、例えば本明細書において上述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド若しくはハイブリッド・クラウド又はそれらの組み合わせ、にグループ化されうる(図示されていない)。このことは、クラウドコンシューマがローカルコンピューティングデバイスにおいてリソースを維持する必要がないサービスとして、インフラストラクチャ、プラットフォーム若しくはソフトウェア又はそれらの組み合わせをクラウドコンピューティング環境50が提供することを許す。図6に示されているコンピューティングデバイス54A~Nのタイプは、例示のみであることを意図されていること、及びコンピューティングノード10及びクラウドコンピューティング環境50は、任意のタイプのネットワーク若しくはネットワークアドレス可能接続又はそれらの組み合わせを介して(例えば、ウェブブラウザを使用して)任意のタイプのコンピュータ化されたデバイスと通信することができることが理解される。
【0056】
ここで図7を参照すると、クラウドコンピューティング環境50(図6)によって提供される機能的抽象化層のセットが示されている。図7に示されている構成要素、層、及び機能は、単に例示であることを意図していること、及び本発明の実施態様はそれに限定されないことが理解されるべきである。図示されている通り、下記の層及び対応する機能が提供される。
【0057】
ハードウェア及びソフトウェア層60は、ハードウェアコンポーネント及びソフトウェアコンポーネントを包含する。ハードウェアコンポーネントの例は、メインフレーム61、RISC(Reduced Instruction Set Computer(縮小命令セット・コンピュータ))アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64と、記憶装置65、並びにネットワーク及びネットワーキング・コンポーネント66を包含する。幾つかの実施態様において、ソフトウェアコンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67及びデータベース・ソフトウェア68を包含する。
【0058】
仮想化層70は、抽象化層を提供し、この抽象化層から、仮想エンティティの下記の例が提供される:すなわち、仮想サーバ71、仮想ストレージ72、仮想ネットワーク73、例えば仮想プライベート・ネットワークを包含する該仮想ネットワーク73、仮想アプリケーション及びオペレーティングシステム74、並びに仮想クライアント75。
【0059】
一つの例においては、管理層80は、以下で説明される機能を提供しうる。リソース・プロビジョニング81は、クラウドコンピューティング環境内でタスクを実行する為に利用されるコンピューティングリソース及び他のリソースの動的な調達を提供する。計量及び価格決定82は、リソースがクラウドコンピューティング環境内で利用される場合のコスト追跡と、これらのリソースの消費についての課金又は請求とを提供する。一つの例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを包含しうる。セキュリティは、クラウドコンシューマ及びタスクに対する識別検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータル83は、コンシューマ及びシステム管理者の為に、クラウドコンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(SLA:Service Level Agreement)の計画及び履行85は、将来の要件がSLAに従って予測されるクラウド・コンピューティング・リソースの為の事前配置及びその調達を提供する。
【0060】
ワークロード層90は、クラウドコンピューティング環境が利用されうる機能の例を提供する。この層から提供されうるワークロード及び機能の例は、マッピング及びナビゲーション91、ソフトウェア開発及びライフサイクル管理92、仮想クラスルーム教育配信93、データ分析処理94、トランザクション処理95、及び後に利用可能な帯域幅状態を先回りして適合する予測的に選択する仮想リアリティコンテント96を包含する。
【0061】
本発明は、システム、方法若しくはコンピュータ・プログラム製品又はその組み合わせでありうる。該コンピュータ・プログラム製品は、プロセッサに本発明の観点を実行させる為のコンピュータ可読プログラム命令を有する1以上のコンピュータ可読記憶媒体を包含しうる。
【0062】
該コンピュータ可読記憶媒体は、命令実行デバイスによって使用する為の命令を保持且つ記憶することができる有形のデバイスであることができる。該コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、又はこれらの任意の適切な組み合わせでありうるが、これらに限定されない。該コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、下記を包含する:ポータブルコンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能なプログラム可能な読み取り専用メモリ(EPROM(erasable programmable read-only memory)又はフラッシュメモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリスティック、フロッピーディスク、機械的に符号化されたデバイス、例えばパンチカード若しくは命令が記録されている溝内の隆起構造又はこれらの任意の適切な組み合わせ。本明細書において使用される場合、コンピュータ可読記憶媒体は、一時的な信号それ自体、例えば電波又は他の自由に伝播する電磁波、導波管若しく他の伝送媒体を伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又は電線を介して送信される電気信号、であると解釈されるべきでない。
【0063】
本明細書において記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から個々のコンピューティングデバイス/処理デバイスに、又はネットワーク、例えばインターネット、ローカルエリアネットワーク、ワイドエリアネットワーク若しくはワイヤレスネットワーク又はそれらの組み合わせ、を介して外部コンピュータ又は外部記憶デバイスにダウンロードされることができる。該ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ若しくはエッジサーバ又はこれらの組み合わせで構成されうる。各コンピューティングデバイス/処理デバイスにおけるネットワークアダプタカード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そして、該コンピュータ可読プログラム命令を、個々のコンピューティングデバイス/処理デバイス内にコンピュータ可読記憶媒体中に記憶する為に送信する。
【0064】
本発明の動作を実行する為のコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の為の構成データ、又は、1以上のプログラミング言語、例えばオブジェクト指向プログラミング言語、オブジェクト指向プログラミング言語(例えば、Smalltalk、C++等)、手続き型プログラミング言語(例えば「C」プログラミング言語又は同様のプログラミング言語)、の任意の組み合わせで書かれているソースコード又はオブジェクトコードのいずれか、でありうる。該コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に、ユーザのコンピュータ上で部分的に且つリモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバ上で全体的に、実行されうる。後者のシナリオにおいて、該リモートコンピュータは、任意の種類のネットワーク、例えばローカルエリアネットワーク(LAN:local area network)若しくはワイドエリアネットワーク(WAN:wide area network)、を介してユーザのコンピュータに接続されうるか、又は該接続は(例えば、インターネットサービスプロバイダを使用したインターネットを通じて)外部コンピュータに対して行われうる。幾つかの実施態様において、電子回路、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA:field-programmable gate arrays)又はプログラマブルロジックアレイ(PLA:programmable logic arrays)、は、本発明の観点を実行する為に、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行しうる。
【0065】
本発明の観点は、本発明の実施態様に従う、方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図若しくはブロック図又はそれらの組み合わせを参照して本明細書において記載されている。該フローチャート図若しくは該ブロック図又はそれらの組み合わせの各ブロック、並びに該フローチャート図若しくは該ブロック図又はそれらの組み合わせにおける複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装されることができることが理解されるであろう。
【0066】
これらのコンピュータ可読プログラム命令は、該コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサを介して実行する命令が該フローチャート若しくはブロック図又はそれらの組み合わせの1以上のブロックにおいて特定された機能/動作を実装するための手段を生成するように、コンピュータのプロセッサ又は他のプログラム可能なデータ処理装置に提供されて、マシンを作り出しうる。これらのコンピュータ可読プログラム命令はまた、記憶された命令を有するコンピュータ可読記憶媒体は、該フローチャート図若しくはブロック図又はそれらの組み合わせの1以上のブロックにおいて特定される機能/動作の観点を実装する命令を含む製造品を含むように、コンピュータ・プログラム可能なデータ処理装置若しくは他のデバイス又はこれらの組み合わせに特定の様式で機能するように指示することができるコンピュータ可読記憶媒体中に記憶されうる。
【0067】
該コンピュータ可読プログラム命令はまた、コンピュータ上、他のプログラム可能なデータ処理装置上又は他のデバイス上で実行される命令が、該フローチャート若しくはブロック図若しくはそれらの組み合わせの1以上のブロックにおいて特定される機能/動作を実装するように、上記のコンピュータ上、他のプログラム可能なデータ処理装置上又は他のデバイス上にロードされて、コンピュータ、他のプログラム可能な装置又は他のデバイス上で一連の動作ステップを実行させて、コンピュータに実装されたプロセスを生成しうる。
【0068】
図面中のフローチャート及びブロック図は、本発明の様々な実施態様に従う、システム、方法及びコンピュータ・プログラム製品のありうる実装の、アーキテクチャ、機能及び動作を示す。これに関連して、該フローチャート又はブロック図における各ブロックは、命令のモジュール、セグメント、又はその一部を表し得、それは、特定された1以上の論理機能を実装する為の1以上の実行可能命令を含む。幾つかの代替の実装において、該ブロックにおいて示されている機能は、図面中に示されている順序とは異なって生じうる。例えば、連続して示されている2つのブロックは、実際には、関与する機能に依存して、同時に、実質的に同時に、部分的又は全体的に時間的に重複する様式で実行される1つのステップとして達成されうるか、又は該ブロックは、逆の順序で実行されうる。該ブロック図若しくはフローチャート図又はこれらの組み合わせの各ブロック、並びに該ブロック図若しくはフローチャート図又はこれらの組み合わせの複数のブロックの組み合わせは、特定された機能又は動作を実行する特別な目的のハードウェアベースのシステムによって実装できることができ、又は特別な目的のハードウェアとコンピュータ命令との組み合わせを実行することができることにまた留意されたい。
【0069】
本発明の様々な実施態様の記述は、例示の目的の為に示されているが、網羅的であることを意図されるものでなく、開示された実施態様に限定されることを意図されるものでもない。同様に、本明細書に記載された本開示の実施態様の特徴又は機能の例は、特定の実施態様説明において使用されるか又は例として記載されるかにかかわらず、本明細書に記載された本開示の実施態様を限定すること、又は本明細書に記載された例に開示を限定することを意図するものでない。記述された実施態様の範囲及び精神から逸脱すること無しに、多くの修正及び変形が当業者には明らかであろう。本明細書において使用されている語は、実施態様の原理、市場で見られている技術に対する実際の適用若しくは技術的改善を説明する為に、又は当業者が本明細書において開示された実施態様を理解できることを可能にする為に選択された。
図1
図2
図3
図4
図5
図6
図7