JP2022546994A - サービス・インフラストラクチャを横断したマイクロサービスのデプロイ - Google Patents

サービス・インフラストラクチャを横断したマイクロサービスのデプロイ Download PDF

Info

Publication number
JP2022546994A
JP2022546994A JP2022513677A JP2022513677A JP2022546994A JP 2022546994 A JP2022546994 A JP 2022546994A JP 2022513677 A JP2022513677 A JP 2022513677A JP 2022513677 A JP2022513677 A JP 2022513677A JP 2022546994 A JP2022546994 A JP 2022546994A
Authority
JP
Japan
Prior art keywords
microservices
determining
resources
resource
service infrastructure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022513677A
Other languages
English (en)
Inventor
マスターズ,オリヴァー,ポール
ネイラー-ティース,アレクサンダー,ジョン
スミス,サミュエル,クリストファー
ダニングス,アンドリュー,ジェームス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2022546994A publication Critical patent/JP2022546994A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0806Configuration setting for initial configuration or provisioning, e.g. plug-and-play
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • H04L41/122Discovery or management of network topologies of virtualised topologies, e.g. software-defined networks [SDN] or network function virtualisation [NFV]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/20Arrangements for monitoring or testing data switching networks the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1076Resource dissemination mechanisms or network resource keeping policies for optimal resource availability in the overlay network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/142Network analysis or design using statistical or mathematical methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • H04L41/5009Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]
    • H04L41/5012Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF] determining service availability, e.g. which services are available at a certain point in time
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • H04L41/5019Ensuring fulfilment of SLA
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Stored Programmes (AREA)

Abstract

複数のリソースを有するサービス・インフラストラクチャを横断して複数のマイクロサービスをデプロイするための方法、コンピュータ・システムおよびコンピュータ・プログラム製品が提供される。本発明は、複数のマイクロサービスの少なくとも1つの依存関係を決定することを含んでもよい。本発明は、複数のリソースの各リソースについて、時間に関するリソースの可用性を記述した機能停止分布を決定することを含んでもよい。本発明は、各リソースに関連付けられた機能停止分布と、複数のマイクロサービスの少なくとも1つの依存関係とに基づいて、サービス・インフラストラクチャのリソースを横断した複数のマイクロサービスのデプロイメント構成を決定することを含んでもよい。

Description

