(57)【要約】クラウドコンピューティング環境にコンピューティング基盤を構築し、最適化し、保守する方法が提供される。ユーザは、クラウド上で構築されることを意図する基盤の詳細を特定した高レベル宣言をクラウド環境オペレーティングシステムに提供する。クラウド環境オペレーティングシステムは、高レベル宣言を低レベル宣言に変換し、その後、所望の基盤を構築するためにクラウドによって実行される一連の命令に変換する。クラウド環境オペレーティングシステムはまた、ひとたびクラウド上に構築された基盤を継続的に監視し得る。クラウド環境オペレーティングシステムが、ユーザの元の仕様とクラウド上に構築された基盤との間の食い違いを通知した場合、オペレーティングシステムは、ユーザによって特定された基盤と一致するようにクラウド上の既存の基盤を修正する。
2018530070.tif 000002
【特許請求の範囲】
【請求項１】
クラウドコンピューティングシステムに基盤を構築する方法であって、前記方法は、
前記クラウドコンピューティングシステム上に構築されるコンピューティング基盤の高レベル宣言を受信することと、
前記受信した高レベル宣言を１つ以上のプランニングモジュールへ送信することであって、各プランニングモジュールは、低レベル宣言を生成するために前記受信した宣言に情報を追加し、前記追加される情報は、前記受信した宣言と前記基盤が構築される前記クラウドコンピューティングシステムとに基づく、送信することと、
前記低レベル宣言を、前記クラウドコンピューティングシステムによって読取可能な１つ以上の命令に変換することと、
前記クラウドコンピューティングシステム上の前記１つ以上の命令を前記コンピューティング基盤を構築するために実行することと、を含む方法。
【請求項２】
請求項１に記載の方法であって、各プランニングモジュールは、前記高レベル宣言に含まれる基盤の１つ以上の種別を処理するように構成される、方法。
【請求項３】
請求項１に記載の方法であって、前記１つ以上のプランニングモジュールは、前記コンピューティング基盤が前記クラウドコンピューティングシステム上に構築される前に、前記受信した高レベル宣言のエラーを確認可能である、方法。
【請求項４】
請求項１に記載の方法であって、前記低レベル宣言を前記クラウドコンピューティングシステムによって読取可能な１つ以上の命令に変換することは、前記クラウドコンピューティングシステムのアプリケーションプログラムインタフェースを用いて接続することを含む、方法。
【請求項５】
請求項１に記載の方法であって、前記受信した高レベル宣言を１つ以上のプランニングモジュールへ送信することは、前記受信した高レベル宣言を、前記高レベル宣言に情報の第１のセットを追加する第１のプランニングモジュールへ送信し、その後、情報の前記第１のセットを有する前記高レベル宣言を、前記高レベル宣言に情報の第２のセットを追加する第２のプランニングモジュールへ送信することを含む、方法。
【請求項６】
請求項５に記載の方法であって、更に、前記高レベル宣言を最終プランニングモジュールへ送信することであって、前記最終プランニングモジュールは、前記コンピューティング基盤が前記クラウドコンピューティングシステム上に構築されるように、前記プランニングモジュールのそれぞれが前記情報の追加に成功したかを判定する、送信することを含む、方法。
【請求項７】
請求項１に記載の方法であって、前記方法は更に、
前記クラウドコンピューティングシステムの１つ以上のポリシーを前記生成された低レベル宣言に強制することを含む、方法。
【請求項８】
クラウドコンピューティングシステムに複数のユーザからの複数のコンピュータ基盤システムを構築する方法であって、前記方法は、
前記クラウドコンピューティングシステム上に構築される第１のコンピューティング基盤の第１の高レベル宣言を、第１のユーザから受信することと、
前記クラウドコンピューティングシステム上に構築される第２のコンピューティング基盤の第２の高レベル宣言を、第２のユーザから受信することと、
第１及び第２のコンピューティング基盤の前記第１の高レベル宣言及び前記第２の高レベル宣言を、前記クラウドコンピューティングシステムによって読取可能な１つ以上の命令に変換することと、
前記１つ以上の命令に基づいて、前記クラウド上に前記第１及び第２のコンピューティング基盤を構築することと、を含む方法。
【請求項９】
請求項８に記載の方法であって、前記第１の高レベル宣言及び前記第２の高レベル宣言を変換することは、
前記受信した第１の高レベル宣言及び第２の高レベル宣言を１つ以上のプランニングモジュールへ送信することであって、各プランニングモジュールは、第１及び第２の低レベル宣言を生成するために前記受信した第１及び第２の宣言に情報を追加し、前記追加される情報は、前記受信した第１及び第２の宣言と前記第１及び第２のコンピューティング基盤が構築される前記クラウドコンピューティングシステムとに基づく、送信すること、を含む方法。
【請求項１０】
請求項９に記載の方法であって、更に、
前記第１の低レベル宣言及び前記第２の低レベル宣言を、前記クラウドコンピューティングシステムによって読取可能な前記１つ以上の命令に変換することを含む、方法。
【請求項１１】
請求項１０に記載の方法であって、前記第１の低レベル宣言及び前記第２の低レベル宣言を変換することは、前記クラウドコンピューティングシステムのアプリケーションプログラムインタフェースを用いて接続することを含む、方法。
【請求項１２】
請求項９に記載の方法であって、前記受信した第１及び第２の高レベル宣言を、１つ以上のプランニングモジュールへ送信することは、前記受信した第１及び第２の高レベル宣言を、前記高レベル宣言に情報の第１のセットを追加する第１のプランニングモジュールへ送信し、その後、情報の前記第１のセットを有する前記第１及び第２の高レベル宣言を、前記第１及び第２の高レベル宣言に情報の第２のセットを追加する第２のプランニングモジュールへ送信することを含む、方法。
【請求項１３】
請求項１２に記載の方法であって、更に、前記第１及び第２の高レベル宣言を最終プランニングモジュールへ送信することであって、前記最終プランニングモジュールは、前記第１及び第２のコンピューティング基盤が前記クラウドコンピューティングシステム上に構築されるように、前記プランニングモジュールのそれぞれが前記情報の追加に成功したかを判定する、送信することを含む、方法。
【請求項１４】
請求項８に記載の方法であって、前記１つ以上のプランニングモジュールは、前記コンピューティング基盤が前記クラウドコンピューティングシステム上に構築される前に、前記受信した高レベル宣言のエラーを確認可能である、方法。
【請求項１５】
クラウドコンピューティングシステムにユーザ指定のコンピューティング基盤を構築する方法であって、前記方法は、
前記クラウドコンピューティングシステム上に構築されるコンピューティング基盤の高レベル宣言を受信することと、
前記高レベル宣言を、前記クラウドコンピューティングシステムによって読取可能な１つ以上の命令に変換することと、
前記１つ以上の命令に基づいて、前記クラウド上に前記コンピューティング基盤を構築することと、
前記構築したコンピューティング基盤を、前記コンピューティング基盤の前記受信した高レベル宣言と比較することと、
前記構築したコンピューティング基盤と前記コンピューティング基盤の前記受信した高レベル宣言との間の比較に基づいて、前記構築したコンピューティング基盤を修正することと、を含む方法。
【請求項１６】
請求項１５に記載の方法であって、前記高レベル宣言を変換することは、
前記受信した高レベル宣言を１つ以上のプランニングモジュールへ送信することであって、各プランニングモジュールは、低レベル宣言を生成するために前記受信した高レベル宣言に情報を追加し、前記追加される情報は、前記受信した高レベル宣言と前記コンピューティング基盤が構築される前記クラウドコンピューティングシステムとに基づく、送信することを含む、方法。
【請求項１７】
請求項１５に記載の方法であって、更に、
前記低レベル宣言を、前記クラウドコンピューティングシステムによって読取可能な前記１つ以上の命令に変換することを含む、方法。
【請求項１８】
請求項１５に記載の方法であって、前記構築したコンピューティング基盤を、前記コンピューティング基盤の前記受信した高レベル宣言と比較することは、
前記構築した基盤の状態を受信することと、
前記構築した基盤の前記状態と、前記高レベル宣言に含まれる前記基盤の仕様とを比較することと、含む方法。
【請求項１９】
請求項１８に記載の方法であって、前記構築したコンピューティング基盤を修正することは、
前記構築した基盤になされる１つ以上の修正の低レベル宣言を生成することと、
前記１つ以上の修正の前記低レベル宣言を、前記クラウドコンピューティングシステムによって実行される１つ以上の命令に変換することとを含む、方法。
【請求項２０】
請求項１５に記載の方法であって、前記比較することは、予め定められた繰り返し期間においてなされる、方法。
【請求項２１】
請求項１５に記載の方法であって、更に、
前記クラウドコンピューティングシステムの１つ以上のポリシーを前記生成した低レベル宣言に強制することを含む、方法。
【請求項２２】
１つ以上のプログラムを格納する非一時的コンピュータ可読媒体であって、前記１つ以上のプログラムは、クラウドベースのコンピューティングシステムにコンピューティング基盤を構築する命令を生成するための命令を含み、携帯用電子デバイスで実行されると、前記デバイスに、
前記クラウドコンピューティングシステム上に構築されるコンピューティング基盤の高レベル宣言を受信させ、
前記受信した高レベル宣言を１つ以上のプランニングモジュールへ送信させ、各プランニングモジュールは、低レベル宣言を生成するために前記受信した宣言に情報を追加し、前記追加される情報は、前記受信した宣言と前記基盤が構築される前記クラウドコンピューティングシステムとに基づき、
前記低レベル宣言を、前記クラウドコンピューティングシステムによって読取可能な１つ以上の命令に変換させ、
前記クラウドコンピューティングシステム上の前記１つ以上の命令を前記コンピューティング基盤を構築するために実行させる、非一時的コンピュータ可読媒体。
【請求項２３】
請求項２２に記載の非一時的コンピュータ可読媒体であって、各プランニングモジュールは、前記高レベル宣言に含まれる基盤の１つ以上の種別を処理するように構成される、非一時的コンピュータ可読媒体。
【請求項２４】
請求項２２に記載の非一時的コンピュータ可読媒体であって、前記１つ以上のプランニングモジュールは、前記コンピューティング基盤が前記クラウドコンピューティングシステム上に構築される前に、前記受信した高レベル宣言のエラーを確認可能である、非一時的コンピュータ可読媒体。
【請求項２５】
請求項２２に記載の非一時的コンピュータ可読媒体であって、前記低レベル宣言を前記クラウドコンピューティングシステムによって読取可能な１つ以上の命令に変換することは、前記クラウドコンピューティングシステムのアプリケーションプログラムインタフェースを用いて接続することを含む、非一時的コンピュータ可読媒体。
【請求項２６】
請求項２２に記載の非一時的コンピュータ可読媒体であって、前記受信した高レベル宣言を１つ以上のプランニングモジュールへ送信することは、前記受信した高レベル宣言を、前記高レベル宣言に情報の第１のセットを追加する第１のプランニングモジュールへ送信し、その後、情報の前記第１のセットを有する前記高レベル宣言を、前記高レベル宣言に情報の第２のセットを追加する第２のプランニングモジュールへ送信することを含む、非一時的コンピュータ可読媒体。
【請求項２７】
請求項２６に記載の非一時的コンピュータ可読媒体であって、更に、前記高レベル宣言を最終プランニングモジュールへ送信することであって、前記最終プランニングモジュールは、前記コンピューティング基盤が前記クラウドコンピューティングシステム上に構築されるように、前記プランニングモジュールのそれぞれが前記情報の追加に成功したかを判定する、送信することを含む、非一時的コンピュータ可読媒体。
【請求項２８】
請求項２６に記載の非一時的コンピュータ可読媒体であって、前記デバイスは、更に、
前記クラウドコンピューティングシステムの１つ以上のポリシーを前記生成した低レベル宣言に強制する、非一時的コンピュータ可読媒体。
【請求項２９】
１つ以上のプログラムを格納する非一時的コンピュータ可読媒体であって、前記１つ以上のプログラムは、クラウドコンピューティングシステムに複数のユーザからの複数のコンピュータ基盤システムを構築する命令を含み、携帯用電子デバイスで実行されると、前記デバイスに、
前記クラウドコンピューティングシステム上に構築される第１のコンピューティング基盤の第１の高レベル宣言を、第１のユーザから受信させ、
前記クラウドコンピューティングシステム上に構築される第２のコンピューティング基盤の第２の高レベル宣言を、第２のユーザから受信させ、
第１及び第２のコンピューティング基盤の前記第１の高レベル宣言及び前記第２の高レベル宣言を、前記クラウドコンピューティングシステムによって読取可能な１つ以上の命令に変換させ、
前記１つ以上の命令に基づいて、前記クラウド上に前記第１及び第２のコンピューティング基盤を構築させる、非一時的コンピュータ可読媒体。
【請求項３０】
請求項２９に記載の非一時的コンピュータ可読媒体であって、前記第１の高レベル宣言及び前記第２の高レベル宣言を変換することは、
前記受信した第１の高レベル宣言及び第２の高レベル宣言を１つ以上のプランニングモジュールへ送信することであって、各プランニングモジュールは、第１及び第２の低レベル宣言を生成するために前記受信した第１及び第２の宣言に情報を追加し、前記追加される情報は、前記受信した第１及び第２の宣言と前記第１及び第２のコンピューティング基盤が構築される前記クラウドコンピューティングシステムとに基づく、送信すること、を含む非一時的コンピュータ可読媒体。
【請求項３１】
請求項３０に記載の非一時的コンピュータ可読媒体であって、前記デバイスは、更に、
前記第１の低レベル宣言及び前記第２の低レベル宣言を、前記クラウドコンピューティングシステムによって読取可能な前記１つ以上の命令に変換する、非一時的コンピュータ可読媒体。
【請求項３２】
請求項３１に記載の非一時的コンピュータ可読媒体であって、前記第１の低レベル宣言及び前記第２の低レベル宣言を変換することは、前記クラウドコンピューティングシステムのアプリケーションプログラムインタフェースを用いて接続することを含む、非一時的コンピュータ可読媒体。
【請求項３３】
請求項３０に記載の非一時的コンピュータ可読媒体であって、前記受信した第１及び第２の高レベル宣言を、１つ以上のプランニングモジュールへ送信することは、前記受信した第１及び第２の高レベル宣言を、前記高レベル宣言に情報の第１のセットを追加する第１のプランニングモジュールへ送信し、その後、情報の前記第１のセットを有する前記第１及び第２の高レベル宣言を、前記第１及び第２の高レベル宣言に情報の第２のセットを追加する第２のプランニングモジュールへ送信することを含む、非一時的コンピュータ可読媒体。
【請求項３４】
請求項３３に記載の非一時的コンピュータ可読媒体であって、前記デバイスは、更に、
前記第１及び第２の高レベル宣言を最終プランニングモジュールへ送信し、前記最終プランニングモジュールは、前記第１及び第２のコンピューティング基盤が前記クラウドコンピューティングシステム上に構築されるように、前記プランニングモジュールのそれぞれが前記情報の追加に成功したかを判定する、非一時的コンピュータ可読媒体。
【請求項３５】
請求項２９に記載の非一時的コンピュータ可読媒体であって、前記１つ以上のプランニングモジュールは、前記コンピューティング基盤が前記クラウドコンピューティングシステム上に構築される前に、前記受信した高レベル宣言のエラーを確認可能である、非一時的コンピュータ可読媒体。
【請求項３６】
１つ以上のプログラムを格納する非一時的コンピュータ可読媒体であって、前記１つ以上のプログラムは、クラウドコンピューティングシステムにユーザ指定のコンピューティング基盤を実装する命令を含み、携帯用電子デバイスで実行されると、前記デバイスに、
前記クラウドコンピューティングシステム上に構築されるコンピューティング基盤の高レベル宣言を受信させ、
前記高レベル宣言を、前記クラウドコンピューティングシステムによって読取可能な１つ以上の命令に変換させ、
前記１つ以上の命令に基づいて、前記クラウド上に前記コンピューティング基盤を構築させ、
前記構築したコンピューティング基盤を、前記コンピューティング基盤の前記受信した高レベル宣言と比較させ、
前記構築したコンピューティング基盤と前記コンピューティング基盤の前記受信した高レベル宣言との間の比較に基づいて、前記構築したコンピューティング基盤を修正させる、非一時的コンピュータ可読媒体。
【請求項３７】
請求項３６に記載の非一時的コンピュータ可読媒体であって、前記高レベル宣言を変換することは、
前記受信した高レベル宣言を１つ以上のプランニングモジュールへ送信することであって、各プランニングモジュールは、低レベル宣言を生成するために前記受信した高レベル宣言に情報を追加し、前記追加される情報は、前記受信した高レベル宣言と前記コンピューティング基盤が構築される前記クラウドコンピューティングシステムとに基づく、送信することを含む、非一時的コンピュータ可読媒体。
【請求項３８】
請求項３６に記載の非一時的コンピュータ可読媒体であって、前記デバイスは、更に、
前記低レベル宣言を、前記クラウドコンピューティングシステムによって読取可能な前記１つ以上の命令に変換する、非一時的コンピュータ可読媒体。
【請求項３９】
請求項３６に記載の非一時的コンピュータ可読媒体であって、前記構築したコンピューティング基盤を、前記コンピューティング基盤の前記受信した高レベル宣言と比較することは、
前記構築した基盤の状態を受信することと、
前記構築した基盤の前記状態と、前記高レベル宣言に含まれる前記基盤の仕様とを比較することと、含む非一時的コンピュータ可読媒体。
【請求項４０】
請求項３９に記載の非一時的コンピュータ可読媒体であって、前記構築したコンピューティング基盤を修正することは、
前記構築した基盤になされる１つ以上の修正の低レベル宣言を生成することと、
前記１つ以上の修正の前記低レベル宣言を、前記クラウドコンピューティングシステムによって実行される１つ以上の命令に変換することとを含む、非一時的コンピュータ可読媒体。
【請求項４１】
請求項３６に記載の非一時的コンピュータ可読媒体であって、前記比較することは、予め定められた繰り返し期間においてなされる、非一時的コンピュータ可読媒体。
【請求項４２】
請求項３６に記載の非一時的コンピュータ可読媒体であって、前記デバイスは、更に、
前記クラウドコンピューティングシステムの１つ以上のポリシーを前記生成した低レベル宣言に強制する、非一時的コンピュータ可読媒体。
【請求項４３】
コンピューティング基盤の宣言におけるエラーを確認する方法であって、前記方法は、
前記クラウドコンピューティングシステム上に構築されるコンピューティング基盤の高レベル宣言を受信することと、
前記受信した高レベル宣言を１つ以上のプランニングモジュールへ送信することであって、前記プランニングモジュールは、１つ以上のエラーが前記高レベル宣言に存在するかを判定する、送信することと、
前記高レベル宣言において１つ以上のエラーが存在すると判定された場合に、前記高レベル宣言の生成者に通知することと、
前記高レベル宣言がエラーを含まないと判定された場合に、前記コンピューティング基盤を生成するために、前記クラウドコンピューティングシステム上で実行される１つ以上の命令を生成することと、を含む方法。
【発明の詳細な説明】
【関連出願へのクロスリファレンス】
【０００１】
本出願は、２０１５年１０月５日に提出された米国仮出願第６２／２３７，４３２号及び２０１６年７月２０日に提出された米国特許出願第１５／２１５，４０９号の優先権を主張し、参照によってその全体が援用される。
【技術分野】
【０００２】
本開示は、一般に、クラウド環境オペレーティングシステム（ＯＳ）とインタフェースで接続するように構成されるプログラミング言語を用いて、ユーザが所望の基盤を特定することのできるクラウドベースのコンピューティング環境に関する。コンピューティング環境は複数のユーザを同時にサポートすることができ、各ユーザは１つ以上のクラウドベースの環境に対して操作を行うことができる。ひとたびコンピューティング基盤が特定されると、特定されたクラウドサービス内の所望の基盤を構築し、対面するクラウドコンピューティング環境の条件に基づいてその基盤を最適化し、所望の基盤仕様をリアルタイムに実施することができる。
【背景技術】
【０００３】
クラウドコンピューティングは、個人、企業、及び他の組織が、環境を保守するために必要な（サーバやローカルコンピュータ等の）物理的なハードウェアへの投資を行うことなく、大規模かつ複雑なコンピューティング環境を実装し実行させることを可能にする。所望のコンピューティング環境に関連付けられるタスクを実行する物理的なマシンを維持及び保守するよりも、エンドユーザは代わりに、離れた場所で所望のコンピューティング環境を実施することができるコンピューティングの「クラウド（cloud）」に、コンピューティングを「アウトソース（outsource）」することができる。クラウドはインターネット上にホストされたリモートサーバのネットワークで構成され、リモートサーバのネットワークは、多数のエンドユーザの所望のコンピューティングニーズのそれぞれを実施するために多数のエンドユーザによって共有される。クラウド上のコンピューティング基盤を構築、最適化、及び保守するためのプロセスを単純化することは、有益なユーザ体験に繋がる。ユーザがクラウド上のロバストなコンピューティング基盤を構築する一方でシームレスに最適化及び保守できるようにすることは、クラウド上のコンピューティング環境を操作する間に発生し得る、衝突した基盤に関するフラストレーションを最小化することができる。
【発明の概要】
【０００４】
本開示は、クラウド環境オペレーティングシステムであって、ユーザ定義コンピューティング環境基盤仕様を受け付け、その基盤を構築するために必要なソフトウェアモジュールを生成及び最適化し、クラウド上のコンピューティング環境の動作中に、ユーザの仕様に従って基盤を保守するために継続的に動作するクラウド環境オペレーティングシステムに関する。動作中に特定された基盤を継続的に保守することにより、クラウド環境オペレーティングシステムは、時間経過に従って生じ得る基盤の衝突を最小化することができる。
【図面の簡単な説明】
【０００５】
【図１】図１は、本開示の例示に従う、例示的なクラウドコンピューティング環境を示す。
【０００６】
【図２】図２は、本開示の例示に従う、例示的なユーザクラウドに基づくコンピューティング環境の設計処理を示す。
【０００７】
【図３】図３は、本開示の例示に従う、例示的なクラウドコンピューティング環境基盤を示す。
【０００８】
【図４】図４は、本開示の例示に従う、例示的なクラウド環境オペレーティングシステムの処理を示す。
【０００９】
【図５】図５は、本開示の例示に従う、例示的なクラウド環境オペレーティングシステムの機能ブロック図を示す。
【００１０】
【図６】図６は、本開示の例示に従う、例示的なプランニングモジュールの処理を示す。
【００１１】
【図７】図７は、本開示の例示に従う、例示的な基盤保守の処理を示す。
【００１２】
【図８】図８は、本開示の例示に従う、クラウド環境オペレーティングシステムとの例示的なユーザの相互作用を示す。
【００１３】
【図９】図９は、本開示の例示に従う、クラウド環境オペレーティングシステムとの他の例示的なユーザの相互作用を示す。
【００１４】
【図１０】図１０は、本開示の例示に従う、クラウド環境オペレーティングシステムとの他の例示的なユーザの相互作用を示す。
【００１５】
【図１１】図１１は、本開示の例示に従う、クラウド環境オペレーティングシステムとの他の例示的なユーザの相互作用を示す。
【００１６】
【図１２】図１２は、本開示の例示に従う、クラウド環境オペレーティングシステムとの他の例示的なユーザの相互作用を示す。
【発明を実施するための形態】
【００１７】
クラウドコンピューティングシステム（「クラウド」）は、複数のクライアントによって共有される大規模な分散コンピュータであり、コンピューティング環境を仮想化するために用いられ、これによりローカルサイトにおける物理的な情報技術基盤を構築、保守しなければならない負荷からユーザを開放する。図１は、本開示の例示に従う、例示的なクラウドコンピューティング環境を示す。図１に図示されるクラウドコンピューティング環境は、クラウド１０６上にコンピューティング環境を実装することを望むユーザ１０２から始まる。ユーザ１００の例は、ウェブサーバ、コンピュータネットワーク、コンピュータデータベース動作等のコンピューティング環境を実装するためにクラウドによって提供される分散コンピュータを利用することを望む、個人、企業、他の組織を含み得る。
【００１８】
クラウド１０６は、前述したように、所望のコンピューティング環境を実装することができるようにユーザにコンピュータ資源を提供する、１つ以上の分散化された汎用コンピュータである。Amazon（登録商標）ウェブサービス、マイクロソフトAzure（登録商標）、Google Cloud Platform（登録商標）などの商用クラウドコンピューティングサービスは、アプリケーション及びウェブサイトを構築及びホストし、データを格納及び分析することができる、（無料で）ユーザが利用可能な分散化されたコンピュータネットワーク（クラウド）の例である。クラウドは、スケーラブル、すなわちクラウドのコンピューティング資源を特定のユーザに需要に基づいて増加させ又は減少させることができることを意味する。ある例では、クラウド１０４は、ユーザ１０２によって運営されるウェブサイトを実施するために利用され得る。クラウド１０６は、ユーザ１０２によって定義される仕様に基づくウェブサーバを保守及び管理し得る。ウェブサイトへのウェブトラフィックが増加するにつれて、クラウドは当該ウェブサイトに割り当てられるコンピュータ資源を増加させて、トラフィックのうねりと一致させる。ウェブサイトへのウェブトラフィックが希薄である場合、クラウドは当該ウェブサイトに割り当てられるコンピュータ資源を減少させて、トラフィックの減少と一致させる。クラウドサービスプロバイダは、クラウドサービスプロバイダによって保守及び管理される「ユーザアカウント」においてコンピューティング環境を実施し得る。従って、第１のユーザのコンピューティング環境は第１のユーザアカウントにおいて実施され、一方で、第２のユーザのコンピューティング環境は第２のアカウントにおいて実施され得る。いくつかの実施形態では、単一のユーザは、実施及び保守することを望む別々のコンピューティング環境のための別々のユーザアカウントを保守することができる。クラウドサービスプロバイダは、これらの基盤サービスを介してユーザがＣＳＰユーザアカウントにおける基盤「環境」を実装することができるようにする基盤サービスを提供する。例えば、ＶＰＣ  ＡＷＳサービスは、ユーザがＶＰＣを生成し、修正し、そして削除することができるようにする。
【００１９】
クラウド環境オペレーティングシステム（ＯＳ）１０４は、ユーザ１０２とクラウドコンピューティング環境１０６との間の相互作用を円滑にし得る。従来のオペレーティングシステムは、単一のコンピュータのリソースとサービスとを管理する。反対に、クラウド環境オペレーティングシステムは、クラウドのリソースとサービスとを管理する。
【００２０】
クラウド環境オペレーティングシステムは、１つ以上のクラウド基盤の生成と動作とを自動化することができ、１つ以上のクラウドサービスプロバイダ上の計算インスタンスを生成及び破棄し得る。図１の例は、スタンドアローンのエンティティとして、クラウド環境オペレーティングシステムを示しているが、この例は限定しているものと考慮されるべきではない。クラウド環境オペレーティングシステムは、クライアントデバイス、サードパーティのサーバのような１つのサーバ上で運営され得、又は、コンピューティング環境を運営し実行するクラウドサービスプロバイダ上に置かれ得る。クラウド環境オペレーティングシステムは、別々に動作するとともに、コンピューティング基盤を構築し保守するための、任意のコマンドラインインタフェースを含むクラウドコンピューティング環境、又は、クラウドによって用いられるオペレーティングシステムと連動する。
【００２１】
クラウド環境オペレーティングシステム１０４は、単純化され簡単な方法でユーザが所望のコンピューティング基盤を特定できるようにすることで、ユーザ１０２とやり取りし得る。ある例では、ユーザ１０２は、クラウド環境オペレーティングシステム１０４とやり取りするために設計されたプログラミング言語を用いてコンピューティング環境を特定することができる。図２は、本開示の例示に従う、例示的なユーザクラウドに基づくコンピューティング環境の設計処理を示す。図２の例は、一度コンパイルされたものが更なる処理のためにクラウド環境オペレーティングシステム１０４に入力され得る、プログラミング言語を用いる。
【００２２】
ステップ２０２において、ユーザは、クラウドサービスプロバイダ上に構築される基盤の宣言を提供する。例として、ユーザは、予め定められたプログラミング言語を用いて、当該基盤内の構成要素、各構成要素の仕様、及び、当該基盤内の各構成要素が有する通信の種別を特定することができる。
【００２３】
ある例では、ステップ２０２において、ユーザがテキストベースの形式で簡単に基盤要素と関係とを表現できるようにするドメイン固有プログラミング言語を用いて、ユーザはクラウドサービスプロバイダ上で構築される基盤の宣言を提供し得る。更なる例では、ドメイン固有言語は、コメントを他のコンテンツと並べて表すことができ、従って、時の経過後もコンテンツを理解し保守できるようになる。更に、ドメイン固有言語は、クラウド環境オペレーティングシステムのユーザが自身で定義すること無く参照又は使用することができる、予め定められた概念（すなわちサービス種別）を含み得る。更に、ドメイン固有言語は、望む場合にはユーザがユーザ自身の種別、関数、及びモジュールを定義できるようにし得る。いくつかの例では、ドメイン固有言語は、クラウド基盤要素の定義を含むことが可能な予め定められたライブラリを含み得、これにより、コードを再利用することが可能になり、従って全体的な開発労力を低減することができる。最後に、１つ以上の上述の例では、上述のドメイン固有言語は、クラウドコンピューティング環境のユーザの仕様における問題を識別するように、コンパイルを介して実行することができる。これはフィードバックサイクルを短くすることに繋がり得る。これにより、コンピューティング環境を開発するためのクラウドベースのサービスを消費したりインスタンス化する前に、クラウドコンピューティング環境の仕様が有する問題点を確認することによって、潜在的にコストを低減し得る。
【００２４】
図３は、本開示の例示に従う、例示的なクラウドコンピューティング環境基盤を示す。図３に示すように、（Ａ−Ｅでラベルされた）コンピュータ基盤の各構成要素は、当該基盤の一部である他の構成要素と通信可能に接続され得る。ある例では、構成要素Ａはロードバランサであり、構成要素Ｂはサーバであり、そして、構成要素Ｅはデータベースであり得る。構成要素Ａ、Ｂ及びＥは、３０２、３０４及び３０６がラベル付けされた１つ以上の通信パスを介して、互いに通信可能に接続され得る。
【００２５】
図２に戻って参照すると、ステップ２０２において、ユーザはコンピュータ基盤の各々の構成要素を定義し得る。図３に関して上述した例では、ユーザは、ロードバランサＡ、サーバＢ及びデータベースＥをプログラミング言語の構文を用いて定義することができる。ユーザ１０２は、基盤の各々の構成要素に対する仕様を提供し、どの構成要素が他の構成要素と通信することができるか（すなわちパス３０２、３０４及び３０６）、及びどの種別の通信が構成要素間で生じるかについての情報を提供し得る。
【００２６】
ステップ２０４において、ステップ２０２において生成されたユーザの宣言がコンパイルされ得る。コンパイラは、ユーザがステップ２０２において生成した宣言に意味を与える、複数のライブラリを含み得る。例えば、ライブラリは、アクセスされるクラウド環境オペレーティングシステムについての情報、構築される基盤上のクラウドサービス（すなわちGoogle、Amazon、Microsoft）、及び、プログラミング言語を用いて生成され得る異なる構成要素に関する情報を含み得る。
【００２７】
最後に、ステップ２０６において、コンパイルされたコードが更なる処理のためにクラウド環境オペレーティングシステム１０４に送信され得る。いくつかの例では、ステップ２０４においてコンパイルされ、ステップ２０６において送信されたコードは、クラウド１０６によって実行される準備のできた完全なプログラムではなく、むしろ、クラウド環境オペレーティングシステム１０４によって後に埋められる多数の省略を含むコードであり得る。この「省略」は、クラウド環境オペレーティングシステムによって後にパースされ、コンピューティング基盤の実装において用いられるクラウドサービスプロバイダに基づいて解決され得る。ステップ２０４においてコンパイルされたプログラムコードは、簡潔で機械フレンドリであるがよりユーザフレンドリでない構文を含み得る。このように、図２の例において用いられたプログラミング言語は、ユーザが便利で容易に使用できる構文で基盤を特定可能にするが、構文は、クラウド環境オペレーティングシステムによってパースされて用いられる機械フレンドリな構文に変換され得る。
【００２８】
プログラミング言語によって使用される構文は、一般的なものであり得る。換言すれば、構文は、AmazonやGoogleなどの何らかの特定のクラウドサービスプロバイダと動作するように作り込まれる必要はない。代わりに、ユーザは、一般的な基盤を特定することができ、更に後述するようにクラウド環境オペレーティングシステムは、一般的な宣言を、利用するクラウドサービスプロバイダによって理解される一連の命令に実装し得る。いくつかの実施形態では、クラウド環境オペレーティングシステムは、ユーザによって提供される基盤の仕様に基づいて、どのクラウドサービスプロバイダが基盤を実装するかを判定し得る。図３に戻って参照すると、ユーザは、構成要素Ａと構成要素Ｃとの間の通信パスを特定し得る。しかしながら、宣言は、最終的に利用されるクラウドサービスを考慮に入れる必要はない。代わりに、クラウド環境オペレーティングシステムは、構成要素Ａと構成要素Ｃとの間の通信パスの宣言を、クラウドサービスプロバイダによって理解される命令のセットに変更し得る。
【００２９】
ユーザはまた、最終的に利用されるクラウドサービスプロバイダと密接に関連する構文で基盤を宣言し得る。例えば、ユーザはそれらがMicrosoftのAzureプラットフォームの利用を望むことを知っている場合、ユーザは、ＡとＣの間の通信パスの宣言を、Azureクラウドプラットフォームに特化した構文で生成し得る。
【００３０】
クラウドに対する基盤を生成することに加えて、ユーザはまた、以前に生成した基盤をライブラリとしてコーディングプラットフォームに保存し得る。ある例では、ユーザが過去にデータベースサーバの基盤を生成した場合、それらはライブラリとしてその基盤を保存し得る。そして将来には、ユーザが、新規のデータベースサーバを生成するよりもむしろデータベースサーバを利用するコンピューティング環境の生成を望む場合、ユーザは、データベースサーバ基盤が既に記録されたライブラリを単に呼び出し得、そして、現在生成されているコンピューティング環境において利用し得る。このようにして、ユーザは、クラウドベースのコンピューティングプラットフォーム上で将来の基盤の生成に適用することができる再使用可能な基盤を定義することができる。
【００３１】
図４は、本開示の例示に従う、例示的なクラウド環境オペレーティングシステムの処理を示す。ステップ４０２において、ユーザは、クラウドに構築することが望まれるコンピューティング基盤を記載する構成物を生成し得る。上述したように、構成物は、ドメインプログラミング言語で記述される宣言の形式で記述され得る。また上述したように、ひとたびユーザが構成物を記述すると、所望の基盤を生成するために構成物を処理するクラウド環境オペレーティングシステムと互換性を有するハードウェアフレンドリな言語に変更され得る。
【００３２】
ステップ４０４において、ユーザによって生成された構成物はハンドラに送信され得る。ハンドラは、構成物を捉えてバージョンを付し、ユーザによって作成された構成物が新規構築（new build）（すなわちスクラッチから新たなコンピュータ基盤が生成される）であるか又はクラウド上で既に動作している以前の既存の基盤を更新するものであるかを判定し得る。ひとたびハンドラが構成物を受信し上記判定を行うと、構成物をプランニング段階に送ることによってビルド処理をトリガし得る。
【００３３】
ステップ４０６において、構成物は、ハンドラ段階からプランナ段階に渡される。ここで、ユーザによって生成された構成物は、クラウドで最終的に基盤を構築するビルダへ送るための一連の命令に構成物を変換する一連のモジュール（詳細は後述する）を通して実行される。プランナ段階は、構成物の言語を解釈することに加えて、ユーザによって記載された構成物に任意のエラー或いは構造的な欠陥があるか否かを判定するために、構成物の動作を実行する。
【００３４】
プランナ４０６は、構成物から生成された命令をビルダに送信し得る。ステップ４０８において、ビルダは、命令を取り出して、特定されたクラウドにおいて、ユーザによって指定された基盤をビルドし、更新し、又は破棄し得る。
【００３５】
ステップ４１０において、クラウドは、ステップ４０８においてビルダによって特定された基盤を実行し得る。クラウドは特定された基盤を実行しており、任意のエラーが基盤の動作において発生し得るため、クラウドは、ハンドラステップ４０４での再ビルドをトリガするステップ４１２におけるウォッチャアルゴリズムに、エラーを生成した基盤の構成要素を通知し得る。
【００３６】
図５は、本開示の例示に従う、例示的なクラウド環境オペレーティングシステムの機能ブロック図を示す。図５に示す機能ブロック図は、いくつかの例において、図４に示した処理を実施し得る。
【００３７】
ブロック５０２は、図１から３に関して上述したようなクラウド環境オペレーティングシステムの動作の前に生じるユーザ処理を表し得る。前述したように、ユーザはユーザフレンドリな構文を用いて基盤を宣言することができ、これはクラウド環境オペレーティングシステムがクラウド上で所望の基盤を構築するために解釈することができる低レベル言語に変換され得る。ユーザ５０２は、それぞれが、１又は複数のクラウド上に実装される所望のコンピューティング基盤を指定する、一人のユーザ又は、いくつかの例では、複数のユーザを表し得る。
【００３８】
ブロック５０４はロビーサーバを表し得る。ロビーサーバ５０４は、１以上のユーザから低レベルのコード（或いはコマンドラインインタフェースとして知られる）を受信し、１以上のユーザからコードを受信する「ピッチ＆キャッチ処理（pitch and catch process）」を実行してこれをアンパックし（すなわちクラウド環境オペレーティングシステムとインタフェースで接続するコードの一部を引き出す）、当該コードをコンパイルするために必要な任意のデータを（ストレージ部５０８において）記録し、ユーザ起点の情報をクラウド環境オペレーティングシステム内の適切なモジュールにルーティングし得る。更に、ロビーサーバ５０４は、特定ユーザのコマンドラインインタフェースと関連付けられる全ての処理を識別して、これらの処理に処理「タグ（tag）」を適用し得る。処理タグは、クラウド環境オペレーティングシステムが、システム内のどこで現在処理が実行されているかをトラックすることができるようにする。この機能は、以降でより説明されるようにスケジュール管理における単純化を可能にし得る。
【００３９】
ロビーサーバ５０４はまた、外部データのリクエストを扱い得る。リクエストが、クラウド環境オペレーティングシステムのランタイム環境に関するデータの所定の形式に対してクラウド環境オペレーティングシステムになされた場合、ロビーサーバ５０４は当該リクエストを受信することができ、それを実行し、取得したデータを適切なステークホルダ（stake holder）に送信する。
【００４０】
ユーザから受信したコードがひとたびロビーサーバ５０４によって処理されると、その後、処理されたコードは処理マネージャ５０６に送信され得る。処理マネージャ５０６は、クラウド環境オペレーティングシステムによって実行される各処理をリストする、処理テーブル５１０を管理し得る。換言すれば、特定のユーザによる、特定の基盤を構築する１セットの命令は、処理として扱われ得る。他のユーザによる、基盤を構築する他のセットの命令は、別々の処理として扱われ得る。処理マネージャ５０６は、処理ＩＤを割り当てるとともにシステムを通じて処理ＩＤを追跡することにより、別々のユーザのタスクのそれぞれをシステム内の処理として管理し得る。クラウド環境オペレーティングシステムによって実行される各ユーザの個々のタスクは別々のエンティティとして管理され得る。このように、処理マネージャ５０６は、クラウド環境オペレーティングシステムを、単一ユーザシステムとは対照的な「複数テナント（multi-tenant）」システムとして動作可能にし得る。換言すれば、複数のユーザは、クラウド環境オペレーティングシステムの単一インスタンスを介して複数のコンピューティング環境を実装し得る。クラウド環境オペレーティングシステムは、単一のユーザ又は単一のマシン専用であるものとするよりむしろ、複数のユーザからの基盤に対するリクエストを同時に取り扱い得る。
【００４１】
上述した機能に加えて、処理マネージャ５０６はまた、クラウド内の基盤の実装に対する状態確認を実行し得る。予め定められた繰り返し期間において、処理マネージャ５０６は、クラウド内の基盤の状態を判定するためにクエリマネージャ５２２に信号を送信することにより、処理を開始し得る。クエリマネージャ５２２は、ユーザの基盤の状態を判定し、クエリマネージャがユーザの基盤仕様がクラウド上に存在する基盤と一致しないと判定した場合には、行動を起こす（後に更に説明する）ためにインタプリタマネージャ５１２へコマンドを送信し得る。
【００４２】
処理マネージャは、処理がクラウド環境オペレーティングシステム上で実行されていること及びその処理が処理テーブル５１０上に記録されていることをひとたび把握すると、その後、これらの処理をインタプリタマネージャ５１２に送信して、最終的にクラウド上で実行可能な命令のセットに変換されるようにする。
【００４３】
インタプリタマネージャ５１２は、ユーザのコマンドラインインタフェース言語（すなわち高レベル表現）をクラウド環境オペレーティングシステムによって実行可能な一連の特定の命令に変換する責務を負い得る。インタプリタマネージャ５１２は、このことを、いくつかの例では、入力におけるリソーステーブルを受け付けて、ユーザから提供される構文内の任意の省略が埋められたリソーステーブルを生成する、一連のプランニングモジュール５１４を用いることにより達成することができる。インタプリタマネージャ５１２は、ユーザによって送信されるリソーステーブルを確認し、どの基盤ニーズがユーザによって宣言されたかに基づいて、一連のプランニングモジュール５１４に当該リソーステーブルを送信する。プランニングモジュール５１４は、ユーザのリソーステーブルを変更し、インタプリタマネージャ５１２に返信する。この処理は、リソーステーブルの最終的な正しいバージョンが完成するまで、他のプランニングモジュールと繰り返されてよい。その後インタプリタマネージャ５１２は、リソーステーブルを、クラウド上で構築されるコンピュータ基盤の低レベル宣言として参照され得る、機械用命令ファイルに変換する。低レベル宣言はその後、ビルダ／ドライバ５１６（後に詳細に説明される）に送信される。
【００４４】
図６は、本開示の例示に従う、例示的なプランニングモジュールの処理を示す。図５に関して前述したように、インタプリタマネージャ５１２は複数のプランニングモジュール６０２を含み得る。各プランニングモジュール６０２は、所望の基盤を特定するため、ユーザによって使用されるプログラミング構文において定義される特定の型を取り扱う。例として、基盤の一部としてロードバランサを要することをユーザが指定した場合、インタプリタマネージャ５１２内の特定のプランニングモジュールにロードバランサの型を取り扱うための権限が割り当てられ、当該特定のプランニングモジュールは、ユーザによるロードバランサの仕様を、クラウド上で実施される命令に変換し得る。
【００４５】
各プランニングモジュール６０２は、リソーステーブルが表現されたユーザ６００によって受け取られたコードを入力において受けつけ、入力された際に存在したリソースの任意の省略を十分に補充し、より特定されたリソーステーブルを返答し得る。ある例では、ユーザからのコードは、第１のプランニングモジュール６０２に入力される。ここで第１のプランニングモジュール６０２は、その後第２のモジュールに入力されるリソーステーブルを返答する。第２のモジュールの出力はその後、第３のモジュール等に入力される。
【００４６】
ユーザのコマンドラインインタフェース言語をクラウド用の命令に変換するモジュールを使用することにより、クラウド環境オペレーティングシステム上で利用可能でなかった基盤の新たな型を定義することを容易にすることもできる。ある例では、ロードバランサがクラウド環境オペレーティングシステム上でサポートされる基盤の型でない場合、ユーザは単に、ロードバランサの宣言をサポートするユーザ側のライブラリを、プログラミング言語で生成することができる。クラウド環境オペレーティングシステムがこの「新規の」ロードバランサをサポートするために、ロードバランサの基盤の型を扱うためのロジックを提供する新規モジュールが生成され得る。このように、モジュール式のインタプリタマネージャ５１２により、新たな基盤の型を容易に追加することができる。
【００４７】
図６に戻り、複数のモジュール６０２は、ある例では、パイプライン化／スタック化された構成で配置され得る。前述したようにユーザ６００によってコードが送信された場合、インタプリタマネージャ５１２は、個別にモジュールのそれぞれを通して実行することによってコードを処理し得る。換言すれば、コードがインタプリタマネージャ５１２の各モジュールを通過するまで、コードがモジュールからモジュールへ受け渡される。
【００４８】
コードがモジュール６０２を通して処理される順番は変わり得る。ある例では例えば、コードは、予め定められた順番で順次各モジュールを通して処理され得る。他の例では、コードは、モジュール６０２の間の依存関係に応じた順序で処理され得る。例えば、あるモジュールは、コードを処理可能になる前の他のモジュールの結果に依存し得る。この例において、他のモジュールの結果に依存するモジュールは、処理を開始する前に、終了させるために依存するモジュールの完了まで待機する。
【００４９】
ユーザによって提供されたコードがモジュール６０２を通して処理された後、最終的に、最終処理のための最終モジュール６０４へ送信される。最終モジュール６０４は、クラウドによって理解可能な一連の命令に変換するために用意されるリソーステーブルをファイナライズする責務を有し得る。最終的にモジュール６０２及び６０４のパイプラインは、ユーザによって提供される高レベル言語において以前に存在した抽象化（abstraction）及び省略（omission）のない低レベル言語を生成する。最後に、モジュール６０４はまた、抽象化及び省略の全てがモジュール６０２によって解決されたかどうかを判定し得る。全ての省略及び抽象化が解決されていないと判定された場合、最終モジュール６０４は、モジュールを通してリソーステーブルを戻し、リソーステーブルのそれぞれについて完了するまで処理を繰り返す。
【００５０】
モジュール６０２がユーザからの言語をクラウドによって実行可能なより低レベルの言語に解釈する言語解釈機能に加えて、各モジュールはまた、１つ以上のランタイム動作（run-time operation）を実行し得る。例として、モジュールはデバッグ動作を実行し得る。ユーザから高レベルの宣言を受信した場合、誤記や操作者のエラーによって引き起こされるようなコード内のエラーが存在しないことを確認するために、モジュールごとにコードを実行する予行演習（dry run）を、モジュールを通して実行し得る。エラーが発見された場合、インタプリタマネージャ５１２はそのエラーをユーザに通知し得る。
【００５１】
反対に、この性能を持たないクラウド環境オペレーティングシステムは、代わりに、ユーザからのコードをパースし、一連の命令をクラウドに渡す。ひとたびクラウドが一連の命令の実施を開始すると、その後はエラーに遭遇し、最終的に所望の基盤が生成されないかもしれない。ユーザは、ずっと後になるまでこのエラーに気づかず、時間とリソースの無駄遣いになるかもしれない。代わりに、クラウド環境オペレーティングシステムは、エラーが処理の更なる上流で修正され得るように、インタプリタマネージャ５１２を通じて、処理チェーン（process  chain）の早期にこれらのエラーを検出し得る。
【００５２】
モジュールによって実行されるランタイム動作の他の例では、ユーザのコードにおける省略や抽象化を解決するために、各モジュールはクラウド環境オペレーティングシステムの外部のリソースと通信することができる。ある例におけるインスタンスについて、ユーザレベルコードが基盤の構成要素の最新バージョンを要求する場合、モジュール６０２は、最新の構成要素を提供するための外部の構成管理システムと通信することができる。
【００５３】
上述のプランニングモジュール５１４は、クラウド上に既に実装された後に、基盤の状態に応じてユーザの基盤を調整し得る。上述したように、処理マネージャ５０６は、予め定められた期間の後に、クエリマネージャ５２２を介して基盤の状態を問い合せ得る。その後、基盤の状態は、処理マネージャによってインタプリタマネージャ５１２へ送信され得る。インタプリタマネージャ５１２は、プランニングモジュール５１４を介して、ユーザによって特定された基盤の仕様と基盤の現在の状態とを比較し得る。ユーザによる基盤の仕様とクラウド上の現在の状態とに差がある場合、プランニングモジュール５１４は、ユーザが指定したものに従うように、クラウド上の基盤を修正するためのコードを生成し得る。
【００５４】
図７は、本開示の例示に従う、例示的な基盤保守の処理を示す。図７において概説される処理は、いくつかの例において、プランニングモジュール５１４を利用するインタプリタマネージャ５１２内に実装され得る。ステップＳ７０２において、インタプリタマネージャ５１２は、上述したように、ユーザからの基盤の宣言を受信し得る。
【００５５】
ステップＳ７０４において、インタプリタマネージャ５１２は、ユーザによって構築されるべき特定された基盤に基づいて、完了済みリソーステーブルを生成し得る。以下でより説明されるように、完了済みリソーステーブルは、クラウドで実行される一連の命令に変換されるように、ビルダ／ドライバ５１６に送信され得る。
【００５６】
ステップＳ７０６において、インタプリタビルダ５１２は、クエリマネージャ５２２から既に構築された基盤の状態を受信し得る。上述したように、クエリマネージャ５２２は、基盤の状態を返信するように、予め定められた繰り返し期間で処理マネージャ５０６によって促される。
【００５７】
ステップＳ７０８において、インタプリタマネージャ５１２は、クエリマネージャ５２２によって提供されるクラウド上の基盤の現在の状態と、Ｓ７０２においてユーザによって提供された基盤の宣言とを比較し得る。宣言された基盤と基盤の現在の状態との間に差がない場合、処理は、クエリマネージャ５２２からの次の状態更新を待つためにステップＳ７０６に戻り得る。
【００５８】
しかしながら、基板の現在の状態との間に差がある場合、インタプリタマネージャ５１２のプランニングモジュール５１４を用いて、クラウド上の基盤がユーザの元々の基盤の宣言を構成するように、ビルダ／ドライバ５１６を介してクラウドへ渡され得るリソーステーブルの更新を生成し得る。
【００５９】
宣言された基盤がユーザの宣言に従ってひとたび変更されると、処理は、クエリマネージャ５２２からの次の状態更新を待つためにステップＳ７０６に戻り得る。
【００６０】
このようにして、クラウド環境オペレーティングシステムは、クラウド上の所望の基盤を構築するだけでなく、ユーザが最初にあるべき構成を宣言した仕様から外れた基盤をもたらす経時的な構成の変化又は衝突がないことを確実にするために、基盤を継続的に確認する。この機能は、ユーザの基盤を実装する従来のクラウドオペレーティングシステムに対する改善を提供するが、経時的な構成の変化又は衝突のために基盤を監視しない。
【００６１】
図５に戻ると、ひとたびインタプリタマネージャ５１２が上述の処理を完了すると、完了済みリソーステーブルをビルダ／ドライバ５１６に送信し得る。ビルダ／ドライバ５１６は、完了済みリソーステーブルを、クラウドによって実行可能な一連の命令に変換する。ビルダ／ドライバ５１６は、上述のように、所望の基盤を生成し、又は基盤の所望の変更を生成するために、クラウド５１８のアプリケーションプログラムインタフェース（ＡＰＩ）を用いて接続する。
【００６２】
他の例では、ロビーサーバ５０４、処理マネージャ５０６、ストレージ５０８、処理テーブル５１０、インタプリタマネージャ５１２、プランナモジュール５１４、ビルダドライバ５１６、及びクエリマネージャ５２２は、上述した構成要素が置かれる（以下の更なる説明を参照）、クラウド５１８、クラウド内に配置されるコンピューティング環境とインタフェースを有するシステム、又は、クラウドコンピューティング環境の外側の他のクラウドサービスプロバイダ、とインタフェースを有するよりもむしろ、クラウドコンピューティング環境内に実装され得る。いくつかの実施形態では、クラウドコンピューティング環境は、クラウドコンピューティング環境によって提供されるクラウドサービス内に生成される別々のアカウントを含むことができ、ユーザ特有のコンピューティング環境を実施する。
【００６３】
クラウド上の宣言された基盤の実装を監視することに加えて、図５に示すシステムはまた、ポリシー確認機能を実行し得る。例として、クラウドサービスが、ネットワークセキュリティ、通信プロトコル等のものに関する特定のポリシーを有し、ユーザの宣言した基盤がクラウドの何等かのポリシーに違反する場合、ユーザは、クラウド上に何等かの基盤を構築する前にそのような違反について通知を受けることができる。
【００６４】
上述の説明は、説明の目的のために、特定の実施形態を参照して説明された。しかしながら、上記説明は排他的であること又は開示された正確な形式に限定することを意図するものではない。上記技術を考慮した多くの修正及び変形が可能である。実施形態は、技術の原理及び実用的な利用を最もよく説明するために選択され、説明されたものである。これにより、当業者は、意図された特定の用途に適したものとして本技術と様々な修正を伴う様々な修正を最も有効に利用することができる。
【００６５】
上述したように、いくつかの例では、クラウド環境オペレーティングシステムは、クラウドサービスプロバイダ環境に実装され得る。図８は、本開示の例示に従う、例示的なクラウド環境オペレーティングシステムとのユーザの相互作用を示す。図８の例では、ユーザ８６０は、ユーザによって生成されるコンパイル済のドメイン固有言語ファイルの使用を通して、クラウド環境オペレーティングシステム８０８と相互作用を行い得る。ここで、クラウド環境オペレーティングシステムはコマンドラインインタフェース８０４で接続するように構成される。コンパイル済のドメイン固有言語はファイル８０２は、コマンドラインインタフェース８０４によって処理される１つ以上のコマンドを提供し得、ここで、コマンドラインインタフェース８０４はオペレーティングシステム８０８へ１つ以上のコマンドを発生する。
【００６６】
上述したように、クラウド環境オペレーティングシステム８０８は、上述の構成要素を参照することができ、構成要素は、コンピューティング基盤のユーザが提供した仕様に基づいて、１つ以上のクラウド基盤の生成と動作とを自動化することができ、１つ以上のクラウドサービスプロバイダ上の計算インスタンスを生成及び破棄することができる。また、上述したように、クラウド環境オペレーティングシステム８０８は、クラウドサービスプロバイダ内にデプロイ（deploy）され得る。
【００６７】
例として、図８では、クラウド環境オペレーティングシステム８０８は、クラウドサービスプロバイダ８０６にデプロイされ得る。特に、クラウド環境オペレーティングシステムは、特定のクラウドサービスプロバイダのユーザアカウント８１２内にデプロイされ得、自身のアカウントにアクセスするユーザは、このアカウントを通じて、クラウド環境オペレーティングシステム８０８を使用して、彼らのクラウドベースのコンピューティング環境を構築したり保守したりし得る。ある例では、クラウド環境オペレーティングシステムの構成要素は、ユーザアカウント８１２内の特定のクラウドコンピューティング環境において保守され得る。図８の例では、ユーザ８６０からクラウドコンピューティング環境の仕様を受信したクラウド環境オペレーティングシステムは、ユーザのクラウドサービスプロバイダアカウント８１２内でクラウドコンピューティング環境８１０を構築し保守し得る。
【００６８】
他の例では、単一のユーザは、そのクラウドサービスプロバイダアカウント上のクラウド環境オペレーティングシステムの単一のデプロイを用いて、複数のクラウドコンピューティング環境を管理し得る。図９は、単一のユーザが単一のデプロイを用いてクラウドサービスプロバイダ内で複数のコンピューティング環境を管理する例を示している。
【００６９】
図９の例では、図８に関する説明と実質的に同様に、ユーザ９６０は、ユーザによって生成されるコンパイル済のドメイン固有言語ファイルの使用を通して、クラウド環境オペレーティングシステム９０８と相互作用を行い得る。ここで、クラウド環境オペレーティングシステムはコマンドラインインタフェース９０４で接続するように構成される。いくつかの例では、ＤＳＬファイル９０２は、生成され、更新され、及び／又は管理される、対象となる基盤の宣言を含み、ユーザは、ＤＳＬファイルを引数として受け入れ得るコマンドラインインタフェース（ＣＬＩ）に対してコマンドを発行してもよい（例えばfugue run ludwigfile or fugue update ProcessId）。そのようなコマンドは、クラウド環境オペレーティングシステムに対して発生される呼び出し（call）を生じさせ得、そして、入力としての引数を引き渡し得る。
【００７０】
図９の例では、クラウド環境オペレーティングシステム９０８の単一のインスタンスは、別々のクラウドコンピューティング環境９１０及び９１４を構築し保守するために用いられ得る。従ってユーザ９６０は、それぞれが別個のコンピューティング環境を特定するように用いられる、複数のドメイン固有言語ファイル９０２を生成し得る。クラウドサービスプロバイダ９０６内のユーザのクラウドサービスプロバイダアカウント９１２内にデプロイされるクラウド環境オペレーティングシステムのインスタンス９０８は、ユーザの仕様に基づいて、多数の環境を実装し、保守することができる。
【００７１】
ユーザは、単一のクラウドサービスプロバイダ内のクラウド環境オペレーティングシステムにアクセスするが、単一のクラウドサービスプロバイダのためのクラウド基盤を特定することに限定されなくてよく、代わりに、複数のクラウドサービスプロバイダに実装され得るクラウドコンピューティング環境を特定し得る。図１０は、クラウド環境オペレーティングシステムの単一のインスタンスが複数のクラウドサービスプロバイダ内でクラウドコンピューティング環境を実施及び保守する、例示的なコンピューティング環境との相互作用を示している。
【００７２】
図１０の例では、図８に関する説明と実質的に同様に、ユーザ１０６０は、ユーザによって生成されるコンパイル済のドメイン固有言語ファイル１００２の使用を通して、クラウド環境オペレーティングシステム１００８と相互作用を行い得る。ＤＳｌファイルは基盤構成要素を宣言してもよい。ユーザは、引数としてＤＳＬファイルを受け入れ得るコマンドを発行するコマンドラインインタフェースを呼び出してもよい（例えばfugure run ludwigfile）。これにより、クラウド環境オペレーティングシステムに対する呼び出しを発行し、入力として引数を渡してもよい。
【００７３】
図１０の例では、クラウド環境オペレーティングシステム１００８はクラウドサービスプロバイダ１００６のユーザアカウント１０１２内にデプロイされるが、クラウド環境オペレーティングシステムは、第２のクラウドサービスプロバイダ１０２２の第２のユーザアカウント１０１８内でコンピューティング環境を管理するためにも用いられ得る。例として、第１のクラウドサービスプロバイダはAmazon Web Servicesであり得るが、第２のクラウドサービスプロバイダはGoogleの Cloud Platformであり得る。このように、単一のユーザは、クラウドサービスプロバイダ内のクラウド環境オペレーティングシステムの単一のデプロイを用いて、複数のクラウドコンピューティングサービスプロバイダのプラットフォームにおいて格納され及び実施される複数のクラウドコンピューティング環境を管理し得る。
【００７４】
クラウドサービスプロバイダ内のクラウド環境オペレーティングシステムの単一のデプロイはまた、複数のコンピューティング環境を生成するために複数のユーザによって用いられ得る。図１１は、本開示の例示に従う、例示的なクラウド環境オペレーティングシステムとの複数のユーザの相互作用を示す。図１１の例では、複数のユーザ１１６０及び１１６２が、クラウドサービスプロバイダ１１０６によって提供される単一のユーザアカウント１１１２内にデプロイされた、クラウド環境オペレーティングシステム１１０８の単一のインスタンスと相互作用し得る。このコンテキストでは、複数のユーザ１１６０及び１１６２がドメイン固有言語ファイル１１０２及び１１８を生成し得、単一のデプロイ済のクラウド環境オペレーティングシステム１１０８は、コンパイル済のコードを用いて、クラウドサービスプロバイダ１１０６内の単一のユーザアカウント内に複数の環境１１１０及び１１１４を生成し得る。この種のユーザの相互作用は、複数の技術者がクラウドプロバイダ内にデプロイされる単一のオペレーティングシステムを用いて複数のクラウドコンピューティング環境を生成し得る、企業向けコンピューティング環境において利用し易いものであろう。
【００７５】
他のシナリオでは、複数のユーザに共通のデプロイ済みのクラウドコンピューティングシステムを共有させるよりも、複数のユーザが、複数のクラウドサービスプロバイダアカウントにデプロイされた複数のクラウド環境オペレーティングシステムを用いて、並列コンピューティング環境を動作させ得る。図１２は、本開示の例示に従う、例示的なクラウド環境オペレーティングシステムとの複数のユーザの相互作用を示す。
【００７６】
図１２の例では、第１のユーザ１２６０は、コマンドラインインタフェース１２０４を介してクラウド環境オペレーティングシステム１２０８にアクセス可能な、ドメイン固有言語ファイル１２０４を生成し得る。クラウド環境オペレーティングシステム１２０８は、クラウドサービスプロバイダ１２０６の第１のユーザアカウント１２１２内にデプロイされ得る。クラウド環境オペレーティングシステム１２０８を用いて、第１のユーザ１２６０は、クラウドサービスプロバイダ１２０６内に複数のクラウドコンピューティング環境１２１０及び１２１４を生成し得る。更に、ユーザ１２６０は、クラウド環境オペレーティングシステム１２０８を介して、クラウドサービスプロバイダ１２２６のユーザアカウント１２２８内にコンピューティング環境１２３０を生成し得る。
【００７７】
ユーザ１２６０の操作と並行して、追加ユーザ１２６２は、ＣＬＩ１２２０経由でクラウド環境オペレーティングシステム１２３８を介してクラウドコンピューティング環境を生成することができるドメイン固有言語ファイル１２１８を生成し得る。クラウド環境オペレーティングシステム１２３８は、第２のクラウドサービスプロバイダ１２２６上にデプロイされ得、クラウドサービスプロバイダ１２２６内に配置される第２のユーザアカウント１２３２上にコンピューティング環境１２３４及び１２３６を生成するために用いられ得る。更に、クラウド環境オペレーティングシステム１２３８は、クラウドサービスプロバイダ１２０６内に配置される第２のユーザアカウント１２２２上にコンピューティング環境１２２４を生成するために用いられ得る。
【００７８】
図８−１２の例に示すように、クラウドコンピューティングオペレーティングシステムは、特定のクラウドサービスプロバイダ内に実装されてもよいが、同一のクラウドサービスプロバイダ内に複数のコンピューティング環境を生成するために用いられ、又は、クラウド環境オペレーティングシステムが実施され得るクラウドコンピューティング環境の外部にあるクラウドサービスプロバイダ内のクラウドコンピューティング環境を生成するために用いられ得る。更に、複数のユーザは、共通にデプロイされたクラウド環境オペレーティングシステムを共有する、又は、クラウドコンピューティングシステムの別々のインスタンスを使用し得る。
【００７９】
本開示及び例は添付の図面を参照して十分に説明されたが、様々な変更及び修正が当業者にとって明らかであることに留意されるべきである。そのような変更及び修正は、本開示及び例の範囲内に含まれるものとして特許請求の範囲によって定義されるように理解されるべきである。
【図１】
2018530070.tif 000003
【図２】
2018530070.tif 000004
【図３】
2018530070.tif 000005
【図４】
2018530070.tif 000006
【図５】
2018530070.tif 000007
【図６】
2018530070.tif 000008
【図７】
2018530070.tif 000009
【図８】
2018530070.tif 000010
【図９】
2018530070.tif 000011
【図１０】
2018530070.tif 000012
【図１１】
2018530070.tif 000013
【図１２】
2018530070.tif 000014
【国際調査報告】
2018530070.tif 000015
2018530070.tif 000016
2018530070.tif 000017