(57)【特許請求の範囲】
【請求項１】
アプリケーション（１）を計算リソース（２）上に展開するためのコンピューター実施方法であって、前記アプリケーション（１）は、ユーザーの複数のテナント（３）にリモートで提供され、前記アプリケーション（１）は、複数のアプリケーションコンポーネント（１０）を備え、該コンピューター実施方法は、
前記複数のテナント（３）をカテゴリー化するためのテナント（３１、３２、．．．、３５）のグループセット（４）を定義することと、
前記複数のテナント（３）のうちの各テナント（３１、３２、．．．、３５）を、前記テナント（３１、３２、．．．、３５）の前記グループセット（４）の、テナント（３１、３２、．．．、３５）の少なくとも１つのグループ（４１０、４１１、．．．、４１２）に割り当てることと、
展開モデル（５１、５２、５３、５４、５５）を、
前記複数のアプリケーションコンポーネント（１０）のうちのアプリケーションコンポーネント（１１、１２、．．．、１６）と、
前記複数のテナント（３）のうちのテナント（３１、３２、．．．、３５）と、
の組み合わせごとに準備することと、
前記展開モデル（５１、５２、５３、５４、５５）に応じて、アプリケーションコンポーネント（１１、１２、．．．、１６）とテナント（３１、３２、．．．、３５）との組み合わせごとに制約情報を決定することであって、前記展開モデル（５１、５２、５３、５４、５５）は、前記複数のテナント（３）のうちの各テナント（３１、３２、．．．、３５）が、１つ又は複数のアプリケーションコンポーネント（１１、１２、．．．、１６）及び／又は前記計算リソース（２）のインフラストラクチャを共有することから、テナント（３１、３２、．．．、３５）のグループ（４）全体を包含すること、及び／又は排除することを可能にするように構成されていることと、
前記複数のアプリケーションコンポーネント（１０）のうちの各アプリケーションコンポーネント（１１、１２、．．．、１６）に関連付けられた前記制約情報に応じて、前記計算リソース（２）上での前記アプリケーション（１）の有効な展開構成を決定することと、
前記決定された有効な展開構成に応じて前記計算リソース（２）上に前記アプリケーション（１）を展開することと、
を含み、前記有効な展開構成は、最適化方法によって決定され、前記最適化方法の第１のステップにおいて、前記複数のアプリケーションコンポーネント（１０）のうちのアプリケーションコンポーネント（１１、１２、．．．、１６）ごとに、複数の初期展開ユニット（Ｕ０１、Ｕ０２、Ｕ０３、Ｕ０１’、Ｕ０２’、Ｕ０３’）のうちの少なくとも１つの初期展開ユニットが生成され、前記複数の初期展開ユニット（Ｕ０１、Ｕ０２、Ｕ０３、Ｕ０１’、Ｕ０２’、Ｕ０３’）は、一連の展開レベル（ＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３）の初期展開レベル（ＤＬ０）に関連付けられ、前記最適化方法の第２のステップにおいて、更なる展開レベル（ＤＬ１）に関連付けられた複数の更なる展開ユニット（Ｕ１１、Ｕ１２、Ｕ１３、Ｕ１４）が生成され、該複数の更なる展開ユニット（Ｕ１１、Ｕ１２、Ｕ１３、Ｕ１４）は、前記一連の展開レベル（ＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３）における先行展開レベル（ＤＬ０）に関連付けられた複数の先行展開ユニット（Ｕ０１、Ｕ０２、Ｕ０３、Ｕ０１’、Ｕ０２’、Ｕ０３’）に応じて生成される、コンピューター実施方法。
【請求項２】
アプリケーションコンポーネント（１１、１２、．．．、１６）とテナント（３１、３２、．．．、３５）との組み合わせごとに制約情報を決定することは、
前記アプリケーションコンポーネント（１１、１２、．．．、１６）に関連付けられた前記制約情報を、前記複数のアプリケーションコンポーネント（１０）のうちの更なるアプリケーションコンポーネントに関連付けられた更なる制約情報から導出することであって、前記更なるアプリケーションコンポーネントは、前記アプリケーションコンポーネント（１１、１２、．．．、１６）と階層関係にあること、又は
前記アプリケーションコンポーネント（１１、１２、．．．、１６）に関連付けられた前記複数のテナント（３）のうちの前記テナント（３１、３２、．．．、３５）から前記制約情報を受信すること、
を含む、請求項１に記載のコンピューター実施方法。
【請求項３】
前記最適化方法の前記第２のステップは、前記複数の先行展開ユニット（Ｕ０１、Ｕ０２、Ｕ０３、Ｕ０１’、Ｕ０２’、Ｕ０３’）を前記制約情報に応じて前記更なる展開レベル（ＤＬ１）において展開するための最小数の更なる展開ユニット（Ｕ１１、Ｕ１２、Ｕ１３、Ｕ１４）を決定することを含む、請求項１に記載のコンピューター実施方法。
【請求項４】
前記アプリケーション（１）の前記有効な展開構成は、全ての展開レベル（ＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３）に関連付けられた展開ユニット（Ｕ０１、Ｕ０２、Ｕ０３、Ｕ０１’、Ｕ０２’、Ｕ０３’、Ｕ１１、Ｕ１２、Ｕ１３、Ｕ１４、Ｕ２１、Ｕ２２、Ｕ２３、Ｕ２４、Ｕ３１）の総数を最小にすることによって最適化される、請求項１〜３のいずれか１項に記載のコンピューター実施方法。
【請求項５】
前記コンピューター実施方法は、
前記複数のテナント（３）のうちの各テナント（３１、３２、．．．、３５）が、前記複数のアプリケーションコンポーネント（１０）のうちの個々のアプリケーションコンポーネント（１１、１２、．．．、１６）のモジュールを包含及び／又は排除することを可能にすることを含み、特に、前記モジュールは、前記個々のアプリケーションコンポーネント（１１、１２、．．．、１６）に関連付けられたデータの暗号化及び／又は解読のための暗号モジュールである、請求項１〜４のいずれか１項に記載のコンピューター実施方法。
【請求項６】
前記コンピューター実施方法は、
前記複数のテナント（３）のうちの各テナント（３１、３２、．．．、３５）が、前記複数のアプリケーションコンポーネント（１０）のうちの前記アプリケーションコンポーネント（１１、１２、．．．、１６）を包含及び／又は排除することを可能にすることを含む、請求項１〜５のいずれか１項に記載のコンピューター実施方法。
【請求項７】
有効な展開構成を決定することは、前記複数のアプリケーションコンポーネント（１０）のうちの各アプリケーションコンポーネント（１１、１２、．．．、１６）の複数のインスタンス（１１０、１１１、．．．、１４２）を前記制約情報に応じて生成することを含む、請求項１〜６のいずれか１項に記載のコンピューター実施方法。
【請求項８】
前記計算リソース（２）は、計算環境における複数の計算機（２０）を含み、前記アプリケーション（１）を前記計算リソース（２）上に展開することは、前記複数のアプリケーションコンポーネント（１０）のうちの各アプリケーションコンポーネント（１１、１２、．．．、１６）の前記複数のインスタンス（１１０、１１１、．．．、１４２）のうちの少なくとも１つのインスタンス（１１０、１１１、．．．、１４２）を前記複数の計算機（２０）のうちの少なくとも１つの計算機（２１、２２）上で実行することを含む、請求項７に記載のコンピューター実施方法。
【請求項９】
有効な展開構成を決定することは、前記少なくとも１つのアプリケーションコンポーネント（１１、１２、．．．、１６）の前記複数のインスタンス（１１０、１１１、．．．、１４２）のうちの各インスタンス（１１０、１１１、．．．、１４２）を、前記制約情報に応じて前記複数の計算機（２０）のうちの正確に１つの計算機（２１、２２）に割り当てることを含む、請求項８に記載のコンピューター実施方法。
【請求項１０】
有効な展開構成を決定することは、各テナント（３１、３２、．．．、３５）を、前記制約情報に応じて前記複数のインスタンス（１１０、１１１、．．．、１４２）のうちの正確に１つのインスタンス（１１０、１１１、．．．、１４２）に割り当てることを含む、請求項８又は９に記載のコンピューター実施方法。
【請求項１１】
展開モデル（５１、５２、５３、５４、５５）を、テナント（３１、３２、．．．、３５）とアプリケーションコンポーネント（１１、１２、．．．、１６）との組み合わせごとに準備することは、
前記テナント（３１、３２、．．．、３５）に展開モデルセット（５）を準備することと、
前記テナント（３１、３２、．．．、３５）が、前記展開モデルセット（５）の正確に１つの展開モデル（５１、５２、５３、５４、５５）を前記複数のアプリケーションコンポーネント（１０）のうちの各アプリケーションコンポーネント（１１、１２、．．．、１６）に割り当てることを可能にすることと、
前記テナント（３１、３２、．．．、３５）が、前記複数のアプリケーションコンポーネント（１０）のうちのアプリケーションコンポーネント（１１、１２、．．．、１６）ごとに、前記割り当てられる展開モデル（５１、５２、５３、５４、５５）のための制約情報を決定することを可能にすることと、
を含む、請求項１〜１０のいずれか１項に記載のコンピューター実施方法。
【請求項１２】
前記テナント（３１、３２、．．．、３５）が、正確に１つの展開モデル（５１、５２、５３、５４、５５）を前記複数のアプリケーションコンポーネント（１０）のうちの各アプリケーションコンポーネント（１１、１２、．．．、１６）に割り当てることを可能にすることは、プライベート展開モデル（５１）、パブリック展開モデル（５２）、ホワイト展開モデル（５３）、ブラック展開モデル（５４）、及び／又はグレイ展開モデル（５５）のうちの１つを割り当てることを含み、前記プライベート展開モデル（５１）は、前記アプリケーションコンポーネント（１１、１２、．．．、１６）を他の全てのテナント（３１、３２、．．．、３５）と共有することを不可能にするように構成され、前記パブリック展開モデル（５２）は、前記アプリケーションコンポーネント（１１、１２、．．．、１６）を他の全てのテナント（３１、３２、．．．、３５）と共有することを可能にするように構成され、前記ホワイト展開モデル（５３）は、前記アプリケーションコンポーネント（１１、１２、．．．、１６）を、前記テナント（３１、３２、．．．、３５）によって指定されたホワイトリストの他の全てのテナント（３１、３２、．．．、３５）と共有することを可能にするように構成され、前記ブラック展開モデル（５４）は、前記アプリケーションコンポーネント（１１、１２、．．．、１６）を、前記テナント（３１、３２、．．．、３５）によって指定されたブラックリストの他の全てのテナント（３１、３２、．．．、３５）と共有することを不可能にするように構成され、前記グレイ展開モデル（５５）は、前記アプリケーションコンポーネント（１１、１２、．．．、１６）を、前記テナント（３１、３２、．．．、３５）によって指定された別のテナント（３１、３２、．．．、３５）と共有することを可能又は不可能にするように構成されている、請求項１１に記載のコンピューター実施方法。
【請求項１３】
前記有効な展開構成を決定することは、前記複数のテナント（３）のうちのテナント（３１、３２、．．．、３５）ごとに、前記複数のアプリケーションコンポーネント（１０）のうちの各アプリケーションコンポーネント（１１、１２、．．．、１６）のための必要とされるリソースを指定することを含み、前記必要とされるリソースは、特にメモリのサイズ及び／又はプロセッサの数を含む、請求項１〜１２のいずれか１項に記載のコンピューター実施方法。
【請求項１４】
前記有効な展開構成を決定することは、前記アプリケーション（１）を実行するための利用可能な計算リソースを指定することを含み、前記利用可能な計算リソースは、特にメモリのサイズ及び／又はプロセッサの数を含む、請求項１〜１３のいずれか１項に記載のコンピューター実施方法。
【請求項１５】
前記有効な展開構成は、前記制約情報に応じて必要とされるリソースを最小にすることによって、前記必要とされるリソース及び利用可能な計算リソースに応じて決定される、請求項１〜１４のいずれか１項に記載のコンピューター実施方法。
【請求項１６】
アプリケーション（１）を計算リソース（２）上に展開するためのシステムであって、前記アプリケーション（１）は、ユーザーの複数のテナント（３）にリモートで提供され、前記アプリケーション（１）は、複数のアプリケーションコンポーネント（１０）を備え、該システムは、
前記計算リソース（２）と統合された少なくとも１つのプログラマブルプロセッサと、
前記計算リソース（２）と統合された機械可読媒体であって、少なくとも１つのプログラマブルプロセッサによって実行されると、該少なくとも１つのプログラマブルプロセッサに、請求項１〜１５のいずれか１項に記載のコンピューター実施方法の動作を実行させる命令を記憶している、機械可読媒体と、
を備える、アプリケーションを計算リソース上に展開するためのシステム。
【請求項１７】
アプリケーション（１）を計算リソース（２）上に展開するためのコンピュータープログラムであって、前記アプリケーション（１）は、ユーザーの複数のテナント（３）にリモートで提供され、前記アプリケーション（１）は、複数のアプリケーションコンポーネント（１０）を備え、該コンピュータープログラムは、少なくとも１つのプロセッサによって可読である非一時的な記憶媒体であって、請求項１〜１５のいずれか１項に記載のコンピューター実施方法の動作を実行するための、少なくとも１つのプロセッサによって実行される命令を記憶する非一時的な記憶媒体に記憶される、アプリケーションを計算リソース上に展開するためのコンピュータープログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算リソース上にアプリケーションを展開するためのコンピューター実施方法、システム、及びコンピュータープログラム製品に関する。
【背景技術】
【０００２】
ソフトウェアアズアサービス（ＳａａＳ）は、その基本アイデアがインターネットを介してアプリケーションを顧客にオンデマンドで提供することである配信モデルである。類似しているがそれよりも古い手法とは対照的に、ＳａａＳは、規模の経済を利用するツールとしてマルチテナントを促進する。これは、アプリケーションの単一のインスタンスが複数の顧客を受け持つことを意味する。これらの顧客は、テナントとも呼ばれ、例えば、このアプリケーションを用いるためにサインアップした企業、クラブ、又は個人である。複数の顧客が同じインスタンスを用いるにもかかわらず、それらの顧客のそれぞれは、そのインスタンスが、それらの顧客にのみ指定されているという印象を有する。これは、テナントのデータを互いから分離することによってアーカイブされる。シングルテナントとは対照的に、マルチテナントは、同じインスタンス上で複数のテナントをホストする。
【０００３】
しかしながら、マルチテナントアプリケーションの主な欠点のうちの１つは、顧客が、インフラストラクチャ、アプリケーションコード、又はデータを他のテナントと共有することを躊躇することである。これは、顧客が、他のテナントがシステムエラー、機能不良、又は破壊的行為に起因して自身のデータにアクセスするおそれがあることを恐れることに起因している。これまで、この問題は、単一のインスタンス上でテナントの分離を実施及び改善することによってのみ取り組まれてきた。
【発明の概要】
【０００４】
本発明の目的は、ソフトウェアサービスを提供するための技術的にシンプルで、効果的で、特に費用効果が高い解決策であって、アプリケーションの情報セキュリティが業界標準と比較して高く、それによって、計算リソースの利用効率が最適化される解決策を提供することである。
【０００５】
本発明の目的は、アプリケーションを計算リソース上に展開するためのコンピューター実施方法であって、前記アプリケーションは、ユーザーの複数のテナントにリモートで提供され、前記アプリケーションは、複数のアプリケーションコンポーネントを備え、該コンピューター実施方法は、
前記複数のテナントをカテゴリー化するためのテナントのグループセットを定義することと、
前記複数のテナントのうちの各テナントを、前記テナントの前記グループセットの、テナントの少なくとも１つのグループに割り当てることと、
展開モデルを、
前記複数のアプリケーションコンポーネントのうちのアプリケーションコンポーネントと、
前記複数のテナントのうちのテナントと、
の組み合わせごとに準備することと、
前記展開モデルに応じて、アプリケーションコンポーネントとテナントとの組み合わせごとに制約情報を決定することであって、前記展開モデルは、前記複数のテナントのうちの各テナントが、１つ又は複数のアプリケーションコンポーネント、及び／又は前記計算リソースのインフラストラクチャを共有することから、テナントのグループ全体を包含すること、及び／又は排除することを可能にするように構成されていることと、
前記複数のアプリケーションコンポーネントのうちの各アプリケーションコンポーネントに関連付けられた前記制約情報に応じて、前記計算リソース上での前記アプリケーションの有効な展開構成を決定することと、
前記決定された有効な展開構成に応じて前記計算リソース上に前記アプリケーションを展開することと、
を含む、アプリケーションを計算リソース上に展開するためのコンピューター実施方法によっても達成される。
【０００６】
本発明の目的は、アプリケーションを計算リソース上に展開するためのコンピューター実施方法であって、前記アプリケーションは、ユーザーの複数のテナントにリモートで提供され、前記アプリケーションは、複数のアプリケーションコンポーネントを備え、該コンピューター実施方法は、
前記複数のテナントをカテゴリー化するためのテナントグループセットを定義することと、
前記複数のテナントのうちの各テナントを前記テナントグループセットの少なくとも１つのテナントグループに割り当てることと、
前記複数のアプリケーションコンポーネントのうちのアプリケーションコンポーネントごとに、該アプリケーションコンポーネントに関連付けられた展開モデルを前記複数のテナントのうちの各テナントに準備することと、
前記複数のアプリケーションコンポーネントのうちのアプリケーションコンポーネントごとに、該アプリケーションコンポーネントに関連付けられた前記展開モデルに応じて、前記複数のテナントのうちの各テナントから制約情報を受信することと、
前記複数のアプリケーションコンポーネントのうちの各アプリケーションコンポーネントに関連付けられた前記制約情報に応じて、前記計算リソース上での前記アプリケーションの有効な展開構成を決定することと、
前記決定された有効な展開構成に応じて、前記アプリケーションを前記計算リソース上に展開することと、
を含む、コンピューター実施方法によっても達成される。
【０００７】
それによって、本発明によれば、有利には、混合型テナント（mixed-tenancy）とも呼ばれる、マルチテナントとシングルテナントとの間のハイブリッドな解決策によって、アプリケーションの動作コストを、複数のテナント間で計算リソースを共有することによって減少させることが可能である。アプリケーションのプロバイダーは、本明細書においては、オペレーター又はサービスプロバイダーと呼ばれる。例えば、データ分離、性能分離、又は性能構成を含むマルチテナントアウェアＳａａＳアプリケーションのための枠組みとは対照的に、本発明のコンピューター実施方法は、テナントが、自身のアプリケーションコンポーネントがどのように展開されるのか及び誰とともに展開されるのかの入力を与えることを可能にする。それによって、テナントは、同じアプリケーションコンポーネントインスタンスを共有しないので、同等の高いデータセキュリティが達成される。この混合型テナント展開は、インフラストラクチャ、特に計算リソースが、シングルテナント展開と比較して、より効率的に用いられるという利点を有する。計算リソースの効率的な使用は、アプリケーションを実行するのに必要な計算リソース、例えば、メモリの必要とされるサイズ及び／又はプロセッサの数が最小になることを意味する。同時に、マルチテナント展開と比較して、はるかに良好な情報セキュリティが達成される。特に、マルチテナントアプリケーションは、サービス指向型アーキテクチャの概念に基づいて構築されており、いわゆるコンポジットＳａａＳアプリケーションは、それぞれが原子的機能を提供する複数のアプリケーションコンポーネントからなる。代替的に、特に、モノリシックマルチテナントアプリケーションを提供することも可能である。特に、モノリシックソフトウェアシステムは、機能的に区別可能なコンポーネントが、アプリケーションからアーキテクチャ的に分離されるのではなく、アプリケーションと混交されることを意味する。例えば、本発明による方法は、顧客又はテナントが、特定のアプリケーションコンポーネントを共有したいか否か、又は複数のテナントのうちの他のどのテナントと共有したいのかを選ぶことを可能にすることを含む。このように、テナントは、自身のアプリケーションバリアントの展開に対する自身の要件を宣言することができる。テナントから受信された制約情報に基づくと、有利には、アプリケーションのための最も効率的な展開構成を同等の高速な方法で決定することが可能であり、それによって、必要とされる計算リソースが削減される。その上、本方法は、特に、複数のテナントのうちの各テナントが、同じ計算リソースを共有することからテナントグループ全体を包含すること及び／又は排除することを可能にすることを含む。特に、グループセットの定義は、特定の業界、例えば、情報技術（ＩＴ）業界、電気通信業界、及び／又は製薬業界の企業を表すグループの作成を含む。定義されたグループセットは、その後、テナントが操業する業界に従ってそれらのテナントを割り当てるのに用いることができる。グループセットは、例えば、業界の階層がそれらのグループセット上にマッピングされるように定義される。例えば、銀行業及び保険業はともに、金融��界の一部分であり、それによって、テナントは、銀行業界のみ又は金融業界全体を、同じ計算リソース又はアプリケーションを共有することから排除することが可能になる。特に、グループへのテナントの割り当ては、テナント自体が操業する全ての業界を排除することによって、ＩＴインフラストラクチャ又は計算リソースを競争相手と共有することに関するテナントの制約要件の実現を可能にする。テナントが、アプリケーションのテナントにまだなっていない他のテナントを明示的に包含又は排除することを可能にすることが更に好ましく、顧客ベースが秘密に保たれる。特に、仮想テナントは、実際に存在するが、アプリケーションのテナントにはまだなっていないテナントであり、本方法は、この仮想テナントを、アプリケーションが展開された後に当該アプリケーションのテナントになる企業に置き換えることを含む。例えば、仮想テナントは、他の全てのテナントによって事前に指定された全ての制約を有効にしておくことによってテナントに変換される。それによって、有利には、プロバイダーは、自身の顧客（customers）又はテナントのアイデンティティについての情報が開示されることを回避することが可能である。好ましくは、展開モデルは、テナントが自身の展開又は特定のアプリケーションコンポーネント及び／又は展開レベルのための自身の展開制約を表すことが可能であるか否か、又はどのように可能であるのかを規定する展開制約の青写真である。例えば、展開モデルは、テナント、アプリケーションコンポーネント、及び／又は展開レベルの特定の組み合わせに関連付けられた制約情報を受信するためのインターフェースである。
【０００８】
展開制約は、本明細書では制約情報と呼ばれ、計算リソースのインフラストラクチャを共有することができるか否か、又は他のどの単数若しくは複数のテナント及び／又はグループと共有することができるのかのテナントの記述である。テナントがアプリケーション全体の展開のための複数の展開制約を与えることが必要である。
【０００９】
展開構成は、全てのテナントによって定義された全ての展開制約に当てはまる場合に有効である。
【００１０】
好ましくは、展開モデルは、アプリケーションコンポーネント、テナント、及び一連の展開レベルのうちの展開レベルの組み合わせごとに準備され、この場合、制約情報は、アプリケーションコンポーネント、テナント、及び展開レベルのそのような組み合わせごとに決定される。
【００１１】
好ましくは、計算リソースは、マルチテナントアプリケーション（インフラストラクチャ）の展開のための１つ又は複数のハードウェアリソース及び／又はソフトウェアリソースを含む。特に、この状況では、計算リソースの異なるレイヤは、インフラストラクチャのスタック又は計算リソースのインフラストラクチャスタックとして理解することもできる。
【００１２】
好ましくは、制約情報は、アプリケーションコンポーネント、テナント、及び展開レベルの組み合わせごとに、展開モデルを用いることによって決定される。好ましくは、展開モデルは、複数のテナントのうちの各テナントが、１つ又は複数のアプリケーションコンポーネント及び／又は展開レベル（計算リソースのインフラストラクチャスタックのレベル）を共有することから、テナントグループ全体を包含し、及び／又は排除することを可能にするように構成されている。特に、展開レベル（ＤＬ）は、オペレーターのインフラストラクチャスタックのスライス又はレベルとも呼ばれるインフラストラクチャスタックの一部分として定義される。そのようなスライスは、好ましくは、インフラストラクチャスタックの１つ又は複数のレイヤをカプセル化する。本発明によれば、好ましくは、テナントが、アプリケーションコンポーネントの共有に関係した制約だけでなく、基礎を成すインフラストラクチャのための制約も表すことが可能である。そのような共有の一例は、セキュリティ意識の非常に高いテナントが、アプリケーションコンポーネントの指定されたインスタンスを必要とするが、基礎を成す仮想機械及び物理サーバーを特定の地理的領域からの他の顧客と共有する気はあるが、競争相手と共有する気はないというものである。
【００１３】
本発明の好ましい実施形態によれば、アプリケーションコンポーネントとテナントとの組み合わせごとに制約情報を決定することは、
前記アプリケーションコンポーネントに関連付けられた前記制約情報を、前記複数のアプリケーションコンポーネントのうちの更なるアプリケーションコンポーネントに関連付けられた更なる制約情報から導出することであって、前記更なるアプリケーションコンポーネントは、前記アプリケーションコンポーネントと階層関係にあること、又は
前記アプリケーションコンポーネントに関連付けられた前記複数のテナントのうちの前記テナントから前記制約情報を受信すること、
を含む。
【００１４】
それによって、有利には、全ての展開制約を記述するのに必要な作業を最小にすることが可能である。特に、テナントは、アプリケーションコンポーネントと階層関係にある更なるアプリケーションコンポーネントの制約情報を定義するだけでよい。好ましくは、複数のアプリケーションコンポーネント間の階層関係は、サイクルを有しない有向グラフに対応する。好ましくは、更なるアプリケーションコンポーネントは、アプリケーションコンポーネントよりも上位レベルに関連付けられ、例えば、更なるアプリケーションコンポーネントは、有向グラフの最上部により近い位置に対応する。本発明によれば、更なる制約情報は、階層内でトップダウン方向の継承によって制約情報から導出されることが好ましい。それによって、有利には、下位レベルのアプリケーションコンポーネント（子アプリケーションコンポーネント）に関連付けられた制約情報を更なる制約情報から導出する前に、上位レベルの更なるアプリケーションコンポーネント（親アプリケーションコンポーネント）が更なる制約情報に既に関連付けられていることを保証することが可能である。好ましくは、制約情報は、更なる制約情報に対して、等しい制限的な展開制約又はより制限的な展開制約に関係している。
【００１５】
本発明の更に好ましい実施形態によれば、前記有効な展開構成は、最適化方法によって決定され、前記最適化方法の第１のステップにおいて、前記複数のアプリケーションコンポーネントのうちのアプリケーションコンポーネントごとに、複数の初期展開ユニットのうちの少なくとも１つの初期展開ユニットが生成され、前記複数の初期展開ユニットは、一連の展開レベルの初期展開レベルに関連付けられ、前記最適化方法の第２のステップにおいて、前記一連の展開レベルの更なる展開レベルごとに、更なる展開レベルに関連付けられた複数の更なる展開ユニットが生成され、該複数の更なる展開ユニットは、前記一連の展開レベルにおける先行展開レベルに関連付けられた複数の先行展開ユニットに応じて生成される。
【００１６】
それによって、有利には、最適化されたマルチテナントアプリケーションをオペレーター及びテナントの双方に実現することが可能である。好ましくは、オペレーターにとっては、特に計算リソースのインフラストラクチャの利用に関するコスト及び作業が削減される。好ましくは、テナントにとっては、データセキュリティが同時に改善される。展開構成が作成されると、あらゆる展開レベルの１つ又は複数のインスタンスが存在する。これらのインスタンスは、展開ユニット（ＤＵ）と呼ばれる。展開構成は、アプリケーションコンポーネントインスタンスの最小数のユニット及び基礎を成すインフラストラクチャレイヤのみを利用することによって、最小コストのみをもたらす場合に最適である。好ましくは、第２のステップは、一連の展開レベル全体について繰り返される。
【００１７】
本発明の更に好ましい実施形態によれば、前記最適化方法の前記第２のステップは、前記複数の先行展開ユニットを前記制約情報に応じて前記更なる展開レベルにおいて展開するための最小数の更なる展開ユニットを決定することを含む。
【００１８】
それによって、有利には、最適化方法を用いることによって効率的な方法で最適なマルチテナントアプリケーションを実現することが可能である。好ましくは、複数の先行展開ユニットは、更なる展開レベルに関係した、又は更なる展開レベルと先行展開レベルのうちの１つ若しくは複数とに関係したアプリケーションコンポーネント及びテナントの全ての組み合わせに関連付けられた全ての展開制約又は制約情報に応じて、更なる展開レベルにおいて展開される。
【００１９】
本発明の更に好ましい実施形態によれば、前記アプリケーションの前記有効な展開構成は、全ての展開レベルに関連付けられた展開ユニットの総数を最小にすることによって最適化される。
【００２０】
それによって、有利には、比較的短い時間期間内に最適な展開構成を提供することが可能であり、この展開構成においてはテナントの全ての制約が考慮される。
【００２１】
本発明の好ましい実施形態によれば、前記コンピューター実施方法は、
前記複数のテナントのうちの各テナントが、前記複数のアプリケーションコンポーネントのうちの個々のアプリケーションコンポーネントのモジュールを包含及び／又は排除することを可能にすることを含み、特に、前記モジュールは、前記アプリケーションコンポーネントに関連付けられたデータの暗号化及び／又は解読のための暗号モジュールである。
【００２２】
それによって、有利には、テナントが、例えば、異なるモジュール又は技術的解決策を包含及び／又は排除することによって、異なる技術的実施態様間で選択を行うことを可能にすることができる。モジュールは、例えば、アプリケーションコンポーネントのインスタンス又はアプリケーションコンポーネントの選択可能な特徴である。暗号モジュールを設けることによって、有利には、テナント又はテナントグループが、データに安全にアクセスすること、アプリケーションコンポーネントを安全に用いること、及び／又は互いに安全に通信することを可能にすることができる。特に、暗号モジュールを用いると、未認可のアクセスに対する情報セキュリティを更に高めることが可能である。例えば、暗号強度を高めることによって、テナントの情報又はデータへのアクセスを得る可能性を非常に低くするか又は技術的に不可能にさえするように、未認可の人の計算リソースの需要を増加させることが可能である。
【００２３】
本発明の更に好ましい実施形態によれば、前記コンピューター実施方法は、
前記複数のテナントのうちの各テナントが、前記複数のアプリケーションコンポーネントのうちの前記個々のアプリケーションコンポーネントを包含及び／又は排除することを可能にすることを含む。
【００２４】
それによって、有利には、複数のテナントのうちの各テナントに、各テナントの要件を個々に満たすような方法で展開されるソフトウェアアプリケーションを提供することが可能である。
【００２５】
本発明の更に好ましい実施形態によれば、有効な展開構成を決定することは、前記複数のアプリケーションコンポーネントのうちの各アプリケーションコンポーネントの複数のインスタンスを前記制約情報に応じて生成することを含む。
【００２６】
それによって、有利には、複数のテナントのうちの各テナントが、アプリケーションの複数のアプリケーションコンポーネントのうちの或るアプリケーションコンポーネントが共有されるか否か、及び／又は他のどのテナント若しくはテナントグループと共有されるのかを個々に指定することを可能にすることができる。
【００２７】
本発明の更に好ましい実施形態によれば、前記計算リソースは、計算環境における複数の計算機を含み、前記アプリケーションを前記計算リソース上に展開することは、前記複数の計算機のうちの各アプリケーションコンポーネントの前記複数のインスタンスのうちの少なくとも１つのインスタンスを前記複数の計算機のうちの少なくとも１つの計算機上で実行することを含む。有効な展開構成を決定することは、前記少なくとも１つのアプリケーションコンポーネントの前記複数のインスタンスのうちの各インスタンスを、前記制約情報に応じて前記複数の計算機のうちの正確に１つの計算機に割り当てることを含む。
【００２８】
それによって、有利には、決定された展開構成に従って、計算環境の異なる計算機にわたって、アプリケーションコンポーネントインスタンスを多くの異なる方法で分散させることが可能である。特に、必要とされる計算リソース、例えば、プロセッサの数及び／又はメモリの量を最小にするように、複数の有効な展開構成から１つの特定の展開構成が選択される。計算機は、物理的な計算機又は仮想的な計算機のうちの少なくとも一方であり、それによって、計算環境は、物理的な計算環境又は仮想的な計算環境のうちの少なくとも一方である。
【００２９】
本発明の更に好ましい実施形態によれば、有効な展開構成を決定することは、各テナントを、前記制約情報に応じて前記複数のインスタンスのうちの正確に１つのインスタンスに割り当てることを含む。
【００３０】
それによって、有利には、各テナントを、アプリケーションコンポーネントの複数のインスタンスのうち、そのテナントがそのアプリケーションコンポーネント用に指定した制約を満たすインスタンスに個々に割り当てることが可能である。複数のインスタンスは、特に、１つの特定のアプリケーションコンポーネントに割り当てられ、更なるアプリケーションコンポーネントは、更なる複数のインスタンスを有する。
【００３１】
本発明の好ましい実施形態によれば、展開モデルを、テナントとアプリケーションコンポーネントとの組み合わせごとに準備することは、
前記テナントに展開モデルセットを準備することと、
前記テナントが、前記展開モデルセットの正確に１つの展開モデルを前記複数のアプリケーションコンポーネントのうちの各アプリケーションコンポーネントに割り当てることを可能にすることと、
前記テナントが、前記複数のアプリケーションコンポーネントのうちのアプリケーションコンポーネントごとに、前記割り当てられる展開モデルのための制約情報を決定することを可能にすることと、
を含む。
【００３２】
本発明の代替の実施形態によれば、前記複数のテナントのうちの各テナントに、前記複数のアプリケーションコンポーネントのうちのアプリケーションコンポーネントごとに、該アプリケーションコンポーネントに関連付けられた展開モデルを準備することは、
前記テナントが、前記複数のアプリケーションコンポーネントのうちの各アプリケーションコンポーネントに正確に１つの展開モデルを割り当てることを可能にすることと、
前記テナントが、前記複数のアプリケーションコンポーネントのうちのアプリケーションコンポーネントごとに、前記割り当てられた展開モデルのための制約情報を決定することを可能にすることと、
を含む。
【００３３】
それによって、有利には、複数のテナントのうちの各テナントが、アプリケーションの複数のアプリケーションコンポーネントのうちの各アプリケーションコンポーネントに対する制約を個々に記述することを可能にすることができる。特に、展開モデルを用いると、テナントは、他のテナント、テナントグループ、及び／又は或るテナントのユーザーを、特定のアプリケーションコンポーネントを用いることから包含し、及び／又は排除することが可能になる。テナントのユーザーは、例えば、暗黙的にテナントを包含若しくは排除することによって、又はテナントを通じて包含又は排除される。例えば、テナントは、アプリケーションコンポーネントごとに、テナントがアプリケーションコンポーネントのアプリケーションインスタンスを実行させたい正確に１つの展開モデルを選択する。それによって、テナントは、２つの展開レベルのための展開モデルを定義するために、２つのそのような選択を行うことが好ましい。これらの２つの展開レベルは、インスタンスレベルと、計算機レベル、特に仮想機械レベルとを含む。展開モデルは、複数又は全てのアプリケーションコンポーネントに適用することができ、テナントは、非常に機微なデータを処理する１つ又は複数の特定のアプリケーションコンポーネントを除いて、アプリケーション全体が他のテナントと共有されることを指定することが可能になる。非常に機微なデータを処理するアプリケーションコンポーネントは、好ましくは、以下の展開モデルの別のもので展開される。展開レベルの数は、上記で説明したような２つの展開レベルに限定されるものではない。例えば、本発明の別の好ましい実施形態によれば、展開レベルの数は、計算リソースのサービスプロバイダー又はオペレーターによって選択される。それによって、有利には、例えば、テナントに提供されるサービスを制限することが可能であり、例えば、１つの展開レベルのみ、具体的には仮想機械レベルを提供することが可能である。
【００３４】
本発明の好ましい実施形態によれば、前記複数の展開モデルのうちの正確に１つの展開モデルを前記複数のアプリケーションコンポーネントのうちの各アプリケーションコンポーネントに割り当てることは、プライベート展開モデル、パブリック展開モデル、ブラック展開モデル、ホワイト展開モデル、及び／又はグレイ展開モデルのうちの１つを割り当てることを含み、前記プライベート展開モデルは、前記アプリケーションコンポーネントを他の全てのテナントと共有することを不可能にするように構成され、前記パブリック展開モデルは、前記アプリケーションコンポーネントを他の全てのテナントと共有することを可能にするように構成され、前記ブラック展開モデルは、前記アプリケーションコンポーネントを、前記テナントによって指定されたブラックリストの他の全てのテナントと共有することを不可能にするように構成され、前記ホワイト展開モデルは、前記アプリケーションコンポーネントを、前記テナントによって指定されたホワイトリストの他の全てのテナントと共有することを可能にするように構成され、前記グレイ展開モデルは、前記アプリケーションコンポーネントを、前記テナントによって指定された別のテナントと共有することを可能又は不可能にするように構成されている。
【００３５】
それによって、有利には、複数のテナントのうちの各テナントが、アプリケーションの複数のアプリケーションコンポーネントのうちの各アプリケーションコンポーネントに対する制約を個々に記述することを可能にすることができる。例えば、テナント又は顧客の要件は、いわゆるウェブオントロジー言語（ＯＷＬ）モデル及びリソース記述フレームワーク（ＲＤＦ）に基づいてモデル化されるか、又は代替的に、顧客が５つの異なる展開モデル間で選択を行うことを可能にする情報科学におけるオントロジーの他の概念に基づいてモデル化される。各展開モデルは、テナントが、他のどのテナント若しくはテナントグループと展開されることを所望しているのか、及び／又はどのような方法で展開されることを望んでいるのかを指定することを可能にする。特に、展開は、別のテナント又は他のテナントグループの排除又は包含を含む。各テナントグループは、複数の他のグループをカプセル化することができる。特に、グループ化は、例えば、情報セキュリティにおいて、テナントの要件を記述する一般的な方法として用いられ、異なる顧客要件は、グループ化に基づいて実現することができる。展開モデルは、各テナント又は各顧客が、他のどのテナント又はテナントグループとアプリケーションコンポーネント及び／又は計算リソース、例えば、物理的な計算機、仮想的な計算機の共有を所望しているのか又は所望していないのかを明示的に指定することを可能にする。
【００３６】
本発明の更に好ましい実施形態によれば、前記有効な展開構成を決定することは、前記複数のテナントのうちのテナントごとに、前記複数のアプリケーションコンポーネントのうちの各アプリケーションコンポーネントのための必要とされるリソースを指定することを含み、前記必要とされるリソースは、特にメモリのサイズ及び／又はプロセッサの数を含む。また、前記有効な展開構成を決定することは、前記アプリケーションを実行するための利用可能な計算リソースを指定することを含み、前記利用可能な計算リソースは、特にメモリのサイズ及び／又はプロセッサの数を含む。前記有効な展開構成は、前記制約情報に応じて前記必要とされるリソースを最小にすることによって、前記必要とされるリソース及び前記利用可能なリソースに応じて決定される。
【００３７】
それによって、有利には、計算リソース上でのアプリケーションの展開に必要とされるリソースを最適化することが可能であり、それによって、アプリケーションの動作コストが、複数のテナント間で計算リソースを共有することによって削減される。その上、各テナントは、それらのテナントのアプリケーションコンポーネントがどのように展開されるのか及び誰とともに展開されるのかの入力を与えることが個々に可能になる。それによって、テナントは、同じアプリケーションコンポーネントインスタンスを共有しないので、同等の高いデータセキュリティがアーカイブされる。本発明によると、シングルテナント展開に対して、インフラストラクチャ、特に計算リソースをより効率的に用いることができるという更なる利点が達成され、それによって、マルチテナント展開と比較して、はるかに良好な情報セキュリティが達成される。
【００３８】
本発明の目的は、アプリケーションを計算リソース上に展開するためのシステムであって、前記アプリケーションは、ユーザーの複数のテナントにリモートで提供され、前記アプリケーションは、複数のアプリケーションコンポーネントを備え、該システムは、
前記計算リソースと統合された少なくとも１つのプログラマブルプロセッサと、
前記計算リソースと統合された機械可読媒体であって、少なくとも１つのプログラマブルプロセッサによって実行されると、該少なくとも１つのプログラマブルプロセッサに、請求項１〜７のいずれか１項に記載のコンピューター実施方法の前記動作を実行させる命令を記憶している、機械可読媒体と、
を備える、アプリケーションを計算リソース上に展開するためのシステムによっても達成される。
【００３９】
本発明の目的は、アプリケーションを計算リソース上に展開するためのコンピュータープログラム製品であって、前記アプリケーションは、ユーザーの複数のテナントにリモートで提供され、前記アプリケーションは、複数のアプリケーションコンポーネントを備え、該コンピュータープログラム製品は、少なくとも１つのプロセッサによって可読である非一時的な記憶媒体であって、請求項１〜７のいずれか１項に記載のコンピューター実施方法の前記動作を実行するための、少なくとも１つのプロセッサによって実行される命令を記憶する非一時的な記憶媒体を含む、アプリケーションを計算リソース上に展開するためのコンピュータープログラム製品によっても達成される。
【００４０】
本発明のこれらの特性、特徴、及び利点、並びに他の特性、特徴、及び利点は、添付図面とともに取り入れられた以下の詳細な説明から明らかになる。添付図面は、本発明の原理を例として示している。この説明は、例示のためにのみ与えられており、本発明の範囲を限定するものではない。以下で引用する参照図は、添付図面を指している。
【図面の簡単な説明】
【００４１】
【図１】本発明によるシステムの一実施形態を概略的に示す図である。
【図２】複数の計算機上の複数のアプリケーションコンポーネントのインスタンスの概略分散図である。
【図３】本発明のコンピューター実施方法を示すエンティティ関係図である。
【図４】本発明のコンピューター実施方法を示す流れ図である。
【図５】本発明のコンピューター実施方法によるアプリケーションインスタンスの展開を示す概略図である。
【図６】展開モデルの状態を概略的に示す図である。
【図７】有効な展開構成を概略的に示す図である。
【図８】最適化方法を概略的に示す図である。
【発明を実施するための形態】
【００４２】
本発明を、特定の実施形態に関して幾つかの図面を参照して説明するが、本発明は、これらの実施形態及び図面に限定されるものではなく、特許請求の範囲によってのみ限定される。説明する図面は、概略的なものにすぎず、限定的なものではない。図面において、要素のうちの幾つかのサイズは、例示の目的で誇張されている場合があり、一律の縮尺でない場合がある。
【００４３】
個数が特定されていない名詞については、特に指定がない限り、単数のものだけでなく複数のものも含む。
【００４４】
さらに、本明細書及び特許請求の範囲における「第１」、「第２」、「第３」等の用語は、類似の要素を区別するために用いられ、必ずしも連続的な順序又は時間的な順序を記述するために用いられているわけではない。そのように用いられる用語は、適切な状況下では交換可能であり、本明細書において説明する本発明の実施形態は、本明細書において説明又は図示する順序以外の順序で動作することが可能である。
【００４５】
図１には、本発明によるシステムの一実施形態が概略的に示されている。このシステムは、複数のテナント３、特に第１のテナント３１、第２のテナント３２、第３のテナント３３、及び第４のテナント３４とディスパッチャー２３を介してインターラクトするようにプログラムされている。このディスパッチャーは、特に、サーバー、例えばドメインネームサーバー（ＤＮＳ）を用いることによって、テナント３１、３２、３３、３４のユーザーを、そのテナントが割り当てられているアプリケーションコンポーネント１１、１２、１３、１４、１５のうちの１つのインスタンス上に導くように構成されている。このシステムは、当該システムの計算リソース２と統合された複数の計算機２０を備える。この計算リソースは、例えば、物理的な計算環境又は仮想的な計算環境である。特に、複数の計算機２０のうちの第１の計算機２１及び第２の計算機２２は、例えば、物理的な計算機又は仮想的な計算機であり、仮想的な計算機は、物理的な計算機をシミュレーションするものである。アプリケーション１は、複数のアプリケーションコンポーネント１０を備え、例えば、複数のアプリケーションコンポーネント１０は、第１のアプリケーションコンポーネント１１、第２のアプリケーションコンポーネント１２、第３のアプリケーションコンポーネント１３、第４のアプリケーションコンポーネント１４、及び第５のアプリケーションコンポーネント１５を含む。例えば、計算リソース２上でのアプリケーション１の展開のための展開構成を決定することは、複数のテナント３０の各テナント３１、３２、３３、３４によって指定される次の制約のうちの１つを含む。第１に、第１のアプリケーションコンポーネント１１、第２のアプリケーション１２コンポーネント、第３のアプリケーションコンポーネント１３、又は第４のアプリケーションコンポーネント１４のいずれも、どのクリティカルデータも扱っておらず、したがって、複数のテナント３０の各テナント３１、３２、３３、３４は、上記第１のアプリケーションコンポーネント〜第４のアプリケーションコンポーネント３１、３２、３３、３４のうちの１つのインスタンス１１０、．．．、１４２（図２参照）を共有するように指定する。第２に、第５のアプリケーションコンポーネント１５は、非常に機微なデータを扱う。例えば、第１のテナント３１及び第２のナント３２はそれぞれ、第５のアプリケーションコンポーネント１５のそれら自体の指定されたインスタンスを有するように指定する。第３のテナント３３は、第５のアプリケーションコンポーネント１５のインスタンス（図示せず）を競争相手と共有したくないことを指定する。第４のテナント３４は、第５のアプリケーションコンポーネント１５のインスタンスをヨーロッパに位置するテナントとのみ共有することを望む。第３に、第５のテナント３５は、これらの複数のアプリケーションコンポーネント１０のうちのいずれもが複数のテナント３のうちの他の任意のテナント３１、３２、３３、３４と共有される場合がないことを指定する。このように、第５のテナント３５は、シングルテナントアプリケーションを用いる。それによって、例えば、第５のテナント３５は、複数の計算機２０のうちの第２の計算機２２に割り当てられ、ここには複数のテナント３のうちの他のテナント３１、３２、３３、３４は、割り当てられない。
【００４６】
図２には、複数の計算機２０上にある複数のアプリケーションコンポーネント１０のインスタンス１１０、．．．、１４２の分散の図が概略的に示されている。複数のアプリケーションコンポーネント１０の複数のインスタンス１１０、．．．、１４２、例えば、第１のアプリケーションコンポーネント１１の第１のインスタンス１１０、１１１、１１２、１１３、１１４、第２のアプリケーションコンポーネント１２の第２のインスタンス１２０、１２１、１２２、第３のアプリケーションコンポーネント１３の第３のインスタンス１３０、１３１、及び第４のアプリケーションコンポーネント１４の第４のインスタンス１４０、１４１、１４２は、複数のテナント３によって指定された制約情報に応じて、複数の計算機２０、例えば、第１の計算機２１及び第２の計算機２２上に展開される。上記複数のインスタンス１１０、．．．、１４２は、展開構成に従って複数の計算機２０上に分散される。この展開構成は、複数のテナント３のうちのテナント３１、３２、．．．、３５から受信された制約情報に応じて決定される。この制約情報に応じて、複数のアプリケーションコンポーネント１０の複数のインスタンス１１０、．．．、１４２がアプリケーション１によって生成される。例えば、第１のアプリケーションコンポーネント１１については、５つの第１のインスタンス１１０、１１１、１１２、１１３、１１４が生成される。各テナントは、複数のアプリケーションコンポーネント１０のアプリケーションコンポーネントごとに１つのインスタンスのみを用いることが可能になる。
【００４７】
図３には、本発明のコンピューター実施方法の例示のためのエンティティ関係図が示されている。このエンティティ関係図は、次のエンティティのための一例として説明される。すなわち、次のエンティティとは、複数のテナント３のうちのテナント３１、テナント３１の複数のユーザー（図示せず）のうちのユーザー３１０、グループセット４のうちのグループセット４１のグループ４１０、アプリケーション１、複数のアプリケーションコンポーネント１０のうちのアプリケーションコンポーネント１１、複数のアプリケーションインスタンス１１０、．．．、１１５のうちの或るアプリケーションインスタンスである。複数のアプリケーションインスタンス１１０、．．．、１１５は、複数のテナント３の全てのテナント３１、３２、．．．、３５によって指定された制約情報に応じて決定される。図３の説明は、それに応じて、複数の上記エンティティにも適用される。
【００４８】
シングルテナントアプリケーションとは対照的に、マルチテナントアプリケーションは、例えば、複数のテナント３によって同時に用いられる。テナント３１は、例えば、アプリケーション１を用いるためにサインアップした特定の企業である。複数のテナント３のうちのテナント３１は、アプリケーション１を用いる少なくとも１人のユーザー３１０を有し、例えば、ユーザー３１０は、上記企業の従業員を表し、各ユーザー３１０は、１つの特定の企業に所属する。ユーザー３１０と企業との間のこの関係は、テナント３１及びユーザー３１０というエンティティ並びに第１の関係１’によって図３に示されている。この関係は、ユーザー３１０がテナント３１に所属することを意味している。アプリケーション１は、複数のアプリケーションコンポーネント１０からなり、図３には、アプリケーションコンポーネント１１が示されている。特に、そのようなアプリケーション１は、コンポジット（composite）ＳａａＳアプリケーション１とも呼ばれる。情報セキュリティ及び性能の要件６０１に関するテナント３１の個々の要件を満たすために、テナント３１は、参照符号５’を有する第５の関係によって示されるように、アプリケーション１からのアプリケーションコンポーネント１１を必要とする。アプリケーション１は、参照符号２’によって示されるように、少なくともアプリケーションコンポーネント１１からなる。しかしながら、複数のアプリケーションコンポーネント１０のうちのあらゆるアプリケーションコンポーネント１１が、複数のテナント３のうちのあらゆるテナント３１、３２、．．．、３５によって用いられるとは限らない。なぜならば、各テナント３１、３２、．．．、３５は、アプリケーション１に対して異なる機能要件を有するからである。図３では、エンティティテナント３１、アプリケーションコンポーネント１１、アプリケーション１、並びにアプリケーション１がアプリケーションコンポーネント１１からなることを意味する第２の関係２’及びテナント３１がアプリケーションコンポーネント１１を必要とすることを意味する第５の関係５’が、そのような機能要件を示している。さらに、テナント３１は、当該テナント３１が、特定のアプリケーションコンポーネント１１を用いるのに、計算リソース２の計算機２１のどれくらいの量を必要とするのかを指定しなければならない。これは、図３における第５の関係５’とともに特性要求性能６０１によって示される。アプリケーションコンポーネント１１は、計算機２１によってまだ実行可能でない１つの原子的機能を表したものである。テナント３１がアプリケーションコンポーネント１１を用いることを可能にするには、アプリケーションコンポーネント１１を展開する必要がある。これは、例えば、アプリケーションコンポーネント１１のインスタンス１１０が計算機２１上のアプリケーション１によって生成されることを意味し、アプリケーションコンポーネント１１のインスタンス１１０は、計算リソース２の計算機２１において動作する。特に、アプリケーションコンポーネント１１の展開したものは、アプリケーションコンポーネント１１のインスタンス１１０と呼ばれる。したがって、アプリケーションコンポーネント１１について、アプリケーションコンポーネント１１の複数のインスタンス１１０、．．．、１１４（図２参照）が、複数のテナント３の各テナント３１、３２、．．．、３５によって指定された制約情報に応じて生成され、これらの複数のインスタンス１１０、．．．、１１４のインスタンス１１０が、複数の計算機２０のうちの特定の計算機２１によって展開される。例えば、計算機２１は、仮想的な計算機又は物理的な計算機である。複数の計算機２０は、いわゆるクラウドインフラストラクチャ（ｌａａＳ）内に展開され、各計算機２１は、決定された展開構成に応じて複数のアプリケーションコンポーネント１０のうちのアプリケーションコンポーネント１１の１つ又は複数のインスタンス１１０、．．．、１１４をホストするように構成されている。複数の計算機２０のうちの各計算機２１は、オファードリソース（offered resource：提供リソース）６０３と呼ばれる特性を有し、このオファードリソース６０３という特性は、計算機２１が、複数のアプリケーションコンポーネント１０のうちのアプリケーションコンポーネント１１の複数のインスタンス１１０、．．．、１１４をプロビジョニングするのに、計算リソース２のどれくらいの量を提供することができるのかを表す。オファードリソース６０３が測定される単位は、好ましくは、第５の関係５’による性能要件６０１に関連付けられた上述のリソースと同じである。例えば、性能要件６０１に関連付けられたリソース又はオファードリソース６０３の尺度は、計算リソース２のメモリのサイズ及び／又はプロセッサの個数である。図３では、計算機２１のオファードリソース６０３は、第４の関係４’によって表されるように、アプリケーションインスタンス１１０を実行するために提供され、このアプリケーションインスタンス１１０は、参照符号３’を有する第３の関係によって表されるようにアプリケーションコンポーネント１１によって提供される。
【００４９】
テナント３１は、テナント３１が有する展開モデル５に基づいて複数のアプリケーションコンポーネント１０のうちのアプリケーションコンポーネント１１の複数のインスタンス１１０、．．．、１１４のうちのインスタンス１１０に割り当てられる。これは、第６の関係６’を用いて示されている。特に、展開モデル５は、プライベート（private）展開モデル５１、パブリック（public）展開モデル５２、ホワイト（white）展開モデル５３、ブラック（black）展開モデル５４、又はグレイ（gray）展開モデル５５のうちの１つを含む。
【００５０】
プライベート展開モデル５１によれば、アプリケーションコンポーネント１１のインスタンスは、例えば、第１３の関係１３’に見られるように、特に単一のテナント３１について展開される。このインスタンス１１は、他のテナント３２、３３とは共有されず、したがって、展開されるアプリケーションコンポーネント１１は、マルチテナントをサポートする必要はない。この点において、アプリケーション１全体は、純粋なマルチテナントアプリケーションでなくなっている。例えば、テナント３１は、全てのアプリケーションコンポーネント１１がプライベート展開モデル５１に従って展開されることを要求することも可能である。
【００５１】
パブリック展開モデル５２によれば、複数のテナント３のうちの全てのテナント３１、．．．、３５は、インスタンス１１０を共有することが可能になる。複数のテナント３のうちのテナント３１、．．．、３５は、テナント３１がどのテナントとともに展開されるかについて影響を与えない。これは、計算リソースのオペレーター又はサービスプロバイダーがアプリケーション１を計算リソース２上に展開するための最も簡単な方法であるので、通常、テナント３１にとって最も安価な解決策でもある。それによって、有利には、運用コストを共有することが可能である。
【００５２】
ホワイト展開モデル５３は、テナント３１がアプリケーションコンポーネント１１のインスタンス１１０を他のどのテナント３２、３３、．．．、３５と共有するのかをテナント３１が指定することを可能にする。例えば、企業は、個々の部門がインスタンス１１０を共有するが、どの外部のテナント３２、３３、．．．、３５も同じインスタンス１１０を用いることを認めないことを要求する。さらに、ホワイト展開モデル５３は、ユーザー３１０と、他のユーザー（図示せず）、他のテナント３２、３３、．．．、３５又はテナントグループセット４１、４２、．．．、４３の別のグループ４１１、．．．、４１２との間のコラボレーションの管理を可能にする。ホワイト展開モデル５２は、テナント３１が、コラボレーションを可能にするアプリケーションインスタンス１１０の共有を指定することを可能にするのに用いることができる。図３において、関係７’は、テナント３１がグループ４１０に所属することを示している。テナント３１は、第８の関係８’に見られるように、ホワイト展開モデル５３に関連付けられた制約情報を指定することが可能になる。これは、テナント３１が、アプリケーションコンポーネント１１のための制約情報においてテナント３１によって指定されたとおりに他のテナントのグループ４１０とともに展開されることを意味する。
【００５３】
ブラック展開モデル５４によれば、テナント３１は、当該テナント３１がともに展開されたくない他のテナント３２、３３、．．．、３５を指定することが可能になる。例えば、これは、テナントグループ４１０を排除することによって行われる。これは、第９の関係９’によって示されている。グループ４１０は、例えば、特定の法的エリア、国、産業、又は特定の業界の全てのテナント３１、３２、．．．、３５を表す。ブラック展開モデル５４を用いて遂行することができるテナント３１によって指定された制約は、競争相手が具体的に誰であるのかを指定することなく、テナント３１が競争相手とともに展開されないように要求することである。図３において、これは、第９の関係９’又は第１０の関係１０’によって示されている。なぜならば、これらの第９の関係９’及び第１０の関係１０’はともに、テナント３１が、アプリケーションコンポーネント１１について、どのグループ４１０とともに展開されたくないのか、特に、どのグループ４１０が排除されるのかを表しているからである。
【００５４】
グレイ展開モデル５５は、テナント３１がアプリケーションコンポーネント１１のインスタンス１１０を共有したい相手及びテナント３１がアプリケーションコンポーネント１１のインスタンス１１０を共有したくない相手をテナント３１が明示することを可能にする。これは、グループ４１０を明示的に排除するとともに含めることによって行うことができる。例えば、テナント３１は、競争相手とともに展開されたくなく、加えて、テナント３１は、ヨーロッパデータプライバシー法（European Data Privacy Act）に従っている顧客とともにのみ展開されたい。
【００５５】
サービスプロバイダーが、運用コストを節約するとともにそのような要求を満たすことを可能にするために、最適な展開が、複数のテナント３及びオファードリソース６０３から受信された制約情報に基づいて決定される。例えば、図３の略図によれば、最適な展開は、アプリケーションコンポーネント１１のインスタンス１１０、計算機２１、並びに第１２の関係１２’及び第４の関係４’に応じて決定される。第１２の関係１２’は、テナント３１がアプリケーションインスタンス１１０を用いることを示し、第４の関係４’は、アプリケーションインスタンス１１０が計算機２１上で実行されることを示している。
【００５６】
図４には、本発明のコンピューター実施方法による展開を示す流れ図が示されている。
【００５７】
第１のステップ７０１において、展開モデル５（図３参照）が決定される。このモデルは、各テナント３１、３２、．．．、３５（図５参照）がアプリケーション１に対する制約を個々に記述することを可能にする。この制約は、例えば、テナント３１、３２、．．．、３５が、他のどのテナント３２、３３、．．．、３５又は他のどのテナントのグループ４１０、．．．、４１２と、アプリケーションコンポーネント１１、１２、．．．、１６（図５参照）の同じインスタンス１１０、．．．、１４２（図２参照）を共有すること又は同じ計算機２１、２２（図１参照）を共有することを許容するのかの仕様を含む。
【００５８】
第２のステップ７０２において、グループセット４（図５参照）が、例えば、サービスプロバイダーの計算リソース２によって定義される。これらのグループセット４は、例えば、テナント３１、３２、．．．、３５が操業する業界に従って定義される。グループ４１０、．．．、４１２のそのような業界に基づく定義及び定義されたグループ４１０、．．．、４１２へのテナント３１、３２、．．．、３５の割り当ては、テナント３１、３２、．．．、３５をグループ化する１つの可能な方法にすぎない。このグループ化は、例えば、対象としているマーケットに依存する。第２のステップ７０２は、サービスプロバイダー又はオペレーターが、テナント３１、３２、．．．、３５にどれだけの数のグループセット４を提供したいのか及びどのグループセット４を提供したいのかを定義することを可能にする。例えば、グループセット４のうちのセット４１のグループ４１０、４１１、．．．、４１２は、セット４１のグループ４１０、４１１、．．．、４１２のサブセットであるサブグループ４１００、４１０１、．．．、４１０２を有する。グループセット４をこのように構造化する機能によって、サービスプロバイダーは、テナント３１、３２、．．．、３５をグループ４１０、４１１、．．．、４１２又はサブグループ４１００、４１０１、．．．、４１０２にはるかに微細な粒度でカテゴリー化するか又は割り当てることが可能になる。別の例では、テナント３１、３２、．．．、３５は、特定の業界に所属する或る特定のサブ業界、特に、ともに金融業界の一部分である銀行業界又は保険業界の一部分である。しかしながら、テナント３１、３２、．．．、３５が特定のグループ４１０を含めるか又は排除することを指定すると、この特定のグループ４１０の全てのサブグループ４１００、４１０１、．．．、４１０２も、それぞれ包含又は排除される。
【００５９】
第３のステップ７０３において、テナント３１、３２、．．．、３５は、サービスプロバイダーによって、グループセット４の少なくとも１つのグループ４１０にグループ化される。特に、アプリケーション１を用いたい全てのテナント３１、３２、．．．、３５はグループ化される。テナント３１、３２、．．．、３５は、それによって、グループセット４１、４２、．．．、４３ごとの少なくとも１つのグループに割り当てられる。これは、あらゆるテナント３１、３２、．．．、３５が、特定のグループセット４１、４２、．．．、４３を実現するグループセット４の少なくとも１つのグループに所属しなければならないことを意味する。
【００６０】
第４のステップ７０４において、アプリケーション１の展開構成を決定する制約が定義される。この展開構成は、２つの展開レベル１０００、２０００について、複数のテナント３によって指定された制約情報に基づいて決定される。特に、２つの展開レベル１０００、２０００は、インスタンスレベル１０００及び計算機レベル２０００を含む。インスタンスレベル１０００において、複数のテナント３のうちの各テナント３１、３２、．．．、３５は、複数のアプリケーションコンポーネント１０のうちの各アプリケーションコンポーネント１１、１２、．．．、１６について、テナント３１、３２、．．．、３５が、他のどのテナント３１、３２、．．．、３５若しくはグループセット４のうちのセット４１、４２、．．．、４３のグループ４１０、４１１、．．．、４１２と、アプリケーションコンポーネント１１、１２、．．．、１６のインスタンス１１０、．．．、１４２の共有を許容するのか、又はテナント３１、３２、．．．、３５が別のテナント３１、３２、．．．、３５とインスタンス１１０、．．．、１４２を共有したいか否かを指定する。複数のテナント３のうちの全てのテナント３１、３２、．．．、３５がそれらの制約を指定した後、複数のアプリケーションコンポーネント１０のうちの各アプリケーションコンポーネント１１、１２、．．．、１６の複数のインスタンス１１０、．．．、１４２及び／又はアプリケーション１のための展開構成が、複数のテナント３のうちの各テナント３１、３２、．．．、３５から受信された制約情報に応じて決定される。計算機レベル２０００、例えば仮想機械レベル２０００において、複数のテナント３のうちの各テナント３１、３２、．．．、３５は、これらのテナントが用いるインスタンスが、他のどのテナント３１、３２、．．．、３５と複数の計算機２０のうちの計算機２１、２２を共有することができるのかを指定する。これは、例えば、２つのインスタンス１１０、．．．、１４２を用いる全てのテナント３１、３２、．．．、３５が、同じ計算機２１、２２を共有することが許容可能であることを指定している場合に、特に、インスタンス１１０、．．．、１４２がどのアプリケーションコンポーネントに所属するのかにかかわらず、これらのインスタンスが、複数の計算機２０のうちの同じ計算機２１、２２上にのみ展開されることを意味する。したがって、本発明の方法によれば、各テナント３１、３２、．．．、３５は、２つのレベル１０００、２０００のレベルごとに１回、アプリケーションコンポーネント１１、１２、．．．、１６ごとに２回、アプリケーション１の展開に関する制約を表すことが可能になることが特に好ましい。
【００６１】
第５のステップ７０５において、制約情報が、有効な展開構成を決定するのに用いられる。この制約情報は、第４のステップ７０４における複数のアプリケーションコンポーネント１０のうちの各アプリケーションコンポーネント１１、１２、．．．、１６について、複数のテナント３のうちの各テナント３１、３２、．．．、３５から受信される。特に、この有効な展開構成は、計算リソース２を共有するか否かを問わず、２つのレベル１０００、２０００のそれぞれの各アプリケーションコンポーネント１１、１２、．．．、１６についての各テナント３１、３２、．．．、３５の仕様に応じて決定される。
【００６２】
第６のステップ７０６において、アプリケーション１は、第５のステップ７０５において指定された展開構成に応じて計算リソース２上に展開される。計算リソース２上でのアプリケーション１の展開は、例えば、アプリケーション１が計算リソース２上で構成されてインストールされることを意味する。その上、計算リソース２上でのアプリケーション１の展開は、好ましくは、複数のテナント３のうちの全てのテナント３１、３２、．．．、３５から受信された制約情報に応じて、アプリケーションコンポーネント１１、１２、．．．、１６のインスタンス１１０、．．．、１４２、．．．を複数の計算機２０、特に仮想計算機上に分散させることを含む。
【００６３】
以下の例によれば、計算リソース２上でのアプリケーション１の展開方法は、ウェブオントロジー言語（ＯＷＬ）（図示せず）を用いて実施される。いわゆるＯＷＬモデルによれば、クラスＡＣ、Ｔｅｎａｎｔ（テナント）、Ｇｒｏｕｐ（グループ）、及びＤｉｍｅｎｓｉｏｎ（ディメンション）が作成される。特にクラスＤｉｍｅｎｓｉｏｎは、グループセットを指す。加えて、ＤｉｍｅｎｓｉｏｎとＧｒｏｕｐとの間には、ｉｓＲｅａｌｉｚｅｄＢｙと呼ばれる特性が存在し、この特性は、グループを、それらのグループが実施するディメンションに関連付けるのに用いられる。Ｄｅｐｌｏｙｍｅｎｔ（ディプロイメント）と呼ばれるもう１つのクラスが作成される。クラスＤｅｐｌｏｙｍｅｎｔは、ｏｆと呼ばれる第１の特性と、ｆｏｒと呼ばれる第２の特性とのドメインである。ｏｆ及びｆｏｒの２つの特性は、どのテナントが展開を指定し、その展開がどのアプリケーションコンポーネントに適用されるのかを決定する働きをする。さらに、Ｄｅｐｌｏｙｍｅｎｔは、５つのサブクラス、特に、Ｐｒｉｖａｔｅ（プライベート）、Ｐｕｂｌｉｃ（パブリック）、Ｗｈｉｔｅ（ホワイト）、Ｂｌａｃｋ（ブラック）、及びＧｒａｙ（グレイ）を有する。各サブクラスは、特定の展開モデルを表す。サブクラスＧｒａｙは、例えば、Ｇｒａｙのオブジェクトが作成されると、このオブジェクトがタイプＤｅｐｌｏｙｍｅｎｔに属することを表す。全ての要件を取り込むために、２つのデータ特性がモデルに含められる。第１のデータモデルは、ｉｓＣｕｓｔｏｍｅｒとも呼ばれ、Ｄｏｍａｉｎ  Ｔｅｎａｎｔに属する。この第１のデータモデルが偽に設定されている場合、仮想テナントの作成が可能になる。第２のデータモデルは、ｏｎＬｅｖｅｌとも呼ばれ、Ｄｏｍａｉｎ  Ｄｅｐｌｏｙｍｅｎｔに属する。この第２のデータモデルは、展開がインスタンスレベルに適用されるのか又は計算機レベルに適用されるのかを指定することを可能にする。好ましくは、展開構成は、計算リソースのオペレーター又はサービスプロバイダーへのサイクルを有しない複数の有向グラフとして表示される。これは、Ｅｎｔｉｔｙ（エンティティ）と呼ばれるＴｅｎａｎｔ及びＧｒｏｕｐのためのスーパークラスを作成することによって実現される。或るグループが排除されるときはいつでも、このグループのサブセットである全てのグループも同様に排除されることが定義される。同じことは、Ｉｎｃｌｕｓｉｏｎｓ（インクルージョンズ：包含）特性に適用される。双方の特性は、遷移的（transitive）と定義され、したがって、それらは、グループセットの構造を表すツリーの端部へのダウンを包含及び排除する。さらに、２つの特性レンジは、Ｅｎｔｉｔｙとして定義される。第１の特性レンジのＤｏｍａｉｎは、Ｉｎｃｌｕｄｅｄ（包含）とも呼ばれ、Ｇｒｏｕｐ又はＧｒａｙＨｙｂｒｉｄ若しくはＷｈｉｔｅＨｙｂｒｉｄのいずれかとして定義される。第２の特性レンジは、Ｅｘｃｌｕｄｅｓ（排除）とも呼ばれ、Ｇｒｏｕｐ又はＧｒａｙＨｙｂｒｉｄ若しくはＢｌａｃｋＨｙｂｒｉｄのいずれかとして定義される。これらの第１の特性及び第２の特性は、第３の特性レンジに対するスーパー特性であり、この第３の特性レンジは、���ａｓＳｕｂＳｅｔとも呼ばれる。第３の特性レンジを用いると、グループセットの構造を作成することが可能であり、グループへのテナントの割り当てが可能になる。
【００６４】
特に、サービスプロバイダーによって定義された構造に従った全てのグループの排除又は包含が可能になる。
【００６５】
図５には、略図が、本発明のコンピューター実施方法によるアプリケーションコンポーネント１１のインスタンス（図５に図示せず）の展開を示している。グループセット４がサービスプロバイダーによって定義され、複数のテナント３のうちの各テナント３１、３２、．．．、３５が、少なくとも１つのグループ４１０、４１１、．．．、４１２、又は、例えば、グループセット４のうちのセット４１、４２、．．．、４３のグループ４１０のサブグループ４１００、４１０１、．．．、４１０２に割り当てられた後、サービスプロバイダーは、展開モデル５に応じて、複数のアプリケーションコンポーネント１０のうちの各アプリケーションコンポーネント１１、１２、．．．、１６について複数のテナント３のうちの各テナント３１、３２、．．．、３５から制約情報を受信する。特に、５つの展開モデル５１、５２、５３、５３、５５のうちの１つが、テナント３１、３２、．．．、２５によって、複数のアプリケーションコンポーネント１０のうちの各アプリケーションコンポーネント１１、１２、．．．、１６に割り当てられる。制約情報は、例えば、テナント３１、３２、．．．、３５がアプリケーションコンポーネントを共有することを許容するか否かの情報、及び／又は或るテナントが他のどのテナントとアプリケーションコンポーネント１１、１２、．．．、１５を共有することを拒否するのかの情報を含む。そのような制約は、特に、アプリケーションコンポーネント１１、１２、．．．、１５ごとに２回指定され、より具体的には、展開レベル１０００、２０００ごとに１回指定される。展開レベル１０００、２０００は、特に、計算機レベル２０００又はインスタンスレベル１００００のうちの一方である。計算機レベル２０００に関連付けられた制約情報の仕様の場合、テナント３１、３２、．．．、３５は、同じ計算機２１、２２、．．．の共有が許容されるのか又は拒否されるか、及び他のどのテナント３１、３２、．．．、３５との共有が許容されるのか又は拒否されるかを指定する。計算機２１、２２、．．．は、特に、仮想的な計算機又は物理的な計算機のうちの一方である。インスタンスレベル１００００に関連付けられた制約情報の仕様の場合、テナント３１、３２、．．．、３５は、アプリケーションコンポーネント１１、１２、．．．、１６の同じインスタンス１１０、．．．、１４２、．．．の共有が同じ計算機２１、２２、．．．上で許容されるのか又は拒否されるか、及び他のどのテナント３１、３２、．．．、３５との共有が許容されるのか又は拒否されるかを指定する。
【００６６】
テナント３１、３２、．．．、３５は、グループセット４のうちのセット４１、４２、．．．、４３のグループ４１０、４１１、．．．、４１２、又は、例えば、グループ４１０のサブグループ４１００、４１０１、．．．、４１０２に割り当てられる。テナント３１、３２、．．．、３５は、計算機レベル２０００においてパブリック展開モデル５１をアプリケーションコンポーネント１１、１２、．．．、１６に割り当てる。これは、計算機２１、２２、．．．を他の全てのテナント３１、３２、．．．、３５と共有することができることを意味する。パブリック展開モデル５２のこの割り当ては、パブリック展開とも呼ばれ、図５に参照符号５２０によって示されている。インスタンスレベル１０００においては、テナント３１、３２、．．．、３５は、グレイ展開モデル５５をアプリケーションコンポーネント１１に割り当てる。グレイ展開モデル５５のこの割り当ては、グレイ展開とも呼ばれ、図５に参照符号５５０によって示されている。テナント３１、３２、．．．、３５は、グレイ展開モデル５５のための制約情報において、グループ４１０又はグループ４１０の第１のサブグループ４１００に割り当てられるテナント３１、３２、．．．、３５が包含されるのに対して、別のサブグループ４１０１、．．．、４１０２に割り当てられるテナントが排除されることを指定する。
【００６７】
図６は、展開モデルセット５の展開モデル５１、５２、５３、５４、５５の状態を概略的に示している。展開モデル５１、５２、５３、５４、５５に応じて制約情報を決定することは、テナント３１、３２、．．．、３５、アプリケーションコンポーネント１１、１２、．．．、１６、及び展開レベル１０００、２０００の組み合わせごとに１つの制約情報を決定することを含む。好ましくは、状態機械が、展開モデル５１、５２、５３、５４、５５の状態を定義するのに用いられる。ここで、状態は、空（参照符号８０１）、未完了（参照符号８０２）、又は完了（参照符号８０３）のうちの１つである。これらの状態は、展開モデル５１、５２、５３、５４、５５がテナント３１、３２、．．．、３５の展開制約（制約情報）を取り込むのに用いられる時点を表す。初期状態は、空状態８０１と呼ばれ、この空状態８０１では、展開制約の記述は、展開モデル５１、５２、５３、５４、５５に関連付けられていない。
【００６８】
記述を完了することによって（参照符号８１３参照）、展開モデル５１、５２、５３、５４、５５は、テナント３１、３２、．．．、３５から受信された制約情報に応じて完了状態８０３に変換される。代替的に、展開モデル５１、５２、５３、５４、５５は、全ての展開制約を記述するための作業が最小になるように複数のアプリケーションコンポーネント１０の階層関係を用いることによって、ステップ８１２及び８２３を介して完了状態８０３に移行することができる。例えば、テナントは、上記記述をその後の完了プロセス８２３において完了することができるように、未完了の記述のみを提供することもできるし（参照符号８１２参照）、記述を提供しないこともできる（図示せず）。
【００６９】
本発明の好ましい実施形態によれば、アプリケーションコンポーネント１１、１２、．．．、１６に関連付けられた制約情報は、完了プロセスにおいて決定される。この完了プロセスは、アプリケーションコンポーネント１１、１２、．．．、１６に関連付けられた制約情報を、複数のアプリケーションコンポーネント１０のうちの更なるアプリケーションコンポーネント１１、１２、．．．、１６に関連付けられた更なる制約情報から導出することを含む。この更なるアプリケーションコンポーネントは、アプリケーションコンポーネント１１、１２、．．．、１６と階層関係にある。
【００７０】
好ましくは、完了プロセスは、次の完了ステップを含む。すなわち、第１の完了ステップは、展開モデル５１、５２、５３、５４、５５又は展開モデル５１、５２、５３、５４、５５の記述が完了したか否かを判断することを含む。特に、テナント３１、３２、．．．、３５、アプリケーションコンポーネント１１、１２、．．．、１６、及び展開レベル１０００、２０００の組み合わせごとに、関連付けられた制約情報が存在するか否かが判断される。そのような制約情報が存在する場合、同じ展開制約が、テナント３１、３２、．．．、３５、展開レベル１０００、２０００、及び子アプリケーションコンポーネント１１、１２、．．．、１６の同じ組み合わせについて存在するか否かが判断される。これに該当しない場合、完了プロセスは、子アプリケーションコンポーネント１１、１２、．．．、１６の展開モデル５１、５２、５３、５４、５５が未完了であると判断し、第２の完了ステップを続ける。
【００７１】
第２の完了ステップにおいて、複数のアプリケーションコンポーネント１０間の階層関係が利用されて、全ての展開制約が完全に記述される（すなわち、この組み合わせに関連付けられた全ての展開モデル５が完了状態８０３に移行する）。好ましくは、これは、親アプリケーションコンポーネントから子アプリケーションコンポーネントへの制約情報の継承（継承に基づいてアプリケーションコンポーネントに展開制約を備えさせること）によって達成される。好ましくは、関連付けられた展開モデル５１、５２、５３、５４、５５に制約情報を割り当てられていないアプリケーションコンポーネント１１、１２、．．．、１６のみが、継承に基づいて制約情報を取得する。好ましくは、新たな制約情報を継承に基づいて作成することは、子アプリケーションコンポーネント１１、１２、．．．、１６の継承された制約情報が親アプリケーションコンポーネント１１、１２、．．．、１６の制約情報と等しくなるか又はこの制約情報と比較してより制限的となるように、一組のルールを適用することを含む。
【００７２】
図７は、有効な展開構成を概略的に示している。展開構成は、テナント３１、３２、．．．、３５によって与えられた全ての展開制約に準拠している場合に有効である。図７の左側に示すグラフのうちの各グラフは、１つの展開レベルＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３、ＤＬ４及び１つのアプリケーションコンポーネント１１、１２、１３に関連付けられている。これらのグラフは、対応する展開レベルＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３、ＤＬ４及びアプリケーションコンポーネント１１、１２、１３について全てのテナント３１、３２、３３、３４、３５によって決定された全ての制約情報から導出された展開情報を視覚化したものである。例えば、図７の左上コーナーに示す展開情報によれば、初期展開レベルＤＬ０において、第１のアプリケーションコンポーネント１１は、第１のテナント３１と第２のテナント３２と第５のテナント３５との間、第２のテナント３２と第３のテナント３３との間、及び第３のテナント３３と第４のテナント３４との間で共有される。一方、初期展開レベルＤＬ０において、第１のアプリケーションコンポーネント１１は、例えば、第１のテナント３１と第３のテナント３３若しくは第４のテナント３４との間、又は第２のテナント３２と第４のテナント３４との間等においては共有されない。各アプリケーションコンポーネント１１、１２、１３は、全ての展開レベルＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３に満たない展開レベルにおいて展開することができることが図７に更に示されている。
【００７３】
図７の右側は、様々な展開レベルＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３、及びＤＬ４の有効な展開構成を示している。初期展開レベルＤＬ０において、それぞれ、初期展開ユニットＵ０１、Ｕ０２は、第１のアプリケーションコンポーネント１１に関連付けられ、初期展開ユニットＵ０１’、Ｕ０２’、Ｕ０３’は、第２のアプリケーションコンポーネント１２に関連付けられ、初期展開ユニットＵ０１’’は、第３のアプリケーションコンポーネント１３に関連付けられている。例えば、第１のテナント３１及び第３のテナント３３は、初期展開レベルＤＬ０及び第１のアプリケーションコンポーネント１１に関連付けられた展開ユニットＵ０１、Ｕ０２を共有しない。したがって、第１のテナント３１及び第３のテナント３３は、異なる展開ユニットＵ０１、Ｕ０２に割り当てられる。特に、初期展開レベルＤＬ０において、第１のテナント３１は、第１のアプリケーションコンポーネント１１に関連付けられた第１の初期展開ユニットＵ０１に割り当てられ、第３のテナントは、第１のアプリケーションコンポーネント１１に関連付けられた第２の初期展開ユニットＵ０２に割り当てられる。同様の方法で、展開構成が決定されるとき、他の全ての展開制約が考慮される。
【００７４】
さらに、各アプリケーションコンポーネント１１、１２、１３は、それらのアプリケーションコンポーネントが実際に適用される展開レベルにおいてのみ展開される。これは、例えば、第３のアプリケーションコンポーネント１３が展開レベルＤＬ０及びＤＬ４においてのみ展開されることを意味する。したがって、ここでは、それぞれ展開レベルＤＬ０及びＤＬ４に関連付けられた展開ユニットＵ０１’’及びＵ４１のみが第３のアプリケーションコンポーネント１３を展開する。
【００７５】
第１の更なる展開レベルＤＬ１において、第１の更なる展開ユニットＵ１１、Ｕ１２、Ｕ１３、Ｕ１４が展開され、第２のアプリケーションコンポーネント１２及び初期展開レベルＤＬ０に関連付けられた初期展開ユニットＵ０１’及びＵ０２’は、第１の更なる展開レベルＤＬ１において第１の更なる展開ユニットＵ１３を共有する。例えば、初期展開ユニットＵ０１’及びＵ０２’は、同じ仮想機械（展開レベルＤＬ１）上で動作する同じアプリケーションコンポーネント（展開レベルＤＬ０）の２つのインスタンスとすることができる。
【００７６】
同様に、第２の更なる展開レベルＤＬ２は、第２の更なる展開ユニットＵ２１を含み、この第２の更なる展開ユニットＵ２１は、第１の更なる展開ユニットＵ１１及びＵ１２をカプセル化する。第３の更なる展開レベルＤＬ３は、第３の更なる展開ユニットＵ３１を含み、この第３の更なる展開ユニットＵ３１は、第１の更なる展開ユニットＵ１３及びＵ１４をカプセル化する。第４の更なる展開ユニットＵ４１は、第２の更なる展開ユニットＵ２１、初期展開ユニットＵ０１’、及び第３の更なる展開ユニットＵ３１をカプセル化する。
【００７７】
図８は、最適化方法を概略的に示している。ここでは、有効かつ最適な展開構成は、この最適化方法によって決定される。この最適化方法の第１のステップ（参照符号６０１参照）において、複数の初期展開ユニットＵ０１、Ｕ０２、Ｕ０３、Ｕ０１’、Ｕ０２’、Ｕ０３’のうちの少なくとも１つの初期展開ユニットが、複数のアプリケーションコンポーネント１０のうちのアプリケーションコンポーネント１１、１２ごとに生成される。ここでは、初期展開ユニットＵ０１、Ｕ０２、及びＵ０３は、第１のアプリケーションコンポーネント１１に関連付けられている。また、初期展開ユニットＵ０１’、Ｕ０２’、及びＵ０３’は、ここでは、第２のアプリケーションコンポーネント１２に関連付けられている。さらに、複数の初期展開ユニットＵ０１、Ｕ０２、Ｕ０３、Ｕ０１’、Ｕ０２’、Ｕ０３’は、一連の展開レベルＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３の初期展開レベルＤＬ０に関連付けられている。好ましくは、初期展開ユニットＵ０１、Ｕ０２、Ｕ０３、Ｕ０１’、Ｕ０２’、Ｕ０３’は、アプリケーションコンポーネント１１、１２ごとに別々に作成される。
【００７８】
最適化方法の第２のステップ（参照符号６０２参照）において、更なる展開レベルＤＬ１に関連付けられた複数の更なる展開ユニットＵ１１、Ｕ１２、Ｕ１３、Ｕ１４が生成される。好ましくは、最適化方法の第２のステップは、複数の先行展開ユニットＵ０１、Ｕ０２、Ｕ０３、Ｕ０１’、Ｕ０２’、Ｕ０３’を、制約情報に応じて更なる展開レベルＤＬ１において展開するための最小数の更なる展開ユニットＵ１１、Ｕ１２、Ｕ１３、Ｕ１４を決定することを含む。複数の更なる展開ユニットＵ１１、Ｕ１２、Ｕ１３、Ｕ１４は、一連の展開レベルＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３における先行展開レベルＤＬ０に関連付けられた複数の先行展開ユニットＵ０１、Ｕ０２、Ｕ０３、Ｕ０１’、Ｕ０２’、Ｕ０３’に応じて生成される。この場合、先行展開ユニットＵ０１、Ｕ０２、Ｕ０３、Ｕ０１’、Ｕ０２’、Ｕ０３’は、初期展開レベルＤＬ０の初期展開ユニットＵ０１、Ｕ０２、Ｕ０３、Ｕ０１’、Ｕ０２’、Ｕ０３’である。
【００７９】
ここでは、更なる展開レベルは、第１の更なる展開レベルＤＬ１であり、この第１の更なる展開レベルは、一連の展開レベルＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３において初期展開レベルに続く次の展開レベルである。同様に、更なる展開レベルは、最適化方法の後続の第２のステップ（参照符号６０３及び６０４参照）においては、第２の更なる展開レベルＤＬ２又は第３の更なる展開レベルＤＬ３とすることができる。好ましくは、第２のステップは、一連の展開レベルＤＬ１、ＤＬ２、ＤＬ３の更なる展開レベルＤＬ１、ＤＬ２、ＤＬ３ごとに順次実行される。好ましくは、アプリケーション１の有効な展開構成は、一連の展開レベルＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３の全ての展開レベルに関連付けられた展開ユニットＵ０１、Ｕ０２、Ｕ０３、Ｕ０１’、Ｕ０２’、Ｕ０３’、Ｕ１１、Ｕ１２、Ｕ１３、Ｕ１４、Ｕ２１、Ｕ２２、Ｕ２３、Ｕ２４、Ｕ３１の総数を最小にすることによって最適化される。
【図１】
0006382834.tif 000002
【図２】
0006382834.tif 000003
【図３】
0006382834.tif 000004
【図４】
0006382834.tif 000005
【図５】
0006382834.tif 000006
【図６】
0006382834.tif 000007
【図７】
0006382834.tif 000008
【図８】
0006382834.tif 000009