本発明は、概して、サービス・インフラストラクチャにおけるマイクロサービスに関し、より詳細には、複数のリソースを有するサービス・インフラストラクチャを横断して複数のマイクロサービスをデプロイするための方法に関する。
本発明は、また、システムのプロセッサまたはネットワークの複数のプロセッサがこのような方法を実装することを可能とするコンピュータ可読プログラム・コードを含むコンピュータ・プログラム製品に関する。
さらに本発明は、少なくとも1つのプロセッサと、このようなコンピュータ・プログラム製品とを含み、少なくとも1つのプロセッサが、前記コンピュータ・プログラム製品のコンピュータ可読プログラム・コードを実行するように適合される、コンピュータ・システムに関する。
本発明は、また、複数のリソースを有するサービス・インフラストラクチャを横断して複数のマイクロサービスをデプロイするためのシステムに関する。
伝統的なソフトウェア・サービスは、伝統的なオンサイトのデプロイメントを超えてクラウド・サービスにおいてホストされ得る。クラウド・サービス・インフラストラクチャを実装することにより、使用の利便性、セットアップの容易さを向上し、また、インフラストラクチャの柔軟性およびスケーラビリティを最適化することができる。サービス・インフラストラクチャのダウンタイムを最小限化するために、クラウド・サービスが最適な信頼性で実行することを保証することが有益である可能性がある。これにより、サービス・レベル合意、つまり、サービス・プロバイダとサービス・クライアントとの間で合意されたコミットメントが満たされることを確実にすることができる。
クラウド・サービスでホスティングされたマイクロサービスは、時折故障する可能性があり、故障したマイクロサービスの再デプロイメントをもたらす。再デプロイメントに必要な時間の間、故障したマイクロサービスは、ダウンタイムを経験する可能性があり、このダウンタイムでは、マイクロサービスが動作不能であり、使用のために利用不可能である。ダウンタイムは、クラウド・サービスのシステム・アーキテクチャに依存する可能性がある。クラウド・サービスでホストされた他のマイクロサービスは、故障したマイクロサービスのダウンタイムを認識しない可能性があり、故障したマイクロサービスとのやり取りを継続することを試みる可能性がある。これは、故障したマイクロサービスだけを超えた問題、例えば、喪失したトランザクションを生じる可能性がある。その結果、同じバインドされた(内部)インフラストラクチャ内または遠隔(外部)のインフラストラクチャ内で他の故障したマイクロサービスにマイクロサービスを接続するときに問題が生じることがある。内部および外部の両方において、マイクロサービスおよびサービス・インフラストラクチャは、低速化またはダウンする可能性がある。接続されたマイクロサービスがこのシナリオを最適に取り扱うように設計されていない場合、これは、サービス・インフラストラクチャ全体(この例ではクラウド・サービス)の性能およびスケーラビリティに悪影響を与える可能性がある。
システム・インフラストラクチャ内のマイクロサービスの所定の性能閾値に対する性能が監視され得る。マイクロサービスが期待以下である、すなわち、マイクロサービスの性能が閾値未満である場合、マイクロサービスの位置が調査されて、低性能の原因が決定され得る。元の位置が低性能の原因であることが判明した場合には、マイクロサービスは、システム・インフラストラクチャ内の別の位置に移動される可能性がある。これにより、システム・インフラストラクチャにおけるマイクロサービスの性能の最適化が可能となる可能性があるが、しかしながら、このアプローチは、マイクロサービスの信頼性および可用性を最適化しない可能性がある。
本発明は、複数のリソースを有するサービス・インフラストラクチャを横断して複数のマイクロサービスをデプロイするためのコンピュータ実装方法を提供することを目的とする。
本発明はさらに、コントローラ・ユニットによって実行されたとき、提案された方法を実装するためのコンピュータ・プログラム・コードを含むコンピュータ・プログラム製品を提供することを目的とする。
本発明は、また、このコンピュータ・プログラム・コードを実行するように適合された処理システムを提供することを目的とする。
本発明は、また、複数のリソースを有するサービス・インフラストラクチャを横断して複数のマイクロサービスをデプロイするためのシステムを提供することを目的とする。
本発明の一側面によれば、コンピュータ実装方法が提供される。本方法は、複数のマイクロサービスの依存関係(dependencies)を決定するステップを含む。本方法は、複数のリソースの各リソースについて、時間に関するリソースの可用性(availability)を記述した機能停止分布(outage distribution)を決定するステップをさらに含む。本方法は、各リソースに関連付けられた機能停止分布と、複数のマイクロサービスの依存関係とに基づいて、サービス・インフラストラクチャのリソースを横断した複数のマイクロサービスのデプロイメント構成を決定するステップを含む。
本発明のさらに別の側面によれば、データ処理システムが提供される。システムは、複数のマイクロサービスの依存関係を決定するように構成された分析コンポーネントを含む。本システムは、複数のリソースの各リソースについて、時間に関するリソースの可用性を記述した機能停止分布を決定するように構成された処理コンポーネントをさらに含む。本システムは、各リソースに関連付けられた機能停止分布と、複数のマイクロサービスの依存関係とに基づいて、サービス・インフラストラクチャのリソースを横断した複数のマイクロサービスのデプロイメント構成を決定するよう構成された構成コンポーネントを含む。
本発明の別の側面によれば、複数のリソースを有するサービス・インフラストラクチャを横断して複数のマイクロサービスをデプロイするためのコンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、処理ユニットによって実行可能なプログラム命令を有するコンピュータ読み取り可能な記憶媒体を含み、このプログラム命令は、提案された実施形態に従った方法を処理ユニットに実行させるように処理ユニットによって実行可能である。
本発明の別の側面によれば、少なくとも1つのプロセッサおよび一実施形態にかかるコンピュータ・プログラム製品を含む処理システムが提供される。少なくとも1つのプロセッサは、前記コンピュータ・プログラム製品のコンピュータ・プログラム・コードを実行するように適合される。
本発明のこれらおよび他の目的、特徴および利点は、添付の図面に関連して読み取られる、以下の例示的な実施形態の詳細な説明から明らかになるであろう。図面の種々の特徴は、詳細な説明に関連して本発明を当業者が理解するのを容易にするために明確化するためのものであり、縮尺通りではない。
例示的な実施形態の一側面が実装されてもよい例示的な分散システムの図的表現を示す。 例示的な実施形態の側面が実装されてもよい例示的なシステムのブロック図である。 複数のリソースを有するサービス・インフラストラクチャを横断して複数のマイクロサービスをデプロイするためのコンピュータ実装方法のフロー図である。 複数のリソースを有するサービス・インフラストラクチャを横断して複数のマイクロサービスをデプロイするためのシステムの例示的な実施形態の簡略化されたブロック図である。 複数のリソースを有するサービス・インフラストラクチャを横断して複数のマイクロサービスをデプロイするためのシステムの例示的な実施形態の簡略化されたブロック図である。 本開示の一実施形態による、図1に示すコンピュータ・システムを含む例示的クラウド・コンピューティング環境のブロック図である。 本開示の一実施形態による、図6の例示的クラウド・コンピューティング環境の機能レイヤのブロック図である。
図面は、単に模式的なものであり、縮尺通りに描かれていないことを理解されたい。また、同一または類似の部分を示すために図面を通して同一の参照符号が使用されていることも理解されたい。
本出願の文脈において、本発明の実施形態が方法を構成する場合、そのような方法は、コンピュータによる実行のためのプロセス、すなわち、コンピュータ実装方法であってもよいことを理解されたい。したがって、この方法の種々のステップは、コンピュータ・プログラムの種々の部分、例えば、1以上のアルゴリズムの種々の部分を反映することができる。
また、本出願の文脈において、システムは、本発明の方法の1以上の実施形態を実行するように適合された単一のデバイスまたは分散デバイスの集合であってもよい。例えば、システムは、本発明の方法の少なくとも1つの実施形態を協働して実行するためのパーソナルコンピュータ(PC)、サーバ、ローカル・エリア・ネットワークやインターネットなどのネットワークを介して接続されたPCもしくはサーバまたはこれらの両方の集合であってもよい。システムは、また、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップデバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、ネットワークPC、ミニコンピュータ・システム、および、上記システムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境を含んでもよい。
複数のリソースを有するサービス・インフラストラクチャを横断して複数のマイクロサービスをデプロイするためのコンセプト(概念)が提案される。このようなコンセプトは、マイクロサービス・ベースのサービス・インフラストラクチャがダウンタイムを招く確率を最小化するように適合された最適なデプロイメント・トポロジーの決定を可能にすることができる。したがって、実施形態は、サービス・インフラストラクチャを横断してマイクロサービスをデプロイすることを容易にすることができる。
実施形態は、統計的方法、連続モニタリングもしくはサンプリングまたはこれらの組み合わせ並びに複数のマイクロサービスの最適なデプロイメント構成を決定するための最適化アルゴリズムと関連して実施されてもよい。
提案された実施形態は、サービス・インフラストラクチャに影響を与える可能性がある異なる潜在的な機能停止を考慮し、そのような機能停止の統計的分布の推定によって重み付けをして、すべてのこのような停止に対する最大の許容度を保証するというコンセプトを採用することができる。
本発明者らは、構成コンポーネントの提供を提案する。このような構成コンポーネントは、各リソースに関連する機能停止分布および複数のマイクロサービスの依存関係に基づいて、サービス・インフラストラクチャのリソースを横断して複数のマイクロサービスのデプロイメント構成を決定するように構成されてもよい。例えば、構成コンポーネントは、サービス・インフラストラクチャの各リソースについて、サービス・インフラストラクチャのリソースに関連付けられた機能停止分布に基づいて、所定の期間におけるリソースの非可用性(unavailability)の確率を決定する。構成コンポーネントは、各リソースに対する非可用性の確率および複数のマイクロサービスの依存関係に基づいて、サービス・インフラストラクチャのリソースを横断した複数のマイクロサービスのデプロイメント構成を決定するように構成されてもよい。デプロイメント構成は、複数のマイクロサービスの非可用性の確率を最小化する。
したがって、実施形態は、複数のマイクロサービスの非可用性の確率を低減する複数のマイクロサービスの好適なデプロイメント構成の識別を容易することができる。これは、例えば、重要なマイクロサービスが”ダウン(停止中,down)”する確率が最小となるように1以上のマイクロサービスをデプロイするための最適な位置を決定することによって、コストを増加させることなく、サービス・インフラストラクチャの全体的な可用性を増大することができる。
提案された実施形態においては、複数のマイクロサービスの依存関係を決定することは、複数のマイクロサービスの複数の異なる構成を識別することを含んでもよい。各構成は、マイクロサービス・インスタンスの各自のセットを含んでもよい。ステップは、複数のマイクロサービスの各構成について、マイクロサービス・インスタンスの各自のセットの機能性を決定し、各構成に対して決定された機能性に基づいて、複数のマイクロサービスのうちの少なくとも1つの依存関係を決定することをさらに含むことができる。このようにして、複数のマイクロサービスの最適または好適な構成を決定することができる。このような構成に基づいて、複数のマイクロサービスの依存関係を決定することができる。これにより、決定された依存関係が最適化される可能性があり、これにより、サービス・インフラストラクチャの効率が向上される可能性がある。
いくつかの実施形態においては、複数のマイクロサービスの複数の異なる構成を識別することは、複数のマイクロサービスの構成を識別するためのユーザ入力を受信することと、次いで、ユーザ入力に基づいて、複数のマイクロサービスの各々の構成を識別することと含む。ひいては、複数のマイクロサービスの構成が、ユーザの選好に基づいて調整され得る。これにより、構成を識別することの制御の容易性および適合性を向上させることができ、その結果、サービス・インフラストラクチャのリソースを横断する複数のマイクロサービスの決定されたデプロイメント構成の制御の容易性および適合性を向上させることができる。
いくつかの実施形態においては、マイクロサービス・インスタンスの各自のセットの機能性を決定することは、マイクロサービス・インスタンスの各自のセットの実行をシミュレートまたはテストすることと、シミュレートまたはテストすることの結果に基づいて、マイクロサービス・インスタンスの各自のセットの機能性を決定することとを含み得る。このようにして、”アップ(稼働中,up)”と見なされる、サービス・インフラストラクチャをもたらすマイクロサービス・インスタンスの各自のセットを決定することができる。これは、複数のマイクロサービスのうちの少なくとも1つの依存関係を決定することを可能にし、これは、サービス・インフラストラクチャのリソースを横断して複数のマイクロサービスのデプロイメント構成を決定するプロセスを最適化することを可能とする。
提案された実施形態においては、リソースについて機能停止分布を決定することは、複数のリソースの各リソースに関連付けられたサービス・レベル合意を解析すること、もしくは、リソースの以前の可用性に関する複数の履歴機能停止情報を処理すること、またはこれらの両方を含む。このようにして、サービス・インフラストラクチャのプロバイダのサービス・レベル合意(SLA)から直接的に機能停止分布を取得することができる。プロバイダは、例えば、インフラストラクチャの保守員もしくはインフラストラクチャによって実装されるハードウェアの製造業者であってもよい。このように、サービス・インフラストラクチャの品質、可用性および責任などの側面を含む、サービス・インフラストラクチャのプロバイダとクライアントとの間に保持されるコミットメントに基づいて、分布を識別することができる。さらに、分布は、長期的なアップタイム・メトリクスによって推定されてもよい。これにより、機能停止分布の決定処理の制御の容易性および適応性を向上させることができるとともに、決定された分布の信頼性を向上させることができる。
提案された実施形態においては、サービス・インフラストラクチャのリソースを横断した複数のマイクロサービスのデプロイメント構成を決定することは、各リソースについて、リソースに関連付けられた機能停止分布に基づいて、所定の時間期間にわたるリソースの非可用性の確率を決定することを含む。ステップは、サービス・インフラストラクチャの各リソースの非可用性の確率と、複数のマイクロサービスの依存関係とに基づいて、サービス・インフラストラクチャのリソースを横断した複数のマイクロサービスのデプロイメント構成を決定することを含む。デプロイメント構成は、複数のマイクロサービスの非可用性の確率を最小化する可能性がある。このようにして、各リソースの非可用性の確率を決定することができる。これにより、各リソースの非可用性の確率に基づいてデプロイメント構成を決定することが可能となり、その結果、デプロイメント構成を決定するプロセスを最適化することができ、方法の効率を向上させることができる。
いくつかの実施形態においては、サービス・インフラストラクチャのリソースを横断して複数のマイクロサービスのデプロイメント構成を決定することは、モンテカルロ法を使用して、複数の異なるデプロイメント構成についての複数のマイクロサービスの非可用性を評価することを含むことができる。このようにして、複数の異なる構成についての複数のマイクロサービスの非可用性の確率をコスト関数として評価することができる。コスト関数は、従来の最適化ヒューリスティック、例えば、シミュレーテッド・アニーリングを採用することを可能する可能性がある。最適化ヒューリスティックの結果は、いかなるダウンタイムを招く確率が最小化されるようにサービス・インフラストラクチャをデプロイするために用いられてもよい。しかしながら、異なるデプロイメント構成についての非可用性を評価するための他の方法が採用されてもよいことが理解されるであろう。例えば、単純な可用性ゾーンのアップタイム分布について、代わりに全体的な分布についての閉形式(closed form)を計算するために統計的分析を使用することができる。
提案された実施形態においては、方法は、サービス・インフラストラクチャの複数のリソースの可用性を監視することをさらに含んでもよい。ステップは、サービス・インフラストラクチャのリソースの可用性の変化を検出することをさらに含んでもよい。方法は、サービス・インフラストラクチャのリソースの可用性の変化を検出したことに応答して、サービス・インフラストラクチャのリソースを横断して複数のマイクロサービスの修正されたデプロイメントを決定することをさらに含んでもよい。このようにして、サービス・インフラストラクチャは、最適なデプロイメント構成であることを反復的に確認し、決定されたデプロイメント構成が定期的に更新されることを可能とする。これは、方法の効率を最適化することができ、デプロイメント構成が現在の時点で最適化されることを保証することができる。
一例では、システムは、同一のリソース要件を有する2つのマイクロサービスを含んでもよい。2つのマイクロサービスは、高い可用性のために多数のインスタンスを有していてもよい。システムは、3つのリソース、例えば”可用性ゾーン”と参照され得るデータセンタをさらに含んでもよい。システムの可用性を改善するために取られるアプローチは、慣例的には、各データセンタ内に2つのマイクロサービスの各々の1つのインスタンスを有することである。従って、この慣例的なアプローチでは、6つのインスタンスのマイクロサービスが必要とされる。
例をさらに検討すると、3つのデータセンタが、データセンタ1、データセンタ2、データセンタ3のようにラベル付けされ得る。データセンタ2およびデータセンタ3は、概ね等しい信頼性を有する可能性があり、データセンタ1は、データセンタ2およびデータセンタ3のそれぞれよりも信頼性が高い可能性がある。時間が、離散化されてもよく、各期間において、データセンタn(n=1、2、3)において任意のサービス・インフラストラクチャが”ダウン(down)”している確率sを有している可能性がある。サービス・インフラストラクチャがダウンすると、ダウンしたサービス・インフラストラクチャに配備されたマイクロサービスもダウンする可能性がある。また、データセンタnは、各データ点でダウンしている確率dを有する可能性があり、ここで、各nについて、
Figure 2022546994000002
となる。
全てのnについて、簡略化の仮定
Figure 2022546994000003
を行うことができ、式中、aは所定の正の定数であってもよい。
更なる簡略化の仮定
Figure 2022546994000004
を行うことができ、ここで、bは0から1の間の所定の正の定数であってもよい。
この例では、1つのマイクロサービスが重要であると決定され、他のマイクロサービスが非重要であると決定され得る。その結果、重要なマイクロサービスの2つのインスタンスが、データセンタ1の異なるサービス・インフラストラクチャに割り当てられる可能性があり、1つのインスタンスがデータセンタ2のサービス・インフラストラクチャに割り当てられ、データセンタ3にはインスタンスが割り当てられない可能性がある。非重要なマイクロサービスは、1つのインスタンスのみを有することができる。このようにして、システムは、デプロイされるべき6つのマイクロサービスのインスタンスを必要とする上記慣例的なアプローチよりも少ないリソースを必要とする可能性がある。
この例では、s=0.0001、すなわち、データセンタ1の各システム・インフラストラクチャは、99.99%のアップ(up)の見込みを有する。また、a=0.001であり、データセンタ1は、99.99999%のアップ(up)の見込みを有する。また、b=0.01であり、データセンタ2とデータセンタ3とは、それぞれ99.999%のアップ(up)の見込みを有し、データセンタ2およびデータセンタ3の各システム・インフラストラクチャは、99%のアップ(up)の見込みを有する。この例では、本発明の方法は、99.99999896990403%の慣例的アプローチのシステムに対する確率とは対照的に、99.99999898000101%のシステムに対する可用性の確率をもたらす。ひいては、3つのリソースのうちの2つのみを実装しながら、9.11倍で可用性を高めることができる。
図1は、例示的な実施形態の側面が実装されてもよい例示的な分散システムの図的表現を示す。分散システム100は、例示的な実施形態の側面が実装されてもよいコンピュータのネットワークを含むことができる。分散システム100は、少なくとも1つのネットワーク102を含み、少なくとも1つのネットワーク102は、分散データ処理システム100内で互いに接続された種々のデバイスとコンピュータとの間の通信リンクを提供するために使用される媒体である。ネットワーク102は、有線、無線通信リンクまたは光ファイバケーブルのような接続を含んでもよい。
図示された具体例では、第1のサーバ104および第2のサーバ106は、ストレージ・ユニット108と共にネットワーク102に接続される。また、クライアント110,112,114もネットワーク102に接続されている。クライアント110,112,114は、例えば、パーソナルコンピュータ、ネットワーク・コンピュータなどであってもよい。図示の具体例では、第1のサーバ104は、ブート・ファイル、オペレーティング・システム・イメージおよびアプリケーションのようなデータをクライアント110,112,114に提供する。クライアント110,112,114は、図示された具体例では、第1のサーバ104に対するクライアントである。分散処理システム100は、追加のサーバ、クライアントおよび図示しない他のデバイスを含んでもよい。
図示の具体例では、分散システム100は、世界的なコレクションのネットワークを表すネットワーク102と、互いに通信するためにトランスミッション・コントロール・プロトコル/インターネットプロトコル(TCP/IP)スイートを使用するゲートウェイとを有するインターネットである。インターネットの核心は、データおよびメッセージをルーティングする、計り知れないほど多くの商業的、政府、教育および他のコンピュータ・システムからなる、主要ノードまたはホストコンピュータ間の高速データ通信回線のバックボーンである。もちろん、分散システム100は、例えばイントラネット、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)などの多数の異なるタイプのネットワークを含むように実装されてもよい。上述したように、図1は、本発明の異なる実施形態のためのアーキテクチャ上の限界のためではなく、例示を目的としており、したがって、図1に示された特定の要素は、本発明の例示的な実施形態が実施され得る環境に関する限定とみなされるべきではない。
図2は、例示的な実施形態の側面が実装されてもよい例示的なシステム200のブロック図である。システム200は、図1のクライアント110のようなコンピュータの一例であり、ここには、本発明の例示的な実施形態のためのプロセスを実装するコンピュータ使用可能なコードまたは命令が配置され得る。
図示の例では、システム200は、ノース・ブリッジおよびメモリ・コントローラ・ハブ(NB/MCH)202と、サウス・ブリッジおよび入力/出力(I/O)コントローラ・ハブ(SB/ICH)204とを含むハブ・アーキテクチャを採用する。処理ユニット206と、メイン・メモリ208と、グラフィックス・プロセッサ210とが、NB/MCH202に結合される。グラフィックス・プロセッサ210は、アクセラレーテッド・グラフィックス・ポート(AGP)を介して、NB/MCH202に接続されてもよい。
図示の例では、ローカル・エリア・ネットワーク(LAN)アダプタ212が、SB/ICH204に接続される。オーディオ・アダプタ216、キーボードおよびマウス・アダプタ220、モデム222、リード・オンリー・メモリ(ROM)224、ハード・ディスク・ドライブ(HDD)226、CD-ROM230、ユニバーサル・シリアル・バス(USB)および他のポート232、ならびにPCI/PCIeデバイス234が第1のバス238および第2のバス240を介してSB/ICH204に接続される。PCI/PCIeデバイス234は、例えば、イーサネット(登録商標)アダプタ、アドイン・カード、およびノート型コンピュータ用PCカードを含んでもよい。PCIは、カード・バス・コントローラを使用し、一方、PCIeは、使用しない。ROM224は、例えば、フラッシュ基本入力/出力システム(BIOS)であってもよい。
HDD226およびCD-ROM230は、第2のバス240を介してSB/ICH204に接続されてもよい。HDD226およびCD-ROM230は、例えば、インテグレーテッド・ドライブ・エレクトロニクス(IDE)またはシリアル・アドバンスト・テクノロジー・アタッチメント(SATA)インターフェースを使用してもよい。スーパI/O(SIO)デバイス236が、SB/ICH204に接続されてもよい。
オペレーティング・システムは、処理ユニット206上で実行される。オペレーティング・システムは、図2におけるシステム200内の種々のコンポーネントの制御を調整および提供する。クライアントとして、オペレーティング・システムは、市販のオペレーティング・システムであってもよい。Java(登録商標)プログラミング・システムのようなオブジェクト指向プログラミング・システムは、オペレーティング・システムと共に実行され、システム200上で実行されるJava(登録商標)プログラムまたはアプリケーションからオペレーティング・システムに対する呼び出しを提供する。
サーバとして、システム200は、例えば、IBM(登録商標)eServer(登録商標)System p(登録商標)コンピュータ・システムであってもよく、アドバンスド・インタラクティブ・エグゼクティブ(AIX(登録商標))オペレーティング・システムまたはLinux(登録商標)オペレーティング・システムを実行する。システム200は、処理ユニット206において複数のプロセッサを含む対称マルチプロセッサ(SMP)システムであってもよい。あるいは、シングル・プロセッサ・システムが採用されてもよい。
オペレーティング・システム、オブジェクト指向プログラミング・システムおよびアプリケーションまたはプログラムのための命令は、ハード・ディスク・ドライブ226のようなストレージ・デバイスに配置され、処理ユニット206による実行のためにメイン・メモリ208にロードされてもよい。同様に、一実施形態による1以上のメッセージ処理プログラムが、ストレージ・デバイスもしくはメイン・メモリまたはこれらの両方によって格納されるように適合されてもよい。
本発明の例示的な実施形態のためのプロセスは、例えば、コンピュータ使用可能なプログラム・コードを用いて処理ユニット206によって実行されてもよく、コンピュータ使用可能なプログラム・コードは、メイン・メモリ208、ROM224のようなメモリまたは1以上の周辺装置226,230に配置されてもよい。
図2に示すような第1のバス238または第2のバス240のようなバス・システムは、1以上のバスを含むことができる。もちろん、バス・システムは、ファブリックまたはアーキテクチャに取り付けられる異なるコンポーネントまたはデバイス間でデータの転送を提供する、任意のタイプの通信ファブリックまたはアーキテクチャを使用して実装することができる。図2のモデム222またはネットワーク・アダプタ212のような通信ユニットは、データを送受信するために使用される1以上のデバイスを含んでもよい。メモリは、例えば、図2のNB/MCH202に見られるようなメイン・メモリ208、ROM224またはキャッシュであってもよい。
当業者であれば、図1および図2におけるハードウェアが実装に依存して様々で有り得ることを理解するであろう。図1および図2に示すハードウェアに加えて、またはその代替として、フラッシュ・メモリ、同等の不揮発性メモリまたは光ディスク・ドライブなどのような他の内部ハードウェアまたは周辺装置が使用されてもよい。また、本発明の精神および範囲から逸脱することなく、前述したシステム以外のマルチプロセッサ・データ処理システムにも、例示的な実施形態のプロセスを適用することができる。
さらに、システム200は、クライアント・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、タブレット・コンピュータ、ラップトップ・コンピュータ、電話または他の通信デバイス、パーソナル・デジタル・アシスタント(PDA)などを含む多くの異なるデータ処理システムのいずれかの形態を取ってもよい。いくつかの例示的な例では、システム200は、例えば、オペレーティング・システム・ファイルもしくはユーザ生成データまたはこれらの両方を記憶するための不揮発性メモリを提供するためにフラッシュ・メモリで構成されたポータブル・コンピューティング・デバイスであってもよい。よって、システム200は、本質的には、アーキテクチャ上の制限なく、任意の既知のまたは今後開発されるデータ処理システムであってもよい。
図3を参照すると、複数のリソースを有するシステム・インフラストラクチャを横断して複数のマイクロサービスをデプロイするためのコンピュータ実装方法のフロー図が示されている
ステップ310は、複数のマイクロサービスの依存関係を決定することを含む。一実施形態においては、複数のマイクロサービスの依存関係を決定することは、複数のマイクロサービスの複数の異なる構成を識別することを含む。各構成は、マイクロサービス・インスタンスの各自のセットを含む。複数のマイクロサービスの各構成について、ステップは、マイクロサービス・インスタンスの各自のセットの機能性を決定するステップと、各構成について決定された機能性に基づいて、複数のマイクロサービスのうちの少なくとも1つの依存関係を決定することをさらに含む。
例えば、Mが、サービス・インフラストラクチャを含む複数のマイクロサービスである。マイクロサービスの例には、コンテナ、仮想マシンまたは他の仮想化環境が含まれる。Mのサブセット、つまり、必要とされるように機能する、すなわち、”アップ(up)”とみなされるシステム・インフラストラクチャをもたらす複数のマイクロサービスの構成を決定する必要がある。Mのいくつかの別個の要素、すなわち、マイクロサービスは、複数のインスタンスを有する同一のコンポーネントであってもよい。必要とされるように実行されるシステム・インフラストラクチャをもたらすMのサブセットは、機能:
Figure 2022546994000005
を決定する必要があるものとして定式化することができ、ここで、Sのマイクロサービスのみが”アップ(up)”であるサービス・インフラストラクチャが機能していると考えられるときかつそのときに限り、
Figure 2022546994000006
である。
一実施形態においては、複数のマイクロサービスの複数の異なる構成を識別することは、複数のマイクロサービスの構成を識別するためのユーザ入力を受信し、ユーザ入力に基づいて複数のマイクロサービスの構成を識別することを含む。
一例では、fを決定する方法は、ユーザ、例えば製品設計者が、潜在的な許容可能なセットを手動で入力できるようにすることを含んでもよい。
Figure 2022546994000007
の全ての要素、すなわちMのサブセットを列挙する必要はない。これは、
Figure 2022546994000008
で、yがxのスーパセットであり
Figure 2022546994000009
で、yがxのサブセットであるためである。
一実施形態においては、マイクロサービス・インスタンスの各自のセットの機能性を決定することは、マイクロサービス・インスタンスのセットの実行をシミュレートまたはテストすることと、シミュレーションまたはテストの結果に基づいて、マイクロサービスのセットの機能性を決定することとを含む。
この例では、fを決定する方法は、比較的包括的なシステム・テスト・スイートがあることを保証し、次いで、このスイートを使用して、いずれのマイクロサービスがサービス・インフラストラクチャの性能にとって重要であると考えられているか、いずれがそうではないかを経験的に決定することを含んでもよい。これは、各コンテナを反復し、各コンテナをオフに切り替えて、テストスイートを再実行し、結果を使用して、重要セット、つまり、サービス・インフラストラクチャの性能にとって重要であると考えられるマイクロサービスのセット内にマイクロサービスを維持するかどうかを決定することによって達成されてもよい。このアプローチは、部分的に順序付けられたセット:
Figure 2022546994000010
が、最小の要素、すなわちマイクロサービスを有することが暗黙的に想定される。この仮定が正しくない場合には、最小要素の各々の位置を決定する代わりに、確率的方法を使用することができる。
ステップ320は、サービス・インフラストラクチャの各リソースについて、時間に関してリソースの可用性を記述する機能停止分布を決定することを含む。一実施形態においては、リソースについての機能停止分布を決定することは、リソースに関連付けられたサービス・レベル合意を分析すること、もしくはリソースの以前の可用性に関する履歴機能停止情報を処理すること、またはこれらの両方を含む。
この例では、複数のリソースの階層が生成される。階層は、種々の異なるレベルの”可用性ゾーン”を表す。機能停止分布、すなわちダウンタイム分布は、各可用性ゾーンに関連付けられる。複数のリソースの階層は、各物理サーバを含んでもよく、ここで、各物理サーバは、(物理的な交換まで)3時間”ダウン(down)”している1%の見込みと、そうでない0%の見込みとを含む機能停止分布を有する。階層は、多数のサーバを含むデータセンタをさらに含んでもよく、ここで、各サーバは、5時間”ダウン(down)している0.001%の見込みと、10分間”ダウン(Down)”している0.01%の見込みとを2データ点間の線形分布とともに含む機能停止分布を有する。階層は、また、多数のデータセンタをカバーする電力グリッドもしくは複数のデータセンタにまたがるネットワークまたはこれらの両方を含み得るが、必ずしも電力グリッド境界とは一致しなくともよい。
この例では、機能停止分布は、リソースに関連付けられたサービス・レベル合意、例えば、サービス・インフラストラクチャの保守員もしくは使用されるハードウェアの製造業者またはこれらの両方から、直接取得されてもよい。機能停止分布は、長期的なアップタイム・メトリクスによって推定されてもよい。
ステップ330は、各リソースに関連付けられた機能停止分布と、複数のマイクロサービスの依存関係とに基づいて、サービス・インフラストラクチャのリソースを横断した複数のマイクロサービスのデプロイメント構成を決定することを含む。
一実施形態においては、サービス・インフラストラクチャのリソースを横断した複数のマイクロサービスのデプロイメント構成を決定することは、各リソースについて、リソースに関連付けられた機能停止分布に基づいて、リソースの所定の時間期間にわたる非可用性の確率を決定することを含む。ステップは、各リソースの非可用性の確率と、複数のマイクロサービスの依存関係とに基づいて、サービス・インフラストラクチャのリソースを横断した複数のマイクロサービスのデプロイメント構成を決定することをさらに含む。デプロイメント構成は、複数のマイクロサービスの非可用性の確率を最小化する。
一実施形態においては、サービス・インフラストラクチャのリソースを横断して複数のマイクロサービスのデプロイメント構成を決定することは、モンテカルロ法を使用して、複数の異なるデプロイメント構成についての複数のマイクロサービスの非可用性を評価することを含む。
この例では、サービス・インフラストラクチャのリソースを横断した複数のマイクロサービスの決定されたデプロイメント構成に基づいて、ダウンタイムを発生させる確率、すなわち、所定時間内の複数のマイクロサービスの非可用性が計算される。非可用性は、モンテカルロ法を用いて計算され、分布の代わりに、確率を決定することを可能とする。サービス・インフラストラクチャが、故障した、すなわちクラッシュしたものを交換するための新たなインスタンスを再プロビジョニングすることによって復帰することができるものと仮定されるが、マイクロサービスの重要なセットからのいずれかがその全てのインスタンスを失う場合には、比較的小さいが有害な量のダウンタイムが発生する。
純粋な例として、ダウンタイムは、(故障の検出および交換サービスの起動を含んで)30秒である可能性がある。しかしながら、これは、関与するシステムに大きく依存し得るため、他の例では、ダウンタイムは、はるかに高いか、あるいははるかに低くい可能性がある。
一実施形態においては、ステップ340は、サービス・インフラストラクチャの複数のリソースの可用性を監視することを含む。ステップ345は、サービス・インフラストラクチャのリソースの可用性の変化を検出することを含む。ステップ350は、サービス・インフラストラクチャのリソースの可用性の変化を検出したことに応答して、サービス・インフラストラクチャの複数のリソースを横断した複数のマイクロサービスの修正されたデプロイメントを決定することを含む。
図4を参照すると、複数のリソースを有するシステム・インフラストラクチャを横断して複数のマイクロサービスをデプロイするためのシステムの例示的な実施形態の簡略化されたブロック図が示される。
システムは、複数のマイクロサービスの依存関係を決定するように構成された解析コンポーネント410を含む。システムは、さらに、サービス・インフラストラクチャの各リソースについて、時間に関するリソースの可用性を記述する機能停止分布を決定するように構成された処理コンポーネント420を含む。システムは、各リソースに関連付けられた機能停止分布と、複数のマイクロサービスの依存関係とに基づいて、サービス・インフラストラクチャのリソースを横断して複数のマイクロサービスのデプロイメント構成を決定するように構成された構成コンポーネント430をさらに含む。
一実施形態においては、解析コンポーネント410は、複数のマイクロサービスの複数の異なる構成を識別するように構成された識別コンポーネント412を含む。各構成は、マイクロサービス・インスタンスの各自のセットを含む。解析コンポーネント410は、複数のマイクロサービスの各構成について、マイクロサービス・インスタンスの各自のセットの機能性を決定するように構成された機能性アセスメント・コンポーネント414をさらに含む。解析コンポーネント410は、また、各構成について決定された機能性に基づいて、複数のマイクロサービスのうちの少なくとも1つの依存関係を決定するためのデータ分析コンポーネント416を含む。
一実施形態においては、識別コンポーネント412は、複数のマイクロサービスの構成を識別するためのユーザ入力を受信し、ユーザ入力に基づいて複数のマイクロサービスの構成を識別するよう構成されている。
一実施形態においては、機能性アセスメント・コンポーネント414は、マイクロサービス・インスタンスのセットの実行をシミュレートまたはテストし、シミュレートまたはテストすることの結果に基づいて、マイクロサービス・インスタンスのセットの機能性を決定するよう構成される。
一実施形態においては、処理コンポーネント420は、各リソースに関連付けられたサービス・レベル合意を解析し、リソースの以前の可用性に関する複数の履歴機能停止情報を処理するようにさらに構成される。
一実施形態においては、構成コンポーネント430は、各リソースについて、リソースに関連付けられた機能停止分布に基づいて、所定の期間におけるリソースの非可用性の確率を決定するようにさらに構成される。構成コンポーネント430は、各リソースについての非可用性の確率と、複数のマイクロサービスの依存関係とに基づいて、サービス・インフラストラクチャのリソースを横断した複数のマイクロサービスのデプロイメント構成を決定するようにさらに構成される。デプロイメント構成は、複数のマイクロサービスの非可用性の確率を最小にする。構成コンポーネント430は、また、モンテカルロ法を用いて、複数の異なるデプロイメント構成について複数のマイクロサービスの非可用性を評価するように構成される。
一実施形態においては、システムは、サービス・インフラストラクチャの複数のリソースの可用性を監視し、サービス・インフラストラクチャのリソースの可用性の変化を検出するように構成された監視コンポーネント440をさらに含んでもよい。構成コンポーネント430は、サービス・インフラストラクチャのリソースの可用性の検出された変化に応答して、サービス・インフラストラクチャのリソースを横断して複数のマイクロサービスの修正されたデプロイメントを決定するようにさらに構成される。
さらなる例として、図5に示すように、実施形態は、コンピュータ・システムを含んでもよく、コンピュータ・システムは、ネットワーク化されたシステム7の部分を形成し得る。コンピュータ・システム/サーバ70のコンポーネントは、これらに限定されるものではないが、例えばプロセッサまたは処理ユニット71と、システム・メモリ74と、システム・メモリ74から処理ユニット71を含む種々のシステム・コンポーネントを結合するバス90とを含む1以上の処理配置を含んでもよい。
処理ユニット71は、ターゲット・オブジェクト型を定義するように構成され、ターゲット・オブジェクト型は、ミドルウェア機能の結果を保持するように適合される。また、処理ユニット71は、アプリケーションについての第1オブジェクトを受信し、その後、第1オブジェクトを用いてミドルウェア機能の処理を実行し、処理結果を生成する。処理ユニット71は、処理結果に基づいて、ターゲット・オブジェクト型の第2オブジェクトを生成し、第2オブジェクトをアプリケーションに提供する。
バス90は、種々のバス・アーキテクチャの任意のものを使用する、メモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、プロセッサまたはローカル・バスを含むいくつかのタイプのバス構造のうちの1以上を表す。例として、このようなアーキテクチャには、限定されるものではないが、インダストリ・スタンダード・アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカル・バスおよびペリフェラル・コンポーネント・インターコネクト(PCI)バスが含まれる。
コンピュータ・システム/サーバ70は、典型的には、種々のコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ70によってアクセス可能な任意の利用可能な媒体とすることができ、揮発性媒体と不揮発性媒体の両方、リムーバブル媒体と非リムーバブル媒体の両方を含む。
システム・メモリ74は、ランダム・アクセス・メモリ(RAM)75もしくはキャッシュ・メモリ76またはこれらの両方などの揮発性メモリの形式のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ70は、他のリムーバブル/非リムーバブル、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、ストレージ・システム74が、非リムーバブル、不揮発性の磁気媒体(図示しないが、通常「ハード・ドライブ」と呼ばれる。)に対する読み取りと書込みを行うために提供されてもよい。図示しないが、リムーバブル、不揮発性の磁気ディスク(たとえば、「フロッピー(登録商標)ディスク」)に対する読み取りと書込みを行うための磁気ディスク・ドライブおよびCD-ROM、DVD-ROMまたは他の光媒体などのリムーバブル、不揮発性の光ディスクに対する読み取りと書込みを行うための光ディスク・ドライブが提供されてもよい。そのような例において、各々は、1以上のデータ媒体インターフェースによってバス90に接続されてもよい。以下でさらに詳細に示され、説明されるように、メモリ74は、本開示の実施形態の機能を実行するように構成されたプログラム・モジュールのセット(たとえば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含んでよい。
プログラム・モジュール79のセット(少なくとも1つ)を有するプログラム/ユーティリティ78が、限定ではなく例として、メモリ74に記憶されてもよく、オペレーティング・システム、1以上のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データも同様である。オペレーティング・システム、1以上のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データの各々またはこれらの任意の組み合せは、ネットワーク環境の実装を含んでよい。プログラム・モジュール79は、概して、本明細書に記載の実施形態の機能もしくは方法論またはこれらの両方を実行する。
コンピュータ・システム/サーバ70は、キーボード、ポインティング・デバイス、ディスプレイ85などの1以上の外部デバイス80;ユーザがコンピュータ・システム/サーバ70と対話できるようにする1以上のデバイス;もしくはコンピュータ・システム/サーバ70が1以上の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(たとえば、ネットワーク・カード、モデムなど)またはこれらの組み合わせと通信してもよい。このような通信は、入力/出力(I/O)インターフェース72を介して行うことができる。さらに、コンピュータ・システム/サーバ70は、ネットワーク・アダプタ73を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)もしくはパブリック・ネットワーク(たとえば、インターネット)またはこれらの組み合わせなどの1以上のネットワークと通信することができる。図示されるように、ネットワーク・アダプタ73は、バス90を介してコンピュータ・システム/サーバ70の他の構成要素と通信する。図示されていないが、他のハードウェア・コンポーネントもしくはソフトウェア・コンポーネントまたはこれらの両方がコンピュータ・システム/サーバ70とともに使用されてもよいことを理解されたい。具体例には、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブおよびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらに限定されない。
本出願の文脈において、本発明の実施形態が方法を構成する場合、そのような方法は、コンピュータによる実行のためのプロセス、すなわち、コンピュータ実装方法であってもよいことを理解されたい。したがって、この方法の種々のステップは、コンピュータ・プログラムの種々の部分、例えば、1以上のアルゴリズムの種々の部分を反映することができる。
本発明は、システム、方法もしくはコンピュータ・プログラム製品またはこれらの組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の側面を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含んでもよい。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持し格納する有形のデバイスであってよい。コンピュータ可読ストレージ媒体は、例えば、これに限定されるものではないが、電子的ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたは上記の任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のより具体的な例示の非網羅的リストとしては、ポータブルなコンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能プログラマブル・リード・オンリー・メモリ(EPROMまたはフラッシュ・メモリ)、ストレージ・クラス・メモリ(SCM)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブルなコンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリースティック、フロッピー(登録商標)ディスク、パンチカードまたは記録された命令を有する溝内の隆起構造のような機械的エンコードされたデバイス、および上記の任意の適切な組み合わせが含まれる。コンピュータ可読ストレージ媒体は、本明細書で使用されるように、電波、自由伝搬する電磁波、導波路または他の伝送媒体を伝搬する電磁波(たとえば、ファイバ光ケーブルを通過する光パルス)または、ワイヤを通して伝送される電気信号のような、それ自体が一時的な信号として解釈されるものではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピュータ/処理デバイスに、または、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはこれらの組み合わせといったネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジサーバまたはこれらの組み合わせを含んでもよい。各コンピュータ/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、1以上のプログラミング言語の任意の組み合わせで書かれたソース・コードあるいはオブジェクト・コードであってよく、1以上のプログラミング言語は、Smalltalk(登録商標)、C++またはこれらに類するもなどのオブジェクト指向言語、Cプログラミング言語または類似のプログラミング言語などの従来型の手続型言語を含む。コンピュータ可読プログラム命令は、スタンド・アローンのソフトウェア・パッケージとして、全体としてユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上かつ部分的に遠隔のコンピュータ上で、または、完全に遠隔のコンピュータまたはサーバ上で実行されてもよい。後者のシナリオでは、遠隔のコンピュータは、ユーザのコンピュータに、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通じて接続されてもよく、あるいは接続は、(例えば、インターネット・サービス・プロバイダを用いてインターネットを通じて)外部コンピュータになされてもよい。いくつかの実施形態においては、電気的回路は、本発明の側面を実行するために、コンピュータ可読プログラム命令の状態情報を利用して、電気的回路を個別化することによって、コンピュータ可読プログラム命令を実行してもよく、この電気的回路は、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む。
本発明の側面は、本明細書において、本発明の実施形態に従った方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはこれらの両方を参照しながら、説明される。フローチャート図もしくはブロック図またはこれらの両方の各ブロック、および、フローチャート図もしくはブロック図またはこれらの両方における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装されてもよいことが理解されよう。
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、特定用途コンピュータのプロセッサまたは他のプログラマブル・データ処理装置に提供され、コンピュータのプロセッサまたは他のプログラマブル・データ処理装置を介して実行される命令が、フローチャート図もしくはブロック図またはこれらの両方のブロックまたは複数のブロックにおいて特定される機能/作用を実装するための手段を作成するように、マシンを生成する。これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブル・データ処理装置もしくは他のデバイスまたはこれらの組み合わせに特定のやり方で機能するよう指示できるコンピュータ可読ストレージ媒体に格納され、それに格納された命令を有するコンピュータ可読ストレージ媒体に、フローチャート図もしくはブロック図またはこれらの両方ブロックまたは複数のブロックで特定される機能/作用の側面を実装する命令を含む製品が含まれるようにする。
コンピュータ可読プログラム命令は、また、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル・データ処理装置または他のデバイス上で一連の動作ステップを実行させて、コンピュータ、他のプログラマブル・データ処理装置または他のデバイス上で実行される命令が、フローチャート図もしくはブロック図またはこれらの両方のブロックまたは複数のブロックで特定される機能/作用の側面を実装するように、コンピュータ実装処理を生成することもできる。
図面におけるフローチャート図およびブロック図は、本発明の種々の実施形態に従ったシステム、方法およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性および動作を示す。この点に関して、フローチャート図またはブロック図の各ブロックは、特定の論理機能を実装するための1以上の実行可能な命令を含む、モジュール、セグメントまたは命令の部分を表す可能性がある。いくつかの代替の実装では、ブロックにおいて言及された機能は、図面に示された順序から外れて生じる可能性がある。例えば、連続して示される2つのブロックは、実際には、同時に、実質的に同時に実行されてもよく、あるいは、複数のブロックは、関与する機能性に応じて逆の順序で実行されてもよい。ブロック図もしくはフローチャート図またはこれらの両方の各ブロックおよびブロック図もしくはフローチャート図またはこれらの両方の複数のブロックの組み合わせが、特定の機能または作用を実行し、または、特別な目的のハードウェアおよびコンピュータ命令の組み合わせを実施する、特定目的ハードウェアベースのシステムによって実装されてもよいことに留意されたい。
この開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書で詳述される教示の実装は、クラウド・コンピューティング環境に限定されないことが理解される。むしろ、本発明の実施形態は、現時点で知られた、またはこれから開発される他の任意のタイプのコンピューティング環境と併せて実装可能性である。
クラウド・コンピューティングは、最小の管理労力またはサービス・プロバイダとの対話で迅速にプロビジョニングおよびリリースされ得る、構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシンおよびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能とする、サービス配布のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデルおよび少なくとも4つのデプロイメント・モデルを含んでもよい。
特性は、以下の通りである。
オンデマンド・セルフ・サービス:クラウド・コンシューマは、サービス・プロバイダとの人的な対話を必要とせずに自動的に必要なだけ、サーバ時間およびネットワーク・ストレージなどのコンピュータ能力を一方的にプロビジョニングすることができる。
広帯域ネットワーク・アクセス:能力は、ネットワーク越しに利用可能であり、異種シン・クライアントまたはシック・クライアント・プラットフォーム(例えば、モバイルフォン、ラップトップ、PDA)による使用を促進する標準的なメカニズムを介して、アクセスされる。
リソース・プーリング:プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて複数のコンシューマに提供するためにプールされ、種々の物理的および仮想的リソースが需要に従って動的に割り当てられ、また、再割り当てられる。コンシューマは、一般的に、提供されるリソースの正確な場所を管理したり、知識を有したりせず、しかし、より高度な抽象レベル(例えば国、州、またはデータセンタ)にて場所を指定することが可能であるという意味で、場所の独立感がある。
迅速な弾力性:能力は、迅速かつ柔軟に、いくつかの場合では自動的に、プロビジョニングされて素早くスケール・アウトすることができ、また、迅速にリリースされて素早くスケール・インすることができる。コンシューマにとって、プロビジョニング利用可能な能力は、しばしば外面的には無制限のように見え、任意の時間に任意の量を購入することができる。
測量されたサービス:クラウドシステムは、サービスのタイプにとって適切なある抽象レベル(例えば、ストレージ、処理、帯域幅、アクティブ・ユーザ数)での計量能力を利用することによって、自動的にリソース使用を制御し、また最適化する。リソース使用量は、監視され、制御されおよび報告されて、利用サービスのプロバイダおよびコンシューマの双方に対する透明性を提供する。
サービス・モデルは、以下の通りである。
ソフトウェア・アズ・ア・サービス(SaaS):コンシューマに提供される能力は、クラウド・インフラストラクチャ上で稼働するプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ(例えばウェブベースの電子メール)などのシン・クライアント・インタフェースを介して種々のクライアント・デバイスからアクセス可能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または、限定されたユーザ固有のアプリケーション構成設定の潜在的な例外を除いて個々のアプリケーション能力すらも含む下層のインフラストラクチャを管理または制御しない。
プラットフォーム・アズ・ア・サービス(PaaS):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを用いて作成された、コンシューマ作成または獲得のアプリケーションをクラウド・インフラストラクチャ上にデプロイすることである。コンシューマは、ネットワーク、サーバ、オペレーティング・システムまたはストレージを含む下層のクラウド・インフラストラクチャを管理または制御しないが、デプロイされたアプリケーションおよび場合によってはアプリケーション・ホスティング環境の構成への制御を有する。
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマに提供される能力は、処理、ストレージ、ネットワーク、および、コンシューマが、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアをデプロイし、稼働させることができる他の基本的なコンピューティング・リソースを提供することである。コンシューマは、下層のクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションに対する制御、および、場合によっては、選択したネットワーキング・コンポーネント(例えば、ホストファイアウォール)の限定された制御を有する。
デプロイメント・モデルは、以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、1つの組織のためだけに使用される。これは、組織または第三者によって管理されてもよく、オンプレミスまたはオフプレミスが存在し得る。
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織により共有され、共通の懸念(例えば、ミッション、セキュリティ要件、ポリシーおよびコンプライアンスに関する考慮事項)を有する特定のコミュニティをサポートする。これは、組織または第三者によって管理されてもよく、オンプレミスまたはオフプレミスが存在し得る。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆、または、大きな業界団体が利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2以上のクラウド(プライベート、コミュニティまたはパブリック)の混成であり、これらのクラウドは、固有のエンティティのままであるが、しかし、データおよびアプリケーションのポータビリティを可能とする標準化されたまたは独自の技術(例えばクラウド間の負荷分散のためのクラウド・バースティング)によって結合される。
クラウド・コンピューティング環境は、ステートレス性、低結合、モジュール性および意味論的な相互運用性に重点を置いたサービス指向である。クラウド・コンピューティングの核心は、相互接続された複数のノードのネットワークを含むインフラストラクチャである。
ここで、図6を参照すると、例示的なクラウド・コンピューティング環境1000が示されている。図示するように、クラウド・コンピューティング環境1000は、1以上のクラウド・コンピューティング・ノード101を含み、これと、例えば、PDAまたは携帯電話1000A、デスクトップ・コンピュータ1000B、ラップトップ・コンピュータ1000Cもしくは自動車コンピュータ・システム1000Nまたはこれらの組み合わせなどの、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信してもよい。ノード101は、互いに通信してもよい。これらは、プライベート、コミュニティ、パブリックもしくはハイブリッド・クラウドなど上述したような、またはこれらの組み合わせなどの1以上のネットワークにおいて、物理的にまたは仮想的にグループ化(図示しない)されてもよい。これは、クラウド・コンピューティング環境1000が、インフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせをサービスとして提供することを可能とし、これらについては、クラウド・コンシューマは、リソースをローカル・コンピューティング・デバイス上で維持する必要がない。図6に示されるコンピューティング・デバイス1000A~1000Nのタイプは、説明する目的のみであり、コンピューティング・ノード101およびクラウド・コンピューティング環境1000が、任意のタイプのネットワーク、ネットワークアドレス可能な接続(例えば、ウェブ・ブラウザを使用して)またはこれらの両方を介して、任意のタイプのコンピュータ化されたデバイスと通信することができることが理解される。
ここで、図7を参照すると、クラウド・コンピューティング環境1000によって提供される機能抽象レイヤのセット1100が示される。図7に示すコンポーネント、レイヤおよび機能が、説明する目的のみであり、本発明の実施形態は、これらに限定されないことを事前に理解されるべきである。図示すように、以下の層および対応する機能が提供される。
ハードウェアおよびソフトウェア・レイヤ1102は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例には、メインフレーム1104、RISC(縮約命令セットコンピュータ)アーキテクチャに基づくサーバ1106、サーバ1108、ブレードサーバ1110、ストレージ・デバイス1112およびネットワークおよびネットワーキング・コンポーネント1114を含む。いくつかの実施形態においては、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア1116およびデータベース・ソフトウェア1118を含む。
仮想化レイヤ1120は、抽象化レイヤを提供し、そこから仮想化サーバ1122、仮想化ストレージ1124、バーチャル・プライベート・ネットワークを含む仮想化ネットワーク1126、仮想化アプリケーションおよびオペレーティング・システム1128、および仮想クライアント1130などの仮想化エンティティの例が提供される。
一例においては、管理レイヤ1132は、以下に説明する機能を提供してもよい。リソース・プロビジョニング1134は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。メータリングおよびプライシング1136は、リソースがクラウド・コンピューティング環境内で利用されるコストの追跡およびこれらのソースの消費に対する請求またはインボイスの送付を提供する。一例においては、これらのリソースは、アプリケーション・ソフトウェアのライセンスを含んでもよい。セキュリティは、クラウド・コンシューマおよびタスクについての本人確認、並びに、データおよび他のリソースに対する保護を提供する。ユーザポータル1138は、コンシューマおよびシステム管理者に対しクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル・マネジメント1140は、要求されるサービス・レベルを満たすようにクラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス・レベル合意(SLA)の計画と履行1142はサービス・レベル、将来の要求が予期されるクラウド・コンピューティグ・リソースの事前配置および調達を提供する。
ワークロード・レイヤ1144は、クラウド・コンピューティング環境が利用される機能性の例を提供する。ワークロードおよびこのレイヤから提供される機能の例には、マッピングおよびナビゲ―ション1146、ソフトウェア開発およびライフサイクル管理1148、仮想クラスルーム教育配信1150、データ・アナリティクス処理1152、トランザクション処理1154、および、複数のリソースを有するサービス・インフラストラクチャを横断して複数のマイクロサービスをデプロイすること1156が含まれる。
本開示の種々の実施形態の説明が、説明のために提示されたが、しかしながら、網羅的であること、または、開示される実施形態に限定されることを意図するものではない。説明される実施形態の範囲および精神を逸脱することなく、多くの変更および変形が当業者にとって明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の応用または市場で発見される技術に対する技術的改善を最もよく説明するために、あるいは、他の当業者が、本明細書で開示される実施形態を理解できるように選ばれたものである。

