JP2021502622A - ソフトウェア・アプリケーションのデプロイメント構成の動的選択のための方法、コンピュータ・プログラム及びコンピュータ・システム - Google Patents

ソフトウェア・アプリケーションのデプロイメント構成の動的選択のための方法、コンピュータ・プログラム及びコンピュータ・システム Download PDF

Info

Publication number
JP2021502622A
JP2021502622A JP2020520035A JP2020520035A JP2021502622A JP 2021502622 A JP2021502622 A JP 2021502622A JP 2020520035 A JP2020520035 A JP 2020520035A JP 2020520035 A JP2020520035 A JP 2020520035A JP 2021502622 A JP2021502622 A JP 2021502622A
Authority
JP
Japan
Prior art keywords
software
software application
deployment configuration
software component
indicators
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.)
Granted
Application number
JP2020520035A
Other languages
English (en)
Other versions
JP7257728B2 (ja
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 JP2021502622A publication Critical patent/JP2021502622A/ja
Application granted granted Critical
Publication of JP7257728B2 publication Critical patent/JP7257728B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/64Retargetable
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】 ソフトウェア・アプリケーションをデプロイするための方法、コンピュータ・プログラム、及びコンピュータ・システムを提供する。【解決手段】 方法及びシステムは、ソフトウェア・アプリケーションをデプロイするためのものである。ソフトウェア・アプリケーションが、デフォルト・デプロイメント構成でコンピューティング・システム上にデプロイされる。デフォルト・デプロイメント構成は、ソフトウェア・アプリケーションの相互作用するソフトウェア・コンポーネントを含む。ソフトウェア・アプリケーションの実行環境の1つ又は複数の動作インジケータが監視される。監視された1つ又は複数の動作インジケータから、実行環境の危機的状況が存在することが確認される。危機的状況が存在すると確認されたことに応答して、ソフトウェア・アプリケーションの1つ又は複数の代替的デプロイメント構成から1つの代替的デプロイメント構成が選択され、各代替的デプロイメント構成は、集約されて対応する集約されたソフトウェア・コンポーネントになるソフトウェア・コンポーネントの1つ又は複数のグループを有する。ソフトウェア・アプリケーションは、選択された代替的デプロイメント構成で、コンピューティング・システム上に再デプロイされる。【選択図】 図4

Description

本発明は、情報技術に関し、より特定的には、ソフトウェア・アプリケーションの管理に関する。
ソフトウェア・アプリケーションは、ますます複雑になっている。従って、ソフトウェア・アプリケーションは、一般に、モジュール式アーキテクチャを有し、そこでは、各ソフトウェア・アプリケーションは、互いの間で相互作用する複数のソフトウェア・コンポーネントを含む。モジュール式アーキテクチャは、ソフトウェア・アプリケーションの複雑さを取り除き、それにより、ソフトウェア・アプリケーションの管理(例えば、設計、開発及び保守)を著しく容易にする。
さらに、各ソフトウェア・アプリケーションの異なるデプロイメント構成を提供することができ(例えば、対応する設定に応じてソフトウェア・アプリケーションを構築することによって)、システム管理者は、異なる実行環境(例えば、テスト、生産)に最も適したソフトウェア・アプリケーションのデプロイメント構成を使用することができる。
典型的な例は、クラウド(コンピューティング)環境におけるものである。(クラウド)ソフトウェア・アプリケーションは、クラウド・プロバイダにより、サービスとしてユーザに提供され、要求に応じて対応するコンピューティング・リソースをプロビジョニング、構成、及び解放する(その結果、ソフトウェア・アプリケーションの実際の実装は、ユーザには完全に不透明である)。ソフトウェア・アプリケーションを実装する実際のコンピューティング・リソースからのソフトウェア・アプリケーションのこの分離は、その容量が無限であるように錯覚させ、特に高ピーク負荷条件においてソフトウェア・アプリケーションの利用を改善する(スケールメリットによって)。さらに、ユーザは今や、これらのコンピューティング・リソースの管理(例えば、これらのコンピューティング・リソースの据え付け及び保守)から解放され、ユーザは、これらのコンピューティング・リソースのコスト及び複雑さのために(特に個人及び小さい企業にとって)以前は実行不可能であったタスクを実行することができる(従量課金方式で)。
各ソフトウェア・アプリケーションのソフトウェア・コンポーネントは、一般に、対応する(マイクロ)サービスを実施する。各マイクロ・サービスは、要求される機能を提供するために、(外部サービスに加えて)ソフトウェア・アプリケーションの他のマイクロ・サービスを呼び出すことがある。次に、ソフトウェア・アプリケーションは、複数のインスタンスにおいて(例えば、地理的に分散される対応するデータセンタ上に)デプロイできるので、対応するクラウド・プロバイダのロード・バランサは、クラウド・プロバイダに最も近いソフトウェア・アプリケーションのインスタンスを用いてユーザのあらゆる要求にサービス提供し、応答性を高めることができる。さらに、ソフトウェア・アプリケーションの各インスタンスは、マイクロ・サービスを実施するソフトウェア・アプリケーションのソフトウェア・コンポーネントの複数のインスタンスと共にデプロイすることができ、そのことは、ソフトウェア・アプリケーションの作業負荷の分散を可能にし、信頼性を高めるために冗長性を提供する。
異なる問題がソフトウェア・アプリケーションの動作に悪影響を与えることがある。それにもかかわらず、ソフトウェア・アプリケーションの全てのインスタンスがソフトウェア・アプリケーションの特定のインスタンスにおいて利用可能でなくなる状況でも、ソフトウェア・アプリケーションは、対応するマイクロ・サービスをソフトウェア・アプリケーションの他のインスタンス上に(遠隔)呼び出しを行うことにより動作し続けることができる。
しかしながら、前述の状況は、ソフトウェア・アプリケーションの性能を低下させ得る。例えば、マイクロ・サービスが利用可能でない(例えば、マイクロ・サービスが別の大陸内に配置された)ソフトウェア・アプリケーションのデータセンタから遠く離れたデータセンタ内にデプロイされたソフトウェア・アプリケーションのインスタンスにおいて、マイクロ・サービスが遠隔呼び出しされることがある。従って、それに応じて、これらのデータセンタの間の対応する伝送時間が、ソフトウェア・アプリケーションの応答時間に悪影響を及ぼし、それにより、ソフトウェア・アプリケーションのインスタンスの輻輳がもたらされることがあり、マイクロ・サービスは遠隔呼び出しされるため、そのことは応答時間も悪化させる。
ソフトウェア・アプリケーションをデプロイするための方法、コンピュータ・プログラム、及びコンピュータ・システムを提供する。
本発明の実施形態は、ソフトウェア・アプリケーションをデプロイするための方法、並びに関連したコンピュータ・システム及びコンピュータ・システムを提供する。ソフトウェア・アプリケーションは、デフォルト・デプロイメント構成でコンピューティング・システム上にデプロイされ、このデフォルト・デプロイメント構成は、ソフトウェア・アプリケーションの複数の相互作用するソフトウェア・コンポーネントを含む。ソフトウェア・アプリケーションの実行環境の1つ又は複数の動作インジケータが監視される。監視された1つ又は複数の動作インジケータから、実行環境の危機的状況が存在することが確認される。危機的状況が存在すると確認されたことに応答して、ソフトウェア・アプリケーションの1つ又は複数の代替的デプロイメント構成から1つの代替的デプロイメント構成が選択され、各代替的デプロイメント構成は、集約されて対応する集約されたソフトウェア・コンポーネントになるソフトウェア・コンポーネントの1つ又は複数のグループを有する。ソフトウェア・アプリケーションは、選択された代替的デプロイメント構成で、コンピューティング・システム上に再デプロイされる。
本発明の実施形態を示す。 本発明の実施形態を示す。 本発明の実施形態を示す。 本発明の実施形態を示す。 本発明の実施形態を実施するように構成されたコンピューティング・システムの概略的ブロック図を示す。 本発明の実施形態を実施するために用いることができるソフトウェア・コンポーネントを含む図を示す。 本発明の実施形態によるクラウド・コンピューティング環境を示す。 本発明の実施形態による抽象化モデル層を示す。
図1〜図4は、本発明の実施形態を示す。
図1に関して、ソフトウェア・アプリケーション105が、デフォルト・デプロイメント構成でコンピューティング・システム上にデプロイされる。
例えば、ソフトウェア・アプリケーション105は、eコマース・ポータルの実装など、クラウド・タイプのものである(対応するクラウド・プロバイダによりクラウド環境内にサービスとして与えられる)。ソフトウェア・アプリケーションは、同じ参照符号で示される、対応するサービスを実施する複数のソフトウェア・コンポーネントμS〜μS(各々が、ソフトウェア・アプリケーションの実装に関係なく、その使用を制御する対応するポリシーに従って明確に定められたインターフェースを通じて要求され得るスタンドアロンの基本的機能を提供する)を含む。一実施形態において、サービスμS〜μSは、マイクロ・タイプのものである。マイクロ・サービスμS〜μSは、サイズが小さく、細粒度で(単一の機能を実行するために)、独立してデプロイ可能であり、軽量プロトコル(HTTPのような)を通じてアクセス可能である。
一般に、クラウド・プロバイダは、クラウド・サービスのような(ハードウェア及び/又はソフトウェア)コンピューティング・リソース(すなわち、非常に迅速にプロビジョニング、構成、及び解放することができる共有コンピューティング・リソース)のプールを与える。クラウド・サービスのコンピューティング・リソース(仮想タイプのもの、すなわち物理リソースのソフトウェアによるエミュレーションとすることができる)は、要求に応じてクラウド・プロバイダのユーザに与えられ、各ユーザは、これらのコンピューティング・リソースの唯一の制御を有する(次に、これらのコンピューティング・リソースを、各ユーザ専用であるのと同じであるかのように使用することができる)。これらのサービスは、一実施形態において、Software as a Service(SaaS)モデルに従って提供されるソフトウェア・アプリケーション105を含む。
デフォルト・デプロイメント構成において、ソフトウェア・アプリケーション105は、1つ又は複数のインスタンスにおいて、クラウド・サービスのクラウド・プロバイダの1つ又は複数のデータセンタDC1〜DCM上にデプロイされる。例えば、ソフトウェア・アプリケーション105の各インスタンスは、対応するデータセンタDC1〜DCMにインストールされる。より具体的には、各ソフトウェア・コンポーネントμS1〜μSNの1つ又は複数のインスタンスが、対応する(実行)コンピューティング・マシン上に、例えば、データセンタDC1〜DCMの仮想マシンVM1〜VMM上にインストールされる。デフォルト構成は、(ソフトウェア・アプリケーションのデプロイメント中)マイクロ・サービスμS1〜μSNへのその機能の分散に関して所望の信頼性レベルを与えるように選択された。
動作において、マイクロ・サービスμS1〜μSNは互いに呼び出すことができる(例えば、RESTful仕様に従って)。例えば、マイクロ・サービスμS1がマイクロ・サービスμS2の機能を要求するとき、マイクロ・サービスμS1は、マイクロ・サービスμS2を呼び出す(データセンタDC1においてローカルに)。同時に、ソフトウェア・アプリケーション105の実行環境の1つ又は複数の動作インジケータが、特定の(制御)コンピューティング・マシンにより、例えば、クラウド・プロバイダ全体を管理するクラウド・マネージャを実行している、基準DCと区別されるクラウド・プロバイダの対応するデータセンタの仮想マシンVMにより、監視される。例えば、制御仮想マシンVMは、ソフトウェア・アプリケーション105のインスタンス、データセンタDC1〜DCM、及びデータセンタDC1〜DCMの間の接続に関する性能インジケータ、構成インジケータ、及び可用性インジケータを周期的に収集する。
図2に関して、ソフトウェア・アプリケーション105の動作に悪影響を与える問題が発生する。例えば、マイクロ・サービス(例えば、マイクロ・サービスμS2)の全てのインスタンスが、(例えば、データセンタDC1上の)ソフトウェア・アプリケーション105の特定のインスタンスでダウンする。それにもかかわらず、データセンタDC1上のソフトウェア・アプリケーション105のインスタンスは、ソフトウェア・アプリケーション105の他のインスタンス上の同じマイクロ・サービスμS2を呼び出すことにより、動作し続けることができる。例えば、ここでマイクロ・サービスμS1は、データセンタDC1からデータセンタDC2上のマイクロ・サービスμS2を遠隔呼び出しする。
図3に関して、本発明の実施形態によると、ソフトウェア・アプリケーション105の実行環境の危機的状況が、制御仮想マシンVMにより監視されるソフトウェア・アプリケーションの動作インジケータに従って検出され得る。例えば、危機的状況は、データセンタDC1上で利用可能でないマイクロ・サービスμS2の全てのインスタンス、及び低速であるデータセンタDC1とDC2との間の接続(例えば、データセンタDC1及びDC2が異なる大陸に位置するため)により定められ、ソフトウェア・アプリケーション105の対応する性能低下をもたらす。性能低下に応答して、ソフトウェア・アプリケーション105の1つ又は複数の代替的デプロイメント構成の中から、ソフトウェア・アプリケーション105の(選択された)代替的デプロイメント構成が選択される。ソフトウェア・アプリケーション105の代替的デプロイメント構成の各々は、集約されて集約されたソフトウェア・コンポーネントになるソフトウェア・コンポーネントμS1〜μSNの1つ又は複数のグループを有する。各々の集約されたソフトウェア・コンポーネントは、マイクロ・サービスを呼び出すための同じインターフェースを用いて、対応するソフトウェア・コンポーネントの同じ機能を提供する。例えば、選択された代替的デプロイメント構成は、(別個の)ソフトウェア・コンポーネントμS1及びμS2の代わりに、集約されたソフトウェア・コンポーネントμS12を含む。
図4に関して、ソフトウェア・アプリケーション105が、選択された代替的デプロイメント構成で再デプロイ(再ステージング)される。特に、データセンタDC上のソフトウェア・アプリケーション105のインスタンスにおいて、ソフトウェア・コンポーネントμS及びμSが、集約されたソフトウェア・コンポーネントμS12の対応するインスタンスに置換される。従って、マイクロ・サービスμSによるマイクロ・サービスμSのいかなる呼び出しも、今や、集約されたソフトウェア・コンポーネントμS12内で直接実行される(すなわち、データセンタDC1においてローカルに)。しかしながら、データセンタDC1上のソフトウェア・アプリケーション105のインスタンスは、ユーザ及びソフトウェア・アプリケーション105の他のインスタンスに全く同じ挙動を暴露するので、そのデプロイメント構成の変化は、ユーザに完全に不透明である(すなわち、トランスペアレントではない)。
その結果、ソフトウェア・アプリケーションのデプロイメント構成は、ソフトウェア・アプリケーションの実行環境に動的に適合し、そのことは、ソフトウェア・アプリケーションの性能を著しく高める。特定的には、ソフトウェア・コンポーネントの集約は、マイクロ・サービスの遠隔呼び出し、及びその後の異なるデータセンタの間の対応する通信(例えば、本例におけるデータセンタDC1上のマイクロ・サービスμS1によりデータセンタDC2上のマイクロ・サービスμS2を呼び出すための)を回避し(又は、少なくとも実質的に減らし)、そのことは、マイクロ・サービスが遠隔呼び出されるソフトウェア・アプリケーションのインスタンスのあらゆる輻輳を回避し(又は、少なくとも実質的に減らし)、それにより、ソフトウェア・アプリケーションの応答時間も改善される(本例におけるデータセンタDC2上のソフトウェア・アプリケーション105のインスタンスのように)。
図5は、本発明の実施形態を実施するように構成されたコンピューティング・システム200の概略ブロック図を示す。
コンピューティング・システム200は、クラウド・プロバイダ(図5に示されない実行仮想マシン及び制御仮想マシンをホストする)のデータセンタDC1〜DCMを含む。データセンタDC1〜DCMは、通信ネットワーク205を介して、互いの間で通信する。例えば、対応するクラウド・サービス(上述のソフトウェア・アプリケーションを含む)が、パブリック・クラウド・モデルに従ってクラウド・プロバイダにより提供されるとき、通信ネットワーク205は、グローバル・タイプの(典型的には、インターネットに基づく)ものとすることができる。この場合、ユーザは、ユーザのクライアント・コンピューティング・マシン又は単にクライアント210(例えば、シン・タイプの)により同じ通信ネットワーク205にアクセスすることにより、クラウド・プロバイダに接続する。従って、クラウド・プロバイダは、ソフトウェア・アプリケーションにアクセスするために(例えば、クライアント210のウェブブラウザを介して)フロントエンド・サブシステムを暴露する。クラウド・プロバイダは、代わりに、クラウド・サービスを実際に実施形態するバックエンド・サブシステムを有する。バックエンド・サブシステムは、外部からアクセスできないので、ユーザは、バックエンド・サブシステムの位置及び構成について全く分からない。
各データセンタDC1〜DCMは、幾つかのサーバ・コンピューティング・マシン又は単にサーバ215(例えば、ラック又はブレード・タイプの)と、大容量メモリを実装するストレージ・ディスク220(例えば、RAIDタイプの)とを含む。次に、各サーバ215は、各サーバの動作を制御する1つ又は複数のマイクロプロセッサ(μP)と、そのブートストラップのための基本コードを格納する不揮発性メモリ(ROM)と、マイクロプロセッサ(図5に示されない)により動作メモリとして用いられる揮発性メモリ(RAM)とを含む。データセンタDC1〜DCMはまた、データセンタのサーバ・コンピューティング・マシン(例えば、DVDのような光ディスクなどの取り外し可能なストレージ・ユニット230を読み/書きするためのドライブも備えたパーソナル・コンピュータ)を制御するためのコンソール225も含む。スイッチ/ルータ・サブシステム235は、サーバ215、ディスク220、及びコンソール225の間の、通信ネットワーク205を用いた、あらゆる通信を管理する。サーバ215、ディスク220、及びコンソール225は、配線サブシステム240を通じて、スイッチ/ルータ・サブシステム235に接続される。
図6は、本発明の実施形態を実施するために用い得るソフトウェア・コンポーネントを含む図を示す。
全てのソフトウェア・コンポーネント(プログラム及びデータ)が、全体として参照符号300で示される。ソフトウェア・コンポーネントは、一般的には、大容量メモリ内に格納され、オペレーティング・システム及び他のアプリケーション・プログラム(図6に示されない)と共に、プログラムが実行されるとき、制御仮想マシンの作業メモリに(少なくとも部分的に)ロードされる。プログラムは、最初に、例えば、取り外し可能ストレージ・ユニットから又は通信ネットワークから、大容量メモリにインストールされる。この点で、各プログラムは、指定された論理機能を実施するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの部分とすることができる。特定的には、図は、各々の交換メッセージが対応するアクション(記号「A」で始まる連続番号で示される)を表す一連の交換メッセージによって、ソフトウェア・コンポーネント300の静的構造及びソフトウェア・コンポーネント300の動的挙動の両方を表す。
特定的には、クリエータ305が、対応する開発チームによりソースコードがソースコード・リポジトリ310に付加されたソースコード・リポジトリ310から、ソフトウェア・アプリケーションのソースコードのオリジナル・バージョンを取り出す。クリエータ305は、(例えば、2〜4個のソフトウェア・コンポーネントといった、所定数のソフトウェア・コンポーネントの全ての可能な集約に対応する)ソフトウェア・アプリケーションの代替的デプロイメント構成を選択するために用いられる、その複数の候補デプロイメント構成を定めるようにソースコードを更新する。特定的には、構成変数myConfigurationが、デプロイメント構成を選択するために導入される。構成変数myConfigurationは、デフォルト・デプロイメント構成及び候補デプロイメント構成に対応する異なる値を取ることができる。クリエータ305は、対応するソフトウェア・コンポーネントを、各々の集約されたソフトウェア・コンポーネントに選択的に組み込むためにソースコードを更新する。例えば、構成変数myConfigurationにより制御されるスイッチ文が、デフォルト・デプロイメント構成の値とは異なる構成変数myConfigurationの各値について、各(第1の)ソフトウェア・コンポーネントの始めに付加される。対応する候補デプロイメント構成が、第1のソフトウェア・コンポーネントにおいて1つ又は複数の(第2の)ソフトウェア・コンポーネントを集約する場合、第2のソフトウェア・コンポーネントのコードを第1のソフトウェア・コンポーネントに組み込むように、命令が付加される。さらに、クリエータ305は、ソフトウェア・コンポーネントを遠隔から又はローカルに選択的に呼び出すためにソースコードを更新する。例えば、第1のソフトウェア・コンポーネントにおける各々の第2のソフトウェア・コンポーネントのあらゆる遠隔呼び出し(RESTful呼び出しのような)は、同じく構成変数myConfigurationにより制御されるスイッチ文に置き換えられる。構成変数myConfigurationが、デフォルト・デプロイメント構成、又は第2のソフトウェア・コンポーネントが第1のソフトウェア・コンポーネントから分離したままである候補デプロイメント構成を示すとき、スイッチ文は、第2のソフトウェア・コンポーネントの遠隔呼び出しを引き起こし、一方、構成変数myConfigurationが、第2のソフトウェア・コンポーネントが第1のソフトウェア・コンポーネントと共に集約される候補デプロイメント構成を示すとき、スイッチ文は、第2のソフトウェア・コンポーネントのネイティブの、すなわちローカルの呼び出し(関数呼び出しのような)を引き起こす。例えば、マイクロ・サービスμS2の関数myFunction2及びマイクロ・サービスμS3の関数myFunction3を呼び出すマイクロ・サービスμS1の関数myFunction1を実施する非常に単純なソフトウェア・コンポーネントが、もともと以下の疑似コードを有し得る。:
Figure 2021502622
ソフトウェア・コンポーネントμS及びμSを集約して集約されたソフトウェア・コンポーネントμS12(構成変数myConfiguration=12により示される)にする候補デプロイメント構成、及びソフトウェア・コンポーネントμS及びμSを集めて集約されたソフトウェア・コンポーネントμS13(構成変数myConfiguration=13により示される)にする別の候補デプロイメント構成の場合、(構成変数myConfiguration=0により示される)分離したソフトウェア・コンポーネントμS及びμSを有するデフォルト・デプロイメント構成に加えて、疑似コードは、
Figure 2021502622
になる。
クリエータ305は、ソフトウェア・アプリケーションのソースコードのオリジナル・バージョンを、ソースコード・リポジトリ310へのソースコードの更新されたバージョンに置き換える(アクション「A1.更新)。ビルダ315は、構成変数myConfigurationの現在値(例えば、ソフトウェア・デプロイメント・アプリケーションの構築ツールにより実装される)に従って、ソースコード・リポジトリ310から取り出されたソフトウェア・アプリケーションのソースコードから、(ソフトウェア・アプリケーションのデプロイメントのための)ソフトウェア・アプリケーションの異なるデプロイメント・パッケージを構築する。ビルダ315は、ソフトウェア・アプリケーションのデプロイメントのために要求される間、一時的にソフトウェア・アプリケーションの各デプロイメント・パッケージ(例えば、対応する仮想アプライアンスの形態の)をデプロイメント・パッケージ・リポジトリ320に付加する(アクション「A2.構築」)。
ソフトウェア・アプリケーションの訓練段階中(ソフトウェア・アプリケーションを生産する前に)、コンフィギュレータ325は、ソフトウェア・アプリケーションの異なる訓練(実行)環境を構成する。各々の訓練環境は、異なる値の動作インジケータ(ソフトウェア・アプリケーションの代替的デプロイメント構成を選択するために用いられる)を有する。例えば、コンフィギュレータ325は、データセンタの間の接続の帯域幅及びデータセンタのサーバの利用可能な処理能力のような1つ又は複数の性能インジケータ、データセンタの間の接続のホップの数及び実行仮想マシンの作業メモリの量のような1つ又は複数の構成インジケータ、及び/又はマイクロ・サービス及びデータセンタの間の接続の可用性のような1つ又は複数の可用性インジケータの異なる値を有するように、訓練環境を構成する(アクション「A3.構成」)。
デプロイヤ330は、デプロイメント・パッケージ・リポジトリ320からデプロイヤ330により取り出されたデプロイメント・パッケージを用いて、ソフトウェア・アプリケーションをコンピューティング・システム上にデプロイするために用いられる。特定的には、ソフトウェア・アプリケーションの訓練段階中、デプロイヤ330は、(ソフトウェア・アプリケーションのデプロイメント・パッケージが、実行時にビルダ315により構築された後)デフォルト・デプロイメント構成を含むあらゆる訓練デプロイメント構成及びあらゆる候補デプロイメント構成で、ソフトウェア・アプリケーション335を、あらゆる訓練環境上に連続してデプロイする(アクション「A4.デプロイ」)。学習者340は、ソフトウェア・アプリケーションの代替的デプロイメント構成を選択するための選択ポリシーを学習する。学習者340は、あらゆる訓練環境上のあらゆるデプロイメント構成で、ソフトウェア・アプリケーション335の1つ又は複数の性能インジケータ(例えば、ベンチマーク要求へのソフトウェア・アプリケーションの平均応答時間)を測定する(アクション「A5.測定」)。次に、学習者340は、訓練環境の動作インジケータ及び訓練デプロイメント構成におけるソフトウェア・アプリケーション335の対応する性能インジケータに従って、候補デプロイメント構成の中から代替的デプロイメント構成を選択する。例えば、あらゆる訓練環境において、学習者340は、デフォルト構成におけるソフトウェア・アプリケーション335の性能インジケータが閾値だけ(10〜20%のような)上回る場合のみ、ソフトウェア・アプリケーション335の最良の性能インジケータ(すなわち、この場合は最も低い平均応答時間)を提供する候補デプロイメント構成を選択する。ひとたび全ての訓練環境が処理されると、選択されたソフトウェア・アプリケーションの候補デプロイメント構成が、代替的デプロイメント構成を定める。従って、代替的デプロイメント構成は、実際に有用である可能性が高いデプロイメント構成に限定される。この点で、必要に応じて、学習者340は、選択されなかった候補デプロイメント構成に対応するソースコードの部分を除去することにより、ソースコード・リポジトリ310内のソフトウェア・アプリケーションのソースコードを簡略化することもできる(アクション「A6.選択」)。いずれの場合も、学習者340は、訓練環境の動作インジケータ及びソフトウェア・アプリケーション335の対応する性能インジケータに従って、(ソフトウェア・アプリケーションのデフォルト・デプロイメント構成又は代替的デプロイメント構成を選択するための)選択ポリシーを決定する。例えば、学習者340は、機械学習技術を適用して、選択ポリシーを定める決定木を作成する。決定木は、複数の決定ノード(根テスト・ノードから開始する)を含む。各決定ノードは、1つ又は複数の動作インジケータのテストを指定し、2つ又はそれより多い分岐が、これらの動作インジケータの可能な値に対応する決定ノードから下降する。決定木の葉ノードは、構成変数myConfigurationの対応する値を用いることにより、ソフトウェア・アプリケーションのデフォルト/代替的デプロイメント構成を指定する。デフォルト/代替的デプロイメント構成は、根テスト・ノードから葉ノードへの経路に沿った動作インジケータの値について、ソフトウェア・アプリケーションの最良の性能インジケータ(上述のマージンを有する)を提供すると予想されるデプロイメント構成である。学習者340は、そのように取得された決定木の表示を決定木ファイル345内に格納する(アクション「A7.学習」)。
その後、ソフトウェア・アプリケーションが生産される。最初に、(デプロイメント・パッケージが実行時にビルダ315により構築された後)デプロイヤ330は、デフォルト・デプロイメント構成で、ソフトウェア・アプリケーション350をコンピューティング・システムの(生産)実行環境上にデプロイする(アクション「A8.デプロイ」)。実行時、ソフトウェア・アプリケーションの各ソフトウェア・コンポーネントの各インスタンスは、対応する要求を提供するために、他のソフトウェア・コンポーネントのインスタンスにより、及び/又はソフトウェアのユーザ(図6に示されない)により、呼び出すことができる(アクション「A9.呼び出す」)。これに応じて、ソフトウェア・コンポーネントのこのインスタンスは、各要求を処理する(サービスする)。特定的には、ソフトウェア・コンポーネントは、ステートレス(stateless)又はステートフル(stateful)のいずれかであり得る。ソフトウェア・コンポーネントがステートレスである場合、各要求は、以前に処理された要求に関するいずれの(セッション)データも保持することなく、独立して処理される(その結果、ソフトウェア・コンポーネントのインスタンスは、完全に置き換え可能である)。逆に、ソフトウェア・コンポーネントがステートフルである場合、ソフトウェア・コンポーネントのインスタンスは、セッション・データに反映される履歴に従って対応するユーザとの各セッションにおける複数の要求を処理するために、セッション・データを保持する。ひとたびセッションが閉じられると、セッション・データは廃棄される(アクション「A10.処理」)。本発明の実施形態によると、セッション・データは、ソフトウェア・コンポーネントの(第1の)インスタンスがデプロイされる(第1の)実行仮想マシンとは異なる1又は複数の他の位置にミラーリングされる。例えば、セッション・データは、いずれかのセッションが開かれるたび、そのセッション・データが更新されるたび、及びセッションが閉じられるたびに、対応する通知を送ることにより、制御仮想マシン及び/又は他の実行仮想マシン(図7に示されない)を含む1つ又は複数の(ミラーリング)仮想マシンにミラーリングされる(アクション「A11.ミラーリング」)。この場合、ソフトウェア・コンポーネントの第1のインスタンスのあらゆる保留セッションを、ソフトウェア・アプリケーションの別の(遠隔)インスタンス(図6に示されない)における同じソフトウェア・コンポーネントの別の(第2の)インスタンスに移動させ、(第1の)データセンタにおいてソフトウェア・コンポーネントの全てのインスタンスがダウン(すなわち、アボート)し、動作が、別の(第2の)データセンタ内のソフトウェア・コンポーネントのインスタンスに引き継がれたときに発生し得る処理を続行する(又は、第1のデータセンタにおいて、ソフトウェア・コンポーネントのインスタンスが再び動作し、その動作が第2のデータセンタにおけるソフトウェア・コンポーネントのインスタンスから第1のデータセンタにおけるソフトウェア・コンポーネントのインスタンスに戻る場合、逆もまた同様である)。それに応じて、ソフトウェア・コンポーネントの第2のインスタンスが、ソフトウェア・コンポーネントの第2のインスタンスの位置に最も近い対応するセッション・データの位置を特定する(例えば、それぞれ、地理的距離及び伝送速度などの物理的パラメータ及び/又は論理パラメータに従って)。次に、ソフトウェア・コンポーネントの第2のインスタンスは、セッション・データを、この最も近い位置から対応する(第2の)仮想マシンにローカルにコピーして、保留セッションの処理をシームレスに再開し、その第2のインスタンスに提供されるソフトウェア・コンポーネントの第1のインスタンスに対するいずれの次の要求も、今後は、上述のような対応するセッションを処理するためのものである(アクション「A12.コピー」)。
いずれの場合も、本発明の実施形態による解決法において同時に、モニタ355が、ソフトウェア・アプリケーションの実行環境の動作インジケータを監視する。モニタ355は、監視時点毎に(例えば、30〜120秒毎に)集められた動作インジケータを分析器360に渡す(アクション「A13.監視」)。分析器360は、決定木ファイル345から取り出された決定木に従って、監視時点毎の動作インジケータに対応するソフトウェア・アプリケーションの(デフォルト/代替的)デプロイメント構成を選択する。分析器360は、根テスト・ノードにおいて指定された動作インジケータをテストし、その値に対応する分岐を下に移動し、葉ノードに達するまで同じ動作を繰り返す。次に、この葉ノードは、動作インジケータにより定められるソフトウェア・アプリケーションの実行環境の現状において、ソフトウェア・アプリケーション350の最良の性能を与える可能性が高い(選択された)デプロイメント構成を示す。特定的には、動作インジケータが、実行環境が危機的状況にある(ソフトウェア・アプリケーション350の性能が著しく低下し得る)可能性が高いことを示すとき、選択された代替的デプロイメント構成は、ソフトウェア・アプリケーション350の性能を改善すると予想されるので、決定木の降順ソート(sorting down)は、代替的デプロイメント構成の1つを選択する。逆に、動作インジケータが、実行環境がデフォルト状況にある可能性が高い(ソフトウェア・アプリケーション350の性能が予想されるものである)とき、決定木の降順ソートは、デフォルト・デプロイメント構成を選択する(アクション「A14.選択」)。選択されたデプロイメント構成がソフトウェア・アプリケーション350の現在のデプロイメント構成とは異なるたびに、(ソフトウェア・アプリケーションのデプロイメント・パッケージが実行時にビルダ315により構築された後)、デプロイヤ330は、選択されたデプロイメント構成で、ソフトウェア・アプリケーション350をコンピューティング・システムの実行環境上に再デプロイする。従って、実行環境が、(デフォルト状況から又は別の危機的状況から)いずれかの危機的状況に移ると、ソフトウェア・アプリケーション350は、対応する代替的デプロイメント構成で、再デプロイされる(ソフトウェア・アプリケーション350の性能の予想される低下を回避するため、又は少なくとも減らすために)。逆に、実行環境が、いずれかの危機的状況からデフォルト状況に移ると、ソフトウェア・アプリケーション350は、デフォルト・デプロイメント構成で、再デプロイされる。その結果、ソフトウェア・アプリケーション350は、可能な限り早くデフォルト・デプロイメント構成に戻る。ひとたびソフトウェア・アプリケーション350の性能を低下させる可能性が高かった危機的状況が取り除かれると、ソフトウェア・アプリケーション350は再び、分離した、全てのソフトウェア・アプリケーションのソフトウェア・コンポーネントを有し、それにより、ソフトウェア・アプリケーションのオリジナルの信頼性レベルを回復する(アクション「A15.再デプロイ」)。ソフトウェア・アプリケーションの再デプロイメントは、あらゆる保留セッションの移動をもたらすことができ、そのことは、例えば、その動作が現在、ソフトウェア・アプリケーションの別の(遠隔の)インスタンスにおけるソフトウェア・アプリケーションの(第1の)インスタンスにより引き継がれているソフトウェア・コンポーネントのインスタンスが、ソフトウェア・アプリケーションの動作を取得し、集約されたソフトウェア・コンポーネントの対応するインスタンスに(ローカルに)集約される。上述のように、集約されたソフトウェア・コンポーネントのインスタンスは、ソフトウェア・アプリケーションの位置に最も近い対応するセッション・データの位置を特定し、この最も近い位置から対応する(第3の)仮想マシン上にセッション・データをローカルにコピーして、保留セッションの処理をシームレスに再開し、集約されたソフトウェア・コンポーネントのインスタンスに提供されるソフトウェア・コンポーネントの第1のインスタンスに対するいずれの次の要求も、今後は、上述のような対応するセッションを処理するためのものである(アクション「A16.コピー」)。
クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダとの対話で迅速にプロビジョニング及び解放することができる構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの、便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、及び少なくとも4つのデプロイメント・モデルを含むことができる。
特徴は、以下の通りである。
オンデマンド・セルフサービス:クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的な機構を通じてアクセスされる。
リソース・プール化:プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて、異なる物理及び仮想リソースを要求に応じて動的に割り当て及び再割り当てすることにより、複数のコンシューマにサービスを提供するためにプールされる。コンシューマは、一般に、提供されるリソースの正確な位置についての制御又は知識を持たないが、より高レベルの抽象化では位置(例えば、国、州、又はデータセンタ)を特定できる場合があるという点で、位置とは独立しているといえる。
迅速な弾力性:機能は、迅速かつ弾力的に、場合によっては自動的に、プロビジョニングして素早くスケール・アウトし、迅速にリリースして素早くスケール・インさせることができる。コンシューマにとって、プロビジョニングに利用可能なこれらの機能は、多くの場合、無制限であり、いつでもどんな量でも購入できるように見える。
計測されるサービス:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御及び最適化する。リソース使用を監視し、制御し、報告し、利用されるサービスのプロバイダとコンシューマの両方に対して透明性をもたらすことができる。
サービス・モデルは以下の通りである。
Software as a Service(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。これらのアプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定の考え得る例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎をなすクラウド・インフラストラクチャを管理又は制御しない。
Platform as a Service(PaaS):プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上にデプロイするために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージなどの基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、デプロイされたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成に対して制御を有する。
Infrastructure as a Service(IaaS):コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアをデプロイ及び動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングするために、コンシューマに提供される機能である。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションに対する制御、及び場合によってはネットワーク・コンポーネント(例えば、ホストのファイアウォール)選択の限定された制御を有する。
デプロイメント・モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運営される。このクラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、オンプレミス又はオフプレミスに存在することができる。
コミュニティ・クラウド:クラウド・インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、オンプレミス又はオフプレミスに存在することができる。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。 ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散のためのクラウド・バースティング)によって結び付けられる2つ以上のクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
ここで図7を参照して、例示的なクラウド・コンピューティング環境50が示される。示されるように、クラウド・コンピューティング環境50は、例えばパーソナル・デジタル・アシスタント(PDA)又は携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、及び/又は自動車コンピュータ・システム54Nなどといった、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスと通信することができる、1つ又は複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信することができる。これらのノードは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、若しくはハイブリッド・クラウド、又はこれらの組み合わせなど、1つ又は複数のネットワークにおいて物理的又は仮想的にグループ化され得る(図示せず)。このことは、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして、クラウド・コンピューティング環境50が、インフラストラクチャ、プラットフォーム、及び/又はソフトウェアを提供することを可能にする。図7に示されるコンピューティング・デバイス54A〜54Nのタイプは単に例示であることを意図し、コンピューティング・ノード10及びクラウド・コンピューティング環境50は、いずれのタイプのネットワーク及び/又はネットワーク・アドレス指定可能な接続上でも(例えば、ウェブブラウザを用いて)、いずれのタイプのコンピュータ化されたデバイスとも通信できることを理解されたい。
ここで図8を参照すると、クラウド・コンピューティング環境50(図7)によって提供される機能抽象化層のセットが示される。図8に示されるコンポーネント、層、及び機能は単に例示であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
ハードウェア及びソフトウェア層60は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、メインフレーム61と、RISC(Reduced Instruction Set Computer(縮小命令セット・コンピュータ))アーキテクチャ・ベースのサーバ62と、サーバ63と、ブレードセンタ64と、ストレージ・デバイス65と、ネットワーク及びネットワーク・コンポーネント66とが含まれる。幾つかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67及びデータベース・ソフトウェア68を含む。
仮想化層70は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ71と、仮想ストレージ72と、仮想プライベート・ネットワークを含む仮想ネットワーク73と、仮想アプリケーション及びオペレーティング・システム74と、仮想クライアント75とが提供され得る。
一例において、管理層80は、以下で説明される機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡と、これらのリソースの消費に対する課金又は請求とを提供する。一例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータル83は、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理並びにサービス・レベル・アグリーメント(SLA)計画及び履行84は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(SLA)計画及び履行は、それぞれSLAに従って将来の要件が予想されるクラウド・コンピューティング・リソースの事前準備及び調達を提供する。学習エンジン85は、本発明の実施形態による、有効グラム生成及び意思決定論理フレームワークを提供する。
作業負荷層90は、クラウド・コンピューティング環境を利用できる機能の例を提供する。この層から提供され得る作業負荷及び機能の例として、マッピング及びナビゲーション91、ソフトウェア・ライフサイクル管理92、仮想教室教育配信93、データ分析処理94、トランザクション処理95、及びソフトウェア・アプリケーション管理96が挙げられる。
ローカル及び特定の要件を満たすために、当業者は、本開示に多くの論理的及び/又は物理的な修正及び改変を適用することができる。より具体的には、本発明は、本発明の1つ又は複数の実施形態を参照して、一定程度の特殊性をもって記載されてきたが、他の実施形態も同様に、形状及び詳細における様々な省略、置換及び変更が可能であることを理解されたい。特定的には、本発明の異なる実施形態は、その完全な理解を与えるために、先の説明中に記載された(数値などの)具体的な詳細なしに実施することさえでき、逆に、不必要な詳細で説明を曖昧にしないために、周知の特徴が省略又は簡略化されていることもある。さらに、本発明の任意の実施形態に関して記載される特定の要素及び/又は方法実行ステップは、一般的な設計上の選択の問題として、任意の他の実施形態中に組み込み得ることが明示的に意図される。いずれの場合も、各数値は、用語約(about)によって修正されるものと解釈すべきであり(既に行われていない限り)、各数値範囲(その端点を含む)は、範囲内の連続体に沿った任意の可能な数を明示的に指定することが意図される。さらに、序数又は他の修飾子は、単に、同じ名前を有する要素を区別するためのラベルとして用いられるに過ぎず、それ自体で何らかの優先度、優先順位、又は順番を暗示しない。含む(include)、備える(comprise)、有する(have)、包含する(contain)及び含む(involve)(並びにそれらの任意の形態)という用語は、オープンで非網羅的な意味を意図すべきである(すなわち、記述された項目に制限されない)。〜に基づく(based on)、〜に依存する(dependent on)、〜に従う(according to)、〜の関数である(function of)(及びそれらの任意の形態)という用語は、非排他的な関係(すなわち、可能なさらなる変数が含まれる)を意図すべきであり、1つ(a/an)という用語は、(明示的に別段の指定がない限り)1つ又は複数の項目を意図するべきであり、〜のための手段(means for)という用語(又は全てのミーンズ・プラス・ファンクション形式)は、関連関数を実行するように適合又は構成された任意の構造として意図すべきである。
例えば、実施形態は、ソフトウェア・アプリケーションを管理するための方法を提供する。しかしながら、ソフトウェア・アプリケーションは、任意のタイプのもの(例えば、クラウド・ソフトウェア・アプリケーション、標準的ソフトウェア・アプリケーション)とすることができる。
実施形態において、方法は、ソフトウェア・アプリケーションを、デフォルト・デプロイメント構成で、コンピューティング・システム上にデプロイすることを含む。しかしながら、ソフトウェア・アプリケーションは、任意の方法で(例えば、実行時に又はオフラインで構築されたその任意のデプロイメント・パッケージを用いて)任意のコンピューティング・システム上にデプロイすることができる(以下を参照)。
実施形態において、デフォルト・デプロイメント構成は、ソフトウェア・アプリケーションの複数の相互作用するソフトウェア・コンポーネントを含むことができる。しかしながら、ソフトウェア・コンポーネントは、任意の数及び任意のタイプのもの(例えば、サービス、モジュール、ライブラリ)とすることができる。
実施形態において、方法は、ソフトウェア・アプリケーションの実行環境の1つ又は複数の動作インジケータを監視することを含む。しかしながら、動作インジケータは、任意の数及び任意のタイプのもの(例えば、性能インジケータ、構成インジケータ、可用性インジケータ、又はその任意の組み合わせにおける任意の他のインジケータ)及び任意の形態のもの(例えば、数、レベル、フラグ)とすることができる。さらに、動作インジケータは、ソフトウェア・アプリケーションの実行環境に任意の方法で関連し得る(例えば、ソフトウェア・アプリケーションのソフトウェア・コンポーネント、ソフトウェア・コンポーネントが実行されるコンピューティング・マシン、ソフトウェア・コンポーネントの接続、任意の他の外部サービスに関して)。
実施形態において、方法は、ソフトウェア・アプリケーションの1つ又は複数の代替的デプロイメント構成の中から1つの選択された代替的デプロイメント構成を選択することを含む。しかしながら、選択された代替的デプロイメント構成は、任意の数の代替的デプロイメント構成の中から任意の方法で(例えば、分類アルゴリズム、ファジー論理技術を用いて)選択することができる。
実施形態において、選択された代替的デプロイメント構成は、動作インジケータに従った実行環境の危機的状況への移行に応答して選択される。しかしながら、危機的状況は、任意の方法で(例えば、動作インジケータの任意の組み合わせに従って)定めることができ、それへの移行は、任意の方法で(例えば、対応する条件が満たされるとすぐに、又はこれが2又はそれより多い監視時間持続した後のみ)検出され得る。
実施形態において、代替的デプロイメント構成の各々は、集約されて対応する集約されたソフトウェア・コンポーネントになるソフトウェア・コンポーネントの1つ又は複数のグループを有する。しかしながら、各代替的デプロイメント構成は、各々が任意の数のソフトウェア・コンポーネントを含む(代替的ソフトウェア・コンポーネントの全体にわたって同じ又は異なる)任意の数の集約されたソフトウェア・コンポーネントを有することができる。
実施形態において、方法は、ソフトウェア・アプリケーションを、選択された代替的デプロイメント構成で、コンピューティング・システム上に再デプロイすることを含む。しかしながら、ソフトウェア・アプリケーションは、任意の方法で(例えば、完全モード又は差動モードで)再デプロイされ得る。
実施形態において、方法は、動作インジケータに従って危機的状況から実行環境のデフォルト状況に戻ったことに応答して、ソフトウェアを、デフォルト・デプロイメント構成で、コンピューティング・システム上に再デプロイすることを含む。しかしながら、デフォルト状況は、任意の方法で(任意の数及びタイプの危機的状況の定義に従って)定めることができ、それへの移行は、任意の方法で(危機的状況への移行に関して同じ又は異なる)検出することができ、いずれの場合も、全て同じ方法で処理されるソフトウェア・アプリケーションのより一般的条件のうちの2つを定める可能性は排除されない。
実施形態において、ソフトウェア・アプリケーションは、複数のインスタンスにおいてデプロイされる。しかしながら、ソフトウェア・アプリケーションのインスタンスは、任意の方法で(例えば、任意の数及びタイプのデータセンタ又は任意の他のコンピューティング・システム上に)、任意の数で(1つに至るまで)デプロイすることができる。
実施形態において、ソフトウェア・アプリケーションの各インスタンスは、対応するソフトウェア・コンポーネント及び/又は集約されたソフトウェア・コンポーネントの1つ又は複数のインスタンスを含む。しかしながら、各々のソフトウェア・コンポーネント及び/又は集約されたソフトウェア・コンポーネントのインスタンスは、任意の方法で(例えば、任意の数及びタイプの仮想マシン又は任意の他のコンピューティング・マシン上に)及び任意の数で(1つに至るまで)デプロイすることができる。
実施形態において、ソフトウェア・コンポーネントは、対応するサービスを実施する。しかしながら、サービスは、任意のタイプのもの(例えば、標準的なマイクロ・サービス又はナノ・サービス)とすることができる。
実施形態において、ソフトウェア・アプリケーションは、サービスの各々の1又は複数の呼び出しを含む。しかしながら、サービスは、任意の回数及び任意の方法で(例えば、メッセージ、呼び出しを介して)呼び出すことができる。
実施形態において、グループの各々のソフトウェア・コンポーネントは、グループのソフトウェア・コンポーネントにより実施されるサービスの1又は複数の遠隔呼び出しを含む。しかしながら、遠隔呼び出しは、任意の数及び任意のタイプのもの(例えば、RESTful、SOAP)とすることができる。
実施形態において、各グループの対応する集約されたソフトウェア・コンポーネントは、遠隔呼び出しを対応するネイティブ呼び出しに置換する。しかしながら、ネイティブ呼び出しは、任意のタイプのもの(例えば、関数、プロシージャ)とすることができる。
実施形態において、集約されたソフトウェア・コンポーネントの各々は、対応するソフトウェア・コンポーネントのコードを組み込む。しかしながら、コードは、任意の方法で(例えば、対応する命令により、コードをコピーすることにより)組み込むことができ、いずれの場合も、そのコードを別個に(例えば、異なるファイルに)保持することにより、ソフトウェア・コンポーネントの機能を組み合わせて対応する集約されたソフトウェア・コンポーネントにする可能性は排除されない。
実施形態において、ソフトウェア・アプリケーションは、クラウド・ソフトウェア・アプリケーションである。しかしながら、クラウド・ソフトウェア・アプリケーションは、任意のタイプのもの(例えば、パブリック・タイプ、ハイブリッド・タイプ、プライベート・タイプの)とすることができる。
実施形態において、1つ又は複数の動作インジケータを監視することは、実行環境の1つ又は複数の性能インジケータ、構成インジケータ、及び/又は可用性インジケータを監視することを含む。しかしながら、異なる、付加的、代替的動作インジケータ、又はその組み合わせも可能である。
実施形態において、方法は、ソフトウェア・アプリケーションを複数の訓練デプロイメント構成(デフォルト・デプロイメント構成及び代替的デプロイメント構成を含む)でデプロイすることを含む。しかしながら、訓練デプロイメント構成は、任意の数及び任意のタイプのもの(デフォルト・デプロイメント構成及び代替的デプロイメント構成のみに至るまで)とすることができる。
実施形態において、訓練デプロイメント構成の各々は、異なる値の動作インジケータを有する複数の訓練環境上にデプロイされる。しかしながら、訓練環境は、任意の数及び任意のタイプのものとすることができる(例えば、任意の数及びタイプの動作インジケータを、物理的又は仮想的に任意の方法で変化させることにより)。
実施形態において、方法は、訓練環境の各々の訓練デプロイメント構成の各々におけるソフトウェア・アプリケーションの1つ又は複数の性能インジケータを測定することを含む。しかしながら、性能インジケータは、任意の数及び任意のタイプのもの(異なる、付加的、代替的インジケータ、又は可能なそれらの組み合わせと共に)及び任意の形態のもの(例えば、数、レベル、フラグ)とすることができる。
実施形態において、方法は、訓練環境の動作インジケータ及び訓練デプロイメント構成におけるソフトウェア・アプリケーションの対応する性能インジケータに従って、代替的デプロイメント構成を選択するための選択ポリシーを決定することを含む。しかしながら、選択ポリシーは、任意の方法で(例えば、決定木、ニュートラル・ネットワーク、多項式関数又は線形関数、ベイジアン・ネットワークにより)定めることができ、選択ポリシーは、任意の技術で(例えば、訓練例におけるノイズ又は偶然的な規則性に起因する過剰適合(over-fitting)を回避するために決定木を剪定する)及び任意の方法で(例えば、完全に又はインクリメンタルに周期的に)学習することができ、いずれの場合も、選択ポリシーを手動で事前定義する可能性は排除されない。
実施形態において、方法は、ソフトウェア・アプリケーションを、代替的デプロイメント構成のための複数の候補デプロイメント構成を含む訓練デプロイメント構成で、デプロイすることを含む。しかしながら、候補デプロイメント構成は、任意の数のものとすることができ、任意の方法で選択することができる(例えば、ソフトウェア・アプリケーションのソフトウェア・コンポーネントの全ての可能な集約に至るまで)。
実施形態において、方法は、訓練環境の動作インジケータ及び訓練デプロイメント構成におけるソフトウェア・アプリケーションの対応する性能インジケータに従って、候補デプロイメント構成の中から代替的デプロイメント構成を選択することを含む。しかしながら、代替的デプロイメント構成は、任意の方法で(例えば、機械学習技術を用いて)選択することができ、いずれの場合も、代替的デプロイメント構成を手動で事前定義する可能は排除されない。
実施形態において、ソフトウェア・コンポーネントの少なくとも一部はステートレスである。しかしながら、ステートレス・ソフトウェア・コンポーネントは、任意の数のもの(1つもなしから全てまで)とすることができる。
実施形態において、ソフトウェア・コンポーネントの少なくとも一部はステートフルである。しかしながら、ステートフル・ソフトウェア・コンポーネントは、任意の数のもの(1つもなしから全てまで)とすることができる。
実施形態において、方法は、ステートフル・ソフトウェア・コンポーネントのインスタンスの各々の第1のものについての以下のステップを含む。
実施形態において、この場合、方法は、ステートフル・ソフトウェア・コンポーネントの第1のインスタンスにより実施される任意のセッションの対応するセッション・データを、ステートフル・ソフトウェア・コンポーネントの第1のインスタンスがデプロイされるコンピューティング・システムの第1のコンピューティング・マシン上に保持することを含む。しかしながら、セッションは任意の数のものとすることができ、そのセッション・データは、任意のタイプのものとし、任意の方法で(例えば、共通ファイル、専用ファイル、データベースに)格納することができる。
実施形態において、この場合、方法は、セッション・データを、第1のコンピューティング・マシンとは異なるコンピューティング・システムの1つ又は複数のミラーリング・コンピューティング・マシン上にミラーリングすることを含む。しかしながら、セッション・データは、任意の数及びタイプの(仮想/物理)コンピューティング・マシン(例えば、制御仮想マシン、1つ又は複数の他の実行仮想マシン、1つ又は複数の専用マシン、又はその任意の組み合わせ)上にミラーリングすることができる。
実施形態において、この場合、方法は、セッション・データを、ミラーリング・コンピューティング・マシンの1つから、ソフトウェア・コンポーネントの第1のインスタンスからソフトウェア・コンポーネントの第2のインスタンスへのセッションへの移動に応答して、ステートフル・ソフトウェア・コンポーネントのインスタンスの第2のものがデプロイされるコンピューティング・システムの第2のコンピューティング・マシンにコピーすることを含む。しかしながら、ミラーリング・コンピューティング・マシンは、任意の方法で(例えば、任意の数及びタイプのパラメータに従って)選択することができる。いずれの場合も、ミラーリングされたセッション・データを用いる可能性は排除されない。
実施形態において、この場合、方法は、セッション・データを、ミラーリング・コンピューティング・マシンの1つから、ソフトウェア・コンポーネントの第1のインスタンスから集約されたソフトウェア・コンポーネントのインスタンスへの移動に応答して、ソフトウェア・コンポーネントの第1のインスタンスを含む集約されたソフトウェア・コンポーネントの1つのインスタンスがデプロイされるコンピューティング・システムの第3のコンピューティング・マシンにコピーすることを含む。しかしながら、ミラーリング・コンピューティング・マシンは、任意の方法で(上述の状況に対して同じ又は異なる)選択することができる。いずれの場合も、ミラーリングされたセッション・データを直接使用する可能性は排除されない。
一般に、同じ解決法が同等の方法により実施される(より多くの実行ステップ又はその部分の同じ機能を有する類似の実行ステップを用いること、本質的ではない幾つかの実行ステップを除去すること、又はさらなる随意的な実行ステップを付加することにより)場合、類似の考慮事項が適用される。さらに、実行ステップは、異なる順番で、同時に、又は交互に(少なくとも部分的に)実行され得る。
実施形態は、コンピューティング・システム上でコンピュータ・プログラムが実行されるとき、コンピューティング・システムに、上述の方法を実行させるように構成されたコンピュータ・プログラムを提供する。実施形態はコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品は、プログラム命令が具体化されたコンピュータ可読ストレージ媒体を含み、プログラム命令は、コンピューティング・システムに同じ方法を実行させるように、コンピューティング・システムにより実行可能である。しかしながら、コンピュータ・プログラムは、スタンドアロン・モジュールとして、既存のコンピュータ・プログラム用のプラグインとして(例えば、クラウド・マネージャ)実施すること、又は後者において直接実施することさえ可能である。さらに、コンピュータ・プログラムは、任意のコンピューティング・システム上で実行され得る(以下を参照されたい)。いずれの場合も、本発明の実施形態による解決法は、ハードウェア構造によって(例えば、半導体材料の1つ又は複数のチップ内に統合された電子回路により)、又は適切にプログラムされた若しくは他の方法で構成されたソフトウェア及びハードウェアの組み合わせによって実施されるのにも役立つ。
実施形態は、上述の方法の実行ステップの各々を実行するように構成された手段を含むシステムを提供する。実施形態は、同じ方法の実行ステップの各々を実行するように構成された回路(すなわち、例えば、ソフトウェアにより適切に構成された任意のハードウェア)を含むシステムを提供する。しかしながら、コンピューティング・システムは、任意の数及びタイプのコンピューティング・マシン(例えば、物理タイプ及び/又は仮想タイプの)を含むことができ、また、任意のアーキテクチャ(スタンドアロンの、又はいずれかのローカル、広域、グローバル、セルラー、若しくは衛星ネットワークを介して、又は任意のタイプの有線及び/又は無線接続を利用して、それらの間で通信するコンピューティング・マシンに分散された)を有することができる。
一般に、システムが異なる構造を有する場合、又は同等のソフトウェア・コンポーネントを含む場合、又は他の動作特性を有する場合、類似の考慮事項が適用される。いずれの場合も、そのあらゆるソフトウェア・コンポーネントを、より多くの要素に分離することができ、又は2つ又はそれより多いソフトウェア・コンポーネントを互いに組み合わせて単一の要素にすることができる。さらに、対応する動作の実行を並行してサポートするために、各ソフトウェア・コンポーネントを複製することができる。さらに、特段の定めがない限り、異なるソフトウェア・コンポーネントの間の双方向性は、一般に、連続的である必要はなく、かつ、直接的なものであっても、又は1又は複数の仲介者を通じた間接的なものであってもよい。
本発明は、統合のいずれかの可能な技術的詳細レベルにおける、システム、方法、及び/又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの:すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカード若しくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び/又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び/又はエッジ・サーバを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内に格納するためにコンピュータ可読プログラム命令を転送する。本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、又は、「C」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述することができるいずれかのソースコード若しくはオブジェクトコードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、スタンドアロン型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて電子回路を個別化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するための手段を作り出すようにすることができる。これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、及び/又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、命令が内部に格納されたコンピュータ可読ストレージ媒体が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む製品を含むようにすることもできる。コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実装プロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するようにすることもできる。図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
本発明のコンピュータ・プログラム製品は、コンピュータ可読プログラム・コードがそこに格納された1つ又は複数のコンピュータ可読ハードウェア・ストレージ・デバイスを含み、このプログラム・コードは、本発明の方法を実施するために、1つ又は複数のプロセッサにより実行可能な命令を含む。
本発明のコンピューティング・システムは、1つ又は複数のプロセッサ、1つ又は複数のメモリ、及び1つ又は複数のコンピュータ可読ハードウェア・ストレージ・デバイスを含み、この1つ又は複数のハードウェア・ストレージ・デバイスは、本発明の方法を実施するために1つ又は複数のメモリを介して1つ又は複数のプロセッサにより実行可能なプログラム・コードを含む。
本発明の種々の実施形態の説明は、例証の目的のために提示されたが、これらは、網羅的であること、又は本発明を開示した実施形態に限定することを意図するものではない。当業者には、説明される実施形態の範囲及び趣旨から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理、実際の適用、又は市場に見られる技術に優る技術的改善を最もよく説明するため、又は、当業者が、本明細書に開示される実施形態を理解するのを可能にするために選択された。
10:コンピューティング・ノード
50:クラウド・コンピューティング環境
105、335、350:ソフトウェア・アプリケーション
200:コンピューティング・システム
205:通信ネットワーク
210:クライアント
215:サーバ
300:ソフトウェア・コンポーネント
305:クリエータ
310:ソースコード・リポジトリ
315:ビルダ
320:デプロイメント・パッケージ・リポジトリ
325:コンフィギュレータ
330:デプロイヤ
340:学習者
345:決定木ファイル
355:モニタ
360:分析器
DC1〜DCM:データセンタ
μS1〜μSN:マイクロ・サービス
VM1〜VMM:仮想マシン
本発明の実施形態は、ソフトウェア・アプリケーションをデプロイするための方法、並びに関連したコンピュータ・プログラム及びコンピュータ・システムを提供する。ソフトウェア・アプリケーションは、デフォルト・デプロイメント構成でコンピューティング・システム上にデプロイされ、このデフォルト・デプロイメント構成は、ソフトウェア・アプリケーションの複数の相互作用するソフトウェア・コンポーネントを含む。ソフトウェア・アプリケーションの実行環境の1つ又は複数の動作インジケータが監視される。監視された1つ又は複数の動作インジケータから、実行環境の危機的状況が存在することが確認される。危機的状況が存在すると確認されたことに応答して、ソフトウェア・アプリケーションの1つ又は複数の代替的デプロイメント構成から1つの代替的デプロイメント構成が選択され、各代替的デプロイメント構成は、集約されて対応する集約されたソフトウェア・コンポーネントになるソフトウェア・コンポーネントの1つ又は複数のグループを有する。ソフトウェア・アプリケーションは、選択された代替的デプロイメント構成で、コンピューティング・システム上に再デプロイされる。

Claims (20)

  1. ソフトウェア・アプリケーションをデプロイするための方法であって、前記方法は、
    前記ソフトウェア・アプリケーションを、デフォルト・デプロイメント構成でコンピューティング・システム上にデプロイすることであって、前記デフォルト・デプロイメント構成は、前記ソフトウェア・アプリケーションの複数の相互作用するソフトウェア・コンポーネントを含む、デプロイすることと、
    前記ソフトウェア・アプリケーションの実行環境の1つ又は複数の動作インジケータを監視することと、
    監視された前記1つ又は複数の動作インジケータから、前記実行環境の危機的状況が存在することを確認することと、
    前記確認することに応答して、前記ソフトウェア・アプリケーションの1つ又は複数の代替的デプロイメント構成から1つの代替的デプロイメント構成を選択することであって、各代替的デプロイメント構成は、集約されて対応する集約されたソフトウェア・コンポーネントになる前記ソフトウェア・コンポーネントの1つ又は複数のグループを有する、選択することと、
    前記ソフトウェア・アプリケーションを、前記選択された代替的デプロイメント構成で前記コンピューティング・システム上に再デプロイすることと、
    を含む、方法。
  2. 前記動作インジケータに従って前記危機的状況から前記実行環境のデフォルト状況に戻ることに応答して、前記ソフトウェア・アプリケーションを、前記デフォルト・デプロイメント構成で前記コンピューティング・システム上に再デプロイすることを含む、請求項1に記載の方法。
  3. 前記ソフトウェア・アプリケーションは、各々が前記対応する集約されたソフトウェア・コンポーネントの1つ又は複数のインスタンスを含む複数のインスタンスにおいてデプロイされる、請求項1に記載の方法。
  4. 前記ソフトウェア・コンポーネントは、対応するサービスを実施し、前記ソフトウェア・アプリケーションは、前記対応するサービスの各サービスの1つ又は複数の呼び出しを含む、請求項1に記載の方法。
  5. 各グループの前記ソフトウェア・コンポーネントは、前記グループの前記ソフトウェア・コンポーネントにより実施される前記サービスの1つ又は複数の遠隔呼び出しを含み、前記対応する集約されたソフトウェア・コンポーネントは、前記遠隔呼び出しを対応するネイティブ呼び出しに置換する、請求項4に記載の方法。
  6. 前記集約されたソフトウェア・コンポーネントの各ソフトウェア・コンポーネントは、前記対応する集約されたソフトウェア・コンポーネントのコードを組み込む、請求項4に記載の方法。
  7. 前記ソフトウェア・アプリケーションは、クラウド・ソフトウェア・アプリケーションである、請求項1に記載の方法。
  8. 前記1つ又は複数の動作インジケータを監視することは、
    前記実行環境の1つ又は複数の性能インジケータ、構成インジケータ、及び/又は可用性インジケータを監視することを含む、請求項1に記載の方法。
  9. 前記方法は、
    前記ソフトウェア・アプリケーションを、それぞれ前記デフォルト・デプロイメント構成及び前記代替的デプロイメント構成を含む複数の訓練デプロイメント構成で、異なる値の前記動作インジケータを有する複数のコンピューティング・システム上にデプロイすることと、
    各訓練環境の各訓練デプロイメント構成における前記ソフトウェア・アプリケーションの1つ又は複数の性能インジケータを測定することと、
    前記訓練環境の前記動作インジケータ及び前記訓練デプロイメント構成における前記ソフトウェア・アプリケーションの前記対応する性能インジケータに従って、前記代替的デプロイメント構成を選択するための選択ポリシーを決定することと、
    を含む、請求項1に記載の方法。
  10. 前記方法は、
    前記ソフトウェア・アプリケーションを、前記代替的デプロイメント構成に対する複数の候補デプロイメント構成を含む前記訓練デプロイメント構成でデプロイすることと、
    前記訓練環境の前記動作インジケータ及び前記訓練デプロイメント構成における前記ソフトウェア・アプリケーションの前記対応する性能インジケータに従って、前記候補デプロイメント構成の中から前記代替的デプロイメント構成を選択することと、
    を含む、請求項9に記載の方法。
  11. 前記ソフトウェア・コンポーネントの1つ又は複数のソフトウェア・コンポーネントはステートレスである、請求項1に記載の方法。
  12. 前記ソフトウェア・コンポーネントの前記1つ又は複数のソフトウェア・コンポーネントはステートフルであり、各々のステートフル・ソフトウェア・コンポーネントの前記インスタンスの各第1のインスタンスについて、前記方法は、
    前記ステートフル・ソフトウェア・コンポーネントの前記第1のインスタンスにより実施される任意のセッションの対応するセッション・データを、前記ステートフル・ソフトウェア・コンポーネントの前記第1のインスタンスがデプロイされる前記コンピューティング・システムの第1のコンピューティング・マシン上に保持することと、
    前記セッション・データを、前記第1のコンピューティング・マシンとは異なる前記コンピューティング・システムの1つ又は複数のミラーリング・コンピューティング・マシン上にミラーリングすることと、
    前記セッション・データを、前記ミラーリング・コンピューティング・マシンの1つから前記コンピューティング・システムの第2のコンピューティング・マシンにコピーすることであって、前記ステートフル・ソフトウェア・コンポーネントの前記インスタンスの第2のインスタンスは、前記ソフトウェア・コンポーネントの前記第2のインスタンスへの移動に応答してデプロイされる、コピーすることと、
    前記セッション・データを、前記ミラーリング・コンピューティング・マシンの1つから前記コンピューティング・システムの第3のコンピューティング・マシンへコピーすることであって、前記ソフトウェア・コンポーネントの前記第1のインスタンスを含む前記集約されたソフトウェア・コンポーネントの1つの驟雨役されたソフトウェア・コンポーネントのインスタンスは、前記ソフトウェア・コンポーネントの前記第1のインスタンスから前記1つの集約されたソフトウェア・コンポーネントの前記インスタンスへの移動に応答してデプロイされる、コピーすることと、
    を含む、請求項3に記載の方法。
  13. コンピュータ可読プログラム・コードが格納された1つ又は複数のコンピュータ可読ハードウェア・ストレージ・デバイスを含むコンピュータ・プログラム製品であって、前記プログラム・コードは、ソフトウェア・アプリケーションをデプロイするための方法を実施するために、コンピュータ・システムの1つ又は複数のプロセッサにより実行可能な命令を含み、前記方法は、
    前記ソフトウェア・アプリケーションを、デフォルト・デプロイメント構成でコンピューティング・システム上にデプロイすることであって、前記デフォルト・デプロイメント構成は、前記ソフトウェア・アプリケーションの複数の相互作用するソフトウェア・コンポーネントを含む、デプロイすることと、
    前記ソフトウェア・アプリケーションの実行環境の1つ又は複数の動作インジケータを監視することと、
    監視された前記1つ又は複数の動作インジケータから、前記実行環境の危機的状況が存在することを確認することと、
    前記確認することに応答して、前記ソフトウェア・アプリケーションの1つ又は複数の代替的デプロイメント構成から1つの代替的デプロイメント構成を選択することであって、各代替的デプロイメント構成は、集約されて対応する集約されたソフトウェア・コンポーネントになる前記ソフトウェア・コンポーネントの1つ又は複数のグループを有する、選択することと、
    前記ソフトウェア・アプリケーションを、前記選択された代替的デプロイメント構成で前記コンピューティング・システム上に再デプロイすることと、
    を含む、コンピュータ・プログラム製品。
  14. 前記方法は、
    前記動作インジケータに従って前記危機的状況から前記実行環境のデフォルト状況に戻ることに応答して、前記ソフトウェア・アプリケーションを、前記デフォルト・デプロイメント構成で前記コンピューティング・システム上に再デプロイすることを含む、請求項13に記載のコンピュータ・プログラム製品。
  15. 前記ソフトウェア・アプリケーションは、各々が前記対応する集約されたソフトウェア・コンポーネントの1つ又は複数のインスタンスを含む複数のインスタンスにおいてデプロイされる、請求項13に記載のコンピュータ・プログラム製品。
  16. 前記ソフトウェア・コンポーネントは、対応するサービスを実施し、前記ソフトウェア・アプリケーションは、前記対応するサービスの各サービスの1つ又は複数の呼び出しを含む、請求項13に記載のコンピュータ・プログラム製品。
  17. 1つ又は複数のプロセッサ、1つ又は複数のメモリ、及び1つ又は複数のコンピュータ可読ハードウェア・ストレージ・デバイスを含むコンピュータ・システムであって、前記1つ又は複数のハードウェア・ストレージ・デバイスは、ソフトウェア・アプリケーションをデプロイするための方法を実施するために、前記1つ又は複数のメモリを介して前記1つ又は複数のプロセッサにより実行可能なプログラム・コードを含み、前記方法は、
    前記ソフトウェア・アプリケーションを、デフォルト・デプロイメント構成でコンピューティング・システム上にデプロイすることであって、前記デフォルト・デプロイメント構成は、前記ソフトウェア・アプリケーションの複数の相互作用するソフトウェア・コンポーネントを含む、デプロイすることと、
    前記ソフトウェア・アプリケーションの実行環境の1つ又は複数の動作インジケータを監視することと、
    前記監視された1つ又は複数の動作インジケータから、前記実行環境の危機的状況が存在することを確認することと、
    前記確認することに応答して、前記ソフトウェア・アプリケーションの1つ又は複数の代替的デプロイメント構成から1つの代替的デプロイメント構成を選択することであって、各代替的デプロイメント構成は、集約されて対応する集約されたソフトウェア・コンポーネントになる前記ソフトウェア・コンポーネントの1つ又は複数のグループを有する、選択することと、
    前記ソフトウェア・アプリケーションを、前記選択された代替的デプロイメント構成で前記コンピューティング・システム上に再デプロイすることと、
    を含む、コンピュータ・システム。
  18. 前記方法は、
    前記動作インジケータに従って前記危機的状況から前記実行環境のデフォルト状況に戻ることに応答して、前記ソフトウェア・アプリケーションを、前記デフォルト・デプロイメント構成で前記コンピューティング・システム上に再デプロイすることを含む、請求項17に記載のコンピュータ・システム。
  19. 前記ソフトウェア・アプリケーションは、各々が前記対応する集約されたソフトウェア・コンポーネントの1つ又は複数のインスタンスを含む複数のインスタンスにおいてデプロイされる、請求項17に記載のコンピュータ・システム。
  20. 前記ソフトウェア・コンポーネントは、対応するサービスを実施し、前記ソフトウェア・アプリケーションは、前記対応するサービスの各サービスの1つ又は複数の呼び出しを含む、請求項17に記載のコンピュータ・システム。
JP2020520035A 2017-11-09 2018-10-23 ソフトウェア・アプリケーションのデプロイメント構成の動的選択のための方法、コンピュータ・プログラム及びコンピュータ・システム Active JP7257728B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/808,114 US10360012B2 (en) 2017-11-09 2017-11-09 Dynamic selection of deployment configurations of software applications
US15/808,114 2017-11-09
PCT/IB2018/058230 WO2019092530A1 (en) 2017-11-09 2018-10-23 Dynamic selection of deployment configurations of software applications

Publications (2)

Publication Number Publication Date
JP2021502622A true JP2021502622A (ja) 2021-01-28
JP7257728B2 JP7257728B2 (ja) 2023-04-14

Family

ID=66327235

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020520035A Active JP7257728B2 (ja) 2017-11-09 2018-10-23 ソフトウェア・アプリケーションのデプロイメント構成の動的選択のための方法、コンピュータ・プログラム及びコンピュータ・システム

Country Status (6)

Country Link
US (2) US10360012B2 (ja)
JP (1) JP7257728B2 (ja)
CN (1) CN111344668B (ja)
DE (1) DE112018004349T5 (ja)
GB (1) GB2581107A (ja)
WO (1) WO2019092530A1 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11507663B2 (en) 2014-08-11 2022-11-22 Sentinel Labs Israel Ltd. Method of remediating operations performed by a program and system thereof
US9710648B2 (en) 2014-08-11 2017-07-18 Sentinel Labs Israel Ltd. Method of malware detection and system thereof
US10523662B2 (en) * 2016-09-16 2019-12-31 Sap Se In-memory database advanced programming model
US11616812B2 (en) 2016-12-19 2023-03-28 Attivo Networks Inc. Deceiving attackers accessing active directory data
US11695800B2 (en) 2016-12-19 2023-07-04 SentinelOne, Inc. Deceiving attackers accessing network data
JP2020530922A (ja) 2017-08-08 2020-10-29 センチネル ラボ, インコーポレイテッドSentinel Labs, Inc. エッジネットワーキングのエンドポイントを動的にモデリングおよびグループ化する方法、システム、およびデバイス
US10817402B2 (en) * 2018-01-03 2020-10-27 Nec Corporation Method and system for automated building of specialized operating systems and virtual machine images based on reinforcement learning
US11470115B2 (en) 2018-02-09 2022-10-11 Attivo Networks, Inc. Implementing decoys in a network environment
US10833933B2 (en) * 2018-09-28 2020-11-10 Intel Corporation Systems and methods for optimizing a cloud deployed service based on performance metrics of the cloud service
US10805213B2 (en) * 2018-11-19 2020-10-13 International Business Machines Corporation Controlling data communication between microservices
JP7387734B2 (ja) * 2018-11-29 2023-11-28 バンティック インコーポレイテッド イベント駆動型アプリケーションのルールに基づく割り当て
US20200218579A1 (en) * 2019-01-08 2020-07-09 Hewlett Packard Enterprise Development Lp Selecting a cloud service provider
US11018956B2 (en) * 2019-01-18 2021-05-25 Fidelity Information Services, Llc Systems and methods for rapid booting and deploying of an enterprise system in a cloud environment
US10871956B2 (en) 2019-02-12 2020-12-22 Open Text Corporation Methods and systems for packaging and deployment of applications in a multitenant platform
US11886390B2 (en) 2019-04-30 2024-01-30 JFrog Ltd. Data file partition and replication
US11386233B2 (en) * 2019-04-30 2022-07-12 JFrog, Ltd. Data bundle generation and deployment
US11340894B2 (en) 2019-04-30 2022-05-24 JFrog, Ltd. Data file partition and replication
US11106554B2 (en) 2019-04-30 2021-08-31 JFrog, Ltd. Active-active environment control
WO2020236981A1 (en) 2019-05-20 2020-11-26 Sentinel Labs Israel Ltd. Systems and methods for executable code detection, automatic feature extraction and position independent code detection
WO2021014326A2 (en) 2019-07-19 2021-01-28 JFrog Ltd. Software release verification
US11748206B2 (en) * 2019-08-28 2023-09-05 International Business Machines Corporation Data recovery modification based on performance data exhibited by a network of data centers and data recovery requirement
US20210117172A1 (en) * 2019-10-21 2021-04-22 Pccw Vuclip (Singapore) Pte. Ltd. Data-driven consumer journey optimzation system for adaptive consumer applications
US10986230B1 (en) 2019-11-15 2021-04-20 Dell Products L.P. Method and apparatus to capture, analyze, organize, and present support chat information
US11061782B2 (en) 2019-11-15 2021-07-13 Dell Products L.P. System and method for prioritized processing of alerts from information handling systems
US11334421B2 (en) 2019-11-15 2022-05-17 Dell Products L.P. Method and apparatus to identify a problem area in an information handling system based on latencies
US20210203545A1 (en) * 2019-12-30 2021-07-01 Genesys Telecommunications Laboratories, Inc. Automated configuration and deployment of contact center software suite
US11695829B2 (en) 2020-01-09 2023-07-04 JFrog Ltd. Peer-to-peer (P2P) downloading
US11188450B2 (en) * 2020-04-02 2021-11-30 Sap Se Cloud application architecture using edge computing
US11294654B2 (en) * 2020-05-20 2022-04-05 Microsoft Technology Licensing, Llc Automated rules for controlled distribution of program instructions
US11500686B2 (en) 2020-07-31 2022-11-15 International Business Machines Corporation Resource management of a software application with multiple software components
CN111984403A (zh) * 2020-08-05 2020-11-24 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 一种分布式系统下软件构件的分配部署方法及系统
CN112132260B (zh) * 2020-09-03 2021-04-20 深圳索信达数据技术有限公司 神经网络模型的训练方法、调用方法、设备及存储介质
US11860680B2 (en) * 2020-11-24 2024-01-02 JFrog Ltd. Software pipeline and release validation
US11579857B2 (en) * 2020-12-16 2023-02-14 Sentinel Labs Israel Ltd. Systems, methods and devices for device fingerprinting and automatic deployment of software in a computing network using a peer-to-peer approach
CN112860270A (zh) * 2021-01-29 2021-05-28 深圳市奔凯安全技术股份有限公司 应用的异构部署方法、装置、存储介质及电子设备
CN113032049B (zh) * 2021-04-13 2024-06-11 北京华胜天成科技股份有限公司 基于任务启动策略的应用系统部署方法及装置和电子设备
US11899782B1 (en) 2021-07-13 2024-02-13 SentinelOne, Inc. Preserving DLL hooks
US11677810B2 (en) 2021-07-23 2023-06-13 International Business Machines Corporation Configuration tool for deploying an application on a server
TWI781767B (zh) * 2021-09-17 2022-10-21 先智雲端數據股份有限公司 用於分析由於軟體系統組件內容變化而造成性能影響之基於預測的方法
JP2023135567A (ja) 2022-03-15 2023-09-28 株式会社日立製作所 冗長性決定システム、冗長性決定方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004533687A (ja) * 2001-05-23 2004-11-04 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・ネットワークにおけるサービスの動的配備
JP2007293603A (ja) * 2006-04-25 2007-11-08 Mitsubishi Electric Corp 情報処理装置及び情報処理方法及びプログラム
US20070294364A1 (en) * 2006-06-15 2007-12-20 International Business Machines Corporation Management of composite software services
JP2009169473A (ja) * 2008-01-10 2009-07-30 Nec Corp モジュール配置装置並びにモジュール配置方法並びにプログラム
JP2012069056A (ja) * 2010-09-27 2012-04-05 Hitachi Systems Ltd クラウドサービス再配置システムと方法およびプログラム

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7150000B1 (en) * 1999-08-17 2006-12-12 Nash Controlware, Inc. Component development with autonomous and compiled components to implement and consume services with components operate in edit and run mode
US6985939B2 (en) * 2001-09-19 2006-01-10 International Business Machines Corporation Building distributed software services as aggregations of other services
US7103874B2 (en) * 2003-10-23 2006-09-05 Microsoft Corporation Model-based management of computer systems and distributed applications
US8429630B2 (en) * 2005-09-15 2013-04-23 Ca, Inc. Globally distributed utility computing cloud
US7735090B2 (en) * 2005-12-15 2010-06-08 International Business Machines Corporation On demand software contract modification and termination in running component assemblies
US7496893B2 (en) * 2006-06-15 2009-02-24 International Business Machines Corporation Method for no-demand composition and teardown of service infrastructure
DE102006051189A1 (de) 2006-10-30 2008-05-08 Siemens Ag Verfahren und System zum Ausführen und Konfigurieren von Applikationen abhängig von einer Einsatzumgebung
US20080189679A1 (en) * 2007-02-05 2008-08-07 Jared Rodriguez Method and system for creating, deploying, and utilizing a service
US20080235001A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing emulation decisions in response to software evaluations or the like
US9495152B2 (en) * 2007-06-22 2016-11-15 Red Hat, Inc. Automatic baselining of business application service groups comprised of virtual machines
US7925491B2 (en) * 2007-06-29 2011-04-12 International Business Machines Corporation Simulation of installation and configuration of distributed software
US8225308B2 (en) * 2007-10-26 2012-07-17 Microsoft Corporation Managing software lifecycle
DE102007052180A1 (de) * 2007-10-31 2009-05-07 Fujitsu Siemens Computers Gmbh Verfahren, Rechnersystem und Computerprogrammprodukt
US8627328B2 (en) * 2008-11-14 2014-01-07 Oracle International Corporation Operation control for deploying and managing software service in a virtual environment
WO2011047918A1 (en) * 2009-10-21 2011-04-28 International Business Machines Corporation Method and system for improving software execution time by optimizing a performance model
US20110126192A1 (en) * 2009-10-26 2011-05-26 Simon Frost Systems and methods for providing and updating a unified client
US8930935B2 (en) * 2009-12-28 2015-01-06 Verizon Patent And Licensing Inc. Composite service refactoring
US8826268B2 (en) 2010-03-08 2014-09-02 Microsoft Corporation Virtual software application deployment configurations
US20110321024A1 (en) * 2010-06-28 2011-12-29 Nokia Corporation Method and apparatus for updating an executing application
US9003416B2 (en) * 2010-09-29 2015-04-07 International Business Machines Corporation Predicting resource requirements for a computer application
EP2525528A1 (en) * 2011-05-17 2012-11-21 Alcatel Lucent Method for providing a service in a communication network
US8898096B2 (en) * 2011-05-31 2014-11-25 Oracle International Corporation Application configuration generation
US9336060B2 (en) * 2011-06-17 2016-05-10 Microsoft Technology Licensing, Llc Middleware services framework for on-premises and cloud deployment
US8914794B2 (en) 2011-06-30 2014-12-16 Rockwell Automation Technologies, Inc. Multiple deployment of applications with multiple configurations in an industrial automation environment
US9251033B2 (en) * 2011-07-07 2016-02-02 Vce Company, Llc Automatic monitoring and just-in-time resource provisioning system
CA2763547C (en) * 2011-12-20 2018-09-04 Ibm Canada Limited - Ibm Canada Limitee Fix delivery system
US9047133B2 (en) * 2012-03-02 2015-06-02 Vmware, Inc. Single, logical, multi-tier application blueprint used for deployment and management of multiple physical applications in a cloud environment
US20130254121A1 (en) * 2012-03-22 2013-09-26 International Business Machines Corporation Software Portfolio Management Based on Feature Usage
US8892945B2 (en) * 2012-04-02 2014-11-18 International Business Machines Corporation Efficient application management in a cloud with failures
CN104246740A (zh) * 2012-06-08 2014-12-24 惠普发展公司,有限责任合伙企业 针对云应用的测试和管理
US9286051B2 (en) * 2012-10-05 2016-03-15 International Business Machines Corporation Dynamic protection of one or more deployed copies of a master operating system image
CN102904955B (zh) * 2012-10-16 2015-11-18 南京大学镇江高新技术研究院 云计算平台中Web应用的自适应伸缩控制系统及其方法
US8997088B2 (en) * 2012-11-02 2015-03-31 Wipro Limited Methods and systems for automated deployment of software applications on heterogeneous cloud environments
US10127084B2 (en) * 2012-11-15 2018-11-13 Red Hat Israel, Ltd. Pre-provisioning resources for composite applications
US9256344B1 (en) * 2013-03-15 2016-02-09 Ca, Inc. Software management software
CN105579956B (zh) * 2013-04-04 2019-03-15 谷歌有限责任公司 移动应用性能预测
EP2816469A1 (en) * 2013-06-19 2014-12-24 British Telecommunications public limited company Application broker for multiple virtualised computing environments
US9483393B1 (en) * 2013-12-05 2016-11-01 Amazon Technologies, Inc. Discovering optimized experience configurations for a software application
US20150222485A1 (en) * 2014-02-06 2015-08-06 Sas Institute Inc. Dynamic server configuration and initialization
US20170017655A1 (en) * 2014-03-31 2017-01-19 Hewlett Packard Enterprise Development Lp Candidate services for an application
US9858060B2 (en) * 2014-05-09 2018-01-02 International Business Machines Corporation Automated deployment of a private modular cloud-computing environment
JP6459228B2 (ja) * 2014-06-02 2019-01-30 セイコーエプソン株式会社 発光装置、電子機器および検査方法
US9645805B2 (en) * 2014-06-26 2017-05-09 Vmware, Inc. Application blueprints based on service templates to deploy applications in different cloud environments
US9424065B2 (en) * 2014-06-26 2016-08-23 Vmware, Inc. Methods and apparatus to scale application deployments in cloud computing environments using virtual machine pools
US9588749B2 (en) 2014-10-14 2017-03-07 Microsoft Technology Licensing, Llc Configuration transform for application deployment
US9886267B2 (en) * 2014-10-30 2018-02-06 Equinix, Inc. Interconnection platform for real-time configuration and management of a cloud-based services exchange
US10193958B2 (en) * 2014-12-31 2019-01-29 Juniper Networks, Inc. Policy based framework for application management in distributed systems
US10178070B2 (en) * 2015-03-13 2019-01-08 Varmour Networks, Inc. Methods and systems for providing security to distributed microservices
US9467476B1 (en) * 2015-03-13 2016-10-11 Varmour Networks, Inc. Context aware microsegmentation
US10133619B1 (en) * 2015-06-08 2018-11-20 Nutanix, Inc. Cluster-wide virtual machine health monitoring
US9547478B1 (en) * 2015-09-30 2017-01-17 Semmle Limited Hierarchical dependency analysis enhancements using disjoint-or trees
US9892019B2 (en) * 2015-10-16 2018-02-13 Successfactors Inc. Use case driven stepping component automation framework
US9811327B2 (en) * 2015-12-21 2017-11-07 Quixey, Inc. Dependency-aware transformation of multi-function applications for on-demand execution
US10296413B2 (en) * 2016-05-02 2019-05-21 Microsoft Technology Licensing, Llc Recovery environment for a virtual machine
US10380365B2 (en) * 2016-06-01 2019-08-13 Chef Software, Inc. Choreographed distributed execution of programs
US10289438B2 (en) * 2016-06-16 2019-05-14 Cisco Technology, Inc. Techniques for coordination of application components deployed on distributed virtual machines
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
US9875086B1 (en) * 2016-09-29 2018-01-23 International Business Machines Corporation Optimizing performance of applications driven by microservices architecture
US10248400B1 (en) * 2016-11-15 2019-04-02 VCE IP Holding Company LLC Computer implemented system and method, and a computer program product, for automatically determining a configuration of a computing system upon which a software application will be deployed
TWI598744B (zh) * 2017-03-16 2017-09-11 廣達電腦股份有限公司 雲端資源之管理系統及其管理方法
US10511651B2 (en) * 2017-04-25 2019-12-17 General Electric Company Infinite micro-services architecture
US10117116B1 (en) * 2017-04-27 2018-10-30 At&T Intellectual Property I, L.P. System and method supporting delivery of network accessible services to connected devices of a local environment
US10841256B2 (en) * 2017-05-05 2020-11-17 ShieldX Networks, Inc. Upgrading components of a messaging system used by a microservice-based application
US10255052B2 (en) * 2017-05-30 2019-04-09 International Business Machines Corporation Dynamic deployment of an application based on micro-services
US10191731B2 (en) * 2017-06-27 2019-01-29 Microsoft Technology Licensing, Llc Safe and agile rollouts in a network-accessible server infrastructure using slices
US10719368B2 (en) * 2017-08-23 2020-07-21 Bank Of America Corporation Dynamic cloud stack tuning system
US10496396B2 (en) * 2017-09-29 2019-12-03 Oracle International Corporation Scalable artificial intelligence driven configuration management

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004533687A (ja) * 2001-05-23 2004-11-04 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・ネットワークにおけるサービスの動的配備
JP2007293603A (ja) * 2006-04-25 2007-11-08 Mitsubishi Electric Corp 情報処理装置及び情報処理方法及びプログラム
US20070294364A1 (en) * 2006-06-15 2007-12-20 International Business Machines Corporation Management of composite software services
JP2009169473A (ja) * 2008-01-10 2009-07-30 Nec Corp モジュール配置装置並びにモジュール配置方法並びにプログラム
JP2012069056A (ja) * 2010-09-27 2012-04-05 Hitachi Systems Ltd クラウドサービス再配置システムと方法およびプログラム

Also Published As

Publication number Publication date
CN111344668B (zh) 2023-08-29
US10360012B2 (en) 2019-07-23
US10782953B2 (en) 2020-09-22
DE112018004349T5 (de) 2020-05-14
WO2019092530A1 (en) 2019-05-16
JP7257728B2 (ja) 2023-04-14
GB2581107A (en) 2020-08-05
US20190258465A1 (en) 2019-08-22
CN111344668A (zh) 2020-06-26
GB202007686D0 (en) 2020-07-08
US20190138287A1 (en) 2019-05-09

Similar Documents

Publication Publication Date Title
JP7257728B2 (ja) ソフトウェア・アプリケーションのデプロイメント構成の動的選択のための方法、コンピュータ・プログラム及びコンピュータ・システム
US10601679B2 (en) Data-centric predictive container migration based on cognitive modelling
US11805076B2 (en) Microservice placement in hybrid multi-cloud using graph matching
US11409568B2 (en) Dynamically scaling out pods using a recursive way
US10540188B2 (en) Automated deployment and performance evaluation of a virtualized-computing environment
US11593180B2 (en) Cluster selection for workload deployment
US10761952B2 (en) Intelligent failover migration across multiple high availability stacks based on quality of prior failover migrations
US10705869B2 (en) Optimized migration of virtual objects across environments in a cloud computing environment
US11526404B2 (en) Exploiting object tags to produce a work order across backup engines for a backup job
Khan et al. Machine learning approach for automatic configuration and management of 5g platforms
JP2023551841A (ja) 複雑なレガシーアプリケーションの移行
US9483781B2 (en) Automatically generating a review rating the performance of a pattern based on pattern deployment, service history and operation of pattern
CN117616395A (zh) 迁移期间应用的连续活跃度和完整性
US11303712B1 (en) Service management in distributed system
US10223463B2 (en) Node controllers for hierarchical data structures
CN112152988B (zh) 用于异步nbmp请求处理的方法、系统以及计算机设备和介质
CN114868362B (zh) 访问实时上行链路流式传输框架(flus)信宿能力的方法和装置
US11593004B1 (en) Optimized addition and removal of compute resources in a distributed storage platform by implementing mapping changes in a shared storage subsystem
CN116776140A (zh) 构建具有预期特征重要性的模型

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200512

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20200407

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210323

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220301

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220801

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221124

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230314

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20230314

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230331

R150 Certificate of patent or registration of utility model

Ref document number: 7257728

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150