(57)【要約】  クラウドサービスを提供するためのリソースをプロビジョニングするための技術が開示される。クラウドインフラストラクチャシステムは、クラウドインフラストラクチャシステムによって提供される一組のクラウドサービスからサービスを特定する、顧客から受取ったサブスクリプションオーダーに対応するサブスクリプションオーダー情報を格納し得る。サブスクリプションオーダーを処理する一環として、決定されたサービスのための予めプロビジョニングされた１つ以上の匿名のデプロイメントは、予めプロビジョニングされた匿名のデプロイメントを顧客特有の構成で構成することによって顧客のためのサービスインスタンスを作成するために用いられ得る。
2016500854.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
１つ以上の演算装置を含むクラウドインフラストラクチャシステムによって、前記クラウドインフラストラクチャシステムにより提供される複数のクラウドサービスから第１のサービスのための１つ以上のリソースアセンブリの第１の組を作成するステップを含み、前記リソースアセンブリの第１の組における各リソースアセンブリは、前記第１のサービスを提供するための１つ以上のリソースを含み、前記方法はさらに、
作成後、前記クラウドインフラストラクチャシステムによって、顧客からサブスクリプションオーダー情報を受取るステップを含み、前記サブスクリプションオーダー情報は、顧客特有の構成および前記第１のサービスのためのオーダー要求を含み、前記方法はさらに、
前記顧客に前記第１のサービスを提供するために、前記１つ以上の演算装置のうちの任意の演算装置によって、前記サブスクリプションオーダー情報に基づいて、前記リソースアセンブリの第１の組から第１のリソースアセンブリを選択するステップと、
前記第１のリソースアセンブリを前記顧客特有の構成で構成することによって前記顧客に前記第１のサービスを提供するために、前記１つ以上の演算装置のうちの任意の演算装置によって、第１の顧客特有リソースアセンブリを作成するステップとを含む、方法。
【請求項２】
前記サブスクリプションオーダー情報は、前記クラウドインフラストラクチャシステムによって提供される前記複数のクラウドサービスに第２のサービスを要求し、前記方法はさらに、
前記クラウドインフラストラクチャシステムによって提供される前記複数のクラウドサービスから第２のサービスのためのリソースアセンブリの第２の組を前記クラウドインフラストラクチャシステムによって作成するステップを含み、前記リソースアセンブリの第２の組における各リソースアセンブリは、前記第２のサービスを提供するための１つ以上のリソースを含み、前記リソースアセンブリの第２の組の作成は、前記顧客から前記サブスクリプションオーダー情報を受取る前に実行され、前記方法はさらに、
前記顧客に前記第２のサービスを提供するために、前記１つ以上の演算装置のうちの任意の演算装置によって、前記サブスクリプションオーダー情報に基づいて、前記リソースアセンブリの第２の組から第２のリソースアセンブリを選択するステップと、
前記第２のリソースアセンブリを前記顧客特有の構成で構成することによって前記顧客に前記第２のサービスを提供するために、前記１つ以上の演算装置のうちの任意の演算装置によって、第２の顧客特有リソースアセンブリを作成するステップと、
前記第１の顧客特有リソースアセンブリおよび前記第２の顧客特有リソースアセンブリに関連付けられた１つ以上のファイアウォールを調整することによって、前記第１の顧客特有リソースアセンブリと前記第２の顧客特有リソースアセンブリとの間のデータフローを可能にするために、前記１つ以上の演算装置のうちの任意の演算装置によって、前記第１の顧客特有リソースアセンブリと前記第２の顧客特有リソースアセンブリとを統合するステップとを含む、請求項１に記載の方法。
【請求項３】
前記リソースアセンブリを前記顧客特有の構成で構成する前記ステップは、前記顧客特有の構成に含まれる情報で前記リソースアセンブリをカスタマイズするステップを含む、請求項１または２に記載の方法。
【請求項４】
前記第１のサービスはデータベースサービスであり、前記第１の顧客特有リソースアセンブリを作成する前記ステップはさらに、
バーチャル・アセンブリ・ビルダを用いて、１つ以上の仮想マシン（ＶＭ）を備えた前記データベースサービスのために特定的にプロビジョニングされた前記第１のリソースアセンブリを作成するステップと、
並行なバーチャル・アセンブリ・ビルダの動作を可能にするために、前記バーチャル・アセンブリ・ビルダに関連付けられるバーチャル・アセンブリ・ビルダ・ホームを作成するステップと、
デプロイメント・プラン・ファイルを作成するステップとを含み、前記デプロイメント・プラン・ファイルは、前記顧客特有の構成を前記１つ以上のＶＭにインジェクションするための構成情報を含む、請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記リソースアセンブリの第１の組における各リソースアセンブリは、マルチテナントサービスのために構成される、請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記第１のサービスはデータベースサービスであり、
複数のスキーマが前記第１のリソースアセンブリに含まれ、前記複数のスキーマは、第１の顧客に関連付けられた第１のスキーマと、前記第１の顧客とは異なる第２の顧客に関連付けられた第２のスキーマとを含む、請求項５に記載の方法。
【請求項７】
前記リソースアセンブリの第１の組における各リソースアセンブリは、シングルテナントサービスのために構成される、請求項１から４のいずれか１項に記載の方法。
【請求項８】
前記サブスクリプションオーダー情報は、サービスインスタンスサイズを含み、前記方法はさらに、
前記１つ以上の演算装置のうちの任意の演算装置によって、前記サービスインスタンスサイズに基づいて、前記リソースアセンブリの第１の組から前記顧客のために用いられるべきリソースアセンブリの数を決定するステップを含む、請求項１から７のいずれか１項に記載の方法。
【請求項９】
前記クラウドインフラストラクチャシステムによって、前記第１のサービスのためにプロビジョニングされた前記リソースアセンブリの第１の組を追跡し続けるためにレジストリを格納するステップを含み、前記レジストリはさらに、顧客特有にされた１つ以上のリソースアセンブリを追跡するように構成される、請求項１から８のいずれか１項に記載の方法。
【請求項１０】
システムであって、
一組のクラウドサービスを提供するように構成可能な１つ以上の演算装置と、
クラウドインフラストラクチャシステムによって提供される複数のクラウドサービスのうちの第１のサービスのための１つ以上のリソースアセンブリの第１の組とを含み、前記リソースアセンブリの第１の組における各リソースアセンブリは、前記第１のサービスを提供するための１つ以上のリソースを含み、前記システムはさらに、
顧客からのサブスクリプションオーダー情報を格納するように構成可能なメモリを含み、前記サブスクリプションオーダー情報は、顧客特有の構成および前記第１のサービスのためのオーダー要求を含み、
前記１つ以上の演算装置のうちの任意の演算装置は、
前記顧客に前記第１のサービスを提供するために、前記サブスクリプションオーダー情報に基づいて、前記リソースアセンブリの第１の組から第１のリソースアセンブリを選択し、
前記第１のリソースアセンブリを前記顧客特有の構成で構成することによって前記顧客に前記第１のサービスを提供するために、第１の顧客特有リソースアセンブリを作成するように構成可能である、システム。
【請求項１１】
前記サブスクリプションオーダー情報は、前記クラウドインフラストラクチャシステムによって提供される前記複数のクラウドサービスに第２のサービスを要求し、前記システムはさらに、
前記クラウドインフラストラクチャシステムによって提供される前記複数のクラウドサービスから第２のサービスのためのリソースアセンブリの第２の組を作成するように構成され、前記リソースアセンブリの第２の組における各リソースアセンブリは、前記第２のサービスを提供するための１つ以上のリソースを含み、前記リソースアセンブリの第２の組の作成は、前記顧客から前記サブスクリプションオーダー情報を受取る前に実行され、前記システムはさらに、
前記顧客に前記第２のサービスを提供するために、前記サブスクリプションオーダー情報に基づいて、前記リソースアセンブリの第２の組から第２のリソースアセンブリを選択し、
前記第２のリソースアセンブリを前記顧客特有の構成で構成することによって前記顧客に前記第２のサービスを提供するために、第２の顧客特有リソースアセンブリを作成し、
前記第１の顧客特有リソースアセンブリおよび前記第２の顧客特有リソースアセンブリに関連付けられた１つ以上のファイアウォールを調整することによって、前記第１の顧客特有リソースアセンブリと前記第２の顧客特有リソースアセンブリとの間のデータフローを可能にするために、前記第１の顧客特有リソースアセンブリと前記第２の顧客特有リソースアセンブリとを統合するように構成される、請求項１０に記載のシステム。
【請求項１２】
前記サブスクリプションオーダー情報はサービスインスタンスサイズを含み、さらに、
前記サービスインスタンスサイズに基づいて、前記リソースアセンブリの第１の組から、前記顧客のために用いられるべきリソースアセンブリの数を決定するように構成される、請求項１０または１１に記載のシステム。
【請求項１３】
前記第１のサービスのためにプロビジョニングされた前記リソースアセンブリの第１の組を追跡し続けるためにレジストリを格納するようにさらに構成され、前記レジストリはさらに、顧客特有にされた１つ以上のリソースアセンブリを追跡するように構成される、請求項１０から１２のいずれか１項に記載のシステム。
【請求項１４】
一組のクラウドサービスを提供するように構成されたクラウドインフラストラクチャシステムの１つ以上の演算装置によって実行可能なコンピュータ実行可能命令を格納するコンピュータ読取可能メモリであって、前記コンピュータ実行可能命令は、１つ以上の演算装置によって実行されると、前記クラウドインフラストラクチャシステムに、
前記クラウドインフラストラクチャシステムによって提供される複数のクラウドサービスから第１のサービスのための１つ以上のリソースアセンブリの第１の組を作成させ、前記リソースアセンブリの第１の組における各リソースアセンブリは、前記第１のサービスを提供するための１つ以上のリソースを含み、さらに、
作成後、顧客特有の構成および前記第１のサービスのためのオーダー要求を含むサブスクリプションオーダー情報を顧客から受取らせ、
前記顧客に前記第１のサービスを提供するために、前記サブスクリプションオーダー情報に基づいて、前記リソースアセンブリの第１の組から第１のリソースアセンブリを選択させ、
前記第１のリソースアセンブリを前記顧客特有の構成で構成することによって前記顧客に前記第１のサービスを提供するために第１の顧客特有リソースアセンブリを作成させる、コンピュータ読取可能メモリ。
【請求項１５】
前記サブスクリプションオーダー情報は、前記クラウドインフラストラクチャシステムによって提供される前記複数のクラウドサービスに第２のサービスを要求し、前記コンピュータ読取可能メモリはさらに、
前記クラウドインフラストラクチャシステムによって提供される前記複数のクラウドサービスから第２のサービスのためのリソースアセンブリの第２の組を作成する命令を含み、前記リソースアセンブリの第２の組における各リソースアセンブリは、前記第２のサービスを提供するための１つ以上のリソースを含み、前記リソースアセンブリの第２の組の作成は、前記顧客から前記サブスクリプションオーダー情報を受取る前に実行され、前記コンピュータ読取可能メモリはさらに、
前記顧客に前記第２のサービスを提供するために、前記サブスクリプションオーダー情報に基づいて、前記リソースアセンブリの第２の組から第２のリソースアセンブリを選択する命令と、
前記第２のリソースアセンブリを前記顧客特有の構成で構成することによって前記顧客に前記第２のサービスを提供するために、第２の顧客特有リソースアセンブリを作成する命令と、
前記第１の顧客特有リソースアセンブリおよび前記第２の顧客特有リソースアセンブリに関連付けられた１つ以上のファイアウォールを調整することによって、前記第１の顧客特有リソースアセンブリと前記第２の顧客特有リソースアセンブリとの間のデータフローを可能にするために、前記第１の顧客特有リソースアセンブリと前記第２の顧客特有リソースアセンブリとを統合する命令とを含む、請求項１４に記載のコンピュータ読取可能メモリ。
【請求項１６】
前記第１のサービスのためにプロビジョニングされた前記リソースアセンブリの第１の組を追跡し続けるためにレジストリを格納する命令をさらに含み、前記レジストリはさらに、顧客特有にされた１つ以上のリソースアセンブリを追跡するように構成される、請求項１４または１５に記載のコンピュータ読取可能メモリ。
【請求項１７】
一組のクラウドサービスを提供するためのシステムであって、
クラウドインフラストラクチャシステムによって提供される複数のクラウドサービスのうちの第１のサービスのために１つ以上のリソースアセンブリの第１の組を維持するための手段を含み、前記リソースアセンブリの第１の組における各リソースアセンブリは、前記第１のサービスを提供するための１つ以上のリソースを含み、前記システムはさらに、
顧客からのサブスクリプションオーダー情報を格納するための手段を含み、前記サブスクリプションオーダー情報は、顧客特有の構成および前記第１のサービスのためのオーダー要求を含み、前記システムはさらに、
前記顧客に前記第１のサービスを提供するために、前記サブスクリプションオーダー情報に基づいて、前記リソースアセンブリの第１の組から第１のリソースアセンブリを選択するための手段と、
前記第１のリソースアセンブリを前記顧客特有の構成で構成することによって前記顧客に前記第１のサービスを提供するために、第１の顧客特有リソースアセンブリを作成するための手段とを含む、システム。
【請求項１８】
前記サブスクリプションオーダー情報は、前記クラウドインフラストラクチャシステムによって提供される前記複数のクラウドサービスに第２のサービスを要求し、前記システムはさらに、
前記クラウドインフラストラクチャシステムによって提供される前記複数のクラウドサービスのうちの第２のサービスのために、リソースアセンブリの第２の組を作成するための手段を含み、前記リソースアセンブリの第２の組における各リソースアセンブリは、前記第２のサービスを提供するための１つ以上のリソースを含み、前記リソースアセンブリの第２の組の作成は、前記顧客から前記サブスクリプションオーダー情報を受取る前に実行され、前記システムはさらに、
前記顧客に前記第２のサービスを提供するために、前記サブスクリプションオーダー情報に基づいて、前記リソースアセンブリの第２の組から第２のリソースアセンブリを選択するための手段と、
前記第２のリソースアセンブリを前記顧客特有の構成で構成することによって前記顧客に前記第２のサービスを提供するために、第２の顧客特有リソースアセンブリを作成するための手段と、
前記第１の顧客特有リソースアセンブリおよび前記第２の顧客特有リソースアセンブリに関連付けられた１つ以上のファイアウォールを調整することによって、前記第１の顧客特有リソースアセンブリと前記第２の顧客特有リソースアセンブリとの間のデータフローを可能にするために、前記第１の顧客特有リソースアセンブリと前記第２の顧客特有リソースアセンブリとを統合するための手段とを含む、請求項１７に記載のシステム。
【請求項１９】
前記サブスクリプションオーダー情報はサービスインスタンスサイズを含み、前記システムはさらに、
前記サービスインスタンスサイズに基づいて、前記リソースアセンブリの第１の組から、前記顧客のために用いられるべきリソースアセンブリの数を決定するための手段を含む、請求項１７または１８に記載のシステム。
【請求項２０】
前記第１のサービスのためにプロビジョニングされた前記リソースアセンブリの第１の組を追跡し続けるためにレジストリを格納するようにさらに構成され、前記レジストリはさらに、顧客特有にされた１つ以上のリソースアセンブリを追跡するように構成される、請求項１７から１９のいずれか１項に記載のシステム。
【請求項２１】
一組のクラウドサービスを提供するように構成されたクラウドインフラストラクチャシステムのためのコンピュータ読取可能プログラムであって、前記クラウドインフラストラクチャシステムに、
前記クラウドインフラストラクチャシステムによって提供される複数のクラウドサービスから第１のサービスのための１つ以上のリソースアセンブリの第１の組を作成させ、前記リソースアセンブリの第１の組における各リソースアセンブリは、前記第１のサービスを提供するための１つ以上のリソースを含み、さらに、
作成後、顧客特有の構成および前記第１のサービスのためのオーダー要求を含むサブスクリプションオーダー情報を顧客から受取らせ、
前記顧客に前記第１のサービスを提供するために、前記サブスクリプションオーダー情報に基づいて、前記リソースアセンブリの第１の組から第１のリソースアセンブリを選択させ、
前記第１のリソースアセンブリを前記顧客特有の構成で構成することによって前記顧客に前記第１のサービスを提供するために、第１の顧客特有リソースアセンブリを作成させる、コンピュータ読取可能プログラム。
【請求項２２】
前記サブスクリプションオーダー情報は、前記クラウドインフラストラクチャシステムによって提供される前記複数のクラウドサービスに第２のサービスを要求し、前記コンピュータ読取可能プログラムはさらに前記クラウドインフラストラクチャシステムに、
前記クラウドインフラストラクチャシステムによって提供される前記複数のクラウドサービスから第２のサービスのためのリソースアセンブリの第２の組を作成させ、前記リソースアセンブリの第２の組における各リソースアセンブリは、前記第２のサービスを提供するための１つ以上のリソースを含み、前記リソースアセンブリの第２の組の作成は、前記顧客から前記サブスクリプションオーダー情報を受取る前に実行され、さらに、
前記顧客に前記第２のサービスを提供するために、前記サブスクリプションオーダー情報に基づいて、前記リソースアセンブリの第２の組から第２のリソースアセンブリを選択させ、
前記第２のリソースアセンブリを前記顧客特有の構成で構成することによって前記顧客に前記第２のサービスを提供するために、第２の顧客特有リソースアセンブリを作成させ、
前記第１の顧客特有リソースアセンブリおよび前記第２の顧客特有リソースアセンブリに関連付けられた１つ以上のファイアウォールを調整することによって、前記第１の顧客特有リソースアセンブリと前記第２の顧客特有リソースアセンブリとの間のデータフローを可能にするために、前記第１の顧客特有リソースアセンブリと前記第２の顧客特有リソースアセンブリとを統合させる、請求項２１に記載のコンピュータ読取可能プログラム。
【請求項２３】
前記コンピュータ読取可能メモリはさらに、前記クラウドインフラストラクチャシステムに、
前記第１のサービスのためにプロビジョニングされた前記リソースアセンブリの第１の組を追跡し続けるためにレジストリを格納させ、前記レジストリはさらに、顧客特有にされた１つ以上のリソースアセンブリを追跡するように構成される、請求項２１または２２に記載のコンピュータ読取可能メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、以下の出願の利益および優先権を主張するものであって、その内容全体があらゆる目的で引用によりこの明細書中に援用されている。
【０００２】
（１）「テナント自動化システム」と題される２０１２年９月７日に出願された米国仮出願番号第６１／６９８，４１３号；
（２）「サービス開発インフラストラクチャ」と題される２０１２年９月７日に出願された米国仮出願番号第６１／６９８，４５９号；
（３）「クラウドインフラストラクチャ」と題される２０１３年３月１４日に出願された米国仮出願番号第６１／７８５，２９９号；
（４）「ポッドプロビジョニングおよびサービスプロビジョニングの分離」と題される２０１３年３月１５日に出願された米国仮出願番号第６１／８０１，１６０号；
（５）「クラウドインフラストラクチャ」と題される２０１３年３月１５日に出願された米国仮出願番号第６１／７９４，４２７号；および
（６）「ポッドプロビジョニングおよびサービスプロビジョニングの分離」と題される２０１３年３月１５日に出願された米国本出願番号第１３／８４４，０１８号。
【背景技術】
【０００３】
背景
本開示は、コンピュータシステムおよびソフトウェアに関し、より特定的には、クラウド環境でのサービスのプロビジョニング（provision）を容易にして自動化するための技術に関する。
【０００４】
クラウドコンピューティングは、構成可能な演算リソース（例えばネットワーク、サーバ、ストレージ、アプリケーションおよびサービス）の共有プールへの便利なオンデマンドのネットワークアクセスを可能にするためのモデルである。クラウド（またはネットワーク）を介して提供またはアクセスされるサービスは、クラウドサービスと称される。サブスクライブを行う顧客がクラウドサービスを利用できるようにするためにクラウドサービスプロバイダが行う必要がある処理は数多くある。その複雑さのために、この処理の多くは依然として手動でなされている。例えば、このようなクラウドサービスを提供するためのプロビジョニングリソースは、非常に労働集約型のプロセスであり得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要
この概要は、主張された主題の重要な特徴または本質的な特徴を特定するよう意図されたものではなく、主張された主題の範囲を決定するために単独で用いられるよう意図されたものでもない。主題は、この特許の明細書全体、いずれかの図面または全ての図面および各々の請求項のうちの適切な部分を参照することによって理解されるはずである。
【０００６】
いくつかの実施例に従うと、ＰＯＤプロビジョニングおよびサービスプロビジョニングのための方法が開示される。当該方法は、クラウドインフラストラクチャシステムによって提供される一組のクラウドサービスからサービスを特定する、顧客からのサブスクリプションオーダー情報をクラウドインフラストラクチャシステムによって格納するステップを含み得る。クラウドインフラストラクチャシステムは１つ以上の演算装置を含む。サブスクリプションオーダー情報は顧客特有の構成を含む。加えて、当該方法は、１つ以上の演算装置のうちの任意の演算装置によって、サブスクリプションオーダー情報に関連付けられたサービスを決定するステップを含み得る。さらに、当該方法は、予めプロビジョニングされた匿名のデプロイメントをサブスクリプションオーダー情報にマッピングするステップを含み得る。予めプロビジョニングされた匿名のデプロイメントは、決定されたサービスのために特定的に予めプロビジョニングされる。さらに、当該方法は、予めプロビジョニングされた匿名のデプロイメントを顧客特有の構成で構成することによって、特定的に顧客のためのサービスインスタンスを１つ以上の演算装置のうちの任意の演算装置によって作成するステップを含み得る。
【０００７】
別の実施例に従うと、システムは、一組のクラウドサービスを提供するように構成可能な１つ以上の演算装置と、一組のクラウドサービスからサービスを特定する、顧客からのサブスクリプションオーダー情報を格納するように構成可能なメモリとを含む。サブスクリプションオーダー情報は顧客特有の構成を含む。１つ以上の演算装置のうちの任意の演算装置は、サブスクリプションオーダー情報に関連付けられたサービスを決定し、予めプロビジョニングされた匿名のデプロイメントをサブスクリプションオーダー情報にマッピングするように構成可能である。予めプロビジョニングされた匿名のデプロイメントは、決定されたサービスのために特定的に予めプロビジョニングされる。当該任意の演算装置はさらに、予めプロビジョニングされた匿名のデプロイメントを顧客特有の構成で構成することによって、特定的に顧客のためのサービスインスタンスを作成するように構成可能である。
【０００８】
別の実施例に従うと、一組のクラウドサービスを提供するように構成されたクラウドインフラストラクチャシステムのためのコンピュータ実行可能命令を格納する１つ以上のコンピュータ読取可能媒体が提供される。コンピュータ実行可能命令は、実行されると、クラウドインフラストラクチャシステムにおける１つ以上の演算装置に：一組のクラウドサービスからサービスを特定する、顧客からのサブスクリプションオーダー情報を格納させ、サブスクリプションオーダー情報は顧客特有の構成を含み；さらに、サブスクリプションオーダー情報に関連付けられたサービスを決定させ；予めプロビジョニングされた匿名のデプロイメントをサブスクリプションオーダー情報にマッピングさせ、予めプロビジョニングされた匿名のデプロイメントは決定されたサービスのために特定的に予めプロビジョニングされ；さらに、予めプロビジョニングされた匿名のデプロイメントを顧客特有の構成で構成することによって、特定的に顧客のためのサービスインスタンスを作成させる。
【０００９】
別の実施例に従うと、一組のクラウドサービスを提供するためのシステムは、クラウドインフラストラクチャシステムによって提供される複数のクラウドサービスのうちの第１のサービスのために、１つ以上のリソースアセンブリの第１の組を維持するための手段を含み、リソースアセンブリの第１の組における各リソースアセンブリは、第１のサービスを提供するための１つ以上のリソースを含み；当該システムはさらに、顧客からのサブスクリプションオーダー情報を格納するための手段を含み、サブスクリプションオーダー情報は、顧客特有の構成および第１のサービスのためのオーダー要求を含み、当該システムはさらに、顧客に第１のサービスを提供するために、サブスクリプションオーダー情報に基づいて、リソースアセンブリの第１の組から第１のリソースアセンブリを選択するための手段と、第１のリソースアセンブリを顧客特有の構成で構成することによって顧客に第１のサービスを提供するために第１の顧客特有リソースアセンブリを作成するための手段とを含む。
【００１０】
別の実施例に従うと、一組のクラウドサービスを提供するように構成されたコンピュータ読取可能プログラムまたはクラウドインフラストラクチャシステムが提供される。コンピュータ実行可能プログラムは、クラウドインフラストラクチャシステムに：クラウドインフラストラクチャシステムによって提供される複数のクラウドサービスから第１のサービスのための１つ以上のリソースアセンブリの第１の組を作成させ、リソースアセンブリの第１の組における各リソースアセンブリは、第１のサービスを提供するための１つ以上のリソースを含み；さらに、作成後、顧客からのサブスクリプションオーダー情報を受取らせ、サブスクリプションオーダー情報は、顧客特有の構成および第１のサービスのためのオーダー要求を含み；さらに、顧客に第１のサービスを提供するために、サブスクリプションオーダー情報に基づいて、リソースアセンブリの第１の組から第１のリソースアセンブリを選択させ；第１のリソースアセンブリを顧客特有の構成で構成することによって顧客に第１のサービスを提供するために、第１の顧客特有リソースアセンブリを作成させる。
【００１１】
図面の簡単な説明
本発明の例示的な実施例について、添付の図面を参照して以下で詳細に説明する。
【図面の簡単な説明】
【００１２】
【図１Ａ】本発明の一実施例に係るクラウドインフラストラクチャシステムの論理図である。
【図１Ｂ】本発明の実施例に係るクラウドインフラストラクチャシステムを実現するために使用され得るハードウェア／ソフトウェアスタックの簡略ブロック図である。
【図２】図１Ａに示されるクラウドインフラストラクチャシステムを実現するためのシステム環境の簡略ブロック図である。
【図３Ａ】本発明の実施例に係るクラウドインフラストラクチャシステムにおけるＴＡＳモジュールによって実行され得る処理を示す簡略化されたフローチャート３００を示す。
【図３Ｂ】本発明の実施例に係るクラウドインフラストラクチャシステムにおけるＴＡＳモジュールにおける１つ以上のサブモジュールの簡略化された高レベル図を示す。
【図４】本発明の実施例に係るＴＡＳコンポーネントの例示的な分散デプロイメントを示す。
【図５】本発明の実施例に係るクラウドインフラストラクチャシステムにおける１つ以上のモジュールとのＳＤＩモジュールのインタラクションを示す簡略ブロック図である。
【図６】本発明の実施例に係るＳＤＩモジュールのサブモジュールの簡略化された高レベル図を示す。
【図７Ａ】本発明の実施例に係るクラウドインフラストラクチャシステムにおけるＳＤＩコンポーネントによって実行され得る処理を示す簡略化されたフローチャートを示す。
【図７Ｂ】本発明の実施例に係るＮｕｖｉａｑシステム７１０および他のクラウドインフラストラクチャコンポーネントとのその関係の高レベルアーキテクチャを示す簡略ブロック図を示す。
【図７Ｃ】本発明の実施例に係るＮｕｖｉａｑシステムを使用するプロビジョニングプロセスのステップを示す例示的なシーケンス図を示す。
【図７Ｄ】本発明の実施例に係るＮｕｖｉａｑシステムを使用するデプロイメントプロセスのステップを示す例示的なシーケンス図を示す。
【図７Ｅ】本発明の実施例に係るデータベースサービスのためにプロビジョニングされたデータベースインスタンスの例を示す。
【図８Ａ】本発明の実施例に係るクラウドインフラストラクチャシステムにおけるＳＤＩモジュールによって実行され得る処理を示す簡略化されたフローチャートを示す。
【図８Ｂ】本発明の実施例に係るクラウドインフラストラクチャシステムにおけるＳＤＩモジュールによって実行され得る処理を示す簡略化されたフローチャートを示す。
【図９】いくつかの実施例に係るプロビジョニング要求フローを示す。
【図１０】顧客のためにＪａｖａ（登録商標）サービスおよびデータベースサービスをともにプロビジョニングするエンド・ツー・エンドフローを示す。
【図１１Ａ】一実施例に係るＪａｖａクラウドサービスインスタンスのプロビジョニングを示す。
【図１１Ｂ】一実施例に係るＪａｖａクラウドサービスインスタンスのプロビジョニングおよびフュージョンアプリケーション関連付けを示す。
【図１１Ｃ】本発明のいくつかの実施例に係るＰａａＳおよびＳａａＳサービス関連付けプロセスを示す。
【図１２】いくつかの実施例に係るデータベースクラウドサービスの高レベル論理図を示す。
【図１３】いくつかの実施例に係るマルチテナントデータベースサービスのためのサービスプロビジョングフローを示す。
【図１４】本発明の実施例に従って用いられ得る演算システム１０００の簡略ブロック図である。
【図１５】本発明の実施例に係る予めプロビジョニングされたポッド１５００の物理的アーキテクチャを示す。
【図１６】本発明の実施例に係るサービスインスタンス作成のための予めプロビジョニングされたポッドの顧客特有のカスタマイズ（顧客パーソナリティの割り当てと称されることもある）の例を示す。
【図１７】一実施例に係る、予めプロビジョニングされたポッドを用いて、パーソナライズされたＪＡＶＡサービスポッドまたはサービスインスタンスおよびパーソナライズされたデータベースサービスポッドまたはインスタンスを作成するための方法の例を示す。
【図１８】本発明の実施例に係る電子デバイス１８００の簡略ブロック図である。
【発明を実施するための形態】
【００１３】
詳細な説明
以下の説明では、本発明の実施例が十分に理解されるようにするために、説明の目的で具体的詳細を記載する。しかし、これらの具体的詳細がなくてもさまざまな実施例を実施できることは明らかであろう。図面および説明は、限定的であるよう意図されるものではない。
【００１４】
本発明の特定の実施例は、クラウドインフラストラクチャシステムによって提供されるサービスのプロビジョニング、管理および追跡を自動化するための技術を提供する。
【００１５】
特定の実施例では、クラウドインフラストラクチャシステムは、セルフサービスの、サブスクリプションベースの、弾性的にスケーラブルな、信頼性のある、高可用性の、安全な態様で顧客に与えられる一連のアプリケーション、ミドルウェアおよびデータベースサービス提供品を含み得る。このようなクラウドインフラストラクチャシステムの一例は、本譲受人によって提供されるオラクルパブリッククラウドである。
【００１６】
クラウドインフラストラクチャシステムは、クラウドインフラストラクチャシステムにおいてサービスおよびリソースについての顧客のサブスクリプションをプロビジョニング、管理および追跡する機能、クラウドインフラストラクチャシステムにおいてサービスを利用する顧客に予測可能な作業費用を提供する機能、クラウドインフラストラクチャシステムにおいて顧客のデータのロバストなアイデンティティドメインの分離および保護を提供する機能、クラウドインフラストラクチャシステムの設計の透過的なアーキテクチャおよび制御を顧客に提供する機能、データ保護の保証とデータプライバシ基準および規制の順守とを顧客に提供する機能、クラウドインフラストラクチャシステムにおいてサービスを構築およびデプロイするための統合された開発経験を顧客に提供する機能、ならびにクラウドインフラストラクチャシステムにおいてビジネスソフトウェア、ミドルウェア、データベースおよびインフラストラクチャサービスの間のシームレスな統合を顧客に提供する機能を含むがこれらに限定されない多くの機能を提供することができる。
【００１７】
特定の実施例では、クラウドインフラストラクチャシステムによって提供されるサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホスト型オフィススイートおよび文書コラボレーションサービス、データベース処理、管理された技術サポートサービスなどの、クラウドインフラストラクチャシステムのユーザがオンデマンドで利用可能な多数のサービスを含み得る。クラウドインフラストラクチャシステムによって提供されるサービスは、そのユーザのニーズを満たすように動的にスケーリング可能である。クラウドインフラストラクチャシステムによって提供されるサービスの具体的なインスタンス化は、本明細書ではサービスインスタンスと称される。一般に、クラウドサービスプロバイダのシステムからインターネットなどの通信ネットワークを介してユーザが利用可能なサービスはいずれも、クラウドサービスと称される。一般に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なっている。例えば、クラウドサービスプロバイダのシステムは、アプリケーションをホストし得て、ユーザは、インターネットなどの通信ネットワークを介してオンデマンドで当該アプリケーションをオーダーし、使用し得る。
【００１８】
コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、クラウドベンダによってユーザに提供されるかまたはそうでなければ当該技術分野において公知のストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーションまたは他のサービスへの保護されたコンピュータネットワークアクセスを含む。例えば、サービスは、インターネットを介したクラウド上のリモートストレージへの、パスワードによって保護されたアクセスを含んでいてもよい。別の例として、サービスは、ネットワーク化された開発者による私的使用のためのウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含んでいてもよい。別の例として、サービスは、クラウドベンダのウェブサイト上でホストされる電子メールソフトウェアアプリケーションへのアクセスを含んでいてもよい。
【００１９】
図１Ａは、本発明の一実施例に係るクラウドインフラストラクチャシステムの論理図である。クラウドインフラストラクチャシステム１００は、クラウドまたはネットワーク化された環境を介してさまざまなサービスを提供し得る。これらのサービスは、ソフトウェア・アズ・ア・サービス（Software as a Service：ＳａａＳ）カテゴリ、プラットフォーム・アズ・ア・サービス（Platform as a Service：ＰａａＳ）カテゴリ、インフラストラクチャ・アズ・ア・サービス（Infrastructure as a Service：ＩａａＳ）カテゴリ、またはハイブリッドサービスを含むサービスの他のカテゴリの下で提供される１つ以上のサービスを含んでいてもよい。顧客は、サブスクリプションオーダーを介して、クラウドインフラストラクチャシステム１００によって提供される１つ以上のサービスをオーダーし得る。次いで、クラウドインフラストラクチャシステム１００は、顧客のサブスクリプションオーダーにおけるサービスを提供するために処理を実行する。
【００２０】
クラウドインフラストラクチャシステム１００は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。例えば、サービスは、クラウドインフラストラクチャシステム１００が（例えばオラクルによって所有される）クラウドサービスを販売する組織によって所有され、サービスが一般的な公営企業またはさまざまな産業企業が利用可能であるパブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム１００が単一の組織のために単独で運営され、当該組織内の１つ以上のエンティティにサービスを提供することができるプライベートクラウドモデルの下で提供されてもよい。また、クラウドサービスは、クラウドインフラストラクチャシステム１００およびシステム１００によって提供されるサービスが関連のコミュニティの中のいくつかの組織によって共有されるコミュニティクラウドモデルの下で提供されてもよい。また、クラウドサービスは、２つ以上の異なるモデルの組み合わせであるハイブリッドクラウドモデルの下で提供されてもよい。
【００２１】
図１Ａに示されるように、クラウドインフラストラクチャシステム１００は、クラウドインフラストラクチャシステム１００によって提供されるサービスのプロビジョニングを可能にする、連携して動作する複数のコンポーネントを備えていてもよい。図１Ａに示される実施例では、クラウドインフラストラクチャシステム１００は、ＳａａＳプラットフォーム１０２と、ＰａａＳプラットフォーム１０４と、ＩａａＳプラットフォーム１１０と、インフラストラクチャリソース１０６と、クラウド管理機能１０８とを含む。これらのコンポーネントは、ハードウェアまたはソフトウェアまたはそれらの組み合わせで実現されてもよい。
【００２２】
ＳａａＳプラットフォーム１０２は、ＳａａＳカテゴリに入るクラウドサービスを提供するように構成される。例えば、ＳａａＳプラットフォーム１０２は、統合された開発およびデプロイメントプラットフォーム上で一連のオンデマンドのアプリケーションを構築および供給するための機能を提供し得る。ＳａａＳプラットフォーム１０２は、ＳａａＳサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。ＳａａＳプラットフォーム１０２によって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステム１００上で実行されるアプリケーションを利用することができる。顧客は、顧客が別個のライセンスおよびサポートを購入する必要なくアプリケーションサービスを取得することができる。
【００２３】
さまざまな異なるＳａａＳサービスが提供され得る。例としては、大きな組織に販売実績管理、企業統合およびビジネスの柔軟性などのためのソリューションを提供するサービスが挙げられるが、これに限定されるものではない。一実施例では、ＳａａＳサービスは、顧客関係管理（Customer Relationship Management：ＣＲＭ）サービス１１０（例えばオラクルクラウドによって提供されるフュージョンＣＲＭサービス）、人材管理（Human Capital Management：ＨＣＭ）／才能管理サービス１１２などを含んでいてもよい。ＣＲＭサービス１１０は、顧客への販売活動サイクルの報告および管理に向けられるサービスなどを含んでいてもよい。ＨＣＭ／才能サービス１１２は、顧客へのグローバルな労働力ライフサイクル管理および才能管理サービスの提供に向けられるサービスを含んでいてもよい。
【００２４】
標準化された、共有の、弾性的にスケーラブルなアプリケーション開発およびデプロイメントプラットフォームにおけるＰａａＳプラットフォーム１０４によって、さまざまな異なるＰａａＳサービスが提供され得る。ＰａａＳサービスの例としては、共有される共通のアーキテクチャ上で既存のアプリケーションを（オラクルなどの）組織が集約することを可能にするサービス、および、プラットフォームによって提供される共有のサービスを活用する新たなアプリケーションを構築する機能が挙げられ得るが、これらに限定されるものではない。ＰａａＳプラットフォーム１０４は、ＰａａＳサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。顧客は、顧客が別個のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステム１００によって提供されるＰａａＳサービスを取得することができる。ＰａａＳサービスの例としては、オラクルＪａｖａ（登録商標）クラウドサービス（Java Cloud Service：ＪＣＳ）、オラクルデータベースクラウドサービス（Oracle Database Cloud Service：ＤＢＣＳ）などが挙げられるが、これらに限定されるものではない。
【００２５】
ＰａａＳプラットフォーム１０４によって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステム１００によってサポートされるプログラミング言語およびツールを利用することができ、デプロイされたサービスを制御することもできる。いくつかの実施例では、クラウドインフラストラクチャシステム１００によって提供されるＰａａＳサービスは、データベースクラウドサービス１１４と、ミドルウェアクラウドサービス（例えばオラクルフュージョンミドルウェアサービス）１１６と、Ｊａｖａクラウドサービス１１７とを含んでいてもよい。一実施例では、データベースクラウドサービス１１４は、組織がデータベースリソースをプールし、データベースクラウドの形態でデータベース・アズ・ア・サービスを顧客に提供することを可能にする共有のサービスデプロイメントモデルをサポートし得て、ミドルウェアクラウドサービス１１６は、さまざまなビジネスアプリケーションを開発およびデプロイするために顧客にプラットフォームを提供し、Ｊａｖａクラウドサービス１１７は、クラウドインフラストラクチャシステム１００においてＪａｖａアプリケーションをデプロイするために顧客にプラットフォームを提供する。図１Ａに示されるＳａａＳプラットフォーム１０２およびＰａａＳプラットフォーム１０４におけるコンポーネントは、単に例示の目的で示されており、本発明の実施例の範囲を限定することを意図したものではない。代替的な実施例では、ＳａａＳプラットフォーム１０２およびＰａａＳプラットフォーム１０４は、クラウドインフラストラクチャシステム１００の顧客に追加のサービスを提供するための追加のコンポーネントを含んでいてもよい。
【００２６】
ＩａａＳプラットフォーム１１０によってさまざまな異なるＩａａＳサービスが提供され得る。ＩａａＳサービスは、ＳａａＳプラットフォームおよびＰａａＳプラットフォームによって提供されるサービスを利用する顧客のために、ストレージ、ネットワークおよび他の基礎的な演算リソースなどの基本的な演算リソースの管理および制御を容易にする。
【００２７】
特定の実施例では、クラウドインフラストラクチャシステム１００は、クラウドインフラストラクチャシステム１００の顧客にさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース１０６を含む。一実施例では、インフラストラクチャリソース１０６は、ＰａａＳプラットフォームおよびＳａａＳプラットフォームによって提供されるサービスを実行するために、サーバ、ストレージおよびネットワーキングリソースなどのハードウェアの予め統合された、最適化された組み合わせを含む。
【００２８】
特定の実施例では、クラウド管理機能１０８は、クラウドインフラストラクチャシステム１００においてクラウドサービス（例えばＳａａＳ、ＰａａＳ、ＩａａＳサービス）の包括的な管理を提供する。一実施例では、クラウド管理機能１０８は、クラウドインフラストラクチャシステム１００によって受取られた顧客のサブスクリプションをプロビジョニング、管理および追跡するための機能などを含む。
【００２９】
図１Ｂは、本発明の実施例に係るクラウドインフラストラクチャシステム１００を実現するために使用され得るハードウェア／ソフトウェアスタックの簡略ブロック図である。図１Ｂに示される実現例は、図１Ｂに示されるもの以外の他のコンポーネントを有していてもよいということが理解されるべきである。さらに、図１Ｂに示される実施例は、本発明の実施例を組込むことができるクラウドインフラストラクチャシステムの一例に過ぎない。いくつかの他の実施例では、クラウドインフラストラクチャシステム１００は、図１Ｂに示されるものよりも多くのまたは少ないコンポーネントを有していてもよく、２つ以上のコンポーネントを組み合わせてもよく、またはコンポーネントの異なる構成もしくは配置を有していてもよい。特定の実施例では、最適な性能を提供する垂直統合を提供するようにハードウェアおよびソフトウェアコンポーネントが積層される。
【００３０】
さまざまなタイプのユーザがクラウドインフラストラクチャシステム１００と対話し得る。これらのユーザは、例えば、デスクトップ、モバイル機器、タブレットなどのさまざまなクライアント装置を使用してクラウドインフラストラクチャシステム１００と対話し得るエンドユーザ１５０を含んでいてもよい。また、ユーザは、さまざまな統合された開発環境（integrated development environment：ＩＤＥ）を介して、および他のアプリケーションを介して、コマンドラインインターフェース（command line interface：ＣＬＩ）、アプリケーションプログラミングインターフェース（application programming interface：ＡＰＩ）を使用してクラウドインフラストラクチャシステム１００と対話し得る開発者／プログラマ１５２を含んでいてもよい。また、ユーザは、オペレーションスタッフ１５４を含んでいてもよい。これらは、クラウドサービスプロバイダのスタッフまたは他のユーザのスタッフを含んでいてもよい。
【００３１】
アプリケーションサービス層１５６は、クラウドインフラストラクチャシステム１００によって提供され得るさまざまなクラウドサービスを特定する。これらのサービスは、サービス統合および連結層１５８を介してそれぞれのソフトウェアコンポーネント１６０（例えばＪａｖａサービスを提供するためのオラクルウェブロジックサーバ、データベースサービスを提供するためのオラクルデータベースなど）にマッピングされるか、または関連付けられ得る。
【００３２】
特定の実施例では、クラウドインフラストラクチャシステム１００のさまざまなコンポーネントまたはモジュールおよびクラウドインフラストラクチャシステム１００によって提供されるサービスによって共有されるいくつかの内部サービス１６２が提供され得る。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよび回復サービス、ＩＤＥにおいてクラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されるものではない。
【００３３】
ランタイムインフラストラクチャ層１６４は、さまざまな他の層およびコンポーネントが構築されるハードウェア層を表わす。特定の実施例では、ランタイムインフラストラクチャ層１６４は、ストレージ、処理およびネットワーキングリソースを提供するための１つのオラクルのExadataマシンを備えていてもよい。Exadataマシンは、さまざまなデータベースサーバ、ストレージサーバ、ネットワーキングリソース、およびクラウドサービス関連のソフトウェア層をホストするための他のコンポーネントから構成され得る。特定の実施例では、Exadataマシンは、ストレージ、演算、ネットワークおよびソフトウェアリソースの集合体を提供するエンジニアド・システムであるOracle Exalogicと連携するように設計され得る。ExadataおよびExalogicの組み合わせは、クラウドサービスを提供するための高性能で、高可用性で、スケーラブルで、安全な、管理されたプラットフォームを与える完全なハードウェアおよびソフトウェアエンジニアドソリューションを提供する。
【００３４】
図２は、本発明の実施例に係る図１Ａに示されるクラウドインフラストラクチャシステムを実現するためのシステム環境の簡略ブロック図である。示される実施例では、システム環境２３０は、クラウドインフラストラクチャシステム１００と対話するためにユーザによって使用され得る１つ以上のクライアント演算装置２２４，２２６および２２８を含む。クライアント装置は、クラウドインフラストラクチャシステム１００によって提供されるサービスを利用するためにクラウドインフラストラクチャシステム１００と対話するようにクライアント装置のユーザによって使用され得る、ウェブブラウザ、プロプライエタリクライアントアプリケーション（例えばOracle Forms）またはその他のアプリケーションなどのクライアントアプリケーションを動作させるように構成され得る。
【００３５】
図２に示されるクラウドインフラストラクチャシステム１００は、図２に示されるもの以外の他のコンポーネントを有していてもよいということが理解されるべきである。さらに、図２に示される実施例は、本発明の実施例を組込むことができるクラウドインフラストラクチャシステムの一例に過ぎない。いくつかの他の実施例では、クラウドインフラストラクチャシステム１００は、図２に示されるものよりも多くのまたは少ないコンポーネントを有していてもよく、２つ以上のコンポーネントを組み合わせてもよく、またはコンポーネントの異なる構成もしくは配置を有していてもよい。
【００３６】
クライアント演算装置２２４，２２６および２２８は、汎用パーソナルコンピュータ（一例として、マイクロソフトウィンドウズ（登録商標）および／またはアップルマッキントッシュオペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび／またはラップトップコンピュータを含む）、（マイクロソフトウィンドウズモバイルなどのソフトウェアを実行し、インターネット、電子メール、ＳＭＳ、ブラックベリーまたは使用可能な他の通信プロトコルである）携帯電話もしくはＰＤＡ、さまざまな市販のＵＮＩＸ（登録商標）もしくはＵＮＩＸのようなオペレーティングシステム（さまざまなＧＮＵ／Ｌｉｎｕｘ（登録商標）オペレーティングシステムを含むがこれに限定されるものではない）のいずれかを実行するワークステーションコンピュータ、またはその他の演算装置であってもよい。例えば、クライアント演算装置２２４，２２６および２２８は、ネットワークを介して通信することができるシン・クライアントコンピュータ、インターネットへの接続が可能なゲーム機および／またはパーソナルメッセージング装置などのその他の電子装置であってもよい。例示的なシステム環境２３０が３つのクライアント演算装置とともに示されているが、いかなる数のクライアント演算装置がサポートされてもよい。センサを有する装置などの他の装置がクラウドインフラストラクチャシステム１００と対話してもよい。
【００３７】
ネットワーク２３２は、クライアント２２４，２２６および２２８とクラウドインフラストラクチャシステム１００との間でのデータの通信および交換を容易にし得る。ネットワーク２３２は、ＴＣＰ／ＩＰ、ＳＮＡ、ＩＰＸ、ＡｐｐｌｅＴａｌｋなどを含むがこれらに限定されるものではないさまざまな市販のプロトコルのいずれかを使用してデータ通信をサポートし得る、当業者になじみのある任意のタイプのネットワークであってもよい。単に一例として、ネットワーク２３２は、イーサネット（登録商標）ネットワーク、トークン・リング・ネットワークなどのローカルエリアネットワーク（local area network：ＬＡＮ）、広域ネットワーク、仮想プライベートネットワーク（virtual private network：ＶＰＮ）を含むがこれに限定されるものではない仮想ネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網（public switched telephone network：ＰＳＴＮ）、赤外線ネットワーク、無線ネットワーク（例えばＩＥＥＥ８０２．１Ｘの一連のプロトコル、当該技術分野において公知のブルートゥース（登録商標）プロトコルおよび／またはその他の無線プロトコルのいずれかの下で動作するネットワーク）、ならびに／または、これらのおよび／もしくは他のネットワークの任意の組み合わせであってもよい。
【００３８】
クラウドインフラストラクチャシステム１００は、汎用コンピュータ、特化サーバコンピュータ（一例として、ＰＣサーバ、ＵＮＩＸサーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント式のサーバなどを含む）、サーバファーム、サーバクラスタ、またはその他の適切な配置および／もしくは組み合わせであり得る１つ以上のコンピュータおよび／またはサーバを備えていてもよい。クラウドインフラストラクチャシステム１００を構成する演算装置は、ＨＴＴＰサーバ、ＦＴＰサーバ、ＣＧＩサーバ、Ｊａｖａサーバ、データベースサーバなどを含む、オペレーティングシステムまたはさまざまな追加のサーバアプリケーションおよび／もしくは中間層アプリケーションのいずれかを実行し得る。例示的なデータベースサーバとしては、オラクル、マイクロソフト、サイベース、ＩＢＭなどから市販されているものが挙げられるが、これらに限定されるものではない。
【００３９】
さまざまな実施例では、クラウドインフラストラクチャシステム１００は、クラウドインフラストラクチャシステム１００によって提供されるサービスへの顧客のサブスクリプションを自動的にプロビジョニング、管理および追跡するように適合され得る。一実施例では、図２に示されるように、クラウドインフラストラクチャシステム１００におけるコンポーネントは、アイデンティティ管理（Identity Management：ＩＤＭ）モジュール２００と、サービスモジュール２０２と、テナント自動化システム（Tenant Automation System：ＴＡＳ）モジュール２０４と、サービスデプロイメントインフラストラクチャ（Service Deployment Infrastructure：ＳＤＩ）モジュール２０６と、エンタープライズマネージャ（Enterprise Manager：ＥＭ）モジュール２０８と、ストアユーザインターフェース（user interface：ＵＩ）２１０、クラウドユーザインターフェース（ＵＩ）２１２およびサポートユーザインターフェース（ＵＩ）２１６などの１つ以上のフロントエンドウェブインターフェースと、オーダー管理モジュール２１４と、販売スタッフ２１８と、オペレータスタッフ２２０と、オーダーデータベース２２２とを含む。これらのモジュールは、汎用コンピュータ、特化サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他の適切な配置および／もしくは組み合わせであり得る１つ以上のコンピュータおよび／またはサーバを含んでいてもよく、またはそれらを使用して提供されてもよい。一実施例では、これらのモジュールのうちの１つ以上は、クラウドインフラストラクチャシステム１００におけるクラウド管理機能１０８またはＩａａＳプラットフォーム１１０によって提供され得る。図２に示されるクラウドインフラストラクチャシステム１００のさまざまなモジュールは、単に例示の目的で示されており、本発明の実施例の範囲を限定することを意図したものではない。代替的な実施例は、図２に示されるものよりも多くのまたは少ないモジュールを含んでいてもよい。
【００４０】
例示的なオペレーションにおいて、（１）において、クライアント装置２２４または２２６などのクライアント装置を使用する顧客は、クラウドインフラストラクチャシステム１００によって提供されるさまざまなサービスをブラウズし、クラウドインフラストラクチャシステム１００によって提供される１つ以上のサービスについてのサブスクリプションのオーダーを行うことによって、クラウドインフラストラクチャシステム１００と対話し得る。特定の実施例では、顧客は、ストアＵＩ２１０またはクラウドＵＩ２１２にアクセスし、これらのユーザインターフェイスを介してサブスクリプションオーダーを行い得る。
【００４１】
顧客がオーダーを行ったことに応答してクラウドインフラストラクチャシステム１００によって受取られるオーダー情報は、顧客と、顧客がサブスクライブする予定の、クラウドインフラストラクチャシステム１００によって提供される１つ以上のサービスとを特定する情報を含んでいてもよい。単一のオーダーは、複数のサービスのオーダーを含んでいてもよい。例えば、顧客は、クラウドＵＩ２１２にログインして、同一のオーダーにおいてＣＲＭサービスおよびＪａｖａクラウドサービスについてのサブスクリプションを要求し得る。
【００４２】
さらに、オーダーは、オーダーされたサービスについての１つ以上のサービスレベルも含んでいてもよい。本明細書で使用され、以下でより詳細に説明されるように、サービスについてのサービスレベルは、ストレージの量、演算リソースの量、データ転送設備などの、サブスクリプションの文脈において要求されたサービスを提供するために割り当てられるリソースの量を決定する。例えば、ベーシックなサービスレベルは、最小レベルのストレージ、データ伝送またはユーザの数を提供することができ、より高いサービスレベルは、さらなるリソースを含み得る。
【００４３】
また、いくつかの例では、クラウドインフラストラクチャシステム１００によって受取られるオーダー情報は、顧客レベルおよびサービスが求められる期間を示す情報を含んでいてもよい。顧客レベルは、サブスクリプション要求を行う顧客の優先度を規定する。一例では、優先度は、顧客とクラウドサービスのプロバイダとの間で合意されたサービスレベル合意書（Service Level Agreement：ＳＬＡ）によって規定されるようにクラウドインフラストラクチャシステム１００が顧客に保証または約束するサービスの質に基づいて決定され得る。一例では、さまざまな顧客レベルは、ベーシックレベル、シルバーレベルおよびゴールドレベルを含む。サービスの期間は、当該サービスの開始日および時刻と、当該サービスが求められる期間とを規定し得る（例えばサービス終了日および時刻が規定されてもよい）。
【００４４】
一実施例では、顧客は、ストアＵＩ２１０を介して新たなサブスクリプションを要求するか、またはクラウドＵＩ２１２を介してトライアルサブスクリプションを要求し得る。特定の実施例では、ストアＵＩ２１０は、サービスプロバイダの電子商取引ストアフロントに相当し得る（例えばオラクルクラウドサービスのためのwww.oracle.com/store）。クラウドＵＩ２１２は、サービスプロバイダのためのビジネスインターフェースに相当し得る。顧客は、クラウドＵＩ２１２を介して、利用可能なサービスを調査し、関心のあるサービスにサインアップすることができる。クラウドＵＩ２１２は、クラウドインフラストラクチャシステム１００によって提供されるトライアルサブスクリプションをオーダーするのに必要なユーザ入力を取込む。また、クラウドＵＩ２１２は、アカウント機能を閲覧し、クラウドインフラストラクチャシステム１００内に位置するランタイム環境を構成するために使用され得る。新たなサブスクリプションのオーダーを行うことに加えて、ストアＵＩ２１０は、サブスクリプションのサービスレベルの変更、サブスクリプションの期間の延長、サブスクリプションのサービスレベルの向上、既存のサブスクリプションの終了などの他のサブスクリプション関連のタスクを顧客が実行できるようにもし得る。
【００４５】
（１）につきオーダーが行われた後、（２）において、ストアＵＩ２１０またはクラウドＵＩ２１２のいずれかを介して受取られるオーダー情報がオーダーデータベース２２２に格納され、当該オーダーデータベース２２２は、クラウドインフラストラクチャシステム１００によって操作されて他のシステム要素と連携して利用されるいくつかのデータベースのうちの１つであり得る。オーダーデータベース２２２は図２では単一のデータベースとして論理的に示されているが、実際の実現例では、これは１つ以上のデータベースを備えていてもよい。
【００４６】
（３）において、オーダーはオーダー管理モジュール２１４に送られる。オーダー管理モジュール２１４は、オーダーの検証および検証時のオーダーの予約などのオーダーに関連する課金およびアカウンティング機能を実行するように構成される。特定の実施例では、オーダー管理モジュール２１４は、契約管理モジュールと、インストールベースモジュールとを含んでいてもよい。契約管理モジュールは、クラウドインフラストラクチャシステム１００との顧客のサービスレベル合意書（ＳＬＡ）などの顧客のサブスクリプションオーダーに関連付けられた契約情報を格納し得る。インストールベースモジュールは、顧客のサブスクリプションオーダーにおけるサービスの詳細な説明を含み得る。オーダー情報に加えて、インストールベースモジュールは、サービスに関連するインストールの詳細、製品状態およびサービスに関連するサポートサービス履歴を追跡し得る。顧客が新たなサービスをオーダーするかまたは既存のものをアップグレードすると、インストールベースモジュールは、新たなオーダー情報を自動的に追加し得る。
【００４７】
（４）において、オーダーに関する情報は、ＴＡＳモジュール２０４に通信される。一実施例では、ＴＡＳモジュール２０４は、顧客によって行われたオーダーについてのサービスおよびリソースのプロビジョニングをオーケストレート（orchestrate）するためにオーダー情報を利用する。（５）において、ＴＡＳコンポーネント２０４は、ＳＤＩモジュール２０６のサービスを使用してサブスクライブされたサービスをサポートするために、リソースのプロビジョニングをオーケストレートする。（６）において、ＴＡＳモジュール２０４は、ＳＤＩモジュール２０６から受取られた、プロビジョニングされたオーダーに関連する情報をサービスモジュール２０２に提供する。いくつかの実施例では、（７）において、ＳＤＩモジュール２０６は、顧客のサブスクリプションオーダーを実現するために必要なリソースを割り当てて構成するために、サービスモジュール２０２によって提供されるサービスも使用し得る。
【００４８】
（８）において、サービスモジュール２０２は、オーダーの状態に関する通知をクライアント装置２２４，２２６および２２８上の顧客に送る。
【００４９】
特定の実施例では、ＴＡＳモジュール２０４は、互いに関連付けられたビジネスプロセスを管理し、ビジネスロジックを適用してオーダーがプロビジョニングに進むべきか否かを判断するオーケストレーションコンポーネントとして機能する。一実施例では、新たなサブスクリプションのオーダーを受取ると、ＴＡＳモジュール２０４は、リソースを割り当てて、当該サブスクリプションオーダーを実現するために必要なそれらのリソースを構成するために、ＳＤＩモジュール２０６に要求を送る。ＳＤＩモジュール２０６は、顧客によってオーダーされたサービスのためのリソースの割り当てを可能にする。ＳＤＩモジュール２０６は、クラウドインフラストラクチャシステム１００によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理的実装層との間の抽象化のレベルを提供する。したがって、ＴＡＳモジュール２０４は、サービスおよびリソースがオンザフライで実際にプロビジョニングされるか否か、または予めプロビジョニングされて要求時に単に配分／割り当てられるか否かなどの実装詳細から切離され得る。
【００５０】
特定の実施例では、ユーザは、オーダー管理モジュール２１４と直接対話して、オーダーの検証および検証時のオーダーの予約などの課金およびアカウンティング関連機能を実行するためにストアＵＩ２１０を使用し得る。いくつかの実施例では、顧客がオーダーを行う代わりに、（９）において、オーダーはその代わりに、顧客のサービス担当者または販売担当者などの顧客を代表する販売スタッフ２１８によって行われてもよい。販売スタッフ２１８は、オーダーを行うためまたは顧客に見積もりを提供するためにオーダー管理モジュール２１４によって提供されるユーザーインターフェース（図２には図示せず）を介して、オーダー管理モジュール２１４と直接対話し得る。例えば、これは、オーダーがオーダー管理モジュール２１４を介して顧客の販売担当者によって行われ得る大口顧客のためになされ得る。販売担当者は、顧客を代表してサブスクリプションを準備し得る。
【００５１】
ＥＭモジュール２０８は、クラウドインフラストラクチャシステム１００における顧客のサブスクリプションの管理および追跡に関連するアクティビティをモニタリングするように構成される。ＥＭモジュール２０８は、使用されるストレージの量、転送されるデータの量、ユーザの数、システムアップ時間およびシステムダウン時間の量などのサブスクリプションオーダーにおけるサービスについての使用統計を収集する。（１０）において、クラウドインフラストラクチャシステム１００のプロバイダの従業員であってもよいホストオペレータスタッフ２２０は、サービスがクラウドインフラストラクチャシステム１００内でプロビジョニングされるシステムおよびリソースを管理するために、エンタープライズマネージャユーザインターフェース（図２には図示せず）を介してＥＭモジュール２０８と対話し得る。
【００５２】
アイデンティティ管理（ＩＤＭ）モジュール２００は、クラウドインフラストラクチャシステム１００においてアクセス管理および認可サービスなどのアイデンティティサービスを提供するように構成される。一実施例では、ＩＤＭモジュール２００は、クラウドインフラストラクチャシステム１００によって提供されるサービスを利用したい顧客についての情報を制御する。このような情報は、このような顧客のアイデンティティを認証する情報、および、さまざまなシステムリソース（例えばファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど）に対してそれらの顧客がどのアクションを実行することが認可されるかを表わす情報を含み得る。また、ＩＤＭモジュール２００は、各顧客についての記述的情報および当該説明的情報がどのようにして誰によってアクセスおよび修正され得るかについての記述的情報の管理を含み得る。
【００５３】
一実施例では、アイデンティティ管理モジュール２００によって管理される情報は、別個のアイデンティティドメインを作成するために分割可能である。特定のアイデンティティドメインに属する情報は、全ての他のアイデンティティドメインから切離されることができる。また、アイデンティティドメインは、複数の別個のテナントによって共有可能である。各々のこのようなテナントは、クラウドインフラストラクチャシステム１００においてサービスにサブスクライブする顧客であり得る。いくつかの実施例では、顧客は、１つまたは多くのアイデンティティドメインを有することができ、各アイデンティティドメインは、１つ以上のサブスクリプションに関連付けられ得て、各サブスクリプションは、１つまたは多くのサービスを有する。例えば、単一の顧客は大規模事業体に相当し得て、この大規模事業体内の部門／部署についてアイデンティティドメインが作成されてもよい。さらに、ＥＭモジュール２０８およびＩＤＭモジュール２００は、クラウドインフラストラクチャシステム１００において顧客のサブスクリプションを管理および追跡するために、それぞれ（１１）および（１２）においてオーダー管理モジュール２１４と対話し得る。
【００５４】
一実施例では、（１３）において、サポートＵＩ２１６を介してサポートサービスも顧客に提供され得る。一実施例では、サポートＵＩ２１６は、サポートスタッフが（１４）においてサポートサービスを実行するようにサポートバックエンドシステムを介してオーダー管理モジュール２１４と対話することを可能にする。クラウドインフラストラクチャシステム１００におけるサポートスタッフおよび顧客は、サポートＵＩ２１６を介して、バグ報告を提出し、これらの報告の状態を確認することができる。
【００５５】
図２に図示されない他のインターフェイスもクラウドインフラストラクチャシステム１００によって提供されてもよい。例えば、アイデンティティドメイン管理者は、ドメインおよびユーザアイデンティティを構成するためにＩＤＭモジュール２００へのユーザインターフェイスを使用し得る。また、顧客は、利用したい各サービスのための別個のインターフェイスにログインし得る。特定の実施例では、クラウドインフラストラクチャシステム１００によって提供される１つ以上のサービスにサブスクライブしたい顧客は、さまざまな役割および任務も割り当てられ得る。一実施例では、顧客に割り当てられ得るさまざまな役割および任務は、バイヤ、アカウント管理者、サービス管理者、アイデンティティドメイン管理者、またはクラウドインフラストラクチャシステム１００によって提供されるサービスおよびリソースを利用するユーザの役割および任務を含んでいてもよい。さまざまな役割および任務は、以下の図４にさらに十分に示されている。
【００５６】
図３Ａは、本発明の実施例に係るクラウドインフラストラクチャシステムにおけるＴＡＳモジュールによって実行され得る処理を示す簡略化されたフローチャート３００を示す。図３Ａに示される処理は、１つ以上のプロセッサによって実行されるソフトウェア（例えばコード、命令、プログラム）、ハードウェアまたはそれらの組み合わせで実現されてもよい。ソフトウェアは、（例えばメモリ装置、非一時的なコンピュータ読取可能記憶媒体上の）メモリに格納されてもよい。図３Ａに示される特定の一連の処理ステップは、限定的であるよう意図されるものではない。他のステップのシーケンスも代替的な実施例に従って実行されてもよい。例えば、本発明の代替的な実施例は、異なる順序で上記のステップを実行してもよい。さらに、図３Ａに示される個々のステップは、個々のステップに適切であるようにさまざまなシーケンスにおいて実行され得る複数のサブステップを含んでいてもよい。さらに、特定のアプリケーションに応じて、さらなるステップが追加または削除されてもよい。当業者は、多くの変更例、変形例および代替例を認識するであろう。一実施例では、図３Ａに示される処理は、図３Ｂに詳細に示されるように、ＴＡＳコンポーネント２０４における１つ以上のコンポーネントによって実行され得る。
【００５７】
３０２において、顧客のサブスクリプションオーダーが処理される。当該処理は、一例ではオーダーの認証を含んでいてもよい。オーダーの認証は、顧客がサブスクリプションの代金を支払ったことを保証すること、および、顧客が同一の名前を備えたサブスクリプションをまだ有していないことを保証すること、または、（ＣＲＭサービスの場合など）許可されないサブスクリプションタイプについて同一のアイデンティティドメインにおいて同一タイプの複数のサブスクリプションを顧客が作成しようと試みていないことを保証することを含む。また、処理は、クラウドインフラストラクチャシステム１００によって処理されている各オーダーについてのオーダーの状態の追跡を含んでいてもよい。
【００５８】
３０４において、オーダーに関連付けられたビジネスプロセスが特定される。いくつかの例では、複数のビジネスプロセスがオーダーについて特定され得る。各ビジネスプロセスは、オーダーのさまざまな局面を処理するための一連のステップを特定する。一例として、第１のビジネスプロセスは、オーダーのための物理的リソースのプロビジョニングに関連する１つ以上のステップを特定し得て、第２のビジネスプロセスは、オーダーについての顧客アイデンティティとともにアイデンティティドメインを作成することに関連する１つ以上のステップを特定し得て、第３のビジネスプロセスは、ユーザについての顧客記録の作成などのバックオフィス機能の実行、オーダーに関連するアカウンティング機能の実行などに関連する１つ以上のステップを特定し得る。特定の実施例では、オーダーにおけるさまざまなサービスを処理するためにさまざまなビジネスプロセスも特定されてもよい。例えば、ＣＲＭサービスおよびデータベースサービスを処理するためにさまざまなビジネスプロセスが特定されてもよい。
【００５９】
３０６において、３０４でオーダーについて特定されたビジネスプロセスが実行される。オーダーに関連付けられたビジネスプロセスの実行は、ステップ３０４において特定されたビジネスプロセスに関連付けられた一連のステップのオーケストレートを含んでいてもよい。例えば、オーダーのための物理リソースのプロビジョニングに関連するビジネスプロセスの実行は、リソースを割り当てて、サブスクリプションオーダーを実現するために必要なそれらのリソースを構成するために、ＳＤＩモジュール２０６に要求を送ることを含んでいてもよい。
【００６０】
３０８において、プロビジョニングされたオーダーの状態に関する通知が顧客に送られる。ステップ３０２，３０４，３０６および３０８の実行に関連するさらなる説明については、図３Ｂに詳細に記載されている。
【００６１】
図３Ｂは、本発明の実施例に係るクラウドインフラストラクチャシステムにおけるＴＡＳモジュールにおける１つ以上のサブモジュールの簡略化された高レベル図を示す。一実施例では、図３Ｂに示されるモジュールは、図３Ａに示されるステップ３０２〜３０８に記載された処理を実行する。示される実施例では、ＴＡＳモジュール２０４は、オーダー処理モジュール３１０と、ビジネスプロセス識別子３１２と、ビジネスプロセスエクセキュータ３１６と、超過フレームワーク３２２と、ワークフロー特定モジュール３２４と、バンドルされたサブスクリプション生成モジュール３２６とを備える。これらのモジュールは、ハードウェアまたはソフトウェアまたはそれらの組み合わせで実現されてもよい。図３Ｂに示されるＴＡＳモジュールのさまざまなモジュールは、単に例示の目的で示されており、本発明の実施例の範囲を限定することを意図したものではない。代替的な実施例は、図３Ｂに示されるものよりも多くのまたは少ないモジュールを含んでいてもよい。
【００６２】
一実施例では、オーダー処理モジュール３１０は、顧客からのオーダーを１つ以上の入力ソース３２１から受取る。例えば、オーダー処理モジュール３１０は、一実施例ではクラウドＵＩ２１２またはストアＵＩ２１０を介してオーダーを直接受取ってもよい。代替的に、オーダー処理モジュール３１０は、オーダー管理モジュール２１４またはオーダーデータベース２２２からオーダーを受取ってもよい。次いで、オーダー処理モジュール３１０は、オーダーを処理する。特定の実施例では、オーダーの処理は、サービスタイプ、サービスレベル、顧客レベル、リソースのタイプ、サービスインスタンスに割り当てられるリソースの量、およびサービスが求められる期間などのオーダーについての情報を含む顧客記録の生成を含む。処理の一部として、オーダー処理モジュール３１０は、オーダーが有効なオーダーであるか否かも判断する。これは、顧客が同一の名前を備えたサブスクリプションをまだ有していないことを保証すること、または、（フュージョンＣＲＭサービスの場合など）許可されないサブスクリプションタイプについて同一のアイデンティティドメインにおいて同一タイプの複数のサブスクリプションを顧客が作成しようと試みていないことを保証することを含む。
【００６３】
また、オーダー処理モジュール３１０は、オーダーについてのさらなる処理を実行し得る。処理は、クラウドインフラストラクチャシステム１００によって処理されている各オーダーについてのオーダーの状態の追跡を含んでいてもよい。一実施例では、オーダー処理モジュール３１０は、オーダーに関係するいくつかの状態を特定するために各オーダーを処理し得る。一例では、オーダーのさまざまな状態は、初期化状態、プロビジョニング状態、アクティブ状態、管理が必要な状態、エラー状態などであり得る。初期化状態は、新たなオーダーの状態を指し、プロビジョニング状態は、オーダーについてのサービスおよびリソースがプロビジョニングされた時点のオーダーの状態を指す。オーダーがＴＡＳモジュール２０４によって処理され、その趣旨の通知が顧客に与えられると、オーダーはアクティブ状態になる。問題を解決するために管理者による介入が必要な場合、オーダーは管理が必要な状態である。オーダーを処理できない場合、オーダーはエラー状態である。オーダー進捗状態の維持に加えて、オーダー処理モジュール３１０は、プロセスの実行中に遭遇するいかなる障害についても詳細な情報を維持する。他の実施例では、以下で詳細に記載されるように、オーダー処理モジュール３１０によって実行されるさらなる処理は、サブスクリプションにおけるサービスのサービスレベルの変更、サブスクリプションに含まれるサービスの変更、サブスクリプションの期間の延長、およびサブスクリプションのキャンセルまたはサブスクリプションにおけるさまざまな期間にわたるさまざまなサービスレベルの指定も含んでいてもよい。
【００６４】
オーダーがオーダー処理モジュール３１０によって処理された後、オーダーがプロビジョニングに進むべきか否かを判断するためにビジネスロジックが適用される。一実施例では、オーダーのオーケストレートの一部として、ビジネスプロセス識別子３１２は、処理されたオーダーをオーダー処理モジュール３１０から受取って、ビジネスロジックを適用して、処理中のオーダーで使用されるべき特定のビジネスプロセスを特定する。一実施例では、ビジネスプロセス識別子３１２は、オーダーで使用されるべき特定のビジネスプロセスを決定するために、サービスカタログ３１４に格納されている情報を利用し得る。一実施例では、図３Ａに示されるように、オーダーについて複数のビジネスプロセスが特定されてもよく、各ビジネスプロセスは、オーダーのさまざまな局面を処理するための一連のステップを特定する。別の実施例では、上記のように、ＣＲＭサービスまたはデータベースサービスなどのさまざまなタイプのサービスまたはサービスの組み合わせについてさまざまなビジネスプロセスが規定されてもよい。一実施例では、サービスカタログ３１４は、オーダーを特定のタイプのビジネスプロセスにマッピングする情報を格納し得る。ビジネスプロセス識別子３１２は、処理中のオーダーについての特定のビジネスプロセスを特定するためにこの情報を使用し得る。
【００６５】
ビジネスプロセスが特定されると、ビジネスプロセス識別子３１２は、実行されるべき特定のビジネスプロセスをビジネスプロセスエクセキュータ３１６に通信する。次いで、ビジネスプロセスエクセキュータ３１６は、クラウドインフラストラクチャシステム１００における１つ以上のモジュールと連携して動作することによって、特定されたビジネスプロセスのステップを実行する。いくつかの実施例では、ビジネスプロセスエクセキュータ３１６は、ビジネスプロセスに関連付けられたステップを実行するためのオーケストレータの役割を果たす。例えば、ビジネスプロセスエクセキュータは、オーダーに関連するワークフローを特定して、オーダーにおけるサービスの超過を判断するか、またはオーダーに関連するサービスコンポーネントを特定するビジネスプロセスにおけるステップを実行するようにオーダー処理モジュール３１０と対話し得る。
【００６６】
一例では、ビジネスプロセスエクセキュータ３１６は、サブスクリプションオーダーにおいて要求されたサービスのためにリソースを割り当ててプロビジョニングするためのビジネスプロセスにおけるステップを実行するようにＳＤＩモジュール２０６と対話する。この例では、ビジネスプロセスにおける各ステップごとに、ビジネスプロセスエクセキュータ３１６は、リソースを割り当てて、特定のステップを実現するために必要なリソースを構成するために、ＳＤＩコンポーネント２０６に要求を送り得る。ＳＤＩコンポーネント２０６は、リソースの実際の割り当てを担当する。オーダーのビジネスプロセスの全てのステップが実行されると、ビジネスプロセスエクセキュータ３１６は、サービスコンポーネント２０２のサービスを利用することによって、処理されたオーダーの通知を顧客に送り得る。通知は、処理されたオーダーの詳細を有する電子メール通知を顧客に送ることを含んでいてもよい。また、電子メール通知は、顧客がサブスクライブされたサービスにアクセスすることを可能にするための、オーダーに関連するデプロイメント情報も含んでいてもよい。
【００６７】
特定の実施例では、ＴＡＳモジュール２０４は、ＴＡＳモジュール２０４がクラウドインフラストラクチャシステム１００における他のモジュールと対話し、他のモジュールがＴＡＳモジュール２０４と対話することを可能にする１つ以上のＴＡＳアプリケーションプログラミングインターフェース（Application Programming Interface：ＡＰＩ）３１８を提供し得る。例えば、ＴＡＳ  ＡＰＩは、顧客のサブスクリプションオーダーのためのリソースをプロビジョニングするために、非同期シンプル・オブジェクト・アクセス・プロトコル（Simple Object Access Protocol：ＳＯＡＰ）ベースのウェブサービスコールを介してＳＤＩモジュール２０６と対話するシステムプロビジョニングＡＰＩを含んでいてもよい。一実施例では、ＴＡＳモジュール２０４は、システムおよびサービスインスタンスの作成および削除を達成し、サービスインスタンスを向上したサービスレベルに切替え、サービスインスタンスを関連付けるためにも、システムプロビジョニングＡＰＩを利用し得る。この一例は、安全なウェブサービス通信を可能にするためのフュージョンアプリケーションサービスインスタンスへのＪａｖａサービスインスタンスの関連付けである。また、ＴＡＳ  ＡＰＩは、処理されたオーダーを顧客に通知するためにサービスモジュール２０２と対話する通知ＡＰＩも含んでいてもよい。特定の実施例では、ＴＡＳモジュール２０４は、サブスクリプション情報、機能停止および通知（例えば計画されたダウンタイム）もサービスコンポーネント２０２に定期的に伝える。
【００６８】
特定の実施例では、ＴＡＳモジュール２０４は、使用されるストレージの量、転送されるデータの量、ユーザの数、ならびにシステムアップ時間およびシステムダウン時間の量などのプロビジョニングされたサービスの各々についての使用統計をＥＭモジュール２０８から定期的に受取る。超過フレームワーク３２２は、サービスの過剰使用が生じたか否かを判断し、生じた場合には超過に対してどれぐらい課金されるかを判断するために当該使用統計を利用し、この情報をオーダー管理モジュール２１４に提供する。
【００６９】
特定の実施例では、ＴＡＳモジュール２０４は、顧客のサブスクリプションオーダーの処理に関連付けられた１つ以上のワークフローを特定するように構成されるオーダーワークフロー特定モジュール３２４を含む。特定の実施例では、ＴＡＳモジュール２０４は、クラウドインフラストラクチャシステム１００によって提供される１つ以上のサービスについてのサブスクリプションオーダーを顧客が行うと顧客のためにサブスクリプションオーダーを生成するためのサブスクリプションオーダー生成フレームワーク３２６を含んでいてもよい。一実施例では、サブスクリプションオーダーは、当該サブスクリプションオーダーにおいて顧客によって要求されたサービスを提供することを担当する１つ以上のサービスコンポーネントを含む。
【００７０】
さらに、ＴＡＳモジュール２０４は、もしあれば顧客が利用可能な履歴情報を考慮に入れながら、顧客によってサブスクライブされた１つ以上のサービスのためのリソースのプロビジョニングを可能にするために、テナント情報システム（Tenant Information System：ＴＩＳ）データベース３２０などの１つ以上のさらなるデータベースとも対話し得る。ＴＩＳデータベース３２０は、顧客によってサブスクライブされたオーダーに関係する履歴オーダー情報および履歴使用情報を含んでいてもよい。
【００７１】
ＴＡＳモジュール２０４は、さまざまなデプロイメントモデルを使用してデプロイされ得る。特定の実施例では、デプロイメントは、１つ以上の分散されたコンポーネントと遣り取りする中心コンポーネントを含む。分散されたコンポーネントは、例えばさまざまなデータセンタとしてデプロイされてもよく、したがってデータセンタコンポーネントとも称されてもよい。中心コンポーネントは、クラウドインフラストラクチャシステム１００においてオーダーを処理してサービスをまとめるための機能を含み、データセンタコンポーネントは、サブスクライブされたサービスにリソースを提供するランタイムシステムをプロビジョニングして動作させるための機能を提供する。
【００７２】
図４は、本発明の実施例に係るＴＡＳモジュールの例示的な分散型デプロイメントを示す。図４に示される実施例では、ＴＡＳモジュール２０４の分散型デプロイメントは、ＴＡＳ中心コンポーネント４００と、１つ以上のＴＡＳデータセンタ（Data Center：ＤＣ）コンポーネント４０２，４０４および４０６とを含む。これらのコンポーネントは、ハードウェアまたはソフトウェアまたはそれらの組み合わせで実現されてもよい。
【００７３】
一実施例では、ＴＡＳ中心コンポーネント４００の任務は、顧客オーダーを受取って、新たなサブスクリプションの作成、サブスクリプションにおけるサービスのサービスレベルの変更、サブスクリプションに含まれるサービスの変更、およびサブスクリプションの期間の延長、またはサブスクリプションのキャンセルなどのオーダー関連のビジネスオペレーションを実行するための集中型コンポーネントを提供することを含むが、これに限定されるものではない。また、ＴＡＳ中心コンポーネント４００の任務は、クラウドインフラストラクチャシステム１００によって必要とされるサブスクリプションデータを維持および供給すること、ならびに、全てのバックオフィスインタラクションに対処するためにオーダー管理モジュール２１４、サポートＵＩ２１６、クラウドＵＩ２１２およびストアＵＩ２１０と遣り取りすることも含んでいてもよい。
【００７４】
一実施例では、ＴＡＳ  ＤＣ４０２，４０４および４０６の任務は、顧客によってサブスクライブされた１つ以上のサービスのためのリソースのプロビジョニングをオーケストレートするためのランタイムオペレーションを実行することを含むが、これに限定されるものではない。また、ＴＡＳ  ＤＣ４０２，４０４および４０６は、サブスクリプションオーダーのロッキング、アンロッキング、イネーブルまたはディスエーブル、オーダーに関連するメトリクスの収集、オーダーの状態の判断、およびオーダーに関連する通知イベントの送信などのオペレーションを実行するための機能も含む。
【００７５】
図４に示される分散型ＴＡＳシステムの例示的なオペレーションでは、ＴＡＳ中心コンポーネント４００は、最初に、クラウドＵＩ２１２、ストアＵＩ２１０を介して、オーダー管理システム２１４を介して、またはオーダーデータベース２２２を介して、顧客からオーダーを受取る。一実施例では、顧客は、財務情報ならびにサブスクリプションをオーダーおよび／または変更するための権限を有するバイヤに相当する。一実施例では、オーダー情報は、顧客、顧客がサブスクライブしたいサービスのタイプ、および要求への対処を担当するアカウント管理者を特定する情報を含む。特定の実施例では、アカウント管理者は、クラウドインフラストラクチャシステム１００によって提供される１つ以上のサービスへのサブスクリプションについてのオーダーを顧客が行うと、顧客によって任命され得る。オーダー情報に基づいて、ＴＡＳ中心コンポーネント４００は、オーダーが発生するアメリカ、ＥＭＥＡまたはアジア太平洋などの世界のデータ領域、およびオーダーをプロビジョニングするためにデプロイされる特定のＴＡＳ  ＤＣ（例えば４０２，４０４または４０６）を特定する。一実施例では、オーダーをプロビジョニングするためにデプロイされる（例えばＤＣ４０２，４０４または４０６の中からの）特定のＴＡＳ  ＤＣは、要求が発生した地理的なデータ領域に基づいて決定される。
【００７６】
次いで、ＴＡＳ中心コンポーネント４００は、オーダー要求についてのサービスをプロビジョニングするためにオーダー要求を特定のＴＡＳ  ＤＣに送る。一実施例では、ＴＡＳ  ＤＣ４０２，４０４または４０６は、特定のＴＡＳ  ＤＣにおいてオーダー要求を処理することを担当するサービス管理者およびアイデンティティドメイン管理者を特定する。サービス管理者およびアイデンティティ管理者は、サブスクリプションオーダーにおいて特定されるアカウント管理者によって任命され得る。ＴＡＳ  ＤＣ４０２，４０４または４０６は、オーダーのための物理リソースのプロビジョニングをオーケストレートするためにＳＤＩモジュール２０４と通信する。それぞれのＴＡＳ  ＤＣ４０２，４０４または４０６におけるＳＤＩコンポーネント２０６は、リソースを割り当てて、サブスクリプションオーダーを実現するために必要なそれらのリソースを構成する。
【００７７】
特定の実施例では、ＴＡＳ  ＤＣ４０２，４０４または４０６は、サブスクリプションに関連付けられたアイデンティティドメインを特定する。ＳＤＩコンポーネント２０６は、既存のアイデンティティドメインの特定または新たなアイデンティティドメインの作成のためにアイデンティティドメイン情報をＩＤＭコンポーネント２００（図２に図示）に提供し得る。オーダーがそれぞれのＴＡＳ  ＤＣ４０２，４０４または４０６におけるＳＤＩモジュールによってプロビジョニングされると、ＴＡＳ中心コンポーネント４００は、サポートシステムにおけるプロビジョニングされたリソースに関する情報をサポートＵＩ２１６を介して配置し得る。情報は、例えばサービスに関連するリソースメトリクスおよびサービスの使用統計の表示を含んでいてもよい。
【００７８】
オペレーション時に、各データセンタにおいて、ＥＭモジュール２０８は、当該データセンタにおいてプロビジョニングされたプロビジョニングされたサービスの各々について、使用されるストレージの量、転送されるデータの量、ユーザの数、ならびにシステムアップ時間およびシステムダウン時間の量などの使用統計を定期的に収集する。これらの統計は、ＥＭモジュール２０８にローカルな（すなわち、同一のデータセンタにおける）ＴＡＳ  ＤＣに提供される。実施例では、ＴＡＳ  ＤＣは、サービスの過剰使用が生じたか否かを判断し、生じた場合には超過に対してどれぐらい課金されるかを判断するために使用統計を使用し、課金情報をオーダー管理システム２１４に提供し得る。
【００７９】
図５は、本発明の実施例に係るクラウドインフラストラクチャシステムにおける１つ以上のモジュールとのＳＤＩモジュールのインタラクションを示す簡略ブロック図である。一実施例では、ＳＤＩモジュール２０６は、ＴＡＳモジュール２０４によって受取られたサブスクリプションオーダーにおけるサービスのためのリソースをプロビジョニングするためにＴＡＳモジュール２０４と対話する。特定の実施例では、図５に示されるモジュールのうちの１つ以上は、クラウドインフラストラクチャシステム１００内のモジュールであってもよい。他の実施例では、ＳＤＩモジュール２０６と対話するモジュールのうちの１つ以上は、クラウドインフラストラクチャシステム１００の外側にあってもよい。また、代替的な実施例は、図５に示されるものよりも多くのまたは少ないモジュールを有していてもよい。これらのモジュールは、ハードウェアまたはソフトウェアまたはそれらの組み合わせで実現されてもよい。
【００８０】
一実施例では、ＳＤＩモジュール２０６におけるモジュールは、クラウドインフラストラクチャシステム１００内のＳａａＳプラットフォーム１０２およびＰａａＳプラットフォーム１０４における１つ以上のモジュールを含んでいてもよい。さまざまなサービスのためのリソースのプロビジョニングを行うために、ＳＤＩモジュール２０６は、各々が特定のタイプのサービスのためのリソースのプロビジョニングに役立つようにカスタマイズされるさまざまな他のモジュールと対話し得る。例えば、図５に示されるように、ＳＤＩモジュール２０６は、ＪａｖａクラウドサービスをプロビジョニングするためにＪａｖａサービスプロビジョニング制御モジュール５００と対話し得る。一実施例では、Ｊａｖａサービスプロビジョニング制御コンポーネント５００は、Ｊａｖａクラウドサービスをプロビジョニングするために実行される一組のタスクを含むＳＤＩモジュール２０６によって規定されるＪａｖａクラウドサービス（Java Cloud Service：ＪＣＳ）アセンブリをデプロイし得る。次いで、インフラストラクチャリソース１０６は、Ｊａｖａクラウドサービスをプロビジョニングするために必要なリソースを決定する。
【００８１】
他の例として、ＳＤＩモジュール２０６は、バーチャル・アセンブリ・ビルダ（Virtual Assembly Builder：ＶＡＢ）モジュール５０２、アプリケーション・エクスプレス（Application Express：ＡＰＥＸ）デプロイヤモジュール５０４、仮想マシン（Virtual Machine：ＶＭ）モジュール５０６、ＩＤＭモジュール２００およびデータベースマシンモジュール１１８などの１つ以上のモジュールと対話し得る。ＶＡＢモジュール５０２は、完全な複数層アプリケーション環境を構成およびプロビジョニングするための機能を含む。一実施例では、ＶＡＢモジュール５０２は、ＶＭモジュール５０６によって提供されるサービスを使用してクラウドインフラストラクチャシステム１００においてミドルウェア（Middleware：ＭＷ）サービスをプロビジョニングするために、ＳＤＩモジュール２０６によって規定されるＭＷサービスアセンブリをデプロイする。ＡＰＥＸデプロイヤモジュール５０４は、データベースサービスを構成およびプロビジョニングするための機能を含む。一実施例では、ＡＰＥＸデプロイヤモジュール５０４は、インフラストラクチャリソース１０６によって提供されるリソースを使用してクラウドインフラストラクチャシステム１００においてデータベースサービスをプロビジョニングするために、ＳＤＩモジュール２０６によって規定されるデータベースサービスアセンブリをデプロイする。ＳＤＩモジュール２０６は、クラウドインフラストラクチャシステム１００において複数のアプリケーションにまたがるアクセス管理などのアイデンティティサービスを提供するためにＩＤＭモジュール２００と対話する。
【００８２】
図６は、本発明の実施例に係るＳＤＩモジュールのサブモジュールの簡略化された高レベル図を示す。図６に示される実施例では、ＳＤＩモジュール２０６は、ＳＤＩ−ウェブサービス（Web Service：ＷＳ）モジュール６００と、ＳＤＩ要求コントローラモジュール６０２と、ＳＤＩタスクマネージャモジュール６０４と、ＳＤＩモニタリングモジュール６０６と、ＳＤＩデータアクセスモジュール６０８と、ＳＤＩ共通ライブラリモジュール６１０と、ＳＤＩコネクタモジュール６１２とを含む。これらのモジュールは、ハードウェアまたはソフトウェアまたはそれらの組み合わせで実現されてもよい。図６に示されるＳＤＩモジュール２０６およびそのさまざまなモジュールは、単に例示の目的で示されており、本発明の実施例の範囲を限定することを意図したものではない。代替的な実施例は、図６に示されるものよりも多くのまたは少ないモジュールを有していてもよい。これらのモジュールおよびそれらの機能については、以下で詳細に説明する。
【００８３】
ＳＤＩ−ＷＳモジュール６００は、ＴＡＳコンポーネント２０４のビジネスプロセスエクセキュータ３１６から、オーダーに関連付けられたビジネスにおけるステップを受取るための機能を含む。一実施例では、ＳＤＩ−ＷＳモジュール６００は、ビジネスプロセスの各ステップを構文解析し、当該ステップをＳＤＩモジュール２０６によって使用される内部表現に変換する。一実施例では、オーダーに関連付けられたビジネスプロセスの各ステップは、ＳＤＩ−ＷＳモジュール６００へのＳＯＡＰ要求の形態で、ウェブサービス処理層を介して（例えば図３Ｂに示されるシステムプロビジョニングＡＰＩを介して）到着する。
【００８４】
ＳＤＩ要求コントローラモジュール６０２は、ＳＤＩモジュール２０６における内部要求処理エンジンであり、非同期要求処理、同時要求処理、同時タスク処理、オーダー要求に関連するフォールト・トレラントな回復およびプラグインサポートを実行するための機能を含む。一実施例では、ＳＤＩ要求コントローラモジュール６０２は、オーダーに関連付けられたビジネスプロセスの各ステップをＳＤＩ−ＷＳモジュール６００から受入れ、当該ステップをＳＤＩタスクマネージャモジュール６０４に提出する。
【００８５】
ＳＤＩタスクマネージャモジュール６０４は、ビジネスプロセスにおいて規定された各ステップを、特定のステップをプロビジョニングするための一連のタスクに変換する。特定のステップのための一組のタスクがプロビジョニングされると、ＳＤＩタスクマネージャモジュール６０４は、特定のステップを実現するためにプロビジョニングされたリソースの詳細を有するオーダーペイロードを含むオペレーション結果により、ＴＡＳモジュール２０４におけるビジネスプロセスエクセキュータ３１６に応答する。ＳＤＩタスクマネージャモジュール６０４は、オーダーに関連付けられた特定のビジネスプロセスの全てのステップが完了するまで、このプロセスを繰返す。
【００８６】
特定の実施例では、ＳＤＩタスクマネージャモジュール６０４は、ＳＤＩコネクタモジュール６１２のサービスを利用することによって、ビジネスプロセスにおいて規定された各ステップを一連のタスクに変換する。ＳＤＩコネクタモジュール６１２は、オーダー要求に関連する１つ以上のサービスをプロビジョニングするために、ＳＤＩタスクマネージャモジュール６０４によって規定されるタスクのデプロイメントに対処するための１つ以上のコネクタを含む。特定の実施例では、コネクタのうちの１つ以上は、特定のサービスタイプに特有のタスクに対処することができ、他のコネクタは、さまざまなサービスタイプにわたって共通のタスクに対処することができる。一実施例では、ＳＤＩコネクタモジュール６１２は、オーダー要求に関連するサービスおよびリソースをプロビジョニングするためにクラウドインフラストラクチャシステム１００における外部モジュール（図５に図示）のうちの１つ以上と遣り取りする一組のコネクタ（ラッパーＡＰＩ）を含む。例えば、アプリケーション・エクスプレス（ＡＰＥＸ）コネクタ６１４は、データベースサービスをプロビジョニングするために、ＡＰＥＸデプロイヤモジュール５０４と遣り取りする。ウェブセンタコネクタ６１６（Web Center Connector：ＷＣＣ）は、ウェブサービスをプロビジョニングするために、クラウドインフラストラクチャシステム１００におけるウェブセンタモジュールと遣り取りする。ウェブセンタモジュールは、ユーザエンゲージメントプラットフォームであり、クラウドインフラストラクチャシステム１００において人々と情報とのコネクティビティを与えるための機能を含む。
【００８７】
特定の実施例では、ミドルウェアアプリケーション（Middleware Application：ＭＡ）コネクタ６１８は、ミドルウェアアプリケーションサービスをプロビジョニングするために、クラウドインフラストラクチャシステム１００におけるＶＡＢモジュール５０２と遣り取りする。ＮＵＶＩＡＱコネクタ６２０は、Ｊａｖａサービスをプロビジョニングするために、ＶＡＢモジュール５０２と遣り取りする。ＩＤＭコネクタ６２２は、クラウドインフラストラクチャシステム１００においてサービスおよびリソースにサブスクライブするユーザにアイデンティティおよびアクセス管理を提供するために、ＩＤＭモジュール２００と遣り取りする。バーチャル・アセンブリ・ビルダ（ＶＡＢ）コネクタ６２４は、完全な複数層アプリケーション環境を構成およびプロビジョニングするために、クラウドインフラストラクチャシステム１００におけるＶＡＢモジュール５０２と遣り取りする。プラグインコネクタ６２６は、クラウドインフラストラクチャシステム１００におけるコンポーネントを管理およびモニタリングするために、ＥＭモジュール２０８と遣り取りする。ＨＴＴＰサーバコネクタ６２８は、クラウドインフラストラクチャシステム１００においてユーザに接続サービスを提供するために、ＰａａＳプラットフォームにおける１つ以上のウェブサーバと遣り取りする。
【００８８】
ＳＤＩモジュール２０６におけるＳＤＩモニタリングモジュール６０６は、Ｊａｖａ管理拡張（Java Management Extensions：ＪＭＸ）要求を受取るためのインバウンドインターフェースを提供する。また、ＳＤＩモニタリングモジュール６０６は、クラウドインフラストラクチャシステム１００においてアプリケーション、システムオブジェクトおよび装置を管理およびモニタリングするためのツールも提供する。ＳＤＩデータアクセスモジュール６０８は、Ｊａｖａデータベースコネクティビティ（Java Database Connectivity：ＪＤＢＣ）要求を受取るためのインバウンドインターフェースを提供する。ＳＤＩデータアクセスモジュール６０８は、クラウドインフラストラクチャシステム１００において、データアクセスをサポートし、オブジェクト関係マッピング、ｊａｖａトランザクションＡＰＩサービス、データアクセスオブジェクトおよび接続プーリングを提供する。ＳＤＩ共通ライブラリモジュール６１０は、ＳＤＩモジュール２０６におけるモジュールのための構成サポートを提供する。
【００８９】
上記の図６の実施例は、本発明の実施例に係るＳＤＩモジュールにおけるモジュールを記載している。図７Ａは、本発明の実施例に係るクラウドインフラストラクチャシステムにおけるＳＤＩモジュールのモジュールによって実行され得る処理を示す簡略化されたフローチャート７００を示す。図７Ａに示される処理は、１つ以上のプロセッサによって実行されるソフトウェア（例えばコード、命令、プログラム）、ハードウェアまたはそれらの組み合わせで実現されてもよい。ソフトウェアは、（例えばメモリ装置、非一時的なコンピュータ読取可能記憶媒体上の）メモリに格納されてもよい。図７Ａに示される特定の一連の処理ステップは、限定的であるよう意図されるものではない。他のステップのシーケンスも代替的な実施例に従って実行されてもよい。例えば、本発明の代替的な実施例は、異なる順序で上記のステップを実行してもよい。さらに、図７Ａに示される個々のステップは、個々のステップに適切であるようにさまざまなシーケンスにおいて実行され得る複数のサブステップを含んでいてもよい。さらに、特定のアプリケーションに応じて、さらなるステップが追加または削除されてもよい。当業者は、多くの変更例、変形例および代替例を認識するであろう。一実施例では、図７Ａに示される処理は、図６に詳細に示されるＳＤＩモジュール２０６における１つ以上のモジュールによって実行され得る。
【００９０】
７０２において、サブスクリプションオーダーに関連付けられたビジネスプロセスが受取られる。一実施例では、ＳＤＩモジュール２０６におけるＳＤＩ−ＷＳモジュール６００は、サブスクリプションオーダーに関連付けられたビジネスプロセスにおける１つ以上のステップをビジネスプロセスエクセキュータ３１６から受取る。７０４において、ビジネスプロセスにおける各ステップは、サブスクリプションオーダーのためのリソースをプロビジョニングするための一連のタスクに変換される。一実施例では、ＳＤＩモジュール２０６におけるＳＤＩタスクマネージャモジュール６０４は、ＳＤＩコネクタモジュール６１２のサービスを利用することによって、ビジネスプロセスにおいて規定された各ステップを一連のタスクに変換する。７０６において、サブスクリプションオーダーは、一連のタスクに基づいてプロビジョニングされる。一実施例では、図６に示されるように、ＳＤＩコネクタモジュール６１２は、サブスクリプションオーダーにおけるサービスのためのリソースをプロビジョニングするために、ＳＤＩタスクマネージャモジュール６０４によって規定されるタスクのデプロイメントに対処するための１つ以上のコネクタを含む。
【００９１】
図６に関して上記したように、ＳＤＩタスクマネージャモジュール６０４は、ＳＤＩコネクタモジュール６１２のサービスを利用することによって、ビジネスプロセスにおいて規定された各ステップを一連のタスクに変換し、ＳＤＩコネクタモジュール６１２は、オーダー要求に関連する１つ以上のサービスをプロビジョニングするために、ＳＤＩタスクマネージャモジュール６０４によって規定されるタスクのデプロイメントに対処するための１つ以上のコネクタを含んでいてもよい。コネクタのうちの１つ以上は、特定のサービスタイプに特有のタスクに対処することができ、他のコネクタは、さまざまなサービスタイプにわたって共通のタスクに対処することができる。一実施例では、ＳＤＩコネクタモジュール６１２は、オーダー要求に関連するサービスおよびリソースをプロビジョニングするためにクラウドインフラストラクチャシステム１００における外部モジュール（図５に図示）のうちの１つ以上と遣り取りする一組のコネクタ（ラッパーＡＰＩ）を含む。例えば、ＮＵＶＩＡＱコネクタ６２０は、ＪａｖａサービスをプロビジョニングするためにＶＡＢモジュール５０２と遣り取りする。
【００９２】
図７Ｂは、本発明の実施例に係るＮｕｖｉａｑシステム７１０および他のクラウドインフラストラクチャシステムとのその関係の高レベルアーキテクチャを示す簡略ブロック図を示す。図７Ｂに示されるＮｕｖｉａｑシステム７１０は、図７Ｂに示されるもの以外の他のコンポーネントを有していてもよいということが理解されるべきである。さらに、図７Ｂに示される実施例は、本発明の実施例を組込むことができるクラウドインフラストラクチャシステムの一例に過ぎない。いくつかの他の実施例では、Ｎｕｖｉａｑシステム７１０は、図７Ｂに示されるものよりも多くのまたは少ないコンポーネントを有していてもよく、２つ以上のコンポーネントを組み合わせてもよく、またはコンポーネントの異なる構成もしくは配置を有していてもよい。
【００９３】
特定の実施例では、Ｎｕｖｉａｑシステム７１０は、ＰａａＳオペレーションをオーケストレートするためのランタイムエンジンを提供するように構成され得る。Ｎｕｖｉａｑシステム７１０は、他の製品およびサービスとの統合を容易にするためにウェブサービスＡＰＩを提供し得る。また、Ｎｕｖｉａｑシステム７１０は、システムプロビジョニング、アプリケーションデプロイメントおよび関連付けられたライフサイクルオペレーションにおける複雑なワークフローのためのサポートを提供し、管理およびモニタリングソリューションと統合する。
【００９４】
図７Ｂに示される実施例では、Ｎｕｖｉａｑシステム７１０は、Ｎｕｖｉａｑプロキシ７１２と、Ｎｕｖｉａｑマネージャ７１４と、Ｎｕｖｉａｑデータベース７１６とを備える。特定の実施例では、Ｎｕｖｉａｑマネージャ７１４は、Ｎｕｖｉａｑシステム７１０へのエントリポイントを提供し、ウェブサービスＡＰＩを介してＰａａＳオペレーションへの安全なアクセスを提供する。内部では、Ｎｕｖｉａｑマネージャ７１４は、データベースにおいてシステム状態を追跡し、ワークフローエンジン上でのジョブの実行を制御する。パブリッククラウドでは、Ｎｕｖｉａｑマネージャ７１４は、プロビジョニングオペレーションおよびデプロイメントオペレーションをそれぞれ駆動するために、テナントプロビジョニングシステム（ＳＤＩ２０６）およびテナントコンソールによってアクセスされ得る。
【００９５】
一実施例では、Ｎｕｖｉａｑマネージャ７１４は、内部ワークフローエンジンを介して非同期にジョブを実行する。ジョブは、所与のＰａａＳワークフローに特有のアクションのシーケンスであってもよい。アクションは、順番に実行されてもよく、任意のステップにおける障害は、結果としてジョブ全体の障害になる。多くのワークフローアクションは、ＥＭコマンドラインインターフェース（ｃｌｉ）などのワークフローに関連する外部システムに権限を委任する。一実現例では、Ｎｕｖｉａｑマネージャ７１４アプリケーションは、ファイアウォール内で実行される関連付けられたＨＴＴＰサーバ（例えばオラクルＨＴＴＰサーバまたはＯＨＳ）インスタンスを有する２ノードウェブロジッククラスタにおいてホストされ得る。
【００９６】
特定の実施例では、Ｎｕｖｉａｑプロキシ７１２は、Ｎｕｖｉａｑ  ＡＰＩへのパブリックアクセスポイントである。一実施例では、パブリックＡＰＩのみがここで公開され得る。プロキシ７１２によって受取られた要求は、Ｎｕｖｉａｑマネージャ７１４に送られ得る。一実施例では、Ｎｕｖｉａｑプロキシ７１２はファイアウォールの外側で実行される一方、マネージャ７１４はファイアウォール内で実行される。一実現例では、Ｎｕｖｉａｑプロキシ７１２アプリケーションは、ファイアウォールの外側で実行されるウェブロジッククラスタ上で実行される。
【００９７】
特定の実施例では、Ｎｕｖｉａｑデータベース７１６は、プラットフォームインスタンス、デプロイメント計画、アプリケーション、ウェブロジックドメイン、ジョブ、アラーとなどであるがこれらに限定されないさまざまなドメインエンティティを追跡する。必要に応じて、主キーがサービスデータベースと整合させられてもよい。
【００９８】
一実施例では、プラットフォームインスタンス７１８は、所与のテナントのためのウェブロジックサービスに必要な全てのリソースを含んでいてもよい。
【００９９】
Ｎｕｖｉａｑシステム７１０は、ウェブロジッククラウドサービスによって使用されるワークフローを実行するために、クラウドインフラストラクチャシステム１００のさらなるシステムに依拠し得る。これらの依存性は、ＳＤＩ２０６、ＩＤＭ２００、ウイルススキャンシステム、サービスデータベース、ＣＲＭインスタンスなどへの依存性を含んでいてもよい。例えば、Ｎｕｖｉａｑシステム７１０は、ＳＤＩ２０６におけるアセンブリデプロイヤによって実行される機能に依存し得る。一実施例では、アセンブリデプロイヤは、ＯＶＡＢ（Oracle Virtual Assembly builder：オラクルバーチャル・アセンブリ・ビルダ）およびＯＶＭ（Oracle Virtual Machine：オラクル仮想マシン）とのインタラクションを管理するためのシステムである。Ｎｕｖｉａｑシステム７１０によって使用されるアセンブリデプロイヤの機能は、アセンブリをデプロイするための機能、アセンブリをアンデプロイするための機能、アセンブリデプロイメントを説明するための機能、アプライアンスをスケーリングするための機能などを含み得るが、これらに限定されるものではない。一実現例では、Ｎｕｖｉａｑシステム７１０は、ウェブサービスＡＰＩを介してアセンブリデプロイヤにアクセスする。
【０１００】
特定の実施例では、セキュリティポリシは、アプリケーションにデプロイされる前に特定のアーティファクトがウイルススキャンされることを必要とし得る。クラウドインフラストラクチャシステム１００は、この目的でウイルススキャンシステムを提供し得て、パブリッククラウドの複数のコンポーネントのためのサービスとしてスキャンを提供する。
【０１０１】
特定の実施例では、パブリッククラウドインフラストラクチャは、テナント（例えば顧客）およびそれらのサービスサブスクリプションについての情報を含むサービスデータベースを維持し得る。Ｎｕｖｉａｑワークフローは、テナントもサブスクライブする他のサービスに対するクライアントとしてウェブロジックサービスを適切に構成するために、このデータにアクセスし得る。
【０１０２】
Ｎｕｖｉａｑシステム７１０は、そのセキュリティ統合のためにＩＤＭ２００に依存し得る。特定の実施例では、Ｊａｖａサービスインスタンスは、ＣＲＭインスタンスに関連付けられ得る。当該関連付けにより、Ｊａｖａサービスインスタンスにデプロイされたユーザアプリケーションは、ウェブサービスコールを介してＣＲＭインスタンスにアクセスできる。
【０１０３】
Ｎｕｖｉａｑシステム７１０によって提供されるサービスをさまざまなエンティティが使用し得る。Ｎｕｖｉａｑシステム７１０のこれらのクライアントは、プラットフォームインスタンス上でアプリケーションを管理するために顧客がアクセスし得る管理サーバ（例えばオラクル管理サーバ）ベースのユーザインターフェイスであるテナントコンソールと、アプリケーションライフサイクル管理オペレーションへのアクセスを提供するように拡張されたオラクルＩＤＥ（JDeveloper、NetBeansおよびＯＥＰＥ）などのいくつかのＩＤＥと、プラットフォームインスタンス上のライフサイクルオペレーションにアクセスするために利用可能な１つ以上のコマンドラインインターフェース（Command Line Interface：ＣＬＩ）とを含んでいてもよい。
【０１０４】
Ｎｕｖｉａｑシステム７１０についてのプロビジョニング使用事例、すなわちプロビジョニングプラットフォームインスタンスの使用事例は、Ｎｕｖｉａｑ  ＡＰＩの作成プラットフォームインスタンスオペレーションによって実現される。クラウドインフラストラクチャシステム１００の文脈では、Ｎｕｖｉａｑシステムに対するサービスインスタンスは、Ｎｕｖｉａｑプラットフォームインスタンスに対応する。プラットフォームインスタンスは、このインスタンスに関連する全ての後続のオペレーション上で使用される独自の識別子を割り当てられる。作成プラットフォームインスタンスアクションに提供されるプラットフォームデプロイメント記述子により、テナントのサブスクリプション要件を満たすようにプラットフォームインスタンスの構成を修正するプロパティを設定することができる。これらのプロパティは、例えば以下を含んでいてもよい：
プロパティ＃１：oracle.cloud.service.weblogic.size
値：ベーシック、標準、エンタプライズ
説明：サブスクリプションタイプを規定する。これは、サーバの数、データベース限度およびサービス設定の質に影響を及ぼす。
【０１０５】
プロパティ＃２：oracle.cloud.service.weblogic.trial
値：真、偽
説明：これがトライアルサブスクリプションであるか否かを示す。
【０１０６】
プロパティ＃３：oracle.cloud.service.weblogic.crm
値：ＣＲＭサービスＩＤ
説明：このウェブロジックサービスインスタンスに関連付けられるべきＣＲＭサービスを特定する。
【０１０７】
図７Ｃは、本発明の実施例に係るＮｕｖｉａｑシステムを使用するプロビジョニングプロセスのステップを示す例示的なシーケンス図を示す。図７Ｃに示されるシーケンス図は、一例に過ぎず、限定的であるよう意図されるものではない。
【０１０８】
インストール／更新アプリケーションの使用事例、すなわちインストールアプリケーションオペレーションは、アプリケーションアーカイブがパブリッククラウドのセキュリティ要件を満たすことを確認した後に、実行中のウェブロジックサーバにアプリケーションをデプロイする。一実施例では、インストールアプリケーションアクションに提供されるアプリケーションデプロイメント記述子により、テナントのサブスクリプション要件を満たすようにアプリケーションの構成を修正するプロパティを設定することができる。これらのプロパティは、例えば以下を含んでいてもよい：
プロパティ：oracle.cloud.service.weblogic.state
値：実行、停止
説明：デプロイメント後のアプリケーションの初期状態を規定する。
【０１０９】
図７Ｄは、本発明の実施例に係るＮｕｖｉａｑシステムを使用するデプロイメントプロセスのステップを示す例示的なシーケンス図を示す。図７Ｄに示されるシーケンス図は、一例に過ぎず、限定的であるよう意図されるものではない。
【０１１０】
図２に戻って、特定の実施例では、協働して動作するＴＡＳ２０４およびＳＤＩ２０６は、クラウドインフラストラクチャシステム１００によって提供される一組のサービスから顧客によってオーダーされた１つ以上のサービスのためにリソースをプロビジョニングすることを担当する。例えば、一実施例では、データベースサービスをプロビジョニングするために、自動化されたプロビジョニングフローは、有料サブスクリプションについては以下のようなものであってもよい：
（１）顧客は、ストアＵＩ２１０を介して、サービスの有料サブスクリプションのオーダーを行う。
【０１１１】
（２）ＴＡＳ２０４がサブスクリプションオーダーを受取る。
（３）サービスが利用可能であると、ＴＡＳ２０４は、ＳＤＩ２０６のサービスを使用することによってプロビジョニングを開始する。ＴＡＳ２０４は、ビジネスプロセスのオーケストレーションを実行してもよく、関連のビジネスプロセスを実行してオーダーのプロビジョニング局面を完了する。一実施例では、ＴＡＳ２０４は、プロビジョニングに関わるステップをオーケストレートして、ライフサイクルオペレーションを処理するために、ＢＰＥＬ（ビジネスプロセス実行言語：Business Process Execution Language）プロセスマネージャを使用し得る。
【０１１２】
（４）一実施例では、データベースサービスをプロビジョニングするために、ＳＤＩ２０６は、要求を行っている顧客にスキーマを関連付けるようにＣＬＯＵＤ＿ＵＩにおけるＰＬＳＱＬ  ＡＰＩを呼出し得る。
【０１１３】
（５）顧客へのスキーマの関連付けが成功した後、ＳＤＩはＴＡＳに知らせて、ＴＡＳは、データベースサービスが現在顧客によって使用可能な状態にあるという通知を顧客に送る。
【０１１４】
（６）顧客は、（例えばcloud.oracle.comなどのＵＲＡＬを使用して）クラウドインフラストラクチャシステム１００にログインし、サービスを起動し得る。
【０１１５】
いくつかの実施例では、顧客は、トライアルベースでサービスにサブスクライブすることも許可されてもよい。例えば、このようなトライアルオーダーは、（例えばcloud.oracle.comを使用して）クラウドＵＩ２１２を介して受取られ得る。
【０１１６】
特定の実施例では、クラウドインフラストラクチャシステム１００は、顧客またはテナント同士の間で基本的なハードウェアおよびサービスインスタンスが共有されることを可能にする。例えば、データベースサービスは、一実施例では、図７Ｅに示されるようにプロビジョニングされ得る。図７Ｅは、複数のExadata演算ノード７３０および７３２を示し、演算ノード７３０および７３２の各々が、データベースサービスのためにプロビジョニングされたデータベースインスタンスを提供する。例えば、演算ノード７３０は、データベースサービスのためのデータベースインスタンス７３４を提供する。各々のExadata演算ノードは、複数のデータベースインスタンスを有していてもよい。
【０１１７】
特定の実施例では、各データベースインスタンスは、複数のスキーマを備えていてもよく、当該スキーマは、異なる顧客またはテナントに関連付けられてもよい。例えば、図７Ｅでは、データベースインスタンス７３４は、２つのスキーマ７３６および７３８を提供し、スキーマ７３６および７３８の各々は、それ自体の表を有する。スキーマ７３６は、データベースサービスにサブスクライブする第１の顧客またはテナントに関連付けられ得て、スキーマ７３８は、データベースサービスにサブスクライブする第２の顧客またはテナントに関連付けられ得る。各テナントは、完全に切離されたスキーマを得る。各スキーマは、関連付けられたテナントについての表、ビュー、格納されたプロシージャ、トリガなどを含むデータベースオブジェクトを管理できる容器のように動作する。各スキーマは、１つの専用の表領域を有し得て、各々の表領域は、１つのデータファイルを有する。
【０１１８】
このように、単一のデータベースインスタンスは、複数のテナントにデータベースサービスを提供することができる。これは、基本的なハードウェアリソースの共有を可能にするだけでなく、テナント同士の間でのサービスインスタンスの共有も可能にする。
【０１１９】
特定の実施例では、このようなマルチテナンシシステムは、ＩＤＭ２００によって容易になり、これにより、各々がそれ自体の別個のアイデンティティドメインを有する複数の別個の顧客が、クラウドにおいて共有されるハードウェアおよびソフトウェアを使用することが有利に可能になる。その結果、各顧客が自身の専用のハードウェアまたはソフトウェアリソースを有する必要がなくなり、場合によっては、特定の時点で一部の顧客によって使用されていないリソースが、他の顧客によって使用可能になり、それによってそれらのリソースが無駄になることを防止する。例えば、図７Ｅに示されるように、データベースインスタンスは、各々がそれぞれのアイデンティティドメインを有する複数の顧客に供給されることができる。各々のこのようなデータベースサービスインスタンスは、多くの別個のアイデンティティドメインの中で共有される単一の物理的なマルチテナントデータベースシステムの別個の抽象化またはビューであり得るが、各々のこのようなデータベースサービスインスタンスは、各々の他のデータベースサービスインスタンスが有するものとは別個の、場合によっては異なるスキーマを有することができる。したがって、マルチテナントデータベースシステムは、顧客指定のデータベーススキーマとそれらのデータベーススキーマが関係するアイデンティティドメインとの間のマッピングを格納し得る。マルチテナントデータベースシステムは、特定のアイデンティティドメインのためのデータベースサービスインスタンスに、当該特定のアイデンティティドメインにマッピングされるスキーマを使用させ得る。
【０１２０】
また、マルチテナンシは、Ｊａｖａサービスなどの他のサービスに拡張可能である。例えば、複数の顧客は、それぞれのアイデンティティドメイン内に配置されたＪＡＶＡサービスインスタンスを有し得る。各々のこのようなアイデンティティドメインは、ハードウェアの仮想的な「スライス」と見なされることができるＪＡＶＡ仮想マシンを有し得る。一実施例では、ジョブモニタリングサービス（例えばハドソン）は、各々の別個のアイデンティティドメインがＪＡＶＡエンタプライズ版プラットフォームのそれ自体の別個の仮想的な「スライス」を有することを可能にするように、クラウドにおけるＪＡＶＡエンタプライズ版プラットフォーム（例えばオラクルウェブロジック）と組み合わせられてもよい。このようなジョブモニタリングサービスは、例えばオペレーティングシステムの時間ベースのジョブスケジューラによって実行されるソフトウェアプロジェクトまたはジョブの構築などの繰返されるジョブの実行をモニタリングし得る。このような繰返されるジョブは、ソフトウェアプロジェクトの連続的な構築および／またはテストを含んでいてもよい。さらにまたは代替的に、このような繰返されるジョブは、ジョブモニタリングサービスが実行されるマシンから離れたマシン上で実行されるオペレーティングシステム起動ジョブの実行のモニタリングを含んでいてもよい。
【０１２１】
ポッドプロビジョニングおよびサービスプロビジョニング
いくつかの実施例に従うと、ＳＤＩは、サービスのために別個のＰＯＤプロビジョニングおよびサービスプロビジョニングを調整することができる。ＰＯＤは、以下のうちの１つを表わし得る論理エンティティである：（Ｊａｖａサービスの場合と同様に）予めプロビジョニングされた匿名のシングルテナントデプロイメント；または、（データベースサービスの場合と同様に）複数のテナントのために機能するマルチテナントスタック（物理的または仮想的）。例えば、ＰＯＤは物理的なスタック上へのサービスのデプロイメントである。ＰＯＤは１つ以上のサービスインスタンスを収容することができる。ＰＯＤは先験的に作成することができるか、または、サービスインスタンスが所与の顧客のために作成されるときにオンデマンドで作成することができる。
【０１２２】
いくつかの例においては、ＰＯＤは、サービスを実行させるためのソフトウェアスタックのインスタンス化である。このため、ＰＯＤを用いてサービスを実行する。例えば、Ｊａｖａサービスに対応するＰＯＤは仮想マシンのスタックを含んでもよい。別の例として、データベースサービスのためのＰＯＤは、データベースのインスタンスを含んでもよい。ＰＯＤは、サービスをホストすることのできるサブシステムと見なされてもよい。異なるポッドを異なるサービスのために用いてもよい。
【０１２３】
サービスのためのＰＯＤを作成するタスクはＰＯＤプロビジョニングと称される。図８Ｂに示されるように、ＰＯＤプロビジョニングは、ＳＤＩモジュール２０６によって容易にされ得る。ＰＯＤプロビジョニングは、ソフトウェアコンポーネントの匿名インスタンスを作成する動作である。インフラストラクチャの観点から、ＰＯＤは完全にインストールされて有線接続されてもよい。ＰＯＤは、顧客特有の構成データまたは統合を有さない（例えば、いかなる顧客ストライプにも接続されない）。
【０１２４】
物理的なＰＯＤプロビジョニングは３つの広範囲の局面を含み得る。
１．サービスの物理的なフットプリントを定義するためのＰＯＤ定義スキーマ；
２．サービス特有のプラグインを取込むためのサービス定義スキーマ；ならびに
３．エンタプライズ管理（ＥＭ：Entreprise Management）、アイデンティティ管理（ＩＤＭ：Identity Management）、ユニフォーム・リソース・ロケータ（ＵＲＬ：Uniform Resource Locator）ルーティング、および他のサービス特有の構成を取込むためのサービス構成スキーマ。
【０１２５】
各々のサービスのために異なるＰＯＤが作成されてもよい。例えば、Ｊａｖａサービスの場合、ＰＯＤは、ミドルウェア技術を実行する（例えば、フュージョンミドルウェアを実行する）一組のＶＭにマップし得る。ＰＯＤプロビジョニングのために、ＳＤＩモジュール２０６によって別々の自動化フローが用いられてもよい。いくつかの例においては、ＰＯＤはほぼ完全に仮想的な概念にもなり得る。
【０１２６】
ＰＯＤの一例として、特定の顧客に特定のサービスを提供するためにともに有線接続された一組のデータセンタリソースを含み得る。ＰＯＤは、共有されるインフラストラクチャにおいて専用のリソースを含み得る。例えば、オラクル・バーチャル・アセンブリ・ビルダ（ＯＶＡＢ：Oracle Virtual Assembly Builder）技術などのＶＡＢ技術を用いてデプロイされるサービスの場合、ＯＶＡＢアセンブリはＰＯＤである。ＰＯＤの別の例として、ドメインにＪａｖａアセンブリを構成するＶＭのコアセットを含み得る。フュージョンアプリケーションの場合、ＰＯＤは、データベースおよびＶＭを含み得るフュージョンアプリケーションを特定的にインストールするためだけの一組の仮想マシンであり得る。データベースサービスのために、ＰＯＤはExadataと、当該Exadata上にＤＢインスタンスとをともに含み得る。
【０１２７】
図８Ａは、本発明の実施例に係るクラウドインフラストラクチャシステムにおけるＳＤＩモジュール２０６によって実行され得る処理を示す簡略化されたフローチャート８００を示す。図８Ａに示される処理は、１つ以上のプロセッサによって実行されるソフトウェア（例えばコード、命令、プログラム）、ハードウェアまたはそれらの組み合わせで実現されてもよい。ソフトウェアは、（例えばメモリ装置、非一時的なコンピュータ読取可能記憶媒体上の）メモリに格納されてもよい。図８Ａに示される特定の一連の処理ステップは、限定的であるよう意図されるものではない。他のステップのシーケンスも代替的な実施例に従って実行されてもよい。例えば、本発明の代替的な実施例は、異なる順序で上記のステップを実行してもよい。さらに、図８Ａに示される個々のステップは、個々のステップに適切であるようにさまざまなシーケンスにおいて実行され得る複数のサブステップを含んでいてもよい。さらに、特定のアプリケーションに応じて、さらなるステップが追加または削除されてもよい。当業者は、多くの変更例、変形例および代替例を認識するであろう。一実施例では、図８Ａに示される処理は、図６に詳細に示されるＳＤＩモジュール２０６における１つ以上のモジュールによって実行され得る。
【０１２８】
フローチャート８００は、予めプロビジョニングされた各ＰＯＤアセンブリのために実行され得る。ＳＤＩモジュール２０６は、管理アルゴリズムおよび選択アルゴリズムを用いてＰＯＤをバックグラウンドにおいてプロビジョニングし、次いで、要求が受取られると、特定のテナントのためのＰＯＤを決定することができる。例えば、図８Ｂに示されるように、ＳＤＩモジュール２０６は、顧客オーダーを受取る前にＰＯＤを予めプロビジョニングすることができる。サービス要求が受取られると、ＳＤＩモジュール２０６は、次に、図８Ａに示されるように、ＰＯＤに顧客情報を追加し、要求に基づいてＰＯＤをカスタマイズすることができる。
【０１２９】
８０２において、ＳＤＩモジュール２０６は、一組のサービスからサービスを特定する、顧客からのサブスクリプションオーダー情報を格納することができる。例えば、サブスクリプションオーダー情報は、ストアＵＩ  ２１０からの、データベースサービスについての顧客要求であってもよい。サブスクリプションオーダー情報は顧客特有の構成を含み得る。
【０１３０】
８０４において、ＳＤＩモジュール２０６は、サブスクリプションオーダー情報に関連付けられたサービスを決定することができる。例えば、ＳＤＩモジュール２０６は、顧客オーダーがデータベースサービスのためのものであると判断することができる。したがって、顧客オーダーが受取られると、ＳＤＩモジュール２０６は、顧客特有のＰＯＤを顧客要求にマッピングするために要求されたサービスのタイプを決定する。
【０１３１】
８０６において、ＳＤＩモジュール２０６は、予めプロビジョニングされた匿名のデプロイメントをサブスクリプションオーダー情報にマッピングすることができる。予めプロビジョニングされた匿名のデプロイメントはＰＯＤであり得る。この明細書中において記載されるように、ＰＯＤは、特定のサービスのために予めプロビジョニングされ、作成され得る。
【０１３２】
サービスは、特定の顧客のサブスクリプションにマップすることができる。例えば、サービスは特定の顧客のためのＪａｖａインスタンスであってもよい。サービスインスタンスは、Ｊａｖａサービスなどの特定のタイプのサービスのための特定のサブスクリプションＩＤである。サービスインスタンスは特定の顧客に属し得るものであって、ポッド上に存在する。１つのサービスインスタンスだけがシングルテナントＰＯＤ上に存在し、複数のインスタンスは複数のテナントＰＯＤ上に存在し得る。さらに、サービスインスタンスは常にＰＯＤに存在しているが、２つのポッドにまたがることはない。他方で、サービスインスタンスは、単にＰＯＤが存在する以上のことを必要とする可能性がある。
【０１３３】
８０８において、ＳＤＩモジュール２０６は、予めプロビジョニングされた匿名のデプロイメントを顧客特有の構成で構成することによって、顧客のために特定的にサービスインスタンスを作成することができる。例えば、ＳＤＩモジュール２０６は、パーソナリティインジェクション（personality injection）を用いて顧客特有の構成をＰＯＤに導入することができる。サービスプロビジョニングは特定の顧客を特定のＰＯＤに結合するプロセスである。これにより、顧客特有の構成がＰＯＤに導入される（例えばパーソナリティインジェクション）。ＰＯＤは、１つ以上のテナントを同時にサポートしてもよい（シングルテナントまたはマルチテナント）。複数のテナントをサポートするＰＯＤの場合、複数のパーソナリティがＰＯＤにインジェクションされ、それぞれのパーソナリティが、サポートされた各テナントに対応し得る。
【０１３４】
別の実施例に従うと、特定のサービスは複数のＰＯＤを用いることができる。例えば、Ｊａｖａサービスが要求され得る。ＳＤＩモジュール２０６は予めプロビジョニングされた複数のＪａｖａＰＯＤを有し得る。要求されたサイズのサービスに基づいて、ＳＤＩモジュール２０６は、要求されたサービスをサポートするために複数のＰＯＤが必要であると判断し得る。
【０１３５】
サービスプロビジョニングおよびＰＯＤプロビジョニングのプロセスは別個のものであり、互いとは無関係であり、ＳＤＩモジュール２０６によって調整される。これにより、例えば、バックグラウンドにおいてＰＯＤプロビジョニングを実行することが可能となる。ポッドの予備的なプール化は、将来の需要を予想するために管理者構成可能なオプションに基づいて行われてもよい。サービスプロビジョニングは、一般に、ＰＯＤプロビジョニングよりもはるかに高速であり、ＳＤＩがＴＡＳからオーダーを受取るとオンデマンドで発生する。ＳＤＩは、プール化およびレジストレーションを処理している間も、ＰＯＤプロビジョニングおよびサービスプロビジョニングを調整する。
【０１３６】
ポッドを予めプロビジョニング
いくつかの実施例に従うと、ＳＤＩによって処理される完全に自動化されたＰＯＤプロビジョニングは、ＴＡＳからの要求なしにソフトウェアコンポーネントのインスタンスを作成し得る。これは、顧客オーダーに先立って実行されるバックグラウンドアクティビティであり得る。ＰＯＤをゆっくりと立ち上げることができるので、ＰＯＤプロビジョニングは事前に完了してしまい、このため、顧客がサービスをオーダーすると、この顧客は、オーダーを速やかに（例えば数秒以内または数分以内に）受取ることができる。ＰＯＤは、１つ以上のテナントを同時にサポートし得る（シングルテナントまたはマルチテナント）。これらのプロセスは、ＰＯＤプロビジョニングがバックグラウンドにおいて実行され得るように独立している。ポッドの予備的なプール化は、将来の需要を予想するために管理者構成可能なオプションに基づいている。
【０１３７】
リソースが少なくなれば、ＳＤＩモジュール２０６は新しいＰＯＤを作成することができる。後に説明されるように、Ｍｉｎ＿Ｕｓｅｄしきい値を用いることにより、ＳＤＩモジュール２０６は使用および割り当てをモニタリングすることができる。モニタリングに基づいて、ＳＤＩは新しいＰＯＤを予めプロビジョニングすることができる。
【０１３８】
例えば、ＳＤＩタイマジョブが実行され、所与のサービスサイズ（ベーシック、標準、エンタプライズ）のための自由なアセンブリの数が現在の構成において規定されるＭｉｎ＿Ｕｓｅｄしきい値を下回ったことをＳＤＩモジュール２０６に通知すると、しきい値に達するまで追加のアセンブリを予めプロビジョニングすることができる。
【０１３９】
図８Ｂは、本発明の実施例に係るクラウドインフラストラクチャシステムにおけるＳＤＩモジュール２０６によって実行され得る処理を示す簡略化されたフローチャート８５０を示す。図８Ｂに示される処理は、１つ以上のプロセッサによって実行されるソフトウェア（例えばコード、命令、プログラム）、ハードウェアまたはそれらの組み合わせで実現されてもよい。ソフトウェアは、（例えばメモリ装置、非一時的なコンピュータ読取可能記憶媒体上の）メモリに格納されてもよい。図８Ｂに示される特定の一連の処理ステップは、限定的であるよう意図されるものではない。他のステップのシーケンスも代替的な実施例に従って実行されてもよい。例えば、本発明の代替的な実施例は、異なる順序で上記のステップを実行してもよい。さらに、図８Ｂに示される個々のステップは、個々のステップに適切であるようにさまざまなシーケンスにおいて実行され得る複数のサブステップを含んでいてもよい。さらに、特定のアプリケーションに応じて、さらなるステップが追加または削除されてもよい。当業者は、多くの変更例、変形例および代替例を認識するであろう。一実施例では、図８Ｂに示される処理は、図６に詳細に示されるＳＤＩモジュール２０６における１つ以上のモジュールによって実行され得る。
【０１４０】
フローチャート８５０は、各々の予めプロビジョニングされたアセンブリのために実行することができる。アセンブリはＰＯＤの一種である。例えば、アセンブリは、作成のためにＯＶＡＢによって用いられる特有の技術である。ＯＶＡＢはアセンブリを作成するかまたはアセンブリをデプロイする。Ｍｉｎ＿ｕｓｅｄしきい値に達するまで、または、タイマジョブがオペレータによって中断されるまで、無期限にＰＯＤを予めプロビジョニングし続けることができる。
【０１４１】
加えて、障害がいずれかのステップで起これば、先行するオペレーションを巻き戻すことができる。次いで、ＳＤＩモジュール２０６はシーケンスを再試行することができる。
【０１４２】
８５２において、ＳＤＩモジュール２０６は、ＰＯＤアセンブリを予めプロビジョニングするためにＩＰアドレスを獲得することができる。例えば、８つのＩＰアドレス（例えばＦＲＯＮＴＥＮＤから４つ、ＢＡＣＫＥＮＤから４つ）は、ＳＤＩデータベースに保存することができる。オペレーションはアトミックレベルであり得る。いくつかの例においては、システムが十分なＩＰアドレスを有していない場合、管理者はより多くの容量を環境に追加することができる。
【０１４３】
８５４において、ＳＤＩモジュールは、バーチャル・アセンブリ・ビルダ・ホーム（例えばオラクルバーチャル・アセンブリ・ビルダ（ＯＶＡＢ））を作成することができる。例えば、新しいディレクトリはルート（例えばovab.virtual.root）ディレクトリ下で作成することができ、さまざまなｓｙｍｌｉｎｋは、ホームディレクトリ（例えばovab.master.home）まで作成し直すことができる。ホームディレクトリは、シングルデプロイメントのためにバーチャル・アセンブリ・ビルダ・ホームとして用いることができる。これにより、ロッキング問題を起こすことなく、ＳＤＩモジュール２０６がバーチャル・アセンブリ・ビルダ（例えばＯＶＡＢ）オペレーションを並行して実行することが可能となる。
【０１４４】
８５６において、ＳＤＩモジュール２０６は、新しいバーチャル・アセンブリ・ビルダ（例えばＯＶＡＢ）ホームにデプロイメントプラン（例えばdeploymentPlan.xml）ファイルを作成することができる。デプロイメントプランは、デプロイメントのためにバーチャル・アセンブリ・ビルダ（例えばＯＶＡＢ）によってデプロイされた仮想マシン（ＶＭ）にインジェクションされることとなるＩＰアドレス、ネットワークファイル共有（ＮＦＳ：network file sharing）マウント、およびＶＭブリッジ名などの、但しこれらに限定されない構成情報を含み得る。
【０１４５】
８５８において、ＳＤＩモジュール２０６はＺＦＳボリュームを作成することができる。ＺＦＳは複合型ファイルシステムおよび論理ボリュームマネージャである。ＺＦＳの特徴は、データ破損からの保護、高記憶容量のサポート、ファイルシステムおよびボリューム管理の概念の統合、スナップショットおよびコピー・オン・ライトクローン、連続的な完全性のチェックおよび自動修復を含む。例えば、３ボリューム分がデプロイメントのためにＺＦＳファイラにおいて作成される。これらボリュームはこのデプロイメントの一部としてブートされた各々のＶＭに搭載される。
【０１４６】
８６０において、ＳＤＩモジュール２０６は、アセンブリをデプロイするためのデプロイコマンド（例えば、abctl deploy）を発行し得る。例えば、デプロイコマンドはＶＭマネージャによって１つ〜４つのＶＭをブートすることができる。
【０１４７】
８６２において、ＳＤＩモジュール２０６は、ＳＤＩデータベースにおいてアセンブリをフリーに設定することができる。例えば、ＳＤＩモジュール２０６は、ＰＲＥ＿ＰＲＯＶ＿ＪＡＶＡ＿ＡＳＳＥＭＢＬＹ行のためにＵＳＥＤ＝０を設定することができる。これは、ＰＯＤアセンブリが、サービスインスタンスに割り当てられるように読み出されることを示す。
【０１４８】
先に述べたように、ＰＯＤをゆっくりと立ち上げることができるので、ＰＯＤアセンブリは事前に完了し、このため、顧客がサービスをオーダーすると、この顧客は、オーダーを速やかに（例えば、数秒以内または数分以内に）受取ることができる。ポッドの予備的なプール化は、将来の需要を予想するために管理者構成可能なオプション（例えば、Ｍｉｎ＿Ｕｓｅｄしきい値）に基づいている。
【０１４９】
サービスインスタンスの作成
ＳＤＩモジュール２０６はサービスインスタンスの作成および破壊を自動化し、また、試行期間満了などの特定のビジネス活動をサポートするためにサービスインスタンスのモニタリング能力を提供する。
【０１５０】
サービスインスタンス作成ＡＰＩは、新しいシステムおよび／またはサービスインスタンスを作成するために用いることができる。サービスインスタンス作成ＡＰＩは、そのシステムに属する１つ以上のサービスインスタンスとともに新しいシステムを作成するのに用いることができるか、または、既存のシステムに対する１つ以上のサービスインスタンスを作成するのに用いることができる。ＡＰＩは非同期であり得る。なぜなら、ＡＰＩは、実施に関する我々の決断と、解決するのに手動での介入を必要とする潜在的な障害とに応じて数分または数時間かかる長期間続くオペレーションとなる可能性があるからである。したがって、このＡＰＩはその引数のうちの１つとしてコールバックアドレスを採用することができる。コールの即時リターン値は、単に、要求の履行期間にわたる特定のための要求を特定する要求ＩＤであってもよい。要求の結果は、提供されるアドレスにコールバックすることによって与えることができる。コールバックが応答本体でなされると、要求によって作成されたシステムおよびサービスインスタンスは完全に操作可能となり使用の準備ができた状態になり得る。
【０１５１】
コールバックアドレスおよびサービスオーダードキュメントはサービスインスタンス作成ＡＰＩのための入力である。コールバックアドレスはオペレーションが完了したときにＴＡＳにコールバックするためのアドレスであり得る。サービスオーダードキュメントは、ＴＡＳシステムによって処理されるオーダーを記述するＸＭＬドキュメントであり得る。サービスオーダードキュメントは以下の情報を与えることができる：
・コールバックアドレス：オペレーションが完了したときにＴＡＳにコールバックするためのアドレス。
【０１５２】
・システム名：新しいシステムまたは既存のシステムについての名前。システム名は、この値が共有のＩＤＭインスタンス内でテナンシ名に用いられることとなるので、クラウドアーキテクチャ全体にわたって一意的であり得る。
【０１５３】
・新しいシステムインジケータであるか：これが新システムを作成するオーダーであるかまたはサービスインスタンスを既存のシステムに追加するオーダーであるかどうかを示すブール値。
【０１５４】
・（任意）システム管理ユーザ名：新しいシステムが作成されている場合に作成されるべきシステム／テナンシ管理者アカウントの名前。
【０１５５】
・サービスインスタンスオーダーのリスト：１−Ｎシステムインスタンスオーダー。この場合、各々のシステムインスタンスオーダーは以下を含む。
【０１５６】
−サービスインスタンス名：作成されるべきサービスインスタンスの名前。
システムインスタンス名は、所与のシステム内において一意的である。
【０１５７】
−管理ユーザ名：このサービスインスタンスのために作成されるべきサービスインスタンス管理者アカウントの名前。
【０１５８】
−サービスインスタンスタイプ：ＦＡ  ＣＲＭ、ＦＡ  ＨＣＭ、Ｊａｖａ、ＷＣＣ、ＡＰＥＸなどの作成されるべきサービスのタイプ。
【０１５９】
−サービスインスタンスサイズ：小／中／大。全てのサービスインスタンスはここではサイズについての何らかの概念を有する。
【０１６０】
−サービス特有のプロパティ：作成されているサービスのタイプに特有の一組のプロパティ。
【０１６１】
サービスオーダー履行ドキュメントはサービスインスタンス作成ＡＰＩのための出力であり得る。上述のように、この非同期コールからのリターン値は、その持続期間中にこの要求を追跡するために用いることができる要求ｉｄであり得る。要求に対する応答は、入力として与えられるコールバックアドレスに対してコールバックとして送ることができる。サービスオーダー履行ドキュメントは以下の情報を含むＸＭＬドキュメントであり得る。
【０１６２】
・要求ｉｄ：元のＡＰＩコールに同期的に戻される要求ｉｄ。
・システム名：この要求によって生成または追加されるシステム名。
【０１６３】
・（任意）システム／テナンシ管理ユーザ名および仮パスワード：この要求により新しいシステムが作成された場合、これらの値は応答の一部として返すことができる。これらの値は、要求により結果的に単に既存のシステムに新しいサービスが追加されただけであった場合には返されない可能性がある。
【０１６４】
・（任意）システムＩＤＭコンソールＵＲＬ：この要求により新しいシステムが作成される場合、このシステムのためのＩＤＭコンソールについてのＵＲＬを返すことができる。
【０１６５】
・サービスインスタンスオーダーのリスト：各々のサービスインスタンスオーダーは以下を含む。
【０１６６】
−サービスインスタンス名：作成されたサービスインスタンスの名前。
−サービスインスタンス管理ユーザ名および仮パスワード：サービスインスタンス管理アカウント情報。
【０１６７】
−（任意）サービスインスタンス管理ＵＲＬ：サービスのために適用可能である場合、サービスインスタンスのための管理コンソールに対するＵＲＬ。例えば、Ｊａｖａサービスの場合、これは、ＪａｖａサービスのためのＥＭコンソールにつながるＵＲＬとなるはずである。
【０１６８】
−サービスインスタンスＵＲＬ：ユーザをそれらの新しく作成されたサービスインスタンスに導くＵＲＬ。
【０１６９】
加えて、ＳＤＩモジュール２０６は、サービスインスタンスを予めデプロイして関連付ける能力を有し得る。さまざまなサービスインスタンスをデプロイするのに必要な時間の長さに応じて、アセンブリがこれらのサービスのために予めデプロイされてもよい。したがって、ユーザがサービスインスタンスを要求する場合、ＳＤＩモジュール２０６が行うべきことは、いずれかのユーザ特有の「パーソナリティ」をアセンブリに入れてそれをユーザに返すことである。
【０１７０】
要求フローのプロビジョニング
顧客がオーダーを要求すると、ＳＤＩプロビジョニング要求が、単一のＳＯＡＰオペレーション時にＴＡＳによって要求される。プロビジョニング要求は、１バンドルのシステム／サービス作成、読出、更新および削除（ＣＲＵＤ）オペレーションを含み得る。プロビジョニング要求は、その要求Ｉｄによって一意的に特定することができる。
【０１７１】
図９はいくつかの実施例に係るプロビジョニング要求フローを示す。例えば、プロビジョニング要求は、ＴＡＳモジュール２０４によって開始させることができる。９０２において、ＴＡＳモジュール２０４は、関連するプロビジョニングＳＯＡＰオペレーション（ＣＲＵＤ）を呼び出し、ＳＯＡＰ要求を送ることによって要求ｉｄを設定することができる。９０４において、ＳＯＡＰ要求を受取ると、ＳＤＩは、ＨＴＴＰ２０２コードで応答することができ、要求を非同期的に処理し始める。加えて、９０６において、ＳＤＩモジュール２０６は、最初に、これが、要求Ｉｄによって決定され得る新しい要求であるかどうかをチェックすることができる。９０６でチェックすることにより、同じ要求（すなわち同じ要求Ｉｄを備えた要求）が再処理されるのを防ぐ（例えば、要求が再提出されると、アドレスに「対する応答」および「相関ＩＤ」値（ＴＡＳコールバックのために用いられる）がその最新のＳＯＡＰ要求の値に更新される）。
【０１７２】
要求が新しくない場合、９０８において、ＳＤＩモジュール２０６は、（例えば既存のＳＤＩデータベースエントリからの）要求状態をチェックする。例えば、状態が「完了している」場合、要求はそのときまでに処理できている。次いで、９１０において、ＳＤＩモジュール２０６は関連するＴＡＳ「orderCompleteCallback」を呼び出すことができる。代替的には、状態が「キャンセルされる」場合、要求はそのときまでには処理できていない。次いで、９１２において、ＳＤＩモジュール２０６は、障害情報で、関連するＴＡＳ「onFaultCallback」を呼び出すことができる。
【０１７３】
要求が新しい場合、９１４において、要求が引き続き処理される。ＴＡＳモジュール２０４は、処理がいつ完了するかを通知することができる。ＳＤＩモジュール２０６は要求を確認することができる。例えば、入力確認、状態確認および確認のロックなどの３つの確認カテゴリがあってもよい。９１６において、要求が無効であれば、ＳＤＩモジュール２０６は、関連する障害情報でＴＡＳ「onFaultCallback」を呼び出すことができる。
【０１７４】
要求が有効であれば、９１８において、ＳＤＩモジュールは新しい要求を作成し、状態を設定して準備する。ＳＤＩモジュール２０６は要求の実行を開始し、実行し続ける。例えば、タスクキューにおける次のタスクが実行され、その後、次のタスクが実行されるなどして、全てのタスクが完了するまで続けられる。
【０１７５】
９２０において、この要求に関連付けられる全てのタスクが実行できた場合、ＳＤＩモジュール２０６は、オーダーの履行により、関連するＴＡＳ「orderCompleteCallback」を呼び出すことができる。
【０１７６】
エラーシナリオにおいては、要求が完了せず、シングルタスクが失敗した場合、要求中のそれ以降のタスクが実行されない可能性がある。９２２において、ＳＤＩモジュール２０６は、エラーが回復可能であるかどうかを判断することができる。９２４において、エラーが回復不可能である場合、要求状態がキャンセルされた状態に変更され、ＳＤＩモジュール２０６は、関連する障害情報でＴＡＳ「onFaultCallback」を呼び出すことができる。加えて、ＳＤＩモジュール２０６は、内部エラーキューにエントリを追加することができる。このキューは、ダッシュボードを更新して管理者に警告電子メールを送るために、ＥＭモジュール２０８によってポーリングされることとなる。９２６において、エラーが回復可能である場合、ＳＤＩモジュール２０６は、状態を一時停止状態に変更し、その状態から停止された状態に変更することができる。加えて、ＳＤＩモジュール２０６は、内部エラーキューにエントリを追加することができる。このキューは、ダッシュボードを更新して管理者に警告電子メールを送るために、ＥＭモジュール２０８によってポーリングされることとなる。
【０１７７】
サービスについての新しい要求がＳＤＩモジュール２０６によって受取られて確認されると、ＳＤＩモジュール２０６が要求されたサービスをプロビジョニングする。図１０は、いくつかの実施例に係るプロビジョニング例の詳細なフローを示す。プロビジョニングプロセスはＳＤＩモジュール２０６によって管理される。
【０１７８】
例えば、ＴＡＳは、ＢＰＥＬプロセス内からシステムプロビジョニングモジュールと統合することができる。具体的には、システムプロビジョニングインターフェイスを非同期的なＳＯＡＰベースのＷｅｂサービスコールとして公開することができ、さまざまなライフサイクルオペレーションのためのＴＡＳ  ＢＰＥＬプロセスが直接システムプロビジョニングエンドポイントをコールしてプロビジョニングタスクを実行することができる。
【０１７９】
加えて、システムプロビジョニングは、コールバックＡＰＩを用いて、成功についての結果をＢＰＥＬプロセスに送信することができるか、または、オペレーションが障害のために失敗したことをＢＰＥＬプロセスに通知することができる。コールバックを受取ると、ＢＰＥＬプロセスは、その結果を用いてその通常のフローを継続するか、または障害を処理する障害ポリシーに従う。
【０１８０】
Ｊａｖａサービスおよびデータベースサービスのプロビジョニング例
図１０は、顧客のためにＪａｖａサービスおよびデータベースサービスをともにプロビジョニングするエンド・ツー・エンドフローを示す。例えば、１０５０において、顧客は試験的なサブスクリプションをオーダーすることができる。クラウドＵＩを用いる顧客は、サインアップしてＪａｖａサービスを無料で試用することができる。クラウドＵＩは、ＰＬＳＱＬコールを行ってオーダーを提出することができる。この場合、このコールは、Ｊａｖａサービスサブスクリプションおよびデータベースサービスサブスクリプションを含む２つの異なるサブスクリプションのためのものであってもよく、ＰＬＳＱＬを介してＴＡＳモジュール２０４に提出され得る。
【０１８１】
１０５５において、オンボードを開始することができ、ＴＡＳモジュールはテナントコールを作成することができる。テナントにおいて、サービスタイプおよびサイズがパスされ得る。この例においては、オーダーがＪａｖａおよびデータベースサービスのためのものあるので、２つのタイプが存在し得る。トライアル用の対応するサイズは等しく小さいものであってもよい。代替的には、オーダーが支払済みオーダーであった場合、サイズがより大きくてもよい。作成テナントコールはプロビジョニングのためのＳＤＩモジュール２０６に渡される。
【０１８２】
１０６０において、ローカルの候補マシンのループコールにより、ＳＤＩモジュール２０６が利用可能なリソースを参照して、場合によっては、予めプロビジョニングされたＰＯＤを見つけることを可能にする。サービスタイプに応じて、リソースは予めプールされて、既に大部分がセットアップされていた可能性がある。代替的には、サービスが予めプロビジョニングされていなかった場合、ＳＤＩモジュール２０６は要求されたサービスをプロビジョニングするために最初から始めなければならないかもしれない。例えば、Ｊａｖａサービスの場合、ＳＤＩモジュール２０６は、ＰＯＤを予めプロビジョニングすることをサポートすることができる。この場合、仮想マシンを作成し、これらを立ち上げる作業は全て事前に終わっている。したがって、顧客要求を受取ると、ＳＤＩモジュール２０６は、単に、パーソナリティインジェクションというより小さなステップを有するだけとなる。パーソナルインジェクションは、ランタイムで、予めプロビジョニングされたＰＯＤを特定の顧客のための構成でカスタマイズすることを含む。データベースサービスのために、ＳＤＩモジュール２０６は顧客フットプリントをオンデマンドで作成することができる。他方では、顧客フットプリントは、データベースサービスが既存のデータベース内のスキーマを用いているので、極めて仮想的なフットプリントになり得る。フュージョンアプリケーションの場合、パーソナリティインジェクションは、特定の顧客の詳細と一致させるために構成を接続し直すことを含み得る。この例においては、ＳＤＩモジュール２０６は、Ｊａｖａサービスのために予めプロビジョニングされた既存のＶＭを選択し得るか、または、新しいＪａｖａサービスをプロビジョニングし得るが、これは、新しいＶＭを立ち上げるために十分なリソースを有するラックの選択を含む。
【０１８３】
１０６５においては、ＳＤＩモジュール２０６はレジストリを更新し得る。ＳＤＩモジュール２０６は、基礎をなす仮想マシンマネージャおよび仮想マシンプールを追跡し続けるために物理的なハードウェアリソースをオンボードで記録することができる。加えて、ＳＤＩモジュールは、作成されたアセンブリおよびＶＭを全て追跡し続けることができ、かつ、それらが、例えば、特定の顧客サブスクリプションに結合される顧客またはアセンブリには割り当てられていない匿名のアセンブリであるかどうかを追跡し続けることができる。
【０１８４】
１０７０において、ビルドＩＤはオンボード層に戻っていく。これにより、特定の要求のためにシステムまたはサービスが作成されていることをＴＡＳモジュール２０４に通知することができる。ＴＡＳモジュールは、プロビジョニングが完了しているかどうかを非同期的に判断することができる。１０７５において、ＴＡＳモジュール２０４は、ＳＤＩモジュール２０６をポーリングし、特定の要求が完了しているかどうかをチェックすることができる。代替的には、ＴＡＳモジュール２０４による非同期的なＳＯＡＰ要求により、ＴＡＳ２０４がコールバックを待っている場合に要求が完了しているかどうかを判断することもできる。
【０１８５】
１０８０において、ＳＤＩモジュールは、ＡＰＩ（例えばＯＶＡＢ  Ｊａｖａ  ＡＰＩ）を用いて、ウェブロジックサーバ（ＷＬＳ）アセンブリをデプロイすることができる。例えば、ＯＶＡＢは、アセンブリにおいて個々のＶＭを作成するために、内部でＶＭマネージャにコールすることができる。加えて、ＯＶＡＢは、全体的なＷＬＳドメイントポロジーをＶＭにサポートさせるために、複数のＶＭをインターフェイスするための複数のＶＭがある場合に追加のロジックを有することができる。１０８０および１０８５において、ＳＤＩモジュール２０６は、ＷＬＳマシンプールおよびＤＢマシンプールを作成することができる。ＷＬＳアセンブリが実際にデプロイされて、ＶＭマネージャを介して、さらにＯＶＡＢを介して戻すことができれば、ＳＤＩモジュールは匿名のアセンブリが作成されたと判断することができる。
【０１８６】
加えて、匿名のアセンブリはＮｕｖｉａｑベースのパーソナリティインジェクションに組込むことができる。例えば、ＳＤＩモジュール２０６は、Ｎｕｖｉａｑコネクタをコールし、物理的な詳細および顧客特有の詳細を渡して、Ｎｕｖｉａｑが実行中のＶＭに対してランタイムコールを行えるようにすることができる。Ｎｕｖｉａｑは、顧客特有の情報（例えば、顧客によって選択された、ＵＲＬへのアイデンティティドメイン名）と一致させるためにウェブロジックドメインを再構成することができる。
【０１８７】
１０８５において、ＳＤＩモジュール２０６はデータベースサービスをプロビジョニングすることができる。例えば、データベースサービスは、Exadataハードウェア上に予め構成することができるExadataハードウェア・データベース・インスタンスによって支援され得る。図１２にさらに記載されるように、各々のインスタンスは多くの顧客をサポートすることができる。ＳＤＩモジュール２０６は、ＤＢサービス自体にExadataを登録し、ＥｘａｄａｔａＰＯＤを管理することができる。さらに、ＳＤＩモジュール２０６は、ＡＰＥＸコネクタを用いて、データベースサービスをプロビジョニングすることができる。ＡＰＥＸはデータベースの上にあるアプリケーション・エクスプレス・プログラミング・エンジンである。ＳＤＩモジュール２０６は、データベースをプロビジョニングするために、データベースサービスのサイズ、顧客アイデンティティドメイン名などの関連情報をＡＰＥＸコネクタに渡すことができる、次いで、ＡＰＥＸコネクタは、実行中に顧客のために追加のスキーマおよびテーブル領域を割り当てることができる。加えて、特定のExadataマシンは、負荷、サイジングなどに基づいて選択されてもよい。実際のスキーマは、スキーマに対する接続情報を含み得るＳＤＩモジュール２０６に戻される。ＳＤＩモジュール２０６は、ランダムなクレデンシャルを生成し、このクレデンシャルをＴＡＳモジュール２０４に返す。
【０１８８】
１０９０において、ＳＤＩモジュール２０６はソフトＨＴＴＰサーバ（例えばＯＨＳ）の再始動を開始させることができる。ＳＤＩモジュール２０６は、ＯＨＳのソフトな再始動を必要とし得る特有の顧客のために特有の結合でもって構成ファイルを動的に生成し得る。ソフトな再始動により、全てのインフライト要求が再始動前に完了することを可能にする。ＯＨＳが再開されると、ルーティング層を介するＰＯＤへのインバウンド・トラフィックが実現可能となる。
【０１８９】
１０９５において、要求されたサービスおよび生成されたパスワードのために、応答が、ＵＲＬでもってＴＡＳモジュール２０４に送り返される。パスワードは、サービス管理者であってもよく、または、サービス環境にアクセスするための電子メールを介して顧客に与えることができるアイデンティティドメイン管理者パスワードであってもよい。
【０１９０】
Ｊａｖａクラウドサービスインスタンスをプロビジョニングするサービス
図１１Ａは、一実施例に係るＪａｖａクラウドサービスインスタンスのプロビジョニングを示す。ＪａｖａクラウドサービスインスタンスのプロビジョニングはＪａｖａサービスプロビジョニング制御（ＪＳＰＣ：Java Service Provisioning Control）によって実行することができる。例えば、プロビジョンプラットフォームインスタンス使用事例は、制御ＡＰＩをプロビジョニングするＪａｖａサービスの作成プラットフォームインスタンスオペレーションによって実現することができる。パブリッククラウドの文脈においては、ＪａｖａクラウドサービスインスタンスはＪＳＰＣプラットフォームインスタンスに対応する。プラットフォームインスタンスには、このインスタンスに関する以降の全オペレーションに対して用いることができる固有の識別子が割り当てられる。
【０１９１】
作成プラットフォームインスタンス動作に対して提供されるプラットフォームデプロイメント記述子は、テナントのサブスクリプション要件を満たすためにプラットフォームインスタンスの構成を変更するプロパティを設定することを可能にする。プロパティは以下の目的のために用いることができる：サブスクリプションタイプ／サイズを規定する（サブスクリプションタイプ／サイズは、サーバの数、データベース限度およびサービス設定の質に影響を及ぼす可能性がある）；これがトライアルサブスクリプションであるか否かを示す；このウェブロジックサービスインスタンスに関連付けられるべきＣＲＭサービスを特定する。
【０１９２】
一実施例に従うと、ＳＤＩモジュール２０６は構成マネージャとして連続的な統合サーバ（例えばハドソン）を用いることができる。連続的な統合サーバは、ビルドおよびデプロイメントを自動化することを可能にする。加えて、連続的な統合サーバは、ユーザがリソース利用を向上させ、メンテナンス・オーバーヘッドを低減させ、突然のシステム負荷スパイクに自動的に応答することができるように、クラウドサービスおよび仮想化技術とのインターフェイスを可能にし得る。
【０１９３】
図１１Ｂは、一実施例に係るＪａｖａクラウドサービスインスタンスのプロビジョニングおよびフュージョンアプリケーションの関連付けのためのさまざまなインタラクションの高レベル概略図を示す。Ｊａｖａサービスのプロビジョニングは、顧客またはテナントの要件に基づいてＶＭをパーソナライズし得るプロセスであり得る。図１１Ｂに示されるように、ＪａｖａサービスはフュージョンアプリケーションＳａａＳ環境を拡張させることができる。
【０１９４】
図１１Ｂは、匿名のアセンブリがテナントの個別化情報でどのようにハイドレートされるかを説明する。例えば、ＪａｖａサービスＶＭ画像はＯＶＡＢアセンブリとして提供することができる。このようなアセンブリのデプロイメントにより、結果として、匿名のインスタンスが得られる。図８Ｂにおいて言及されるように、ＳＤＩモジュールはサービスの匿名のインスタンスを予めプロビジョニングすることができる。匿名のインスタンスはライブのＶＭであるが、いずれのテナントにも関連付けられていない。先に記載されたように、ＳＤＩモジュール２０６は、テナント環境またはサービスインスタンスを作成するプロセスを促進するために匿名のＶＭを予めプロビジョニングすることができる。
【０１９５】
１１０１において、ＴＡＳモジュール２０４は、Ｊａｖａサービスについてのテナント要求をＳＤＩモジュール２０６に送ることができる。１１０２において、ＳＤＩモジュール２０６は、アセンブリ・ビルダ・コネクタを介してアセンブリ・ビルダに対して匿名のアセンブリを要求することができる。１１０３において、アセンブリ・ビルダは、ＯＶＭを用いて、匿名のアセンブリをデプロイすることができる。１１０４において、匿名のアセンブリがＳＤＩモジュール２０６に送られる。１１０５において、ＳＤＩモジュール２０６はＩＤＭコネクタを介してＩＤＭスライスを作成することができる。１１０６において、ＩＤＭはＳＤＩモジュール２０６にＩＤＭ座標を返すことができる。１１０７において、ＳＤＩモジュール２０６は、データベースコネクタを介してデータベーススライスを作成することができる。１１０８において、データベースはＳＤＩモジュール２０６にデータベース座標を返すことができる。いくつかの例においては、データベースはＡＰＥＸデータベースサービスであってもよい。
【０１９６】
１１０９において、ＳＤＩモジュール２０６は、Ｎｕｖｉａｑコネクタを介して、受取られたＩＤＭ、データベースおよびＥＭ座標でＪａｖａサービスを構成するよう要求することができる。１１１０において、Ｎｕｖｉａｑは、Ｎｕｖｉａｑデータベースに全てのサービスインスタンスデータを格納することができる。１１１１において、Ｎｕｖｉａｑは、ＥＭエージェントの開始をも含み得るＪａｖａサービスインスタンスを構成することができる。いくつかの例においては、ＮｕｖｉａｑはＪａｖａサービスオーケストレータであってもよい。
【０１９７】
さらに、フュージョンアプリケーション（ＦＡ：Fusion application）ＳａａＳ環境を用いる場合、ＪａｖａサービスをＦＡ  ＳａａＳテナントに従って適切にプロビジョニングすることが必要になる可能性がある。したがって、図１１Ｂに記載されたプロビジョニングプロセスでは、アイデンティティ管理に関するいくつかの相違の原因を明らかにしなければならないかもしれない。
【０１９８】
典型的なクラウドＰａａＳ（例えばＪａｖａサービス、データベースサービス）プロビジョニング環境においては、全てのテナントに対処する単一の共有ＩＤＭがあってもよい。各々のテナントのセキュリティ情報は、他のテナントから隔てておくことのできるＩＤＭストライプ（例えばアイデンティティドメイン）で分離させることができる。ＦＡ  ＳａａＳの場合、ＩＤＭが異なっていてもよく、各々のＳａａＳインスタンス専用とされてもよい。したがって、ＪａｖａサービスおよびＦＡサービスを統合すると、シングルサインオンのような機能をサポートするためにＩＤＭ同士の間にインタラクションを存在させることが必要となる可能性がある。
【０１９９】
いくつかの実施例に従うと、関連付けられたサービスのプロビジョニング中、ＳＤＩモジュールは、ＳａａＳサービスとＰａａＳサービスとの間で共有のＩＤＭを用いることができる。ＳａａＳサービスとＰａａＳサービスとの間の共有のＩＤＭに基づいて、以下にサポート可能な使用事例を示す：ＦＡウェブサービスと統合されるＪａｖａクラウドサービスにおけるパートナー／顧客構築アプリケーション；ＦＡに埋め込まれたユーザインターフェイスを有するＪａｖａクラウドサービスにおけるパートナー／顧客構築アプリケーション；テストインスタンスおよび生成インスタンスによる影響；テストインスタンスと生成インスタンスとの間のマイグレーション；オンプレミスとのユーザの統合；ならびに、他のユーザのためのクラウド・アイデンティティ・ストアを用いた、何人かのユーザのためのオンプレミスとの実際のユーザの統合。
【０２００】
図１１Ｃは、本発明のいくつかの実施例に係るＰａａＳおよびＳａａＳサービス関連付けプロセスを示す。ＰａａＳ（例えばＪａｖａ）サービスおよびＳａａＳ（例えばＦＡ）サービス関連付けプロセスは、ＰａａＳ環境ハイドレーションを含み得る。例えば、ＪａｖａサービスＰａａＳ環境は、プロビジョニング中に呼び出されるハイドレーションスクリプトを含み得る。スクリプトは、ＰａａＳドメインなどを構成するようなさまざまなタスクを実行することができる。タスクは、ＰａａＳインタラクションおよびＳａａＳインタラクションを可能にするようファイアウォールルールを変更すること；認証サーブレットフィルタに必要な変更を調査すること；ハイドレーション中に実行するのに必要なフックをパペットリポジトリに追加すること；共有されるＩＤＭ統合；ならびに、ウェブサービス構成変更；を含み得る。
【０２０１】
データベースクラウドサービスをプロビジョニングするサービス
図１２は、いくつかの実施例に係るデータベースクラウドサービスの高レベル論理図を示す。クラウドデータベースサービスはＳＤＩモジュール２０６によってプロビジョニングすることができる。データベースクラウドサービスは３つの主要なコンポーネントを有し得る：単純なＵＲＩによってデータベースクラウドサービスにおけるデータにアクセスすることを可能にするウェブサービスアクセス；ブラウザベースの環境において多種多様なアプリケーションを全て作成およびデプロイするためのアプリケーション・エクスプレス；ならびに、（例えば数クリックだけで）容易にインストールすることができる一組のビジネス生産能率アプリケーション。
【０２０２】
マルチテナントに共有されるアーキテクチャのいくつかの主要な属性は以下を含み得る：各々のテナントは完全に切離されたスキーマを獲得する；各々のExadata演算ノードは複数のデータベースインスタンスを有する；各々のインスタンスは複数のスキーマ（例えばテナント）を有する；各々のスキーマ／テナントは、表、ビュー、格納されたプロシージャ、トリガを含むデータベースオブジェクトを管理できる容器である；各々のスキーマは１つの専用の表領域を有する；各々の表領域は１つのデータファイルを有する。
【０２０３】
図７Ｅと同様の図１２は、同じ物理的なマシン内に複数の演算ノード（例えば、ＥＸＡＤＡＴＡ演算ノード１２０２、ＥＸＡＤＡＴＡ演算ノード１２０４）を有する例を示す。加えて、データベースインスタンス１２０６は各々の演算ノード内に常駐することができる。さらに、２つの別個のスキーマ（例えばスキーマ１２０８、スキーマ１２１０）は各々のデータベースインスタンス１２０６内に含めることができる。別の実施例に従うと、３つ以上のスキーマを１つのデータベースインスタンスに含めることができる。各々のスキーマ（例えばスキーマ１２０８、スキーマ１２１０）は異なる顧客のためのものであってもよい。したがって、いくつかの実施例においては、別々の顧客に関連付けられる複数のスキーマは同じデータベースインスタンス内に常駐することができる。
【０２０４】
このデータベース実現例においては、一人の顧客だけが各々のデータベースインスタンス内に常駐することができる。したがって、複数の顧客は複数のデータベースインスタンスを必要とする。代替的には、本発明の実施例に従うと、複数のスキーマが１つのデータベースインスタンスに含まれているので、データベースインスタンスは複数の顧客の間で共有することができる。各々のスキーマはテナントを表わすことができ、このため、１つのデータベースインスタンスは複数のテナントを有することができる。
【０２０５】
例えば、フュージョンアプリケーションおよびＪａｖａサービスはシングルテナントサービスである。シングルテナントサービスは一人の顧客に割り当てられる。データベースサービスはマルチテナントサービスである。データベースサービスのためのＰＯＤはラックについての２、３個のデータベースインスタンスを備えたExadataラックである。この場合、多くの顧客が１つのＰＯＤを用いることができる。したがって、ＰＯＤが複数の顧客を有することができるので、データベースサービスはマルチテナントサービスとなる。これにより、ＰＯＤを一度セットアップし、次いで、ＳＤＩモジュール２０６によるランタイムプロビジョニングを行って、ランタイムで複数のテナントをＰＯＤに追加することが可能となる。
【０２０６】
図１３は、いくつかの実施例に係るマルチテナントデータベースサービスのためのサービスプロビジョングフロー１３００を示す。図１２に示されるように、データベースサービスはマルチテナントサービスの一例である。というのも、１つのデータベースインスタンスが、異なる顧客に関連付けられた複数のスキーマを有し得るからである。
【０２０７】
１３０２において、顧客は、トライアルサービスに関してクラウドＵＩ２１２にデータベースサービスを要求する。代替的には、顧客は、支払済みのサービスに関してストアＵＩ２１０にデータベースサービスを要求することができる。１３０４において、クラウドＵＩ２１２がＴＡＳモジュール２０４に顧客要求を送る。１３０６において、ＴＡＳモジュール２０４は、ＢＰＥＬを介してＳＤＩモジュール２０６をコールすることによってプロビジョニングを開始することができる。いくつかの例においては、サービスが利用可能である場合にのみＴＡＳモジュール２０４はプロビジョニングを開始することができる。１３０８において、ＳＤＩモジュール２０６は、要求している顧客に関するスキーマを関連付けるためにＣＬＯＵＤ＿ＵＩにおけるＰＬＳＱＬ  ＡＰＩをコールすることができる。１３１０において、関連付けが成功した後、ＳＤＩモジュール２０６はＴＡＳモジュール２０４に通知することができ、ＴＡＳモジュール２０４は（例えば電子メールで）顧客に通知することができる。その後、顧客はウェブサーバにログインし、データベースサービスを始動させる。
【０２０８】
別の実施例に従うと、フュージョンアプリケーションのためのサービスプロビジョニングが実現され得る。例えば、新しいフュージョンアプリケーションサブスクリプションオーダーはＳＤＩモジュール２０６によって受取られる。オーダーが承認されると、フュージョンアプリケーションＰＯＤがプロビジョニングされる。顧客（例えばテナント）は、テナントをそのポッドにおいてセットアップできるようにするための重要な情報を提供する。初期のユーザが作成されると、フュージョンアプリケーションクラウドサービスは、初期のユーザにユーザＩＤおよびパスワードを電子メールで送る。さらに、割り当てポッドにプロビジョニングするテナントは、オンプレミスの顧客が採用するであろう標準的なセットアッププロセスのサブセットである。
【０２０９】
図１５は、本発明の実施例に係る予めプロビジョニングされたポッド１５００の物理的アーキテクチャを例示する。図１５に示されるように、複数のポッドは、クラウドインフラストラクチャによって提供される１つ以上のサービスのために予めプロビジョニングされてもよい。例えば、図１５に示されるように、一組のポッド１５０５は、ＪＡＶＡサービスのために予めプロビジョニングされてもよく、一組のポッド１５１０はデータベースサービスのために予めプロビジョニングされてもよい。
【０２１０】
上述のように、ポッドは、特定のサービスを提供するためにともに有線接続されているリソース（例えば、処理リソース、ネットワーキングリソース、メモリリソース）のモジュールアセンブリである。例えば、図１５に示されるように、予めプロビジョニングされたポッド１５００は、Ｊａｖａサービス１５０５のための１つ以上の仮想マシン（例えばオラクル仮想マシン（ＯＶＭ））および１つ以上のデータベースリソース１５１０（例えばオラクルExadataデータベース）を論理的にグループ分けしたものであり得る。データベースリソースはストレージ、インフラストラクチャおよびネットワークコンポーネントを含んでもよい。予めプロビジョニングされたポッドは、シングルテナンシサービスまたはマルチテナンシサービス用に構成されてもよい。
【０２１１】
ポッドは、当該ポッドが用いられるであろうサービスを要求するサブスクリプションオーダーを受取る前に作成されるので、予めプロビジョニングされているものと見なされる。一実施例においては、特有のサービスのために、各々の予めプロビジョニングされたポッドは、一定のポッドサイズまたは一組のリソース、例えば、一定数の仮想マシン、管理されたサーバ、およびデプロイされたサーバなどを有し得る。１つのサービス用に予めプロビジョニングされたポッドは別のサービス用に予めプロビジョニングされたポッドとは異なる可能性がある。これは、１つのサービス（例えばＪＡＶＡサービス）を提供するのに用いられるリソースのタイプおよび数が、別のサービス（例えばデータベースサービス）を提供するのに用いられるリソースのタイプおよび数とは異なる可能性があるからである。例えば、ＪＡＶＡサービス用に予めプロビジョニングされたポッド１５０５は互いに似ている可能性があるが、これらはデータベースサービス用に予めプロビジョニングされたポッド１５１０とは異なる可能性がある。
【０２１２】
クラウドインフラストラクチャシステム１００は、予めプロビジョニングされたポッド１５００のプールを作成し得る。このようなポッドを作成することにより、サービスについての顧客からのサブスクリプションオーダーに応答してリソースをプロビジョニングするのに必要な処理の量を低減させる。これにより、サブスクリプションオーダーで要求されたサービスのためのリソースをプロビジョニングするのに必要な時間の量を低減させる。サービスについての顧客のサブスクリプションオーダーに応答して顧客用の新しいサービスインスタンスを作成するのに必要な時間を短縮させる。
【０２１３】
サービスを要求する顧客からオーダーを受取ると、クラウドインフラストラクチャシステム１００は、そのサービスのために予めプロビジョニングされたポッドの予めプロビジョニングされたプールから１つ以上のポッドを用いることができる。いくつかの実施例においては、サービスオーダーに応答して、そのサービス用の予めプロビジョニングされたポッドが選択され、次いで、顧客特有の情報（例えば、顧客オーダーから決定された顧客特有の情報）がインジェクションされて、顧客用のカスタマイズされたポッドが作成されるようにしてもよい。顧客のために、新しいサービスインスタンスが、このようなカスタマイズされたポッドのうち１つ以上のポッドから作成されてもよい。
【０２１４】
特定のサービス要求のために選択されかつ顧客用にカスタマイズされたサービス特有の予めプロビジョニングされたものの数は、要求されたサービスのサイズに左右される可能性がある。いくつかの実施例においては、サービス要求に割り当てられた予めプロビジョニングされたポッドの数が、要求されたサービスのサイズに正比例する。さらに、顧客の要求が大きくなる（例えば、テナントサービスレベル合意（ＳＬＡ：service level agreement）要件が増大する）と、追加の予めプロビジョニングされたポッドが選択されて、顧客に割り当てられ（すなわち、顧客のためにカスタマイズされ）得る。
【０２１５】
サービスについての新しいオーダーが受取られて処理されると、および／または、顧客サービス要件が増大すると、ますます多くの予めプロビジョニングされたポッドがそれらのオーダーのためにカスタマイズされ得る。これにより、そのサービスのためのポッドのうち予めプロビジョニングされた利用可能なプールにおけるポッドの数が激減する可能性がある。一実施例においては、クラウドインフラストラクチャシステム１００は、予めプロビジョニングされたポッドの数がサービスについての一定のユーザ構成可能な最小しきい値を下回ると、バックグラウンドにおいてそのサービスのための新しい予めプロビジョニングされたポッドを作成するように構成されてもよい。このようなしきい値は、クラウドインフラストラクチャシステム１００によって提供されるさまざまなサービスのために定義され得る。
【０２１６】
図１６は、本発明の実施例に係るサービスインスタンス作成のための予めプロビジョニングされたポッドの顧客特有のカスタマイズ（顧客パーソナリティの割り当て（customer personality assignment）と称されることもある）の例を示す。例えば、サブスクリプションオーダーは、ＪＡＶＡサービスおよびデータベースサービスを要求する顧客「弊社」から受取られていてもよい。オーダーに応答して、クラウドインフラストラクチャシステム１００は、「弊社」が要求した要求済みＪＡＶＡサービスを提供するためにＪａｖａインスタンスを作成するのに単一の予めプロビジョニングされたＪＡＶＡサービスポッドが必要であると判断し、同様に、要求されたデータベースサービスを提供するためにデータベースサービスインスタンスを作成するのに単一の予めプロビジョニングされたデータベースサービスポッドが必要であると判断し得る。図１６に示されるように、ＪＡＶＡサービスのための予めプロビジョニングされたポッドのプール１５０５からの予めプロビジョニングされたポッド（予めプロビジョニングされたＪＡＶＡポッド＃１）が選択され、顧客「弊社」によって要求されるようにＪＡＶＡサービスを提供するために顧客「弊社」に割り当てられた。加えて、データベースサービスのための予めプロビジョニングされたポッドのプール１５１０からの予めプロビジョニングされたポッド（予めプロビジョニングされたＤＢポッド＃１）が選択され、顧客「弊社」によって要求されるように、データベースサービスを提供するために顧客「弊社」に割り当てられた。予めプロビジョニングされたＪＡＶＡポッド＃１は、ＪＡＶＡサービスのために顧客用にパーソナライズされたポッド＃１  １６０５を作成するために「弊社」特有の情報（例えば構成情報）をポッドにインジェクションすることによって、顧客「弊社」用にパーソナライズされた。このような態様で、顧客「弊社」にＪＡＶＡサービスを提供するように構成されたＪＡＶＡサービスインスタンスが、予めプロビジョニングされたＪＡＶＡサービスポッドを用いて作成され得る。データベースサービスに関して、予めプロビジョニングされたＤＢポッド＃１は、データベースサービスのために顧客用にパーソナライズされたＤＢポッド＃１  １６１０を作成するために、「弊社」特有の情報（例えば構成情報）をポッドにインジェクションすることによって、顧客「弊社」用にパーソナライズされた。このような態様で、顧客「弊社」のためのデータベースサービスを提供するように構成されたデータベースサービスインスタンスが、予めプロビジョニングされたデータベースサービスポッドを用いて作成され得る。
【０２１７】
図１７は、一実施例に係る、予めプロビジョニングされたポッドを用いてパーソナライズされたＪＡＶＡサービスポッドまたはサービスインスタンスおよびパーソナライズされたデータベースサービスポッドまたはインスタンスを作成するための方法の例を示す。
【０２１８】
いくつかの実施例においては、ポッドを予めプロビジョニングする場合、ＳＤＩモジュール２０６によって実行されてもよい。例えば、ＳＤＩモジュール２０６は、事前にリソースを保存して有線接続する（例えば、仮想マシンを作成して立ち上げる）ことによって、予めプロビジョニングされた各々のＪＡＶＡサービスポッドを作成するように構成されてもよい。次いで、予めプロビジョニングされたＪａｖａサービスポッドのこのプールは、顧客が要求したＪＡＶＡサービスを提供するための顧客特有のサービスインスタンスを作成するために、ＳＤＩモジュール２０６によって用いられてもよい。顧客サービス要求を受取ると、ＳＤＩモジュール２０６は、これらの予めプロビジョニングされたポッドを用いて、顧客特有のパーソナリティをこれらポッドにインジェクションすることによってこれらポッドを顧客特有のものにする。パーソナリティインジェクションは、ランタイムで、予めプロビジョニングされたポッドを特定の顧客特有の構成情報でカスタマイズすることを含み得る。データベースサービスのために、ＳＤＩモジュール２０６は顧客フットプリントをオンデマンドで作成することができる。
【０２１９】
一実施例においては、図１７に示されるように、１７０５において、ＴＡＳモジュール２０４はＳＤＩモジュール２０６にサービスオーダードキュメントを提出し得る。先に述べたように、サービスオーダードキュメントは、コールバックアドレス；システム名；新しいシステムインジケータについてのブール値；システム管理者ユーザ名；およびサービスインスタンスオーダーのリストなどの情報を含み得る。サービスインスタンスオーダーのリストはさらに、サービスインスタンス名；管理者ユーザ名；サービスインスタンスタイプ；サービスインスタンスサイズ；サービス特有のプロパティを含み得る。図１６に示された例に関して、サービスオーダードキュメントにおける要求されたサービスインスタンスタイプは、ＪＡＶＡサービスインスタンスおよびデータベースサービスインスタンスであってもよい。
【０２２０】
１７１０において、サービスオーダードキュメントを受取った後、ＳＤＩモジュール２０６は、サービスオーダードキュメントにおいて規定された要件を満たすのに必要な予めプロビジョニングされたポッドの数を決定し得る。一実施例においては、この決定は、サービスインスタンスタイプ、サービスインスタンスサイズおよびサービス特有のプロパティに基づいてなされ得る。
【０２２１】
１７１５において、サービスオーダードキュメント内のデータに基づいて、ＳＤＩモジュール２０６は、顧客のためにパーソナライズされたサービスインスタンスを作成するために、ＳＤＩコネクタモジュール６１２を用いて、予めプロビジョニングされたポッドのうち１つ以上のポッドをカスタマイズし得る。予めプロビジョニングされたポッドのカスタマイズは、顧客オーダーから受取ったパーソナリティ情報（例えば、コールバックアドレス、システム名、システム管理者ユーザ名）を予めプロビジョニングされたポッドにインジェクションすることを含み得る。
【０２２２】
この例においては、サービスオーダードキュメントに基づいて、特有のＳＤＩコネクタモジュール６１２は、データベースサービスインスタンス１６１０を作成するためのＡＰＥＸコネクタ６１４およびＪＡＶＡサービスインスタンス１６０５を作成するためのＮＵＶＩＡＱコネクタ６２０であってもよい。
【０２２３】
１７２０において、パーソナライズされたサービスインスタンス（例えば、ＪＡＶＡサービスインスタンス１６０５、データベースサービスインスタンス１６１０）が作成されると、ＳＤＩモジュール２０６はＴＡＳモジュール２０４にサービスオーダー履行ドキュメントを提出し得る。先に述べたように、サービスオーダー履行ドキュメントはＸＭＬドキュメントであってもよく、このＸＭＬドキュメントは、要求識別子；システム名；システム／テナンシ管理者ユーザ名およびパスワード；システムＩＤＭコンソールＵＲＬ；ならびに、オーダーされたサービスのリストを含み得る。さらに、各々のオーダーされたサービスに関して、サービスオーダー履行ドキュメントは、サービスインスタンス名；サービスインスタンス管理者ユーザ名およびパスワード；サービスインスタンス管理ＵＲＬ；サービスインスタンスＵＲＬを含み得る。
【０２２４】
図１４は、本発明の実施例に従って使用され得る演算システム１０００の簡略ブロック図である。例えば、クラウドインフラストラクチャシステム１００は、１つ以上の演算装置を備えていてもよい。図１４に示されるシステム１０００は、１つのこのような演算装置の一例であってもよい。バス１０２４を介して電気的に結合され得るハードウェア要素を備えるコンピュータシステム１０００が示されている。コンポーネントは、１つ以上の処理ユニット１００２、入力サブシステム１００４、出力サブシステム１００６、記憶装置１００８、コンピュータ読取可能記憶媒体１０１０に接続されたコンピュータ読取可能記憶媒体リーダ１０１２、通信サブシステム１０１４、処理加速サブシステム１０１６、およびワーキングメモリ１０１８を含み得る。
【０２２５】
バスサブシステム１０２４は、所期のとおり、さまざまなコンポーネントとコンピュータシステム１０００のサブシステムとを互いに通信させるための機構を提供する。バスサブシステム１０２４は単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施例は複数のバスを利用してもよい。
【０２２６】
入力サブシステム１００４は、マウス、キーボード、ポインティング・デバイス、タッチパッドなどの１つ以上の入力装置を含み得る。概して、入力サブシステム１００４は、コンピュータシステム１０００に情報を入力するためのいかなる装置または機構をも含み得る。
【０２２７】
出力サブシステム１００６は、コンピュータシステム１０００から情報を出力するための１つ以上の出力装置を含み得る。出力装置の例は、表示装置、プリンタ、投影装置などを含むが、これらに限定されない。概して、出力サブシステム１００６は、コンピュータシステム１０００から情報を出力するためのいかなる装置または機構をも含み得る。
【０２２８】
処理ユニット１００２は、１つ以上のプロセッサ、プロセッサの１つ以上のコア、これらの組み合わせなどを含み得る。いくつかの実施例においては、処理ユニット１００２は、汎用の主要プロセッサ、ならびに、１つ以上の専用コプロセッサ、例えば、グラフィックスプロセッサ、デジタル信号プロセッサなどを含み得る。いくつかの実施例においては、いくつかまたは全ての処理ユニット１００２は、特定用途向け集積回路（ＡＳＩＣ：application specific integrated circuit）またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ：field programmable gate array）などのカスタマイズされた回路を用いて実現することができる。いくつかの実施例においては、このような集積回路は、回路自体に格納される命令を実行する。他の実施例においては、処理ユニット１００２は、ワーキングメモリ１０１８または記憶装置１００８に格納された命令を実行することができる。さまざまな実施例においては、処理ユニット１００２は、さまざまなプログラムまたはコード命令を実行することができ、同時に実行される複数のプログラムまたはプロセスを維持することができる。如何なる所与のときにも、実行されるべきプログラムコードのうちのいくつかまたは全ては、システムワーキングメモリ１０１８、記憶装置１００８内および／またはコンピュータ読取可能記憶媒体１０１０上に常駐し得る。適切なプログラミングによって、処理ユニット１００２は、イベントストリーム関連の処理を実行するために上述のさまざまな機能を提供することができる。いくつかの実施例においては、コンピュータシステム１０００はまた、デジタル信号プロセッサ（ＤＳＰ：digital signal processor）、専用プロセッサなどを含み得る処理加速ユニット１０１６を含んでもよい。
【０２２９】
記憶装置１００８は、ディスクドライブ、光学記憶装置、およびソリッドステート記憶装置、例えば、プログラム可能、フラッシュ更新可能などであり得るランダムアクセスメモリ（ＲＡＭ：random access memory）および／またはリードオンリメモリ（ＲＯＭ：read-only memory）などの記憶装置を含んでいてもよい。上述の機能を提供するよう処理ユニット１００２によって実行されるソフトウェア（プログラム、コードモジュール、命令）が記憶装置１００８に格納されてもよい。記憶装置１００８はまた、本発明の実施例に従って用いられるデータを格納するためにリポジトリを提供し得る。
【０２３０】
さらに、コンピュータ読取可能記憶媒体リーダ１０１２は、ともに（および任意に、記憶装置１００８と組み合わせて）一時的および／またはより永久的にコンピュータ読取可能な情報を含むためのリモートの、ローカルの、固定されたおよび／または取外し可能な記憶装置プラス記憶媒体を包括的に表わすコンピュータ読取可能記憶媒体１０１０に接続可能である。
【０２３１】
通信システム１０１４は、ネットワークおよび／またはその他のコンピュータとデータを遣り取りすることを可能にし得る。通信サブシステム１０１４は、コンピュータシステム１０００のうち他のシステムに対するデータの受信および送信のためのインターフェイスとしての役割を果たす。この通信は、有線プロトコルまたは無線プロトコルを用いて提供され得る。例えば、通信サブシステム１０１４は、コンピュータ１０００がインターネットを介してクライアントデバイスに接続することを可能にし得る。通信サブシステム１０１４は、モデム、ネットワークカード（無線または有線）、赤外線通信装置、ＧＰＳ受信機などを含み得る。
【０２３２】
ワーキングメモリサブシステム１０１８は、プログラム実行中に命令およびデータを格納するためのメインランダムアクセスメモリ（ＲＡＭ）と、一定の命令が格納されるリードオンリメモリ（ＲＯＭ）とを含むいくつかのメモリを含み得る。オペレーティングシステム１０２０、および／または、（クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、ＲＤＢＭＳなどであり得る）アプリケーションプログラムなどの他のコード１０２２などのソフトウェア要素はワーキングメモリ１０１８に格納されてもよい。例示的な実施例では、ワーキングメモリ１０１８は、実行可能なコードと、上述のとおりイベントを処理し、可変期間のウインドウ処理を可能にするために使用される関連付けられたデータ構造（キャッシュなど）とを含んでいてもよい。
【０２３３】
コンピュータシステム１０００の代替的な実施例は、上記のものからの多数の変更例を備えたコンポーネントを多少とも有し得ることが理解されるべきである。例えば、カスタマイズされたハードウェアも使用されてもよく、および／または、特定の要素がハードウェア、（アプレットなどの高移植性ソフトウェアを含む）ソフトウェアまたはそれら両方で実現されてもよい。さらに、ネットワーク入力／出力装置などの他の演算装置への接続が利用されてもよい。
【０２３４】
図１８は、本発明の実施例に係る電子デバイス１８００の簡略化されたブロック図である。電子デバイス１８００は、第１のリソースアセンブリセット作成ユニット１８０２を含む。第１のリソースアセンブリセット作成ユニット１８０２は、１つ以上の演算装置を含むクラウドインフラストラクチャシステムによって提供される複数のクラウドサービスから第１のサービスのための１つ以上のリソースアセンブリの第１の組を作成するように構成される。リソースアセンブリの第１の組における各リソースアセンブリは、第１のサービスを提供するための１つ以上のリソースを含む。電子デバイス１８００はさらに受取ユニット１８０４を含む。受取ユニット１８０４は、作成後、顧客からサブスクリプションオーダー情報を受取るように構成される。サブスクリプションオーダー情報は、顧客特有の構成および第１のサービスのためのオーダー要求を含む。電子デバイス１８００はさらに第１のリソースアセンブリ選択ユニット１８０６を含む。第１のリソースアセンブリ選択ユニット１８０６は、サブスクリプションオーダー情報に基づいて、顧客に第１のサービスを提供するためにリソースアセンブリの第１の組から第１のリソースアセンブリを選択するように構成される。電子デバイス１８００はさらに、第１の顧客特有リソースアセンブリ作成ユニット１８０８を含む。第１の顧客特有リソースアセンブリ作成ユニット１８０８は、第１のリソースアセンブリを顧客特有の構成で構成することによって、顧客に第１のサービスを提供するために第１の顧客特有リソースアセンブリを作成するように構成される。
【０２３５】
一例においては、サブスクリプションオーダー情報は、クラウドインフラストラクチャシステムによって提供される複数のクラウドサービスに第２のサービスを要求する。電子デバイス１８００はさらに、第２のリソースアセンブリセット作成ユニット１８０３を含む。第２のリソースアセンブリセット作成ユニット１８０３は、クラウドインフラストラクチャシステムによって提供される複数のクラウドサービスから第２のサービスのためのリソースアセンブリの第２の組を作成するように構成される。リソースアセンブリの第２の組における各リソースアセンブリは、第２のサービスを提供するための１つ以上のリソースを含む。リソースアセンブリの第２の組の作成は、顧客からサブスクリプションオーダー情報を受取る前に実行される。電子デバイス１８００はさらに、第２のリソースアセンブリ選択ユニット１８０５を含む。第２のリソースアセンブリ選択ユニット１８０５は、顧客に第２のサービスを提供するために、サブスクリプションオーダー情報に基づいて、リソースアセンブリの第２の組のうちの第２のリソースアセンブリを、１つ以上の演算装置から選択するように構成される。電子デバイス１８００はさらに、第２の顧客特有リソースアセンブリ作成ユニット１８０７を含む。第２の顧客特有リソースアセンブリ作成ユニット１８０７はさらに、第２のリソースアセンブリを顧客特有の構成で構成することによって顧客に第２のサービスを提供するために第２の顧客特有リソースアセンブリを作成するように構成される。電子デバイス１８００はさらに、統合ユニット１８０９を含む。統合ユニット１８０９は、第１の顧客特有リソースアセンブリおよび第２の顧客特有リソースアセンブリに関連付けられた１つ以上のファイアウォールを調整することによって、第１の顧客特有リソースアセンブリと第２の顧客特有リソースアセンブリとの間のデータフローを可能にするために、第１の顧客特有リソースアセンブリと第２の顧客特有リソースアセンブリとを統合するように構成される。
【０２３６】
一例においては、第１のサービスはデータベースサービスであり、第１の顧客特有リソースアセンブリ作成ユニット１８０８はさらに、バーチャル・アセンブリ・ビルダを用いて、１つ以上の仮想マシン（ＶＭ）を備えたデータベースサービスのために特定的にプロビジョニングされた第１のリソースアセンブリを作成し；バーチャル・アセンブリ・ビルダを並行して動作させることを可能にするためにバーチャル・アセンブリ・ビルダに関連付けられるバーチャル・アセンブリ・ビルダ・ホームを作成し；デプロイメント・プラン・ファイルを作成するように構成される。デプロイメント・プラン・ファイルは、顧客特有の構成を１つ以上のＶＭにインジェクションするための構成情報を含む。
【０２３７】
一例においては、リソースアセンブリの第１の組における各リソースアセンブリはマルチテナントサービスのために構成される。
【０２３８】
一例においては、第１のサービスはデータベースサービスである。複数のスキーマが第１のリソースアセンブリに含まれる。複数のスキーマは、第１の顧客に関連付けられた第１のスキーマと、第１の顧客とは異なる第２の顧客に関連付けられた第２のスキーマとを含む。
【０２３９】
一例においては、リソースアセンブリの第１の組における各リソースアセンブリがシングルテナントサービスのために構成される。
【０２４０】
一例においては、サブスクリプションオーダー情報はサービスインスタンスサイズを含む。電子デバイス１８００はさらに、サービスインスタンスサイズに基づいて、リソースアセンブリの第１の組から、顧客のために用いられるべきリリソースアセンブリの数を決定するように構成された決定ユニットを含む。
【０２４１】
一例においては、電子デバイス１８００はさらに、第１のサービスのためにプロビジョニングされたリソースアセンブリの第１の組を追跡し続けるためにレジストリを格納するように構成された格納ユニットを含む。レジストリはさらに、顧客特有にされた１つ以上のリソースアセンブリを追跡するように構成される。
【０２４２】
なお、点線によって示されるユニットは任意である。本明細書に開示されているさまざまなユニットは、ハードウェア、ソフトウェアまたはそれらの組み合わせで実現されてもよく、またはそれらによって実行されてもよい。それらは、本明細書に記載されている機能を実行するように設計された汎用シングルチップもしくはマルチチッププロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（field programmable gate array：ＦＰＧＡ）もしくは他のプログラマブルロジックデバイス、ディスクリートゲートもしくはトランジスタ論理回路、ディスクリートハードウェアコンポーネント、またはそれらの任意の組み合わせで実現されてもよく、またはそれらによって実行されてもよい。汎用プロセッサは、マイクロプロセッサ、または任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。また、プロセッサは、演算装置の組み合わせ、例えばＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサの組み合わせ、ＤＳＰコアと併用した１つ以上のマイクロプロセッサの組み合わせ、またはその他のこのような構成として実現されてもよい。いくつかの実現例では、当該ユニットは、所与の機能に特有の回路によって実現されてもよい。
【０２４３】
本発明の特定の実施例について説明してきたが、さまざまな変形例、変更例、代替的な構成および等価物も本発明の範囲内に包含される。本発明の実施例は、特定の具体的なデータ処理環境内での動作に限定されるものではなく、複数のデータ処理環境内で自由に動作できる。さらに、特定の一連のトランザクションおよびステップを使用して本発明の実施例について説明してきたが、本発明の範囲が、記載されている一連のトランザクションおよびステップに限定されるものではないということが当業者に明らかであるべきである。
【０２４４】
さらに、ハードウェアおよびソフトウェアの特定の組み合わせを使用して本発明の実施例について説明してきたが、ハードウェアおよびソフトウェアの他の組み合わせも本発明の範囲内であることが認識されるべきである。本発明の実施例は、ハードウェアのみで実現されてもよく、またはソフトウェアのみで実現されてもよく、またはそれらの組み合わせを使用して実現されてもよい。この明細書中に記載されるさまざまなプロセスは、同じプロセッサ上で、または任意に組み合わせされたさまざまなプロセッサ上で実現することができる。したがって、コンポーネントまたはモジュールがいくつかのオペレーションを実行するように構成されるものと記載されているが、このような構成は、例えば、オペレーションを実行するように電子回路を設計することによって、オペレーションを実行するようにプログラム可能な電子回路（マイクロプロセッサなど）をプログラミングすることによって、またはこれらを組み合わせることによって、達成することができる。プロセス同士は、プロセス間通信のための従来の技術を含むがこれらに限定されないさまざまな技術を用いて通信することができ、異なる対のプロセスは異なる技術を用いてもよく、または、同じ対のプロセスは異なる時間に異なる技術を用いてもよい。
【０２４５】
したがって、明細書および図面は、限定的な意味ではなく例示的な意味で考えられるべきである。しかし、特許請求の範囲に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除ならびに他の変形および変更がそれに対してなされてもよいということは明白であろう。このように、特定の発明の実施例を記載してきたが、これらは制限するようには意図されるものではない。さまざまな変更例および同等例は添付の特許請求の範囲内にある。
【図１Ａ】
2016500854.tif 000003
【図２】
2016500854.tif 000004
【図３Ａ】
2016500854.tif 000005
【図３Ｂ】
2016500854.tif 000006
【図４】
2016500854.tif 000007
【図５】
2016500854.tif 000008
【図６】
2016500854.tif 000009
【図７Ａ】
2016500854.tif 000010
【図７Ｃ】
2016500854.tif 000011
【図７Ｄ】
2016500854.tif 000012
【図８Ａ】
2016500854.tif 000013
【図８Ｂ】
2016500854.tif 000014
【図９】
2016500854.tif 000015
【図１０】
2016500854.tif 000016
【図１１Ａ】
2016500854.tif 000017
【図１１Ｂ】
2016500854.tif 000018
【図１１Ｃ】
2016500854.tif 000019
【図１３】
2016500854.tif 000020
【図１４】
2016500854.tif 000021
【図１７】
2016500854.tif 000022
【図１８】
2016500854.tif 000023
【図１Ｂ】
2016500854.tif 000024
【図７Ｂ】
2016500854.tif 000025
【図７Ｅ】
2016500854.tif 000026
【図１２】
2016500854.tif 000027
【図１５】
2016500854.tif 000028
【図１６】
2016500854.tif 000029
【国際調査報告】
2016500854.tif 000030
2016500854.tif 000031
2016500854.tif 000032