Claims (20)

  1. 複数のリソースを有するサービス・インフラストラクチャを横断して複数のマイクロサービスをデプロイするためのコンピュータ実装方法であって、
    前記複数のマイクロサービスの少なくとも1つの依存関係を決定するステップと、
    前記複数のリソースの各リソースについて、時間に関するリソースの可用性を記述した機能停止分布を決定するステップと、
    各リソースに関連付けられた機能停止分布と、前記複数のマイクロサービスの前記少なくとも1つの依存関係とに基づいて、前記サービス・インフラストラクチャの前記リソースを横断した前記複数のマイクロサービスのデプロイメント構成を決定するステップと
    を含む、コンピュータ実装方法。
  2. 前記複数のマイクロサービスの少なくとも1つの依存関係を決定するステップは、
    前記複数のマイクロサービスの複数の異なる構成を識別するステップであって、前記複数の異なる構成の各々がマイクロサービス・インスタンスの各自のセットを含む、識別するステップと、
    前記複数のマイクロサービスの前記複数の異なる構成の各々について、前記マイクロサービス・インスタンスの各自のセットの機能性を決定するステップと、
    前記複数の異なる構成の各々についての前記複数のマイクロサービス・インスタンスの各自のセットの決定された機能性に基づいて、前記複数のマイクロサービスのうちの少なくとも1つの依存関係を決定するステップと
    を含む、請求項1に記載のコンピュータ実装方法。
  3. 前記マイクロサービス・インスタンスの各自のセットの機能性を決定するステップは、
    前記マイクロサービス・インスタンスの各自のセットの実行をシミュレートまたはテストするステップと、
    シミュレートまたはテストすることの結果に基づいて、前記マイクロサービス・インスタンスの各自のセットの機能性を決定するステップと
    を含む、請求項2に記載のコンピュータ実装方法。
  4. 前記複数のマイクロサービスの前記複数の異なる構成を識別するステップは、
    前記複数のマイクロサービスの各々の構成を識別することに関連したユーザ入力を受信するステップと、
    前記ユーザ入力に基づいて、前記複数のマイクロサービスの各々の前記構成を識別するステップと
    を含む、請求項2に記載のコンピュータ実装方法。
  5. 前記サービス・インフラストラクチャの前記リソースを横断した前記複数のマイクロサービスの前記デプロイメント構成を決定するステップは、
    前記サービス・インフラストラクチャの各リソースについて、前記リソースに関連付けられた機能停止分布に基づいて、前記リソースの所定の時間期間にわたる非可用性の確率を決定するステップと、
    前記サービス・インフラストラクチャの各リソースの前記非可用性の確率と、前記複数のマイクロサービスの前記少なくとも1つの依存関係とに基づいて、前記サービス・インフラストラクチャの前記リソースを横断した前記複数のマイクロサービスの前記デプロイメント構成を決定するステップであって、前記デプロイメント構成は、前記複数のマイクロサービスの非可用性の確率を最小化する、決定するステップと
    を含む、請求項1に記載のコンピュータ実装方法。
  6. 前記サービス・インフラストラクチャの前記リソースを横断して前記複数のマイクロサービスの前記デプロイメント構成を決定するステップは、モンテカルロ法を使用して、複数の異なるデプロイメント構成についての前記複数のマイクロサービスの非可用性を評価するステップを含む、請求項5に記載のコンピュータ実装方法。
  7. 前記サービス・インフラストラクチャの前記複数のリソースの可用性を監視し、前記サービス・インフラストラクチャのリソースの前記可用性の変化を検出するステップと、
    前記サービス・インフラストラクチャの前記リソースの可用性の変化を検出したことに応答して、前記サービス・インフラストラクチャの前記複数のリソースを横断した前記複数のマイクロサービスの修正されたデプロイメントを決定するステップと
    をさらに含む、請求項1に記載のコンピュータ実装方法。
  8. 前記機能停止分布を決定するステップは、
    前記複数のリソースの各リソースに関連付けられたサービス・レベル合意を解析するステップと、
    前記リソースの以前の可用性に関する複数の履歴機能停止情報を処理するステップと
    のうちの少なくとも1つを含む、請求項1に記載のコンピュータ実装方法。
  9. 複数のリソースを有するサービス・インフラストラクチャを横断して、複数のマイクロサービスをデプロイするためのコンピュータ・システムであって、
    1以上のプロセッサと、1以上のコンピュータ可読メモリと、1以上のコンピュータ可読有形ストレージ媒体と、前記1以上のコンピュータ可読メモリの少なくとも1つを介して前記1以上のプロセッサのうちの少なくとも1つにより実行のために前記1以上のコンピュータ可読有形ストレージ媒体の少なくとも1つに格納されたプログラム命令とを含み、前記コンピュータ・システムは、方法を実行可能であり、前記方法は、
    前記複数のマイクロサービスの少なくとも1つの依存関係を決定するステップと、
    前記複数のリソースの各リソースについて、時間に関するリソースの可用性を記述した機能停止分布を決定するステップと、
    各リソースに関連付けられた機能停止分布と、前記複数のマイクロサービスの前記少なくとも1つの依存関係とに基づいて、前記サービス・インフラストラクチャの前記リソースを横断した前記複数のマイクロサービスのデプロイメント構成を決定するステップと
    を含む、コンピュータ・システム。
  10. 前記複数のマイクロサービスの少なくとも1つの依存関係を決定するステップは、
    前記複数のマイクロサービスの複数の異なる構成を識別するステップであって、前記複数の異なる構成の各々がマイクロサービス・インスタンスの各自のセットを含む、識別するステップと、
    前記複数のマイクロサービスの前記複数の異なる構成の各々について、前記マイクロサービス・インスタンスの各自のセットの機能性を決定するステップと、
    前記複数の異なる構成の各々についての前記複数のマイクロサービス・インスタンスの各自のセットの決定された機能性に基づいて、前記複数のマイクロサービスのうちの少なくとも1つの依存関係を決定するステップと
    を含む、請求項9に記載のコンピュータ・システム。
  11. 前記マイクロサービス・インスタンスの各自のセットの機能性を決定するステップは、
    前記マイクロサービス・インスタンスの各自のセットの実行をシミュレートまたはテストするステップと、
    シミュレートまたはテストすることの結果に基づいて、前記マイクロサービス・インスタンスの各自のセットの機能性を決定するステップと
    を含む、請求項10に記載のコンピュータ・システム。
  12. 前記複数のマイクロサービスの前記複数の異なる構成を識別するステップは、
    前記複数のマイクロサービスの各々の構成を識別することに関連したユーザ入力を受信するステップと、
    前記ユーザ入力に基づいて、前記複数のマイクロサービスの各々の前記構成を識別するステップと
    を含む、請求項10に記載のコンピュータ・システム。
  13. 前記サービス・インフラストラクチャの前記リソースを横断した前記複数のマイクロサービスの前記デプロイメント構成を決定するステップは、
    前記サービス・インフラストラクチャの各リソースについて、前記リソースに関連付けられた機能停止分布に基づいて、前記リソースの所定の時間期間にわたる非可用性の確率を決定するステップと、
    前記サービス・インフラストラクチャの各リソースの非可用性の確率と、前記複数のマイクロサービスの前記少なくとも1つの依存関係とに基づいて、前記サービス・インフラストラクチャの前記リソースを横断した前記複数のマイクロサービスの前記デプロイメント構成を決定するステップであって、前記デプロイメント構成は、前記複数のマイクロサービスの非可用性の確率を最小化する、決定するステップと
    を含む、請求項9に記載のコンピュータ・システム。
  14. 前記サービス・インフラストラクチャの前記リソースを横断して前記複数のマイクロサービスの前記デプロイメント構成を決定するステップは、モンテカルロ法を使用して、複数の異なるデプロイメント構成についての前記複数のマイクロサービスの非可用性を評価するステップを含む、請求項13に記載のコンピュータ・システム。
  15. 前記方法は、
    前記サービス・インフラストラクチャのリソースの前記可用性の変化を検出するステップと、
    前記サービス・インフラストラクチャの前記リソースの可用性の変化を検出したことに応答して、前記サービス・インフラストラクチャの前記複数のリソースを横断した前記複数のマイクロサービスの修正されたデプロイメントを決定するステップと
    をさらに含む、請求項9に記載のコンピュータ・システム。
  16. 前記機能停止分布を決定するステップは、
    前記複数のリソースの各リソースに関連付けられたサービス・レベル合意を解析するステップと、
    前記リソースの以前の可用性に関する複数の履歴機能停止情報を処理するステップと
    のうちの少なくとも1つを含む、請求項9に記載のコンピュータ・システム。
  17. 複数のリソースを有するサービス・インフラストラクチャを横断して複数のマイクロサービスをデプロイするためのコンピュータ・プログラム製品であって、
    1以上の非一時的なコンピュータ可読ストレージ媒体と、前記1以上の非一時的なコンピュータ可読ストレージ媒体の少なくとも1つに格納されたプログラム命令とを含み、前記プログラム命令は、プロセッサにより実行されて、プロセッサに方法を実行させ、前記方法は、
    前記複数のマイクロサービスの少なくとも1つの依存関係を決定するステップと、
    前記複数のリソースの各リソースについて、時間に関するリソースの可用性を記述した機能停止分布を決定するステップと、
    各リソースに関連付けられた機能停止分布と、前記複数のマイクロサービスの前記少なくとも1つの依存関係とに基づいて、前記サービス・インフラストラクチャの前記リソースを横断した前記複数のマイクロサービスのデプロイメント構成を決定するステップと
    を含む、コンピュータ・プログラム製品。
  18. 前記複数のマイクロサービスの少なくとも1つの依存関係を決定するステップは、
    前記複数のマイクロサービスの複数の異なる構成を識別するステップであって、前記複数の異なる構成の各々がマイクロサービス・インスタンスの各自のセットを含む、識別するステップと、
    前記複数のマイクロサービスの前記複数の異なる構成の各々について、前記マイクロサービス・インスタンスの各自のセットの機能性を決定するステップと、
    前記複数の異なる構成の各々についての前記複数のマイクロサービス・インスタンスの各自のセットの決定された機能性に基づいて、前記複数のマイクロサービスのうちの少なくとも1つの依存関係を決定するステップと
    を含む、請求項17に記載のコンピュータ・プログラム製品。
  19. 前記マイクロサービス・インスタンスの各自のセットの機能性を決定するステップは、
    前記マイクロサービス・インスタンスの各自のセットの実行をシミュレートまたはテストするステップと、
    シミュレートまたはテストすることの結果に基づいて、前記マイクロサービス・インスタンスの各自のセットの機能性を決定するステップと
    を含む、請求項18に記載のコンピュータ・プログラム製品。
  20. 前記複数のマイクロサービスの前記複数の異なる構成を識別するステップは、
    前記複数のマイクロサービスの各々の構成を識別することに関連したユーザ入力を受信するステップと、
    前記ユーザ入力に基づいて、前記複数のマイクロサービスの各々の前記構成を識別するステップと
    を含む、請求項18に記載のコンピュータ・プログラム製品。
