【文献】
片山暁雄,“特集1 真価を発揮!AWS[ディザスタリカバリとクラウド]第1章:Amazon Web Services最新動向[2011春・夏]”,G−CLOUD Magazine 2011 Summer,日本,株式会社技術評論社,2011年 8月 1日,pp.8−9(機能追加編),ISBN978-4-7741-4720-8
【文献】
矢口竜太郎,“マルチクラウド管理ツール:複数クラウドに伴う二つの問題”,日経SYSTEMS,日本,日経BP社,2012年 7月26日,第232号,pp.12−13,ISSN1881-1620
(58)【調査した分野】(Int.Cl.,DB名)
カスタムリソースマネージャーへのメッセージを送信することが、管理セクションとカスタムリソースペイロードとを含むように前記メッセージを構築することをさらに含み、前記管理セクションは、スタック識別子、前記カスタムリソースへの論理関連識別子、および前記リソーススタックのコンテキストをさらに含む、請求項6に記載のコンピュータによって実装される方法。
前記管理されたリソースへの前記メッセージを送信することが、管理セクションとカスタムリソースペイロードとを含むように前記メッセージを構築することをさらに含み、前記カスタムリソースペイロードが、前記カスタムリソースマネージャーに特定の情報を含む、請求項6に記載のコンピュータによって実装される方法。
前記リソーススタックを管理するアカウントの下での前記カスタムリソースの使用量に対して請求記録を生成することをさらに含む、請求項6に記載のコンピュータによって実装される方法。
第1のプロバイダによって、前記コンピューティングリソースおよびリソーススタックを管理することをさらに含み、前記第1のプロバイダが、前記カスタムリソースを管理する第三者のプロバイダとは別である、請求項6に記載のコンピュータによって実装される方法。
前記コンピューティングリソースをプロビジョニングするために、前記プロビジョニングシステムによって使用されるマシンイメージをさらに備える、請求項11に記載のコンピュータシステム。
前記ワークフロー処理システムが、タイマーをさらに備え、前記ワークフロー処理システムが、前記タイマーがタイムアウト閾値を超えると、前記リソーススタックが作成に失敗するように構成される、請求項11に記載のコンピュータシステム。
【発明を実施するための形態】
【0005】
以下の説明において、多様な実施形態を説明する。説明を目的として、実施形態の完全な理解を提供するために、特定の構成および詳細を記載する。しかしながら、当業者には、特定の詳細を用いることなく実施形態を実践できることも明らかであろう。さらに、周知の特徴は、説明される実施形態を曖昧にしないために、省略または簡素化される場合がある。
【0006】
本明細書に説明かつ提案される技法は、第2のプロバイダとの通知システムを使用して、第2のプロバイダからのカスタムリソースをリソーススタックに統合するリソーススタックテンプレートから、リソーススタックプロバイダによって管理されるリソーススタックを作成することを含む。例えば、リソーススタックプロバイダは、リソーススタックを形成する相互依存的リソースの集合体を作成するためのツールを提供してもよい。リソーススタックプロバイダは、リソーススタックに含めることができる、リソーススタックプロバイダが管理するリソースのカタログを有してもよい。リソーススタックプロバイダによって管理されないリソースを含む、他のリソースは、カスタムリソースがカスタムリソースプロバイダによって管理される場合であっても、カスタムリソースとしてリソーススタック内で使用するためにカタログに依然として含まれてもよい。これによって、リソーススタックプロバイダの内部要件に従わないリソースが、リソーススタックに含まれることが可能になる。カスタムリソースプロバイダは、リソーススタックの一部としてカスタムリソースを作成、読み出し、更新、および破壊するためのリクエストを通信する際に使用するために、リソーススタックプロバイダに対して、テンプレート、統合、構成、および/または通信情報を提供してもよい。テンプレートの適切な構築は、リソーススタックを組み立てるテンプレートを構築するユーザーに提供される文書に記述されてもよい。
【0007】
一実施形態において、顧客は、リソーススタックを定義するテンプレートを作成、選択、またはさもなければ指定することができる。リソーススタックは、リソーススタックプロバイダから利用可能なリソースと、第2のプロバイダによって提供される1つ以上のカスタムリソースとを含むことができる。テンプレートはまた、カスタムリソースを含む、リソーススタック内のリソースをまとめて連結すること、およびリソースを構成することに関する情報も提供することができる。リソーススタックが作成されるとき、リソーススタックテンプレートが順守されてもよい。リソース間の依存関係が決定されてもよく、リソースのインスタンス化の順番が決定される。リソーススタックプロバイダから利用可能なリソースがプロビジョニングされてもよい。カスタムリソースは、カスタムリソースのプロバイダに、リソーススタックとのカスタムリソースのリクエストされた統合、およびリクエストされた構成詳細を通知することによって初期化することができる。カスタムリソースプロバイダは、カスタムリソースの初期化に成功すると、統合成功の指示と共に応答することができる。リソーススタック内のリソースおよびカスタムリソースのプロビジョニングおよび統合に成功した後、リソーススタックは使用を有効にすることができる。カスタムリソースを統合するこのリソーススタックの利点は、他のシステムによって管理されるリソースをリソーススタックに統合できることである。これによって、リソーススタックが、プロバイダを通じて利用可能ではない可能性がある、またはリソーススタックのプロバイダからのソリューションより好ましい可能性がある、他のプロバイダからのIaaS、PaaS、およびSaaSソリューションを統合することを可能にすることができる。
【0008】
カスタムリソースの初期化は、リソーススタックプロバイダからの通知への応答において、カスタムリソースのプロバイダによって実行されてもよい。通知は、カスタムリソースのプロバイダが、カスタムリソースをリソーススタックに統合することを可能にする情報を含む、またはさもなければ参照することができる。一実施形態において、リソーススタックプロバイダは、非依存部分とペイロードとを含むメッセージを構築する。非依存部分は、カスタムリソースに影響されず、リソーススタックおよび/またはテンプレートに関する情報を含むことができる。ペイロードは、カスタムリソースの構成に特定の情報を含むことができる。カスタムリソースのプロバイダは、次いで、通知と関連するリソーススタックと併用するためのカスタムリソースを初期化するために、通知からの情報を使用することができる。カスタムリソースプロバイダは、次いで、リソーススタックとの統合に成功した指示をリソーススタックプロバイダに提供することができる。一実施形態において、この指示は、成功/失敗識別子、カスタムリソースと相互作用する際に使用するためのカスタムリソース識別子、およびデフォルト設定等のカスタムリソースに特定の付加情報を含むことができる。いくつかの実施形態において、指示は、戻りメッセージを介して返される。他の実施形態において、指示は、ストレージ場所に応答を入れることによって返される。一実施形態において、メッセージサービスが使用され、プロトコルがメッセージ受信側によって選択されてもよい。
【0009】
例えば、ウェブアプリケーションテンプレートは、ウェブサーバー、データベース、および外部電子メールサービスを含むことができる。テンプレートは、ウェブサーバー、データベース、および外部メインサービス間の1つ以上の依存関係を指定することができる。例えば、1つの指定された依存関係は、ウェブサーバーが稼動する前に、データベースおよび外部電子メールサービスがアクティブでなければならないことを要求することができる。スタック管理システムは、リソーススタックを作成するリクエストを受信することができる。テンプレートを使用して、スタック管理システムは、テンプレートによって指定された何らかの依存関係を順守しながら、リソーススタックのリソースをプロビジョニングするワークフローが作成されるようにすることができる。スタック管理システムのワークフロー処理システムは、ワークフローを実行し、リソーススタックの他のリソースの前に、データベースがプロビジョニングされるようにすることができる。ワークフロー処理システムは次いで、電子メールサービスとリソーススタックとの統合がリクエストされたことを、外部電子メールサービスの管理システムに通知することができる。外部電子メールサービスの管理システムは、外部電子メールサービスをリソーススタックと統合する必要性が通知されたことに応答して、外部電子メールサービスを初期化してリソーススタックと統合することができる。外部電子メールサービスの初期化に成功すると、外部電子メールサービスの管理システムは次いで、電子メールサービスとリソーススタックの統合成功の指示を返すことができる。この戻りは、外部電子メールサービスがネットワークスタック内で適切に動作するために必要な認証情報等、ウェブサーバーが外部電子メールサービスを使用するために有用な詳細情報を含むことができる。
【0010】
データベースおよび外部電子メールサービスがプロビジョニング、初期化、および/または構成された後、ウェブサーバーがプロビジョニングされてもよい。ワークフロー処理システムは、仮想コンピュータシステムとして実装されてもよいウェブサーバーが、ウェブサーバーがリソーススタック内のリソースを使用することを可能にするマシンイメージおよび構成を使用して、プロビジョニングされるようにすることができる。マシンイメージは、特定のオペレーティングシステムを備える仮想コンピュータシステムを初期化するために使用される一連のデータであってもよい。いくつかの実施形態において、マシンイメージは、ハードウェアホストが、仮想コンピュータシステムとしてアクティブにし、動作するように、マシンイメージを利用することを可能にするために、永続的データストレージサービスからアクセスされ、ネットワーク上からコンピューティングリソースサービス(例えば、プログラム実行サービス)へ動作可能に接続されるブロックデータ記憶装置サービスに提供されてもよい。ウェブサーバーがアクティブになると、ワークフロー処理システムは、この例では、リソーススタックの使用を有効にすることができる。リソーススタックの使用を有効にすることは、リソーススタックがプロビジョニングされるエンティティに、リソーススタックのプログラム上の制御を提供するように、1つ以上の内部システムを再構成することを含むことができる。
【0011】
いくつかの実施形態において、通知のために伝送されるメッセージの非依存部分は、スタック識別子、論理リソース識別子、一意識別子、名前空間、およびコンテキスト情報を含む。スタック識別子は、リソーススタックを参照するために使用することが可能である値を提供することができる。論理リソース識別子は、テンプレート内のカスタムリソースを参照する識別子であってもよい。一意識別子は、重複メッセージを廃棄できるように、メッセージを一意に識別することができる。名前空間は、同様な識別子の明確化を可能にするために、識別子の境界を定義することができる。コンテキスト情報は、識別子等、リソーススタック構築に関する情報を提供することができる。一実施形態において、コンテキストは、カスタムリソースがスタック内のリソースと通信時にスタック内の特定のリソースを参照することができるように、スタック内に存在するリソースの一意識別子および/または構成を含む。
【0012】
前述のように、リソーススタックのリソースをプロビジョニングする間、リソーステンプレートの依存関係が順守されてもよい。依存関係は、明示的または暗示的であってもよい。明示的依存関係は、テンプレートによって指定されてもよい。例えば、明示的依存関係は、テンプレートによって、第1のリソースは、第2のリソースをアクティブにさせた後に第1のリソースを構築することができると定義されてもよい。テンプレート内の依存関係の定義はそれ自体が明示的であってもよく、および/または、例えば、テンプレートのスキーマ内のリソースの相対的位置による等、暗示的であってもよい。別の例において、明示的な依存関係は、リソースの構築の線形順序または有向非巡回グラフ(DAG)を通じて示されてもよい。暗示的な依存関係は、テンプレート内に記述されなくてもよく、他の情報源から決定されてもよい。いくつかの実施形態において、暗示的な依存関係を決定する外部ルールセットが与えられる。他の実施形態において、暗示的な依存関係を決定するために、リソース間の接続および/または構成情報が使用されてもよい。
【0013】
テンプレートで使用するためのカスタムリソース定義は、カスタムリソースのプロバイダによって作成され、顧客によって使用されて、リソーススタックを定義するテンプレート内のリソーススタック定義内のカスタムリソースを統合してもよい。一実施形態において、カスタムリソースのプロバイダは、テンプレートを入力するために使用されてもよい、カスタムリソースに関する有効な情報を定義する。プロバイダはまた、テンプレートおよびカスタムリソースと併用されてもよい、通知および/または通知内のペイロードを構築する生成機能もプロバイダに提供することができる。生成機能は、少なくとも部分的にテンプレートおよび/またはリソーススタック実装詳細に基づいて、テンプレート内のカスタムリソース定義を少なくとも1つのペイロードに変換するように構成される、コンピュータシステム上に実装されたプログラミングモジュールであってもよい。プロバイダはまた、通知に応答してプロバイダからの応答を取得し、カスタムリソースを統合するようにリソーススタック内のリソースに構成および/または変更を提供する構成機能も提供することができる。構成機能は、カスタムリソースの他のリソースとの統合を終了するために、カスタムリソースプロバイダからの応答に対する応答で実行される、コンピュータシステム上に実装されたプログラミングモジュールであってもよい。
【0014】
いくつかの実施形態において、リソーススタックプロバイダおよびカスタムリソースプロバイダは、1つのサービスプロバイダのサブエンティティである。例えば、サービスプロバイダは、データベース、仮想マシン、および記憶装置のプロビジョニングを管理するリソーススタックプロバイダを含む。サービスプロバイダはまた、検索機能、電子メール、ログ公開、および監視サービス等、リソーススタックプロバイダによって管理されないが、カスタムリソースを通じて統合することが可能であるサービスも含むことができる。一実施形態において、リソーススタックプロバイダは、リソースの選択を管理し、管理機能を既に有する管理されたリソースのためのカスタムリソース構築を提供する。例えば、リソーススタックプロバイダは、電子メールおよび検索サービス等のサービスのためのカスタムリソース構築を可能にしながら、仮想マシンおよびストレージ等のインフラストラクチャを提供することができる。サービスは実際には、スタック管理システムとは異なるプロバイダによって管理される別のリソーススタックから構築されてもよい。
【0015】
本明細書に記載および示唆される技術はまた、カスタムリソースを含む、リソースをまとめて作成、読み出し、更新、および破壊するためにリソーススタックを使用することができる方式を提供する。一実施形態において、ユーザーは、他を保存しながら、1つのリソーススタックの構成要素をアップグレードすることを選択することができる。例えば、ユーザーは、特定のタイプの仮想マシンインスタンスを、より高い演算能力を備える仮想マシンインスタンス等、1つ以上の点でより能力が高い仮想マシンインスタンスにアップグレードするように選択することができる。ユーザーは、より高い能力のインスタンスを含むように本来のスタックテンプレートを変更、またはユーザーインターフェースを使用してより高い能力のインスタンスを選択し、変更をリクエストすることができる。これに応答して、より高い能力のインスタンスがプロビジョニングされてもよい。仮想マシンインスタンスに依存するリソーススタックの設定は、ホスト名および/またはインターネットプロトコル(IP)アドレス等、より高い能力のインスタンスの新しい設定を使用するように変更されてもよい。別の実施形態において、カスタムリソースは、更新されたカスタムリソースに一致するように変更され、設定が更新されてもよい。例えば、テンプレートは、カスタムリソースから追加監視サービスを選択するように変更されてもよく、または、ユーザーは、ウェブブラウザ等、ユーザーインターフェースから追加監視サービスを選択することができる。通知は、リクエストされた変更に関する情報を含めて、監視サービスのプロバイダへ送信されてもよい。リソーススタックとの統合成功の指示が返されてもよい。指示と共に含まれる情報は、変更を統合するために、リソーススタック内の他のリソースをさらに構成および/または変更するために使用されてもよい。変更の統合に成功した後、変更を含むリソーススタックが使用されてもよい。
【0016】
一実施形態において、カスタムリソースの使用によって、顧客のアカウントのコストが増加する場合がある。コストは、カスタムリソースに関係するアカウント、またはスタック管理システムに関係するアカウントに適用されてもよい。一実施形態において、カスタムリソースのプロバイダが、カスタムリソースの使用状況に関してリソーススタックのプロバイダに伝達して、統一請求が課されてもよい。顧客は、リソーススタックプロバイダから受理した統一請求に対して代価を支払うことができ、リソーススタックプロバイダが、その後、カスタムリソースのプロバイダに支払うことができる。いくつかの実施形態において、カスタムリソースプロバイダは、リソーススタックの使用に対する使用料金のうちのある割合を受領することができる。
【0017】
プロビジョニングという用語は、コンピューティングリソースの使用に対する割り当てを含むように広義に解釈されることを意味する。いくつかの実施形態において、これはコンピューティングリソースの使用を準備することを含む。一実施形態において、リソースのプロビジョニングは、サーバーの割り当て、オペレーティングシステムのインストール、リソース上に配置されるソフトウェアのインストールおよび構成、ならびに構築されたリソースの使用を有効にすることを含む。例えば、プロビジョニングシステムは、ウェブサーバーとして使用するサーバーを選択することができる。プロビジョニングシステムは次いで、ウェブサーバーとしてサーバーを使用するために準備するワークフローを作成することができる。ワークフローの一部として、マシンイメージがサーバーにロードされてもよい。マシンイメージは、オペレーティングシステム、ウェブホスティングソフトウェア、および/または設定を含むことができる。マシンイメージをロードした後、サーバーは、オペレーティングシステムを起動させられ、任意のさらなるソフトウェアおよび/または設定を受信してもよい。このような設定は、ドメイン名および/またはウェブサイト、ならびにセキュリティ構成を含むことができる。プロビジョニングが完了した後、サーバーは、ウェブサーバーとして使用され、リソーススタックに含まれるために管理システムに返されてもよい。
【0018】
ここで
図1を参照すると、少なくとも1つの実施形態に従う、リソーススタック102を含むシステム100の図示例が示される。ユーザーは、ウェブアプリケーションをサポートするシステム等、システムの作成を自動化するためにリソーススタック102を定義するテンプレート104を作成することができる。テンプレート104は、リソースを定義し、リソーススタック102のリソース104、106、および108の接続、プロパティ、依存関係、識別、および/または設定を定義することができる。テンプレート104はまた、テンプレート104内に定義されたリソース間のリンクを定義することもできる。リンクすることは、ネットワーク上から相互通信し、リクエストを伝送し、応答を受信し、さもなければ相互動作するように、リソーススタックのリソースを構成することを含むことができる。テンプレートは、リソーススタック内部のリソースに利用可能な接続性および/または通信経路を定義する、リソーススタックで使用するためのネットワークトポロジ等、リソーススタックの接続を定義することができる。本明細書で使用される場合、接続は、2つ以上のリソース間の通信経路として考えられてもよい。テンプレート104は、テンプレート104内で定義されるようにリソーススタック102を作成するために、スタック管理システム110へ提出されてもよい。スタック管理システム110は、テンプレート104をパースし、リソーススタック102内のリソース104、106、および108の構築の順序を決定することができる。スタック管理システム110は、リソーススタック102のプロビジョニングを管理するために、プロビジョニングシステム111と通信することができる。プロビジョニングシステム111は、スタック管理システム110のプロバイダによって管理されるリソース104および108をプロビジョニングするようにリソースプロビジョニングシステム112にリクエストすることができる。カスタムリソース106は、カスタムリソースメッセージング114を通じる通知を通じて、カスタムリソースマネージャー116から、カスタムリソース106の初期化をリクエストすることによって初期化されてもよい。通知は、リソース104および108とのあらゆる接続を含む、カスタムリソース106をリソーススタック102に統合するために必要な情報を含むことができる。カスタムリソースマネージャー116は次いで、カスタムリソースメッセージング114を通じて、統合成功の指示を返すことができる。指示は、スタック管理システムによって、リソーススタック102内のリソース104および/または108に適用される場合がある、カスタムリソースを識別する一意識別子を含む、設定を含むことができる。カスタムリソースの例は、電子メールサービス、ウェブサイト監視ソリューション、ログポーリングサービス、および他のIaaS、PaaS、またはSaaSサービスを含むことができる。
【0019】
図示例として、リソーススタック102は、アプリケーションサーバー、データベース、および検索エンジンを含むことができる。検索エンジンは、スタック管理システム110のプロバイダの責任範囲外で管理されるカスタムリソース106であってもよい。管理責任範囲のこのような分離の例は、スタック管理システムのプロバイダの外でホストされるハードウェア上に実装されたリソースを含むことができる。分離管理の別の例は、スタック管理システムの同じプロバイダによって制御されるが、スタック管理システムのプロバイダ以外のエンティティによって管理されるリソース上に実装されたサービスを含む。分離管理のまた別の例は、スタック管理システムの同じプロバイダによって実装されるが、カスタムリソースのユーザーからサービスの複雑性を隠すために別のエンティティとして管理されるサービスを含む。リソーススタック102は、アプリケーションの開発者によって作成されるテンプレート104によって定義されてもよい。アプリケーションサーバーおよびデータベースのテンプレートの定義は、スタック管理システム110によって認識される条件および変数を使用することができる。検索エンジンのテンプレート内の定義は、スタック管理システム110によって認識されるリソーススタックとの統合を定義する条件、およびカスタムリソースマネージャー116によって認識される条件および/またはオプションも含むことができる。顧客は、テンプレート104を使用してリソーススタック102の構築をリクエストすることができる。スタック管理システム110は、リソーススタック102内のアプリケーションサーバー、データベース、および検索エンジンの依存関係を決定することができる。
【0020】
決定された依存関係を順守するために、スタック管理システム110は、リソースプロビジョニングシステム112にリソースを構築するようにリクエストする際に、プロビジョニングシステム111が依存関係に従った順序でリソースをプロビジョニングするようにさせることができる。示される実施形態において、リソースプロビジョニングシステム112は最初に、アプリケーションサーバーおよびデータベースを構築する。プロビジョニングシステム111は次いで、リソーススタック102および検索エンジン特定の構成に関する情報を含む、カスタムリソースマネージャー116への通知を作成することができる。構成は、構成生成機能等、プログラムによって提供されてもよく、カスタムリソースのプロバイダによってプロビジョニングシステム111に提供される。構成生成機能は、テンプレートに含まれるカスタムリソース定義と関連付けられ、定義に遭遇すると実行されてもよい。通知は、カスタムリソースメッセージングシステム114、プロトコル、または他の伝送によってカスタムリソースマネージャー116へ送信されてもよい。カスタムリソースマネージャーは、検索エンジンが、通知に提供された情報を使用して、データベースおよびアプリケーションサーバーと統合するようにさせることができる。カスタムリソースマネージャー116は次いで、使用する検索エンジンに関する情報および/またはリソーススタック102内のリソースの構成に導入される情報も含むことができる、成功の指示を返すことができる。リソーススタック102内のリソースのインスタンス化および構成後、リソーススタック102は、使用が有効になってもよい。
【0021】
カスタムリソースメッセージング114は、いくつかの異なる方式で実装されてもよい。いくつかの実施形態において、通知サービスが使用される。カスタムリソースマネージャー116は、カスタムリソースの初期化リクエストに関係する通知サービスのサブジェクトをサブスクライブすることができる。通知サービスは、受信側が、他のサービスが公開をリクエストする可能性があるサブジェクト(いくつかの適切なメッセージングシステムでは、ときにはトピックと称される)を作成することを可能にすることができる。いくつかの実施形態において、受信側は、公開されたメッセージの受信のために使用されるプロトコルを定義することができる。例えば、電子メールサービスのカスタムリソースマネージャー116は、電子メールサービスに対するカスタムリソース管理リクエストのサブジェクトを作成することができる。メッセージの送達は、ハイパーテキスト転送プロトコル(HTTP)、ファイル転送プロトコル(FTP)、または他のプロトコル等のプロトコル、あるいはあるシステムから別のシステムへメッセージを伝送するために適切なプロトコルの組み合わせを含め、カスタムリソースマネージャー116によりカスタマイズされることができる。通知サービスは次いで、プロビジョニングシステム111から受信すると、カスタムリソースマネージャー116へメッセージをプッシュすることができる。一実施形態において、通知は、指定された場所の記憶装置上にデポジットされてもよい。プロビジョニングシステム111またはカスタムリソースマネージャー116等の受信側は、アクションが必要かどうかを決定するために、その場所を定期的にポーリングすることができる。別の実施形態において、メッセージを渡すために、アプリケーションプログラミングインターフェース(API)の呼出しが使用される。APIインターフェースは、プロビジョニングシステム111による複数のAPIをサポートする複雑性を簡素化するために標準化されてもよい。いくつかの実施形態において、前述の方法の組み合わせが使用されてもよい。例えば、通知の伝送のために通知サービスが使用されてもよく、通知に対する応答はストレージに応答を入れることによって行われてもよい。プロビジョニングシステム111とカスタムリソースマネージャー116との間の通信はセキュアであってもよい。例えば、メッセージの検証が発生してもよい。カスタムリソースマネージャーによって検証可能な電子(例えば、デジタル)署名でプロビジョニングシステム111によって電子的に署名された通知だけが、カスタムリソースマネージャー116によって実行される。カスタムリソースマネージャーによって署名された応答だけがスタック管理システムによって許容されてもよい。
【0022】
リソーススタック102内のリソース104、106、および108を変更することは、リソーススタック102の統合を維持しながら、発生してもよい。例えば、データベースインスタンスは、より高い容量のデータベースインスタンスへアップグレードされてもよい。新しいデータベースインスタンスがプロビジョニングされてもよく、より小型のデータベースインスタンスからのデータが新しいデータベースインスタンスへ提供されてもよい。リソーススタック102内のより小型のデータベースへの接続は、新しいデータベースインスタンスを使用するように変更されてもよい。プロビジョニングシステム111によって管理されるリソースは、より直接的に変更されてもよい。カスタムリソース106は、データベースの変更情報を含むカスタムリソースマネージャー116への通知を通じて情報を知らされてもよい。リソーススタック102との統合成功の指示は、変更がカスタムリソース106に成功して適用されたことを確認することができる。
【0023】
いくつかの実施形態において、リソーススタック102は全体的に変更されてもよい。一実施形態において、テンプレート104は、リソーススタック102を拡張するためのオプションを定義する。これらのオプションを使用して、ユーザーは、拡張されてもよいリソースがどれか、または全てのリソースであることを示すことができる。プロビジョニングシステム111は、リソースプロビジョニングシステム112が、プロビジョニングシステム111によって管理されるリソースを変更するようにさせ、カスタムリソースマネージャー116に、リソーススタック102に対する変更、およびカスタムリソース106のリクエストされた拡大を通知することができる。他の実施形態において、リソーススタックは、コピーを形成、バックアップ、または削除されるためでさえも操作されてもよい。コピー操作中、リソースプロビジョニングシステム112は、コンピューティングリソースの管理のための所定のプロセスに従ってコンピューティングリソースをコピーし、そのコピーをリソーススタックに関するメタデータの一部として参照する。プロビジョニングシステム111は次いで、カスタムリソースメッセージング114を通じて、カスタムリソースマネージャー116へ通知を送信して、カスタムリソース106のコピーを形成することができる。カスタムリソースマネージャー116は、カスタムリソース114のコピーへの参照を含めて、成功の指示を返すことができる。カスタムリソース114のコピーへの参照は、次いで、リソーススタックメタデータとともに記憶されてもよい。コピーを再構築するリクエストにおいて、コピーの再構築は、リソーススタックメタデータを使用して、カスタムリソースを含む、リソースを参照することができる。別の実施形態において、リソーススタックは全てが削除されてもよい。スタック識別子に一致するリソーススタックの削除をリクエストするリクエストが受信されてもよい。プロビジョニングシステム111は、リソースプロビジョニングシステム112が、プロビジョニングシステム111によって管理されるリソース104および108のプロビジョニングを解除するようにさせることができる。カスタムリソース114の廃棄または引退をリクエストするカスタムリソースマネージャー116への通知が送信されてもよい。廃棄または引退成功の指示は、プロビジョニングシステム111を介して、スタック管理システム110へ返されてもよい。成功または失敗は、その後、スタックの削除をリクエストした当事者に返されてもよい。
【0024】
図示の目的のために、本開示全体でテンプレートが使用される。しかしながら、本明細書に記載されるテンプレートを必ずしも使用しない、リソーススタックを作成する他の方法が使用されてもよいことを認識されたい。一例として、コンピューティングリソースプロバイダの顧客は、スタックを作成する命令を提供するAPI呼出しを通じて作成されるようにさせてもよい。別の実施形態において、リソーススタックの表現を含むストレージ場所を識別するメッセージは、リソーススタックを作成するリクエストを含む。
【0025】
図1の実装の例において、
図2は、プロバイダ206によって管理される、ロードバランサ214、アプリケーションサーバー216、およびデータベース218のリソースを含むリソーススタック204を表す図を示す。リソーススタック204は、この図示例において、プロバイダ206の外部の業者208によって管理される電子メールサービス220も含む。テンプレート202は、リソーススタック204、およびリソース214、216、218、および220の間の接続を定義することができる。示される例において、アプリケーションサーバー216は、ロードバランサ214、データベース218、および電子メールサービス220に接続される。テンプレート202は、アプリケーションサーバー216が初期化される前に、電子メールサービス220およびデータベース218が初期化される等、依存関係も定義することができる。テンプレート202はまた、構成生成機能が実行されるようにして、少なくとも構成情報を生成してカスタムリソースマネージャー224へ送信させるカスタムリソース条件も含むことができる。
【0026】
リソーススタック204を作成するリクエストの結果、スタック管理システム210は、依存関係を決定することができ、決定された依存関係に従って、プロビジョニングシステム211にリソース214、216、218、および220をインスタンス化するようにリクエストすることができる。これらの依存関係は、インスタンス化の順序および/または各ノードがリソースで、各有向辺が依存関係である有向非巡回グラフによって表現されてもよい。示される実施形態において、プロビジョニングシステム211は、リソースプロビジョニングシステム212が、依存関係のために、アプリケーションサーバー216よりも前にロードバランサ214およびデータベース218をプロビジョニングするようにさせることができる。スタック管理システム210はまた、プロビジョニングシステム211にアプリケーションサーバー216をプロビジョニングするようにリクエストする前に、テンプレート202の情報およびリソーススタック204の構成に基づいて、カスタムリソースマネージャー224のための構成を提供する構成生成機能も実行することができる。プロビジョニングシステム211は次いで、電子メールサービス220のカスタムリソースマネージャー224へ、生成された構成情報を含む通知が送信されるようにすることができる。カスタムリソースマネージャーは次いで、電子メールサービス220をリソーススタック204と統合することができ、より具体的には、アクセス認証情報を提供すること等によって、アプリケーションサーバー216への接続のために電子メールサービス220を準備する。カスタムリソースマネージャー224は、アプリケーションサーバー216を構成するために使用されてもよい、アクセス認証情報等の構成および他の情報を含む、メッセージ等の成功の指示を返すことができる。依存関係が満たされた後、プロビジョニングシステム211は次いで、リソースプロビジョニングシステム212が、アプリケーションサーバー216をプロビジョニングするようにさせることができる。プロビジョニングシステム211は、リソーススタック内の動作のためにリソースプロビジョニングシステム212にアプリケーションサーバーを準備させるリクエストにおいて、ロードバランサ214、データベース218、および電子メールサービス220からの構成をさらに含むことができる。リソーススタックの作成を終了した後、リソーススタックはサービスが有効になってもよい。一実施形態において、何らかのリソースがインスタンス化に失敗またはスタック作成がタイムアウト期間を超えた場合、スタックは失敗と見なすことができ、失敗の理由が返される。いくつかの実施形態において、全てのインスタンス化が成功したリソースは、さらに処理されて破壊される。
【0027】
スタック管理システム210および/またはプロビジョニングシステム211は、リソース214、216、218、および220の各々に関する情報を含むため、リソーススタック204にリクエストされた変更は、リソース214、216、218、および220へ中継されてもよい。例えば、追加のアプリケーションサーバー216に関する情報は、ロードバランスのオプションとして使用するために、プロビジョニングシステム211によって、ロードバランサ214へ中継されてもよい。アプリケーションサーバー216への追加はまた、電子メールサービス220が承認されている追加からの接続に従って動作するように、通知222を通じて電子メールサービス220にも報告されてもよい。変更時に中継する情報は、テンプレートに定義されても、プロバイダに固有であっても、カスタムリソースを運用する業者によって定義されても、またはさもなければ、スタック管理システム210および/またはプロビジョニングシステム211へ提供されてもよい。
【0028】
ここで
図3を参照すると、少なくとも一実施形態に従うメッセージ300の図示例が示される。メッセージは、スタック管理システム210が、テンプレート内のカスタムリソースの定義に遭遇し、プロビジョニングシステム211がカスタムリソースを構築することをリクエストした結果、
図2のプロビジョニングシステム211から、カスタムリソースマネージャー224へ伝送されてもよい。
図2のプロビジョニングシステム211は、
図3に示されるこのメッセージ300等の通知222をカスタムリソースマネージャー224へ送信することができる。メッセージ300は、リソース非依存部分304と、カスタムリソースに特定の情報に関するペイロード314とを含むことができる。リソース非依存部分304は、リソーススタックに関する情報と、リソーススタック内のカスタムリソースの特性とを含むことができる。示される実施形態において、プロビジョニングシステム301は、コンテキスト305、スタック識別子306、論理関連識別子308、名前空間310、およびリソース識別子312を含むメッセージのリソース非依存部分304を組み立てる。一意識別子等のコンテキスト305は、重複および/または以前のメッセージが廃棄されてもよいように、メッセージを一意に識別することができる。コンテキスト305はまた、リソーススタック構築に関する情報も提供する。スタック識別子306は、リソーススタックを参照するために使用することが可能な値を提供することができる。論理関連識別子308は、このメッセージ300の作成をトリガーした、テンプレート内で使用されるカスタムリソースを参照する識別子であってもよい。名前空間310は、同様な識別子の明確化を可能にするために、識別子の境界を定義することができる。リソース識別子312は、アドレスが指定されているカスタムリソースへのプロビジョニングシステム301の参照を提供することができる。
【0029】
メッセージ300は、ペイロード314も含むことができる。スタック管理システムは、スタック管理システムがペイロード314内の情報を操作することなく、メッセージ300に添付されているべき情報ブロブ(blob)(すなわち、任意の情報)としてペイロード314を取り扱うことができる。示される実施形態において、ペイロードは、テンプレート303によって、スタック管理システム302を通じてメッセージ300に含まれるように処理されると定義されてもよい。スタック管理システム302を通じてテンプレート303を処理すると、カスタムリソースマネージャーにテンプレート303の指示が提供される。別の実施形態において、ペイロードは、テンプレート303をパースし、得られたペイロードをペイロード314に含めるためにスタック管理システム302に与えるパースシステムと登録されている構成生成機能によって構築されてもよい。パースシステムは、テンプレートを、リソーススタック内のリソースを構築、構成、およびさもなければ動作するために使用されてもよい、定義等のトークンにパースすることができる。カスタムリソース条件をパースした後、パースシステムは、テンプレート303からの構成生成機能情報および/またはリソーススタック情報を渡して、構成を完了することができる。構成生成機能は次いで、メッセージ300に添付されるペイロード314を生成する。このペイロード314は、メッセージ300のリソース非依存部分304に含まれない場合があるカスタムリソースに特定の構成318を含むことができる。例えば、
図2の電子メールサービスは、ドメイン、ネームサーバー、および個別の電子メールアドレスを定義する構成318がペイロードに提供されてもよい。
【0030】
ここで
図4を参照すると、少なくとも1つの実施形態に従う使用することができるプロセス400の図示例が示される。プロセスは、スタック管理システム110、カスタムリソースマネージャー116、プロビジョニングシステム111、リソーススタック102、リソース104および108、ならびにカスタムリソース106を含む、
図1に関連して上述したシステムによって集合的に等、任意の好適なシステムによって達成されてもよい。スタック管理システムは、リソーススタックを作成するリクエストを受信402することができる。例えば、開発者は、新しいバージョンのウェブアプリケーションをテストする目的のために、リソーススタックを定義するテンプレートへのアクセスをテスターに与えることができる。テスターは、新しいバージョンのテストが達成されてもよいように、リソーススタックがプログラム実行サービス内のテスト環境に作成されることをリクエストすることができる。プログラム実行サービスは、テンプレートリクエストが承認されるかを決定することができ、承認された場合、リクエストをスタック管理システムへ提供することができる。
【0031】
図示されるように、スタック管理システムは、並行して、その制御下のリソースをプロビジョニング403し、スタック管理システムの制御下にないカスタムリソースを初期化するように、カスタムリソースマネージャーへメッセージを送信404することができる。しかしながら、リソースをプロビジョニング403し、メッセージを送信404することは、順次に実行されてもよく、必ずしも並列である必要がないことに注意されたい。スタック管理システムは、メッセージを送信した結果として、応答406を受信することができる。応答は、カスタムリソースの初期化成功を示し、カスタムリソースマネージャーによって認識される識別子および/または認証情報等、カスタムリソースに関する情報を提供することができる。いくつかの実施形態において、カスタムリソースは、最終的には一定であってもよく、したがって、成功の指示は、カスタムリソースが使用できる状態にあることの指示とは異なる場合がある。例えば、最終的に一定のストレージは、成功の指示としてストレージのリクエストを確認応答することができるが、ストレージはそれより後まで利用可能にはならない場合がある。応答およびリソースを使用して、スタック管理システムは、カスタムリソースと統合するようにリソーススタック内のリソースを構成408することができる。統合の後、リソーススタックは、有効410になってもよい。いくつかの実施形態において、有効になったリソーススタックは直後に使用されてもよい。別の実施形態において、有効になったリソーススタックはカスタマイズのために利用可能になるが、その目的とする使用にはアクティブではない。
【0032】
プロセス400の実施形態の図示例として、スタック管理システムは、日次増分バックアップを記憶するオフサイトバックアップサービスに接続されたウェブサーバーを用いてスタックを作成するリクエストを受信することができる。スタック管理システムは、ウェブサーバーをプロビジョニングし、ウェブサーバーの日次増分バックアップの場所の初期化をリクエストするメッセージをオフサイトバックアップサービスへ送信することができる。一実施形態において、場所は、バックアップのために提供されるストレージエリアへアクセスするために使用されるURLであってもよい。オフサイトバックアップサービスは、ウェブサーバーの日次増分バックアップを受信するように構成された場所、およびオフサイトバックアップサービスとの接続をセキュアにするために使用される情報を識別する応答を返すことができる。一実施形態において、接続をセキュアにするために使用される情報は、オフサイトバックアップサービスへの接続を暗号化する際に使用される認証情報であってもよい。スタック管理システムは次いで、この場所情報を使用して、日次増分バックアップのためにウェブサーバーを構成することができる。リソーススタックの構成が完了した後、ウェブサーバーおよびバックアップサービスを含むリソーススタックは、ユーザーがカスタマイズまたは配備することが可能であってもよい。
【0033】
プロセス400(あるいは本明細書に記載される任意の他のプロセス、あるいはその変形および/または組み合わせ)のうちのいくつかまたは全ては、実行可能命令を用いて構成された1つ以上のコンピュータシステムの制御下で実行されてもよく、1つ以上のプロセッサ上、ハードウェアによって、またはこれらの組み合わせによって、集合的に実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装されてもよい。コードは、例えば、1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形式において、コンピュータ可読記憶媒体上に記憶されてもよい。コンピュータ可読記憶媒体は非一時的であってもよい。
【0034】
図5は、カスタムリソースを含むリソーススタックを管理する際に使用されてもよいプロセス500の図示例を示す。プロセス500は、上述のプロセス400の変形であってもよい。さらに、プロセスは、スタック管理システム110、カスタムリソースマネージャー116、プロビジョニングシステム111、リソーススタック102、リソース104および108、ならびにカスタムリソース106を含む、
図1に関連して上述したシステムによって集合的に等、任意の好適なシステムによって達成されてもよい。スタック管理システムは、リソーススタック内のリソースを記述するテンプレートからリソーススタックを構築するリクエストを受信502することができる。例えば、開発者は、新しいバージョンのウェブアプリケーションをテストする目的のために、リソーススタックを定義するテンプレートへのアクセスをテスターに与えることができる。テスターは、新しいバージョンのテストが達成されてもよいように、リソーススタックがプログラム実行サービス内のテスト環境に作成されることをリクエストすることができる。プログラム実行サービスは、テンプレートリクエストが承認されるかを決定することができ、承認された場合、リクエストをスタック管理システムへ提供することができる。スタック管理システムは、リソーススタック内のリソース間の依存関係を決定504することができる。上述のように、依存関係を決定することは、依存関係の宣言、スタック管理システムによる依存関係の決定、デフォルトの規則、あるいはリソース依存関係の他の暗示的または明示的定義を含む、多様な方式で決定されてもよい。
【0035】
決定された依存関係を使用して、スタック管理システムは、一実施形態において、テンプレート内で定義されたリソースの構築の順序を決定506する。決定された順序の最初のリソースから開始して、スタック管理システムは、検証するテンプレートの次のリソースにアクセス508する。テンプレートの次のリソースを例に対して検証することは、リソースがカスタムリソースであるかの決定を行う510ことを含むことができる。リソースがカスタムリソース510ではないが、スタック管理システムによって管理されると決定510された場合、リソースはプロビジョニング512され、テンプレートによって定義された他のリソースへの接続を構成すること等によって、スタックに統合514される。プロセス500の実行は、リソースの構築が既定の時間(タイムアウト)を超えたかどうかを決定524することを含むことができる。タイムアウトはタイマーによって測定されてもよい。いくつかの実施形態において、タイムアウトはグローバルであり、リソーススタック全体に適用される。他の実施形態において、リソーススタックの各リソースは個別のタイムアウトが与えられる。1〜10時間、またはより具体的には4時間等のタイムアウトを超えた524と決定524された場合、スタックの作成は失敗525になってもよい。失敗した場合、一実施形態において、スタック管理システムによって管理されるインスタンス化されたリソースは、破壊されてもよい。リソースを破壊することは、リソースをサポートするインフラストラクチャが、利用可能なインフラストラクチャのプールに返されてもよいように、リソースのプロビジョニングを解除することを含むことができる。インスタンス化されたカスタムリソースもまた、インスタンス化されたカスタムリソースの管理システムに、カスタムリソースを破壊する通知を送信することによって破壊されてもよい。いくつかの実施形態において、カスタムリソースの廃棄はデータの廃棄になり得るため、破壊通知は、ユーザーの介在なしには送信されない。この失敗への反応は、テンプレート情報、ユーザー設定、および/またはカスタムリソースのプロバイダによるデフォルトの設定によって制御されてもよい。タイムアウトを超えず524、スタックの作成が完了526した場合、スタックは使用が有効528になってもよい。リソーススタックの構築がタイムアウトを超えなかったと決定524された場合、リソーススタックの構築が完了したかどうかの決定526が行われてもよい。リソーススタックの構築が完了していないと決定526された場合、次のリソースが検証508されてもよく、プロセス500は上述のように進むことができる。
【0036】
しかしながら、リソースがカスタムではないと決定510された場合、スタック管理システムは、テンプレート情報、リソーススタック情報、およびカスタムリソースのユーザーおよび/またはプロバイダによって提供された他の情報に基づいて、カスタムリソースマネージャーへのメッセージを構築516することができる。メッセージは次いで、合意されているメッセージングシステムまたはプロトコルに従って、カスタムリソースマネージャーへ送信518されてもよい。スタック管理システムは次いで、カスタムリソースマネージャーによるリソーススタックとの統合成功の指示を受信520することができる。例えば、指示は、メッセージ、API呼出し、ストレージ場所でのデポジット、またはスタック管理システムとの他の通信によって送信されてもよい。図示されていないが、失敗が発生した場合、失敗の指示も提供されることを認識されたい。このような失敗は、カスタムリソースマネージャーに送信された不正な構成、カスタムリソース作成の失敗、および/またはカスタムリソース作成の不十分な権限を含むことができる。プロセス500は、このような失敗を処理するように適切に適合されてもよい。スタック管理システムは次いで、統合タスクを実行522して、カスタムリソースの統合を終了することができる。動作508〜動作524までのリソースインスタンス化のサイクルは次いで、リソーススタックが完全にインスタンス化されていない526、かつタイムアウトを超えていない524場合に繰り返すことができる。さもなければ、タイムアウトを超えていない524、かつインスタンス化するリソースがもうない526場合、スタックは、配備および/または個人化等、さらなる使用が有効528であってもよい。
【0037】
いくつかの実施形態において、通知サービスは、メッセージ518を送信し、成功の指示を受信520するために使用される。一実施形態において、通知サービスが使用される。カスタムリソースマネージャー116は、カスタムリソースの初期化リクエストに関係する通知サービスのサブジェクトをサブスクライブすることができる。メッセージの配信は、HTTP、FTP、電子メール、SMS、キューまたは他のプロトコル等、プロトコルを含めて、カスタムリソースマネージャー116によってカスタム化されてもよい。通知サービスは次いで、プロビジョニングシステム111から受信すると、カスタムリソースマネージャー116へメッセージをプッシュすることができる。別の実施形態において、通知は、指定された場所の記憶装置上にデポジットされてもよい。プロビジョニングシステム111またはカスタムリソースマネージャー116等の受信側は、アクションが必要かどうかを決定するために、その場所をポーリングすることができる。別の実施形態において、メッセージを渡すために、アプリケーションプログラミングインターフェース(API)の呼出しが使用される。APIインターフェースは、プロビジョニングシステム111による複数のAPIをサポートする複雑性を簡素化するために標準化されてもよい。他の実施形態において、前述の方法の組み合わせが使用されてもよい。例えば、通知の伝送のために通知サービスが使用されてもよく、通知に対する応答はストレージに応答を入れることによって行われてもよい。メッセージの照合も発生してもよい。一実施形態において、プロビジョニングシステム111によって署名された通知だけがカスタムリソースマネージャーによって実行される。
【0038】
ここで
図6を参照すると、少なくとも1つの実施形態に従うカスタムリソースマネージャーによって使用され得るプロセス600の図示例が示される。プロセスは、スタック管理システム110、カスタムリソースマネージャー116、プロビジョニングシステム111、リソーススタック102、リソース104および108、ならびにカスタムリソース106を含む、
図1に示されるシステムによって達成されてもよい。カスタムリソースマネージャーは、提供されたカスタムリソースをリソーススタックと統合するリクエストを受信602することができる。カスタムリソースマネージャーは、リクエストを非依存部分およびペイロードにパース604することができる。カスタムリソースマネージャーは次いで、ペイロードを使用して、リソーススタックの一部として構築するカスタムリソースの構成を決定する。いくつかの実施形態において、非依存部分が使用、または排他的に使用されて、カスタムリソースの構成を決定することもできる。決定された構成に少なくとも部分的に基づいて、カスタムリソースマネージャーは、カスタムリソースを初期化608し、リソーススタックと統合するようにカスタムリソースを構成することができる。例えば、カスタムリソースは、スタック管理システムのプロバイダとは別のデータセンター内の業者によって提供されてもよい。カスタムリソースの初期化は、カスタムリソースをプロビジョニングすること、サービスを設定すること、データベースエントリを作成すること、認証情報を構築すること、およびさもなければリソーススタックと統合するためにカスタムリソースを準備することを含むことができる。別の例において、カスタムリソースは、スタック管理システムのプロバイダのサブエンティティによって提供されてもよい。カスタムリソースの初期化は、サブエンティティの管理下での第2のリソーススタックの構築を含むことができる。第2のリソーススタックは、カスタムリソースとして取り扱われるので、第2のリソーススタックの作成および管理は、それらのリソーススタック内のカスタムリソースのユーザーに透明的であってもよい。
【0039】
カスタムリソースの初期化成功が成功した場合、カスタムリソースマネージャーは、成功の指示、およびハンドル、カスタムリソースの物理的情報源識別子および/または識別、ならびに他の設定等、リソーススタックの任意の付加情報を返すことができる。例えば、カスタムリソースが監視ソリューションである場合、付加情報は、作成されている警告を含むことができる。いくつかの実施形態において、非依存部分の一部または全ては、メッセージが属するリソーススタックを識別するために返される。他の実施形態において、顧客が自己構成を選択することができるため、付加情報は、スタック管理システムがアクセスするためではなく、顧客がアクセスするために返される。一例において、カスタムリソースは、3次元プリンタであってもよく、構成情報は設計であってもよい。通知を受信すると、3次元プリンタは設計を構築することができる。設計を完了すると、3次元プリンタは、カスタムリソースの構築成功の指示を送信することができる。別の例において、カスタムリソースは、人間の知識に基づくリソース等、クラウドソースのリソースであってもよい。1つの質問が人々の集団に投げかけられてもよく、最も共通する回答が選択され、成功の指示の一部として返されてもよい。
【0040】
カスタムリソースマネージャーはまた、カスタムリソースを変更するリクエストも受信することができる。リクエストもまたパースされてもよく、リクエストされた変更が決定される。カスタムリソースは、決定されたリクエストに従って変更され、リソーススタックに再統合されてもよい。いくつかの実施形態において、この再統合は、例えば、ホスト名、アドレス、または他の識別情報がいくつかの接触点を増加または減少するように変更および/または縮小拡大される場合、再構成を要求する場合がある。変更が統合されると、カスタムリソースマネージャーは、統合成功の指示をスタック管理システムに返すことができる。
【0041】
カスタムリソース管理がスタック管理システムの制御外である場合、カスタムリソースの失敗は異なる様式で取り扱われてもよい。例えば、カスタムリソースプロバイダは、プロバイダのデータセンターが破損していたために応答することを拒否する場合がある。通知からのタイムアウトは、スタック管理システムが確認応答を待機する時間が長すぎないように保護することができる。タイムアウトの超過は次いで、リソーススタックの構築をリクエストした呼出し元エンティティに報告されてもよい。いくつかの実施形態において、呼出し元エンティティは、検出された失敗に反応するように選択することができる。一実施形態において、リソーススタック動作中の失敗は、呼出し元エンティティに報告されてもよい。呼出し元エンティティは、現在のテンプレートまたはカスタムリソースの代わりに異なるテンプレートまたはカスタムリソースを代用する等、反応するように選択することができる。別の実施形態において、作成、読み出し、更新、および破壊等のリソーススタック動作以外の動作の失敗が検出されてもよく、反応は他のシステムによって決定されてもよい。いくつかの実施形態において、反応はリソーススタックを変更するリクエストを含むことができる。
【0042】
リソーススタックプロバイダは、そのカタログを市場形式で提供することができる。顧客は、プロバイダによって管理されたリソース、および/またはカスタムリソースプロバイダによって管理されたカスタムリソースを選択することができる。いくつかの実施形態において、市場からの選択は、リソーススタックのテンプレートに含まれてもよい。一実施形態において、カスタムリソースプロバイダは、リソーススタックに含める利用可能なリソースのカタログに含まれる一回限りまたは反復料金を支払うことができる。プロバイダは次いで、カスタムリソースの使用によって発生するコスト、またはリソースの構築に対する料金を受領することができる。
【0043】
テンプレートは、リソーススタックのリソースの識別、リソースのプロパティ、パラメータ、リソーススタックのリソース間の相互接続、リソーススタック外の接続、リソーススタックの構成、リソースを実行させるセットアップ動作、およびリソースを実行させる動作を含む、リソーススタックの多様な態様を定義することができる。一実施形態において、テンプレートは、リソースの階層定義を含むことができる。例えば、テンプレートは、リソースのサブ定義、カスタムリソース、リソースで実行またはリソースによって実行する動作、およびリソース間の接続を含むリソーススタックの定義を用いて開始することができる。リソースの各サブ定義は、リソースに適用可能なオプション、記述、パラメータ、接続、サブリソースまたは他の関連定義を含むサブ定義をさらに含むことができる。
【0044】
図7は、多様な実施形態に従う態様を実装するための例示的環境700の態様を示す。理解されるように、説明の目的でウェブベースの環境が使用されるが、多様な実施形態を実装するために、必要に応じて異なる環境が使用されてもよい。その環境は、適切なネットワーク704上からリクエスト、メッセージ、または情報を送信および受信し、かつデバイスのユーザーに情報を戻して伝達するように動作可能な任意の適切なデバイスを含み得る、1つの電子クライアントデバイス702を含む。そのようなクライアントデバイスの例として、パーソナルコンピュータ、携帯電話、手持ち式メッセージングデバイス、ラップトップコンピュータ、セットトップボックス、個人データアシスタント、電子ブックリーダー等が挙げられる。ネットワークとして、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、または任意の他のそのようなネットワーク、もしくはそれらの組み合わせを含む、任意の適切なネットワークを挙げることができる。そのようなシステムに使用される構成要素は、選択されるネットワークの種類および/または環境に少なくともある程度依存し得る。そのようなネットワークを介して通信するためのプロトコルおよび構成要素が周知であり、本明細書において詳細に議論されない。ネットワーク上での通信は、有線または無線接続およびこれらの組み合わせによって有効にされ得る。この例において、環境がリクエストを受信し、かつそれに応答してコンテンツをサービスするためのウェブサーバー706を含むように、ネットワークはインターネットを含むが、他のネットワークについては、当業者には明らかなように、同様の目的をサービスする代替のデバイスを使用することができる。
【0045】
例示的な環境は、少なくとも1つのアプリケーションサーバー708と、データストア710とを含む。連鎖されるか、またはさもなければ構成されてもよい、適切なデータストアからデータを入手する等のタスクを実行するために相互作用し得る、いくつかのアプリケーションサーバー、層、もしくは他の要素、プロセス、または構成要素が存在し得ることを理解されたい。本明細書で使用される「データストア」という用語は、データの記憶、アクセス、および回収能力のある任意のデバイスまたはデバイスの組み合わせを指し、任意の標準、分散型、またはクラスタ化環境において、任意の組み合わせおよび任意の数のデータサーバー、データベース、データ記憶デバイス、およびデータ記憶媒体を含んでもよい。アプリケーションサーバーは、クライアントデバイスの1つ以上のアプリケーションの態様を実行するために、必要に応じて、アプリケーションのデータアクセスおよびビジネスロジックの大部分を処理する、データストアと統合するための任意の適切なハードウェアおよびソフトウェアを含むことが可能である。アプリケーションサーバーは、データストアと協働してアクセス制御サービスを提供し、ユーザーに転送される文字、図、音声、および/またはビデオ等のコンテンツを生成することができ、そのコンテンツを、本例において、HTML、XML、または別の適切な構造化された言語の形態で、ウェブサーバーによってユーザーにサービスしてもよい。全てのリクエストおよび応答の処理、ならびにクライアントデバイス702とアプリケーションサーバー708との間のコンテンツの送達は、ウェブサーバーによって処理することができる。本明細書の他の箇所で議論されるように、本明細書で検討される構造化されたコードは、任意の適切なデバイスまたはホストマシン上で実行することができるため、ウェブおよびアプリケーションサーバーは必要とされず、単に例示の構成要素に過ぎないことを理解されたい。
【0046】
データストア710は、特定の態様に関するデータを記憶するための、いくつかの別々のデータテーブル、データベース、または他のデータ記憶機構および媒体を含むことができる。例えば、示されたデータストアは、本番データ712およびユーザー情報716を記憶するための機構を含み、これらは、本番環境でコンテンツを提供するために使用することができる。データストアはまた、報告書作成、分析または他のこのような目的のために使用することができる、ログデータ714を記憶するための機構も含むことが示される。ページイメージ情報等のデータストアに記憶されること、および権限情報にアクセスすることが必要になる可能性があり、必要に応じて上記の列挙された機構のうちのいずれか、またはデータストア710の追加の機構に記憶することができる、多くの他の態様が存在する可能性があることを理解されたい。データストア710は、それと関連するロジックを通じて、アプリケーションサーバー708から命令を受信し、かつそれに応答してデータを取得、更新、またはさもなければ処理するように動作可能である。一例において、ユーザーは、所定の種類の項目についての検索リクエストを提出する場合がある。この場合、データストアは、ユーザーの身元を検証するためにユーザー情報にアクセスする場合があり、その種類の項目についての情報を取得するためにカタログ詳細情報にアクセスすることができる。情報は、次いで、ユーザーがユーザーデバイス702上のブラウザを介して表示することが可能であるウェブページ上の結果リスト等において、ユーザーに返すことができる。関心の特定の項目の情報は、ブラウザの専用ページまたはウィンドウに表示することができる。
【0047】
それぞれのサーバーは、典型的には、そのサーバーの一般管理および動作についての実行可能なプログラム命令を提供するオペレーティングシステムを含み、かつ典型的には、サーバーのプロセッサによって実行されると、サーバーがその目的とする機能を実行することを可能にする命令を記憶するコンピュータ可読記憶媒体(例えば、ハードディスク、ランダムアクセスメモリ、読み出し専用メモリ等)を含む。サーバーのオペレーティングシステムおよび一般的な機能性の好適な実装例は、既知であるか、または市販されており、当業者によって、特に本明細書における本開示を考慮して容易に実装される。
【0048】
一実施形態の環境は、1つ以上のコンピュータネットワークまたは直接接続を使用して、通信リンクを介して相互接続されるいくつかのコンピュータシステムおよび構成要素を利用する分散型コンピューティング環境である。しかしながら、当業者は、そのようなシステムが、
図7に図示されるよりも少ないまたは多い数の構成要素を有するシステムにおいて同等に良好に動作することができることを理解するであろう。したがって、
図7のシステム700の描写は、本質的に例示的であり、かつ本開示の範囲を限定しないと見なされるべきである。
【0049】
前述は、以下の付記を考慮するとさらに理解することができる。
【0050】
1.リソーススタックを作成するためのコンピュータによって実装される方法であって、コンピューティングリソースプロバイダの、実行可能命令を用いて構成された、1つ以上のコンピュータシステムの制御下で、コンピューティングリソースプロバイダによって、少なくとも、コンピューティングリソースプロバイダによって提供される複数のコンピューティングリソースから選択されたコンピューティングリソースと、第2のプロバイダによって提供されるカスタムコンピューティングリソースと、コンピューティングリソースおよびカスタムコンピューティングリソースをリソーススタックに統合するための定義と、を指定する、構成テンプレートによって定義されたリソーススタックを構築するリクエストを受信することと、リソーススタックを、少なくとも、少なくとも部分的に構成テンプレートに基づいてコンピューティングリソースをプロビジョニングすることと、リソーススタック内で使用するためのカスタムリソースを構成するように第2のプロバイダに命令する通知を、第2のプロバイダへ送信することと、第2のプロバイダから、カスタムリソースの構成成功の指示を含む、通知への応答を受信することと、によって構築することと、構築されたリソーススタックの使用を有効にすることと、を含む、コンピュータによって実装される方法。
【0051】
2.第3のプロバイダへ、リソーススタック内で使用するための第2のカスタムリソースを構成するように第3のプロバイダに命令する、第2の通知を送信することと、第3のプロバイダから、第2のカスタムリソースの構成成功の第2の指示を含む、第2の通知への第2の応答を受信することと、をさらに含む、付記1に記載のコンピュータによって実装される方法。
【0052】
3.第2のプロバイダへの通知を送信することが、管理セクションとペイロードとを含むように通知を構築することを含み、管理セクションが、リソーススタックの構成に関する情報を含み、ペイロードが、第2のプロバイダによって定義された特性を含む、付記1に記載のコンピュータによって実装される方法。
【0053】
4.スタック識別子によって識別されたリソーススタックを変更する第2のリクエストを受信することと、第2のプロバイダへ、少なくとも第2のリクエストに基づいてカスタムリソースを変更するように第2のプロバイダに命令する、第2の通知を送信することと、第2のプロバイダから、変更成功の第2の指示を含む、通知への第2の応答を受信することと、リソーススタックに対する変更の使用を有効にすることと、をさらに含む、付記1に記載のコンピュータによって実装される方法。
【0054】
5.第2のプロバイダが第三者のプロバイダである、付記1に記載のコンピュータによって実装される方法。
【0055】
6.構成テンプレートによって定義されたリソース間の依存関係が順守されるように、構成テンプレートに少なくとも部分的に基づいて、リソーススタック内のリソースの構築の順序を決定することと、をさらに含む、付記1に記載のコンピュータによって実装される方法。
【0056】
7.リソーススタックを管理するためのコンピュータによって実装される方法であって、実行可能命令を用いて構成された1つ以上のコンピュータシステムの制御下で、コンピューティングリソースとカスタムリソースとを含むリソーススタックを構築するリクエストを受信することと、コンピューティングリソースをプロビジョニングすることと、カスタムリソースマネージャーへ、カスタムリソースのリソーススタックとの統合をリクエストするメッセージを送信することと、カスタムリソースマネージャーから、カスタムリソースのリソーススタックとの統合成功を示す応答を受信することと、プロビジョニングされたコンピューティングリソースとカスタムリソースとを含むリソーススタックの動作を有効にすることと、を含む、コンピュータによって実装される方法。
【0057】
8.カスタムリソースマネージャーへメッセージを送信することが、管理セクションとカスタムリソースペイロードを含むようにメッセージを構築することをさらに含み、管理セクションは、スタック識別子、カスタムリソースへの論理関連識別子、およびリソーススタックのコンテキストをさらに含む、付記7に記載のコンピュータによって実装される方法。
【0058】
9.管理されたリソースへメッセージを送信することが、管理セクションとカスタムリソースペイロードとを含むようにメッセージを構築することをさらに含み、カスタムリソースペイロードが、カスタムリソースマネージャーに特定の情報を含む、付記7に記載のコンピュータによって実装される方法。
【0059】
10.リソース間の定義された依存関係が順守されるように、リソースを構築する順序を決定することをさらに含む、付記7に記載のコンピュータによって実装される方法。
【0060】
11.リソーススタックを管理するアカウントの下でのカスタムリソースの使用量に対して請求記録を生成することをさらに含む、付記7に記載のコンピュータによって実装される方法。
【0061】
12.第1のプロバイダによって、コンピューティングリソースおよびリソーススタックを管理することをさらに含み、第1のプロバイダが、カスタムリソースを管理する第三者のプロバイダとは別である、付記7に記載のコンピュータによって実装される方法。
【0062】
13.リソーススタックを管理するためのコンピュータシステムであって、1つ以上のプロセッサと、実行可能命令を含むメモリとを有する1つ以上のコンピューティングデバイスを備え、実行可能命令は、前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに、少なくとも、少なくとも部分的にテンプレートに基づいてリソーススタックを作成するように構成された第1のプロバイダのワークフロー処理システムであって、リソーススタックが、カスタムリソースと統合されたコンピューティングリソースを含み、カスタムリソースが第2のプロバイダによって管理される、ワークフロー処理システムと、少なくともテンプレートに基づいて、カスタムリソースを初期化し、かつカスタムリソースをコンピューティングリソースと統合するように、第2のプロバイダと通信するように構成された、カスタムリソース通知システムと、少なくとも部分的に前記テンプレートに基づいて、コンピューティングリソースをプロビジョニングするように構成された、第1のプロバイダのプロビジョニングシステムと、を実装させる、コンピュータシステム。
【0063】
14.カスタムリソースマネージャーが、リソーススタックの一部として、前記カスタムリソースを作成、読み出し、更新、および破壊するように構成されたアプリケーションプログラミングインターフェースをさらに含む、付記13に記載のコンピュータシステム。
【0064】
15.コンピューティングリソースをプロビジョニングするために、プロビジョニングシステムによって使用されるマシンイメージをさらに備える、付記13に記載のコンピュータシステム。
【0065】
16.ワークフロー処理システムが、タイマーをさらに備え、ワークフロー処理システムが、タイマーがタイムアウト閾値を超えると、リソーススタックが作成に失敗するように構成される、付記13に記載のコンピュータシステム。
【0066】
17.カスタムリソース通知システムが、カスタムリソースマネージャーと第2のプロバイダとの間のメッセージングシステムとのリンクをさらに備え、メッセージングシステムが、第2のプロバイダによるプロトコルの選択を可能にするように構成される、付記13に記載のコンピュータシステム。
【0067】
18.コンピューティングリソースの使用量から生じるコスト情報と統合するように、第2のプロバイダからコスト情報を受信する統一請求システムをさらに備える、付記13に記載のコンピュータシステム。
【0068】
19.コンピュータシステムの1つ以上のプロセッサによって実行されると、コンピュータシステムに、少なくとも、カスタムリソースマネージャーによって、リソーススタック内のカスタムリソースマネージャーによって提供されるカスタムリソースを含むリクエストをスタック管理システムから受信することと、カスタムリソースマネージャーによって、テンプレートの指示を受信することと、少なくとも部分的にリクエストとテンプレートの指示とに基づいてリソーススタックと統合するようにカスタムリソースを準備することと、カスタムリソースがリソーススタックと統合されるというリクエストに対する応答を送信することと、を生じさせる、実行可能命令を集合的にその上に記憶している、1つ以上のコンピュータ可読記憶媒体。
【0069】
20.リクエストを受信することが、非依存部分とペイロード部分とを含むリクエストを受信することをさらに含み、ペイロードが、カスタムリソースマネージャーの仕様を順守し、カスタムリソースのための構成を含む、付記19に記載のコンピュータ可読記憶媒体。
【0070】
21.応答を送信することが、リクエストの非依存部分に含まれたリソーススタック識別子と論理関連識別子とを備える応答を構築することをさらに含む、付記20に記載のコンピュータ可読記憶媒体。
【0071】
22.リクエストを受信することが、リクエストが受信されるサブジェクトをサブスクライブすることと、リクエストが送達されるプロトコルを選択することと、サブジェクトへのメッセージの公開後にリクエストを受信することと、をさらに含む、付記19に記載のコンピュータ可読記憶媒体。
【0072】
23.リソーススタックと統合するようにカスタムリソースを準備することが、空のリソーススタック状態から、空ではないリソーススタック状態へリソーススタックを遷移させることをさらに含む、付記19に記載のコンピュータ可読記憶媒体。
【0073】
24.命令が、実行されると、コンピュータシステムに、少なくとも、リソーススタックによるカスタムリソースの使用によって発生したコストを含むメッセージを、リソーススタックに関係するアカウント情報を受信することに責任を持つ管理システムへ送信させる、命令をさらに含む、付記19に記載のコンピュータ可読記憶媒体。
【0074】
多様な実施形態は、いくつかの場合には、いくつかのアプリケーションのうちのいずれかを操作するために使用することができる、1つ以上のユーザーコンピュータ、コンピューティングデバイス、または処理デバイスを含むことができる、多種多様な動作環境で実装することができる。ユーザーまたはクライアントデバイスは、標準のオペレーティングシステムを稼動しているデスクトップまたはラップトップコンピュータ等のいくつかの汎用パーソナルコンピュータ、ならびにモバイルソフトウェアを稼動し、いくつかのネットワークおよびメッセージングプロトコルをサポートすることが可能であるセルラー、ワイヤレス、およびハンドヘルドデバイスのうちのいずれかを含むことができる。このようなシステムはまた、多種多様な市販のオペレーティングシステム、ならびに開発およびデータベース管理等の目的の他の周知のアプリケーションのうちのいずれかを稼動するいくつかのワークステーションを含むことができる。これらのデバイスはまた、ネットワークを介して通信することが可能なダミー端末、シンクライアント、ゲームシステム、および他のデバイス等、他の電子デバイスを含むことができる。
【0075】
ほとんどの実施形態は、TCP/IP、OSI、FTP、UPnP、NFS、CIFS、およびAppleTalk等、多種多様な市販されているプロトコルのうちのいずれかを使用する通信をサポートするために、当業者が熟知であろう、少なくとも1つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公共回線電話網、赤外線ネットワーク、無線ネットワーク、およびこれらの任意の組み合わせであり得る。
【0076】
ウェブサーバーを利用する実施形態において、ウェブサーバーは、HTTPサーバー、FTPサーバー、CGIサーバー、データサーバー、Javaサーバー、およびビジネスアプリケーションサーバーを含む、多様なサーバーまたは中間層アプリケーションのうちのいずれかを稼動することができる。サーバー(単数または複数)はまた、Java(登録商標)、C、C#またはC++等の任意のプログラム言語、あるいはPerl、Python、またはTCL等の任意のスクリプト言語、ならびにこれらの組み合わせ等、で作成された1つ以上のスクリプトまたはプログラムとして実装されてもよい、1つ以上のウェブアプリケーションを実行することによって等、ユーザーデバイスからのリクエストに応答して、プログラムまたはスクリプトを実行することが可能であってもよい。サーバー(単数または複数)はまた、これらに限定されないが、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、およびIBM(登録商標)から市販されているデータベースサーバーを含んでもよい。
【0077】
環境は、上記のように、多様なデータストアならびに他のメモリおよび記憶媒体を含むことができる。これらは、コンピュータのうちの1つ以上にローカル(および/または内部に存在)、あるいはネットワーク全体のコンピュータのうちのいずれかまたは全てからリモートの記憶媒体等、多様な場所に存在することができる。特定の組の実施形態において、情報は、当業者が熟知のストレージエリアネットワーク(以下「SAN」)の中に存在してもよい。同様に、コンピュータ、サーバー、または他のネットワークデバイスに帰属する機能を実施するために必要な任意のファイルが、必要に応じて、ローカルおよび/またはリモートで記憶されてもよい。システムがコンピュータデバイスを含む場合、そのようなデバイスは各々、バスを介して電気的に連結されてもよいハードウェア要素を含むことができ、要素として、例えば、少なくとも1つの中央処理装置(CPU)、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチ画面、またはキーパッド)、および少なくとも1つの出力デバイス(例えば、表示デバイス、プリンタ、またはスピーカ)が挙げられる。かかるシステムはまた、ランダムアクセスメモリ(以下「RAM」)、または読み出し専用メモリ(以下「ROM」)、ならびに取り外し可能媒体デバイス、メモリカード、フラッシュカード等のディスクドライブ、光学式記憶装置、およびソリッドステート記憶装置等の1つ以上の記憶装置を含んでもよい。
【0078】
かかるデバイスはまた、コンピュータ可読記憶媒体リーダー、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス等)、および上記のような実働メモリも含むことができる。コンピュータ可読記憶媒体リーダーは、コンピュータ可読情報を一時的および/またはより永久的に含み、記憶、伝送、および呼び出すための、リモート、ローカル、固定、および/または取り外し可能記憶装置、ならびに記憶媒体を代表する、コンピュータ可読記憶媒体と接続、またはこれを受容するように構成することができる。システムおよび多様なデバイスはまた典型的に、クライアントアプリケーションまたはウェブブラウザ等、オペレーティングシステムおよびアプリケーションプログラムを含む、いくつかのソフトウェアアプリケーション、モジュール、サービス、または少なくとも1つの実働メモリデバイス内部に位置する他の要素を含む。代替の実施形態は、上記とは異なる多くの変形形態を有してもよいことを理解されたい。例えば、カスタマイズされたハードウェアが使用される場合もあり、および/または特定の要素が、ハードウェア、ソフトウェア(アプレット等の移植可能ソフトウェアを含む)、または両方に実装される場合がある。さらに、ネットワーク入力/出力デバイス等の他のコンピューティングデバイスへの接続が採用されてもよい。
【0079】
コード、またはコードの一部を含むための記憶媒体およびコンピュータ可読媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光学式ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を記憶するために使用することができ、かつシステムデバイスによってアクセスすることができる任意の他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報の記憶および/または伝送のための任意の方法または技術において実装された揮発性および不揮発性、取り外し可能および非取り外し可能な媒体等、しかしこれらに限定されない、当技術分野において周知または使用される任意の適当な媒体を含むことができる。本明細書に提供された開示および教示に基づいて、当業者は、多様な実施形態を実装するための他の方式および/または方法を理解するであろう。
【0080】
本明細書および図面は、したがって、制限の意味ではなく、説明として解釈されるべきである。しかしながら、請求項に記載の本発明の広義の精神および範囲から逸脱することなく、そこに多様な修正および変更が行われてもよいことは自明である。
【0081】
他の変形形態は、本開示の精神内にある。このように、開示される技法は、多様な修正および代替の構築の影響を受けやすいが、その特定の例示実施形態を図面に示し、詳細に上述した。しかしながら、本発明を開示される特定の形態(単数または複数)に限定する意図はなく、対照的に、この意図は、添付の請求項によって定義される本発明の精神および範囲内に該当する全ての修正、代替構築、および均等物を網羅することであることを理解されたい。
【0082】
「1つ」(「a」および「an」)および「その」(「the」)の用語の使用は、開示される実施形態の文脈における(特に以下の請求項の文脈における)類似の参照は、本明細書にその他明記または文脈によって明確に否定される場合を除き、単数および複数の両方を網羅すると解釈される。「備える」、「有する」、「含む」、および「含有する」という用語は、その他特に明記されない限り、無制限の用語(すなわち、「含むが、限定されない」を意味する)として解釈されることとする。「接続される」という用語は、何らかの介在が存在する場合であっても、部分的または全体的に内部に含まれる、それに添付、または結合すると解釈される。本明細書における値の範囲の記載は、本明細書にその他記載のない限り、その範囲内に該当する各個別の値を個別に参照する簡潔な方法として機能することを目的とするに過ぎず、各個別の値は、本明細書に個別に記載されているかのようにその仕様に組み入れられる。本明細書に記載される全ての方法は、本明細書にその他記載のない限り、または文脈によって明確に否定されない限り、任意の適切な順序で実行することができる。本明細書に提供される任意および全ての例、または例示的言語(例えば「等」)の使用は、本発明の実施形態をより明確にすることを意図するに過ぎず、その他請求されない限り、本発明の範囲に限定を課すものではない。本明細書のいずれの記載事項も、請求項に記載されていないいずれかの要素が本発明の実践に不可欠であることを示していると解釈されてはならない。
【0083】
本開示の好ましい実施形態は、本発明を実行するために本発明人に周知の最良の様式を含めて、本明細書に記載される。これらの好ましい実施形態の変形は、前述の説明を一読すると当業者には明らかになり得る。本発明人は、当業者が、このような変形を適切に採用することを期待し、本発明人は、本発明が本明細書に具体的に記載される以外に実践されることを意図する。したがって、本発明は、該当法によって許可されるように、本明細書に添付の請求項に記載される対象項目の修正および均等物を全て含む。さらに、その全ての可能な変形における上述の要素の任意の組み合わせは、その他本明細書に明記または文脈によって明確に否定されない限り、本発明によって網羅される。
【0084】
本明細書に引用される、文献、特許明細書、および特許を含む全ての参考文献は、各参考文献が個別かつ具体的に参照により組み入れられ、その全体が本明細書に記載されているのと同じ程度において、参照により組み入れられる。