JP2022513677A 2019-09-06 2020-09-01 サービス・インフラストラクチャを横断したマイクロサービスのデプロイ Pending JP2022546994A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/562,827 2019-09-06
US16/562,827 US11556321B2 (en) 2019-09-06 2019-09-06 Deploying microservices across a service infrastructure
PCT/IB2020/058128 WO2021044296A1 (en) 2019-09-06 2020-09-01 Deploying microservices across a service infrastructure

Publications (1)

Publication Number Publication Date
JP2022546994A true JP2022546994A (ja) 2022-11-10

Family

ID=74849728

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022513677A Pending JP2022546994A (ja) 2019-09-06 2020-09-01 サービス・インフラストラクチャを横断したマイクロサービスのデプロイ

Country Status (6)

Country Link
US (1) US11556321B2 (ja)
JP (1) JP2022546994A (ja)
CN (1) CN114341810A (ja)
DE (1) DE112020002987T5 (ja)
GB (1) GB2603340B (ja)
WO (1) WO2021044296A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11556321B2 (en) 2019-09-06 2023-01-17 International Business Machines Corporation Deploying microservices across a service infrastructure
US20210075887A1 (en) * 2019-09-09 2021-03-11 Red Hat, Inc. Artificial intelligence-powered diagram-to-deployment converter
KR20210063025A (ko) * 2019-11-22 2021-06-01 삼성전자주식회사 통신 시스템에서 네트워크 엘리먼트를 제어하기 위한 서버 및 그의 동작 방법
US10992540B1 (en) * 2020-05-19 2021-04-27 Cisco Technology, Inc. Determining formal models using weighting factors for computing elements in multi-cloud environments
US11449407B2 (en) * 2020-05-28 2022-09-20 Bank Of America Corporation System and method for monitoring computing platform parameters and dynamically generating and deploying monitoring packages
US11789852B2 (en) 2020-10-26 2023-10-17 Capital One Services, Llc Generating test accounts in a code-testing environment
US11994976B2 (en) * 2020-10-26 2024-05-28 Capital One Services, Llc Methods, systems, and media for a microservices orchestration engine
CN114826866B (zh) * 2022-03-31 2022-11-15 北京翼辉信息技术有限公司 跨平台微服务体系结构、计算设备及存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7496893B2 (en) 2006-06-15 2009-02-24 International Business Machines Corporation Method for no-demand composition and teardown of service infrastructure
US20160364666A1 (en) * 2015-06-12 2016-12-15 General Electric Company Dynamically controlling industrial system outage assignments to achieve dose states
US10387181B2 (en) * 2016-01-12 2019-08-20 International Business Machines Corporation Pre-deployment of particular virtual machines based on performance and due to service popularity and resource cost scores in a cloud environment
US10255413B2 (en) 2016-02-04 2019-04-09 International Business Machines Corporation Microservices inter-operational trust management
US9716617B1 (en) 2016-06-14 2017-07-25 ShieldX Networks, Inc. Dynamic, load-based, auto-scaling network security microservices architecture
US20180026856A1 (en) 2016-07-21 2018-01-25 Cisco Technology, Inc. Orchestrating micro-service deployment based on network policy health
US10261891B2 (en) * 2016-08-05 2019-04-16 International Business Machines Corporation Automated test input generation for integration testing of microservice-based web applications
US10255061B2 (en) 2016-08-05 2019-04-09 Oracle International Corporation Zero down time upgrade for a multi-tenant identity and data security management cloud service
CN106506605B (zh) 2016-10-14 2020-09-22 华南理工大学 一种基于微服务架构的SaaS应用构建方法
US10579407B2 (en) 2016-10-28 2020-03-03 ShieldX Networks, Inc. Systems and methods for deploying microservices in a networked microservices system
US10659496B2 (en) 2017-03-28 2020-05-19 ShieldX Networks, Inc. Insertion and configuration of interface microservices based on security policy changes
US10523507B2 (en) 2017-05-11 2019-12-31 Nirmata, Inc. Method and system for tuning performance of microservices-based applications
US10528450B2 (en) * 2017-08-15 2020-01-07 Sap Se Predicting defects in software systems hosted in cloud infrastructures
US10805382B2 (en) 2018-01-29 2020-10-13 International Business Machines Corporation Resource position planning for distributed demand satisfaction
CN110069380B (zh) 2019-03-20 2024-01-16 陕西合友网络科技有限公司 一种基于微服务的Web分布式软件演化与监控方法
US11556321B2 (en) 2019-09-06 2023-01-17 International Business Machines Corporation Deploying microservices across a service infrastructure

Also Published As

Publication number Publication date
CN114341810A (zh) 2022-04-12
US20210072965A1 (en) 2021-03-11
WO2021044296A1 (en) 2021-03-11
DE112020002987T5 (de) 2022-04-07
GB2603340A (en) 2022-08-03
GB202203977D0 (en) 2022-05-04
GB2603340B (en) 2023-04-26
US11556321B2 (en) 2023-01-17

Similar Documents

Publication Publication Date Title
JP2022546994A (ja) サービス・インフラストラクチャを横断したマイクロサービスのデプロイ
US10838803B2 (en) Resource provisioning and replacement according to a resource failure analysis in disaggregated data centers
US11093289B2 (en) Provisioning disaster recovery resources across multiple different environments based on class of service
US11050637B2 (en) Resource lifecycle optimization in disaggregated data centers
US20190199601A1 (en) Data-centric predictive container migration based on cognitive modelling
US9866481B2 (en) Comprehensive bottleneck detection in a multi-tier enterprise storage system
JP6909285B2 (ja) 送電網内の故障検出および位置特定のためのシステム、方法、およびコンピュータ・プログラム
US10977167B2 (en) Application monitoring with a decoupled monitoring tool
US10210054B1 (en) Backup optimization in hybrid storage environment
US10545847B2 (en) Grouping and isolating software changes to increase build quality
US10754720B2 (en) Health check diagnostics of resources by instantiating workloads in disaggregated data centers
US11379290B2 (en) Prioritizing and parallelizing the capture of data for debugging computer programs
US11188408B2 (en) Preemptive resource replacement according to failure pattern analysis in disaggregated data centers
WO2022116814A1 (en) Migrating complex legacy applications
US10691516B2 (en) Measurement and visualization of resiliency in a hybrid IT infrastructure environment
US10831580B2 (en) Diagnostic health checking and replacement of resources in disaggregated data centers
US10761915B2 (en) Preemptive deep diagnostics and health checking of resources in disaggregated data centers
US20190163379A1 (en) Prevent disk hardware failure for cloud applications
US9483781B2 (en) Automatically generating a review rating the performance of a pattern based on pattern deployment, service history and operation of pattern
US20210349705A1 (en) Performance sensitive storage system upgrade
US10680912B1 (en) Infrastructure resource provisioning using trace-based workload temporal analysis for high performance computing
US11516094B2 (en) Service remediation plan generation
US20230409419A1 (en) Techniques for controlling log rate using policy
US11971805B2 (en) Intelligent automated feature toggle system using annotations

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220518

RD16 Notification of change of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7436

Effective date: 20220329

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240419

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240528