(57)【特許請求の範囲】
【請求項１】
コントローラを用いて少なくとも１つのプログラマブルデバイスの配置、供給、および管理を含むライフサイクル状態を制御する方法であって、
前記コントローラによって、前記プログラマブルデバイスに設定されたあるライフサイクル状態を制御する場合において、
通信用の少なくとも１つのポートを有する自動化インターフェースと複数のインターフェースを介して通信を行うことによってモジュールから前記プログラマブルデバイスの遷移を制御する制御スクリプトを受信するステップと、
ここで、該モジュールは、ポリシー規則を含む管理アプリケーションと、前記ライフサイクルの状態間で前記プログラマブルデバイスを遷移させる制御をコントローラにより行うための前記制御スクリプトと、前記自動化インターフェースおよび前記コントローラと通信する複数のインターフェースを提供する機器インターフェースとを含み、
前記受信した制御スクリプトを使用して、前記プログラマブルデバイスを前記設定されたあるライフサイクル状態から別のライフサイクル状態への遷移を開始させるステップと
を具え、
前記プログラマブルデバイスに前記遷移を開始させるステップは、
前記ライフサイクルの初期状態と前記ライフサイクルの最終状態を含めて、前記ライフサイクルの複数の所定の状態を前記制御スクリプトに基づき前記コントローラによって設定するステップと、
ここで、前記ライフサイクルの複数の所定の状態は、少なくとも、未テストの状態、テスト済みの状態、未配置の状態、配置済みの状態、準備済みの状態、供給済みの状態、サービス中の状態、およびトラブルの状態を含み、
前記ライフサイクルのある状態から前記ライフサイクルの別の状態に少なくとも１つのプログラマブルデバイスを遷移する自動化された手順の複数のセットを前記複数のインターフェースを介した通信によって前記モジュールから取得するステップと、
ここで、前記ライフサイクルのある状態から前記ライフサイクルの別の状態への遷移は、前記ライフサイクルの複数の所定の状態に含まれるいずれかの状態を組み合わせた状態間での遷移であり、
トリガーイベントに応答して、前記ライフサイクルのある状態から前記ライフサイクルの別の状態への遷移を開始するステップであって、前記遷移が自動化された手順のセットに従っているステップとを含むことを特徴とする方法。
【請求項２】
前記ライフサイクルの前記ある状態が前記未テストの状態で、前記ライフサイクルの前記別の状態が前記テスト済みの状態の場合においては、
前記ライフサイクルの前記ある状態から前記ライフサイクルの前記別の状態への遷移を開始するステップは、少なくとも１つのプログラマブルデバイスが開発されてテストされたときにトリガーされることにより、
前記自動化された手順の前記複数のセットの１つに含まれるテスト手順に従って前記プログラマブルデバイスを前記未テストの状態から前記テスト済みの状態に遷移し、
ここで、前記テスト手順は、
基準システム上に新しいイメージとアップグレードされたイメージの１つを作成するステップと、
前記新しいイメージと前記アップグレードされたイメージの前記１つをイメージリポジトリに転送するステップと、
前記イメージリポジトリ内の前記新しいイメージと前記アップグレードされたイメージの前記１つが所定の要件に合致するかどうかを検証するステップと、
前記プログラマブルデバイスに従って前記新しいイメージと前記アップグレードされたイメージの前記１つをプログラマブルデバイス上にインストールするステップとを含み、
次に、前記ライフサイクルの前記ある状態が前記テスト済みの状態で、前記ライフサイクルの前記別の状態が前記未配置の状態の場合においては、
前記ライフサイクルの前記ある状態から前記ライフサイクルの前記別の状態への遷移を開始するステップは、プログラマブルデバイスに追加容量を追加し、前記プログラマブルデバイスに少なくとも１つの追加のプログラマブルデバイスを追加することの１つに対して、ニーズが予想されたときにトリガーされることにより、
前記自動化された手順の前記複数のセットの１つに含まれる計画する手順に従って前記テスト済みの状態から前記未配置の状態に前記プログラマブルデバイスを遷移し、
ここで、前記計画する手順は、
追加のニーズを定量化するために需要計画を実行するステップと、
前記追加のニーズを満たすために資源計画を実行するステップとを含み、
前記資源計画を実行するステップは、
物理資源を計画するステップと、
計算資源を計画するステップと、
環境要件を計画するステップと、
ネットワークおよびストレージ資源を計画するステップとを含み、
次に、前記ライフサイクルの前記ある状態が前記未配置の状態で、前記ライフサイクルの前記別の状態が前記配置済みの状態の場合においては、
前記ライフサイクルの前記ある状態から前記ライフサイクルの前記別の状態への遷移を開始するステップは、プログラマブルデバイスに配置の準備が整ったときにトリガーされることにより、
前記自動化された手順の前記複数のセットの１つに含まれる配置する手順に従って前記未配置の状態から前記配置済みの状態に前記プログラマブルデバイスを遷移し、
ここで、前記配置する手順は、
インストール位置で受信されたプログラマブルデバイス上に初期ブートイメージをインストールするステップと、
前記プログラマブルデバイスに通信設定を設定するステップと、
前記プログラマブルデバイスに初期識別パラメータを設定するステップとを含み、
次に、前記ライフサイクルの前記ある状態が前記配置済みの状態で、前記ライフサイクルの前記別の状態が前記準備済みの状態の場合においては、
前記ライフサイクルの前記ある状態から前記ライフサイクルの前記別の状態への遷移を開始するステップは、プログラマブルデバイスに対するタスクが定義された後でトリガーされることにより、
前記自動化された手順の前記複数のセットの１つに含まれる準備する手順に従って前記プログラマブルデバイスを前記配置済みの状態から前記準備済みの状態に遷移し、
ここで、前記準備する手順は、タスクイメージを前記プログラマブルデバイスに転送することを含み、
次に、前記ライフサイクルの前記ある状態が前記準備済みの状態で、前記ライフサイクルの前記別の状態が前記供給済みの状態の場合においては、
前記ライフサイクルの前記ある状態から前記ライフサイクルの前記別の状態への遷移を開始するステップは、プログラマブルデバイスに対する役割が決定された後でトリガーされることにより、
前記自動化された手順の前記複数のセットの１つに含まれる供給する手順に従って前記準備済みの状態から前記供給済みの状態に前記プログラマブルデバイスを遷移し、
ここで、前記供給する手順は、
前記プログラマブルデバイス上への識別の供給を実施するステップと、
前記プログラマブルデバイス上へのサービスの供給を実施するステップと、
ストレージの供給を実施するステップと、
追加の供給を実施するステップとを含み、
次に、前記ライフサイクルの前記ある状態が前記供給済みの状態で、前記ライフサイクルの前記別の状態が前記サービス中の状態の場合においては、
前記供給済みの状態から前記サービス中の状態への遷移を開始するステップは、前記プログラマブルデバイスが供給された後でトリガーされることにより、
前記供給済みの状態から前記サービス中の状態に前記プログラマブルデバイスを遷移し、
次に、前記ライフサイクルの前記ある状態が前記サービス中の状態で、前記ライフサイクルの前記別の状態が前記トラブルの状態の場合においては、
前記ライフサイクルの前記ある状態から前記ライフサイクルの前記別の状態への遷移を開始するステップは、前記プログラマブルデバイスによって提供されるサービスの破壊が発生した後でトリガーされることにより、
前記サービス中の状態から前記トラブルの状態に前記プログラマブルデバイスを遷移し、
サービスの前記破壊は、ウイルス、低速の応答時間、および構成要素の故障の１つを含み、
次に、前記ライフサイクルの前記ある状態が前記供給済みの状態で、前記ライフサイクルの前記別の状態が前記未配置の状態の場合において、
前記ライフサイクルの前記ある状態から前記ライフサイクルの前記別の状態への遷移を開始するステップは、プログラマブルデバイスを再配置するための要求を前記複数のインターフェースを介した通信によって受信した後でトリガーされることにより、
前記供給済みの状態から前記未配置の状態に前記プログラマブルデバイスを遷移し、
ここで、前記プログラマブルデバイスにインストールされているすべてのソフトウェアを削除するステップと、
前記プログラマブルデバイスに初期ブートイメージを前記複数のインターフェースを介した通信によって再インストールするステップ又は初期ブートイメージを残すステップのどちらか一方をさらに具えたことを特徴とする請求項１記載の方法。
【請求項３】
前記ライフサイクルの前記ある状態が前記テスト済みの状態とオンラインの状態のうちの１つを含み、前記ライフサイクルの前記別の状態は計画済みの状態を含む場合において、
前記ライフサイクルの前記ある状態から前記ライフサイクルの前記別の状態への遷移を開始するステップは、前記プログラマブルデバイスに追加容量を追加するためのニーズが予想された後でトリガーされることにより、
前記自動化された手順の前記複数のセットの１つに含まれる計画する手順に従って前記計画済みの状態に遷移し、
ここで、前記計画する手順は、
前記追加のニーズを定量化するために需要計画を実施するステップと、
前記追加のニーズを満たすために資源計画を実施するステップとを含み、
前記資源計画を実施する前記ステップは、
物理資源を計画するステップと、
計算資源を計画するステップと、
環境要件を計画するステップと、
ネットワークおよびストレージ資源を計画するステップとをさらに具えたことを特徴とする請求項２記載の方法。
【請求項４】
前記少なくとも１つのプログラマブルデバイスの電力消費を管理するステップをさらに具えたことを特徴とする請求項１ないし３のいずれかに記載の方法。
【請求項５】
前記少なくとも１つのプログラマブルデバイスが電力量を必要とする負荷を有する少なくとも１つのプログラマブルデバイスを含む方法であって、前記少なくとも１つのプログラマブルデバイスの電力消費を管理するステップは、
前記負荷に前記電力量を供給するために少なくとも１つのプログラマブルデバイスに電力量を供給するステップと、
電力警報状態中に電力量を低減するステップと
を含むことを特徴とする請求項４記載の方法。
【請求項６】
電力警報状態中に前記電力量を低減する前記ステップは、
前記少なくとも１つのプログラマブルデバイスのそれぞれに対する前記電力量を等量の電力量だけ低減するステップを含むことを特徴とする請求項５記載の方法。
【請求項７】
電力警報状態中に前記電力量を低減する前記ステップは、
前記少なくとも１つのプログラマブルデバイスのそれぞれによって、支払われた割増金に比例するパーセンテージだけ前記電力量を低減する前記ステップを含むことを特徴とする請求項５記載の方法。
【請求項８】
前記少なくとも１つのプログラマブルデバイスが使用されていない場合に、前記電力量が低電力量まで低下させられることを特徴とする請求項５記載の方法。
【請求項９】
コンピュータによって実行される請求項１ないし８のいずれかに記載の方法を実行するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項１０】
コントローラを用いて少なくとも１つのプログラマブルデバイスの配置、供給、および管理を含むライフサイクル状態を制御するシステムであって、
前記少なくとも１つのプログラマブルデバイスの前記制御の自動化を支援するためのモジュールと、
ここで、該モジュールは、ポリシー規則を含む管理アプリケーションと、前記ライフサイクルの状態間で前記プログラマブルデバイスを遷移させる制御をコントローラにより行うための制御スクリプトと、自動化インターフェースおよび前記コントローラと通信する複数のインターフェースを提供する機器インターフェースとを含み、
前記モジュールと通信するための少なくとも１つのポートを含む自動化インターフェースと、
前記プログラマブルデバイスに設定されたあるライフサイクル状態を、前記制御スクリプトを用いて制御するための前記コントローラと
を具え、
前記コントローラは、前記プログラマブルデバイスに設定されたあるライフサイクル状態を制御する場合において、
通信用の少なくとも１つのポートを有する自動化インターフェースと前記複数のインターフェースを介して通信を行うことによってモジュールから前記プログラマブルデバイスの遷移を制御する制御スクリプトを受信することと、
前記受信した制御スクリプトを使用して、前記プログラマブルデバイスを前記設定されたあるライフサイクル状態から別のライフサイクル状態への遷移を開始させることと
を行うように構成され、
前記プログラマブルデバイスに前記遷移を開始させることは、
前記ライフサイクルの初期状態と前記ライフサイクルの最終状態を含めて、前記ライフサイクルの複数の所定の状態を前記制御スクリプトに基づき前記コントローラによって設定することと、
ここで、前記ライフサイクルの複数の所定の状態は、少なくとも、未テストの状態、テスト済みの状態、未配置の状態、配置済みの状態、準備済みの状態、供給済みの状態、サービス中の状態、およびトラブルの状態を含み、
前記ライフサイクルのある状態から前記ライフサイクルの別の状態に少なくとも１つのプログラマブルデバイスを遷移する自動化された手順の複数のセットを前記複数のインターフェースを介した通信によって前記モジュールから取得することと、
ここで、前記ライフサイクルのある状態から前記ライフサイクルの別の状態への遷移は、前記ライフサイクルの複数の所定の状態に含まれるいずれかの状態を組み合わせた状態間での遷移であり、
トリガーイベントに応答して、前記ライフサイクルのある状態から前記ライフサイクルの別の状態への遷移を開始することであって、前記遷移が自動化された手順のセットに従っていることとを含むことを特徴とするシステム。
【請求項１１】
前記ライフサイクルの前記ある状態が前記未テストの状態で、前記ライフサイクルの前記別の状態が前記テスト済みの状態の場合においては、
前記ライフサイクルの前記ある状態から前記ライフサイクルの前記別の状態への遷移を開始することは、少なくとも１つのプログラマブルデバイスが開発されてテストされたときにトリガーされることにより、
前記自動化された手順の前記複数のセットの１つに含まれるテスト手順に従って前記プログラマブルデバイスを前記未テストの状態から前記テスト済みの状態に遷移し、
ここで、前記テスト手順は、
基準システム上に新しいイメージとアップグレードされたイメージの１つを作成することと、
前記新しいイメージと前記アップグレードされたイメージの前記１つをイメージリポジトリに転送することと、
前記イメージリポジトリ内の前記新しいイメージと前記アップグレードされたイメージの前記１つが所定の要件に合致するかどうかを検証することと、
前記プログラマブルデバイスに従って前記新しいイメージと前記アップグレードされたイメージの前記１つをプログラマブルデバイス上にインストールすることとを含み、
次に、前記ライフサイクルの前記ある状態が前記テスト済みの状態で、前記ライフサイクルの前記別の状態が前記未配置の状態の場合においては、
前記ライフサイクルの前記ある状態から前記ライフサイクルの前記別の状態への遷移を開始することは、プログラマブルデバイスに追加容量を追加し、前記プログラマブルデバイスに少なくとも１つの追加のプログラマブルデバイスを追加することの１つに対して、ニーズが予想されたときにトリガーされることにより、
前記自動化された手順の前記複数のセットの１つに含まれる計画する手順に従って前記テスト済みの状態から前記未配置の状態に前記プログラマブルデバイスを遷移し、
ここで、前記計画する手順は、
追加のニーズを定量化するために需要計画を実行することと、
前記追加のニーズを満たすために資源計画を実行することとを含み、
前記資源計画を実行することは、
物理資源を計画することと、
計算資源を計画することと、
環境要件を計画することと、
ネットワークおよびストレージ資源を計画することとを含み、
次に、前記ライフサイクルの前記ある状態が前記未配置の状態で、前記ライフサイクルの前記別の状態が前記配置済みの状態の場合においては、
前記ライフサイクルの前記ある状態から前記ライフサイクルの前記別の状態への遷移を開始することは、プログラマブルデバイスに配置の準備が整ったときにトリガーされることにより、
前記自動化された手順の前記複数のセットの１つに含まれる配置する手順に従って前記未配置の状態から前記配置済みの状態に前記プログラマブルデバイスを遷移し、
ここで、前記配置する手順は、
インストール位置で受信されたプログラマブルデバイス上に初期ブートイメージをインストールすることと、
前記プログラマブルデバイスに通信設定を設定することと、
前記プログラマブルデバイスに初期識別パラメータを設定することとを含み、
次に、前記ライフサイクルの前記ある状態が前記配置済みの状態で、前記ライフサイクルの前記別の状態が前記準備済みの状態の場合においては、
前記ライフサイクルの前記ある状態から前記ライフサイクルの前記別の状態への遷移を開始することは、プログラマブルデバイスに対するタスクが定義された後でトリガーされることにより、
前記自動化された手順の前記複数のセットの１つに含まれる準備する手順に従って前記プログラマブルデバイスを前記配置済みの状態から前記準備済みの状態に遷移し、
ここで、前記準備する手順は、タスクイメージを前記プログラマブルデバイスに転送することを含み、
次に、前記ライフサイクルの前記ある状態が前記準備済みの状態で、前記ライフサイクルの前記別の状態が前記供給済みの状態の場合においては、
前記ライフサイクルの前記ある状態から前記ライフサイクルの前記別の状態への遷移を開始することは、プログラマブルデバイスに対する役割が決定された後でトリガーされることにより、
前記自動化された手順の前記複数のセットの１つに含まれる供給する手順に従って前記準備済みの状態から前記供給済みの状態に前記プログラマブルデバイスを遷移し、
ここで、前記供給する手順は、
前記プログラマブルデバイス上への識別の供給を実施することと、
前記プログラマブルデバイス上へのサービスの供給を実施することと、
ストレージの供給を実施することと、
追加の供給を実施することとを含み、
次に、前記ライフサイクルの前記ある状態が前記供給済みの状態で、前記ライフサイクルの前記別の状態が前記サービス中の状態の場合においては、
前記供給済みの状態から前記サービス中の状態への遷移を開始することは、前記プログラマブルデバイスが供給された後でトリガーされることにより、
前記供給済みの状態から前記サービス中の状態に前記プログラマブルデバイスを遷移し、
次に、前記ライフサイクルの前記ある状態が前記サービス中の状態で、前記ライフサイクルの前記別の状態が前記トラブルの状態の場合においては、
前記ライフサイクルの前記ある状態から前記ライフサイクルの前記別の状態への遷移を開始することは、前記プログラマブルデバイスによって提供されるサービスの破壊が発生した後でトリガーされることにより、
前記サービス中の状態から前記トラブルの状態に前記プログラマブルデバイスを遷移し、
サービスの前記破壊は、ウイルス、低速の応答時間、および構成要素の故障の１つを含み、
次に、前記ライフサイクルの前記ある状態が前記供給済みの状態で、前記ライフサイクルの前記別の状態が前記未配置の状態の場合において、
前記ライフサイクルの前記ある状態から前記ライフサイクルの前記別の状態への遷移を開始することは、プログラマブルデバイスを再配置するための要求を前記複数のインターフェースを介した通信によって受信した後でトリガーされることにより、
前記供給済みの状態から前記未配置の状態に前記プログラマブルデバイスを遷移し、
ここで、前記プログラマブルデバイスにインストールされているすべてのソフトウェアを削除することと、
前記プログラマブルデバイスに初期ブートイメージを前記複数のインターフェースを介した通信によって再インストールすること又は初期ブートイメージを残すことのどちらか一方をさらに具えたことを特徴とする請求項１０記載のシステム。
【請求項１２】
前記コントローラと通信するイメージリポジトリをさらに具えたことを特徴とする請求項１０又は１１記載のシステム。
【請求項１３】
前記複数のインターフェースは、所定のハードウェアと通信するための少なくとも１つのアブストラクションインターフェースを含むことを特徴とする請求項１０ないし１２のいずれかに記載のシステム。
【請求項１４】
前記少なくとも１つのアブストラクションインターフェースは、所定のネットワークと通信するためのネットワークアブストラクションを含むことを特徴とする請求項１３記載のシステム。
【請求項１５】
前記少なくとも１つのアブストラクションインターフェースは、所定のストレージエリアネットワークと通信するためのストレージエリアネットワークアブストラクションを含むことを特徴とする請求項１３記載のシステム。
【請求項１６】
前記複数のインターフェースは、
特定のハードウェアと通信するための配置インターフェースと、
前記イメージリポジトリと通信するためのイメージングインターフェースと
をさらに具えたことを特徴とする請求項１０ないし１５のいずれかに記載のシステム。
【請求項１７】
前記複数のインターフェースは、
ウェブ機器と通信するためのウェブ機器インターフェース
をさらに具えたことを特徴とする請求項１０ないし１６のいずれかに記載のシステム。
【請求項１８】
前記コントローラと通信するストアをさらに具えたことを特徴とする請求項１０ないし１７のいずれかに記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
関連特許出願の相互参照
本願は、２００１年８月２４日出願の米国特許仮出願第６０／３１４，７８５号の特典を主張する。
【０００２】
本発明は、一般にプログラマブルデバイスおよびコンピュータサービスの管理に関し、より詳細には、プログラマブルデバイスまたはコンピュータサービスのライフサイクルについて、プログラマブルデバイスまたはコンピュータサービスを動的に管理する方法およびシステムに関する。
【０００３】
【従来の技術】
コンピューティングデバイスおよび「スマートな」機器などのプログラマブルデバイスは、通常、プログラマブルデバイス、或いは、プログラマブルデバイス上にインストールされた１つまたは複数のアプリケーションプログラムによって使用されるオペレーティングシステムが定義する１つまたは複数の目的を満たすことができる。
【０００４】
プログラマブルデバイスを配置し、供給するために、ユーザは、通常、オペレーティングシステムを手動で順次インストールし、１つまたは複数のアプリケーションプログラムをインストールし、そのオペレーティングシステムとアプリケーションプログラムが共同して機能するように構成しなければならない。
【０００５】
このプロセスは、当該オペレーティングシステムおよびアプリケーションプログラムの複雑さによっては非常に時間をとる可能性があり、より典型的には、複雑なスクリプトと特化した開発とを必要とする。企業環境または商環境においては、このプロセスが数百、数千ものプログラマブルデバイスに対して反復されなければならないことも珍しくはない。
【０００６】
【発明が解決しようとする課題】
プログラマブルデバイスを供給するために時間が必要であるという性質は、特定のデバイスに故障やエラーが発生した場合にも厄介である。例えば、プログラマブルデバイスを交換する必要がある場合、サービス供給業者はオペレーティングシステム、アプリケーションプログラムを手動でインストールし、故障したプログラマブルデバイスと交換するために新しいプログラマブルデバイスを構成する必要がある。このプロセスは完了するために数時間を要する場合があり、その間、顧客は、売上高に損失を出すなどの問題を蒙りかねない。
【０００７】
業界は上記の問題を既に認識しており、プログラマブルデバイスをオンライン化する非常に異なる技術を開発中である。例えば、プログラマブルデバイスの供給を自動化するための技術が開発されている。プログラマブルデバイスの配置の一部を自動化するための技術も開発されている。これらメーカー独自の技術によって、プログラマブルデバイスを配置し、供給するために現場で求められている高度の専門技術がもたらされたが、この専門技術は経験豊富な、費用の掛かる希少な人材を必要とするものである。
【０００８】
また、特定のタスクを処理するコンピュータサービスが、消費者を支援するために形成されてきた。例えば、プログラマブルデバイスを供給するサービスが提供される。これらのコンピュータサービスによって最終消費者は以前と比べて楽になった。しかし、このサービスは、大量のプログラマブルデバイスを配置し供給するために必要な労力は低減しない。一部のサービスは、大量のプログラマブルデバイスの配置、供給、保守に必要な労力を増大させるものである。さらに、これらのサービスは、サードパーティが配置および供給のプロセスに付加価値ツールを追加するための機構は１つも提供しない。
【０００９】
関連する問題は、プログラマブルデバイスが一旦配置され、供給されると、費用が高額なために、ユーザ／オーナーがプログラマブルデバイスを再度供給する可能性が低いということである。さらに、技術の多くは、基礎をなすハードウェアと密接に結び付いている。ハードウェアの発展に伴い、相手先商標製造会社（「ＯＥＭ」）はそのハードウェアを構成するためのユーティリティを供給する。これらのユーティリティはメーカー独自の技術とは互換性のない場合がしばしばであり、それが、そのハードウェアを管理するための労力を増大させる原因となっている。したがって、これらのメーカー独自の技術は、プログラマブルデバイスとその基礎をなすハードウェアをサポートするために必要な仕事量を増大させ、より高い技術レベルを要求することに繋がることがしばしばである。
【００１０】
そこで、本発明の目的は、プログラマブルデバイスのライフサイクルのための機能を配置し、供給することにより、その機能をサポートするために要求される仕事量と技術レベルとを低減させ、安価な管理する方法および装置を提供することにある。
【００１１】
【課題を解決するための手段】
本明細書で使用する場合、機能という用語は、コンピュータサービス、プログラマブルデバイス、またはコンピュータサービスとプログラマブルデバイスの組み合わせを意味する。
【００１２】
より具体的には、本発明によれば、機能のライフサイクルに対していくつかの状態が定義されており、１つの状態から別の状態に機能を移す遷移が、トリガーイベントに応答して開始される。機能のプログラマブルデバイスの部分に対して定義される状態は、未テストの状態、テスト済みの状態、未配置の状態、配置済みの状態、準備済みの状態、供給済みの状態、サービス中の状態、トラブルの状態、およびリタイヤの状態を含む。
【００１３】
ライフサイクルのコンピュータサービスの部分に対して定義された状態は、未テストの状態、テスト済みの状態、計画済みの状態、供給済みの状態、オンラインの状態、トラブルの状態、リタイヤの状態を含む。各機能は、これらの状態のどれか１つであるか、またはある状態から別の状態に遷移中のプロセスにある。
【００１４】
後続の複数の手順のセットは、定義された状態間での機能の遷移に対して定義される。一実施形態では、手順のセットは、テスト／開発する手順、計画する手順、配置する手順、準備する手順、および整備する手順を含む。
【００１５】
より具体的には、テスト／開発する手順では、計画されているインストールに関して性能と信頼性のテストが実行され、システムのイメージが作成される。イメージを記憶するためにイメージリポジトリが使用される。
【００１６】
計画する手順では、追加の容量を加えるためにニーズを予想して定量化し、そのニーズを満たすために資源計画が実行される。配置する手順では、あるインストール位置にインストールされるべき機能の構成要素がそのインストール位置で受信され、インストールされる。一旦インストールされると、準備する手順および供給する手順は、機能が構成され供給される場合に実行される。必要に応じて、ストレージとネットワーク資源も供給される。
【００１７】
本発明は、ソフトウェア開発者とエンドユーザに対して、自動化を推進するインフラストラクチャにプラグインすることのできる製品を開発する能力、または特定タイプの機能用モジュールにプラグインする能力を提供する柔軟で拡張可能なインフラストラクチャを実現する。
【００１８】
一実施形態では、これは、１つの上層インターフェースと複数インターフェースの下層部分とを提供することによって達成される。上層インターフェースは、開発者とエンドユーザに対して、インフラストラクチャにプラグインするアプリケーションまたはスクリプト（すなわち製品）の１つのセット全体でライフサイクルを使用または駆動するソリューションを作成する１つの方法を提供する。下層インターフェースは、特定のハードウェア（例えば、ウェブ機器、ネットワークアタッチドストレージ（「ＮＡＳ」）機器など）および／またはソフトウェアを配置するプロバイダ、ロードバランサーなどのハードウェアおよびソフトウェアをネットワーク接続するプロバイダ、およびストレージエリアネットワークデバイスのプロバイダを含めて、いくつかのタイプのプロバイダに対応する。
【００１９】
本発明のこの他の機能および利点は、添付の図面を参照しながら進める以下の例示的実施形態の詳細な説明から明らかになろう。
【００２０】
頭記の特許請求の範囲は、本発明の機能を特徴と共に記述しているが、本発明は、その目的および利点と共に、添付の図面に関連した以下の詳細な説明を読むことによって最もよく理解することができよう。
【００２１】
【発明の実施の形態】
図面を参照すると、類似の要素を同じ参照番号で示し、本発明は適切な環境で実施される。必ずしも必要ではないが、本発明は、プログラムモジュールなどの、プログラマブルデバイスによって実行されているコンピュータ実行可能命令の一般的な状況において説明する。
【００２２】
一般に、プログラムモジュールには、特定タスクを実行するか、または特定の抽象的データタイプを実施するルーチン、プログラム、オブジェクト、構成要素、データ構造などが含まれる。さらに、当業者であれば、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、ウェブベースの機器を含むマイクロプロセッサベースの家庭用電化製品またはプログラム可能な家庭用電化製品などを含めて、多くのタイプのプログラマブルデバイスによって実施することができることを理解するだろう。
【００２３】
本発明は、通信ネットワークを介してリンクされている遠隔プロセッシングデバイスによってタスクが実行される分散型コンピューティング環境でも実施することができる。分散型コンピューティング環境では、プログラムモジュールは、ローカルおよび遠隔のメモリストレージデバイスに配置することができる。
【００２４】
図１は、本発明が動作する全体的なアーキテクチャの一例を示す。
【００２５】
ライフサイクル管理システム２０は、機能２２の配置、供給、操作管理を自動化する。先に指摘したように、この機能は、コンピュータサービス、プログラマブルデバイス、またはコンピュータサービスとプログラマブルデバイスの組み合わせであってよい。限定はしないが例示として、この機能はウェブサービス、印刷サービス、１つまたは複数のサーバ、１つまたは複数のストレージデバイス、１つまたは複数のルータ、データセンターなどであってよい。
【００２６】
以下の説明で、手順が機能のプログラマブルデバイスの部分で実行されている場合は、機能２２をプログラマブルデバイス２２と称する。例えば、機能がウェブサービスの場合、ウェブサービスを実施するために使用されるプログラマブルデバイス（例えば、サーバ）にコンテンツとアプリケーションが追加される。コントローラ２４は、あるライフサイクル状態から別のライフサイクル状態に機能２２を移すソフトウェアエンジンを有する。ライフサイクル管理システム２０は、ＯＥＭ、サービス供給業者、および他の開発者に対して、あるライフサイクル状態から別のライフサイクル状態に機能２２を遷移するようコントローラ２４をトリガーするために使用されるモジュールの開発を可能にする自動化インターフェース２６を有する。
【００２７】
このモジュールは、例えば、ポリシー／管理アプリケーション２８、コントローラスクリプト３０、およびウェブ／ワイヤレスユーザインターフェース３２を含むことができる。ポリシー／管理アプリケーション２８は、顧客の問題または課題に対処するポリシー規則およびテンプレートを追加する。コントローラスクリプト３０は、クライアントに対して、プログラマブルデバイス２２をあるライフサイクル状態から別のライフサイクル状態に移すことを可能にするために使用される。ウェブ／ワイヤレスインターフェース３２は、各種人員に対する機能を実施する。例えば、各種人員のクラスに対して複数のインターフェースがあり、各インターフェースが特定の人員のクラスに対する所望の機能だけを提供する場合がある。
【００２８】
インターフェースのセットは、ＯＥＭ、サービス供給業者、および他の開発者に対して、特定タイプのプログラマブルデバイスに特有のモジュールをプラグインする能力、またはその機能をサポートするハードウェアを提供する。インターフェースのセットは、配置インターフェース３４、イメージングインターフェース３６、ウェブ機器インターフェース３８、およびＮＡＳ（ネットワークアタッチドストレージ）機器インターフェース４０を含む。図示はしないが、多くの他のタイプのインターフェースを使用することができることが理解されよう。配置インターフェース３４は、ＯＥＭ、サービス供給業者、および他の開発者に対して、特定のハードウェアおよびＢＩＯＳのタイプ（例えば、未フォーマットのプログラマブルデバイスでのＢＩＯＳ構成、およびネットワークオペレーティングシステムのインストール）を配置する能力を提供する。イメージングインターフェース３６は、イメージリポジトリ５２に追加するため、またはイメージリポジトリ５２のイメージを変更するためにイメージングマネージャ（図示せず）と通信するために使用される。ウェブ機器インターフェース３８およびＮＡＳ機器インターフェース４０は、ウェブ機器およびＮＡＳ機器と通信するために使用される。
【００２９】
一連の供給業者および／またはアブストラクションは、機能２２の配置に必要となるハードウェアと通信する能力をシステム２０に提供する。アブストラクションは、ネットワークアブストラクション４２、ストレージアブストラクション４４、および他のアブストラクション４６を含む。ネットワークアブストラクション４２はハードウェアのロードバランサー、ルータ、ファイアウォールなどのアブストラクションを提供する。ストレージアブストラクション４４は、スイッチおよび他のルーティングデバイスなど、ストレージエリアネットワークで使用されるハードウェアのアブストラクション、ホストバストアダプタのアブストラクション、およびストレージエリアネットワークに接続したストレージエンクロージャおよびテープライブラリなどのデバイスのアブストラクションなどを提供する。
【００３０】
コントローラ２４は、ライフサイクルの状態間で機能２２を遷移するためのコマンドスクリプトモジュール５０および他のプログラムモジュールを使用する。オペレーティングシステムおよび／またはプログラムをプログラマブルデバイスにインストールするために使用されるイメージは、イメージリポジトリ５２に記憶される。ストア５４は、機能２２に関する識別および位置情報を記憶する。
【００３１】
図２は、本発明を実施することができる適切なプログラマブルデバイス１００の一例を示す。
【００３２】
プログラマブルデバイス１００は、適切なコンピューティング環境の一例であるにすぎず、本発明の用途または機能の範囲に関していかなる限定をも示唆することを意図してはいない。
【００３３】
本発明は、多数の他の汎用または専用プログラマブルデバイスによって動作可能である。本発明の用途に適応する可能な周知のプログラマブルデバイスの例としては、限定はしないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記システムまたはデバイスの任意のものを含む分散型コンピューティング環境などを含む。
【００３４】
本発明は、プログラムモジュールなどの、プロセッサによって実行されるコンピュータ実行可能命令の一般的状況において説明することができる。一般に、プログラムモジュールには、特定タスクを実行し、または特定の抽象的なデータタイプを実施するルーチン、プログラム、オブジェクト、構成要素、データ構造などが含まれる。本発明は、通信ネットワークを介してリンクされる遠隔プロセッシングデバイスによってタスクが実行される分散型コンピューティング環境でも実施することができる。分散型コンピューティング環境では、プログラムモジュールはメモリストレージデバイスを含めてローカルおよび遠隔のコンピュータ記憶媒体に入れることができる。
【００３５】
図２を参照すると、例示的プログラマブルデバイスには、コンピュータ１１０の形式による汎用コンピューティングデバイスが含まれる。コンピュータ１１０の構成要素は、限定はしないが、プロセッシングユニット１２０、システムメモリ１３０、およびシステムメモリを含む各種システム構成要素をプロセッシングユニット１２０に結合するシステムバス１２１を含むことができる。システムバス１２１は、様々なバス構造のどれかを使用するメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含めていくつかのタイプのバス構造のどれであってもよい。限定はしないが例示として、このようなアーキテクチャには、業界標準アーキテクチャ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子規格協会（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｅ）（ＶＥＳＡ）ローカルバス、およびＭｅｚｚａｎｉｎｅバスとしても知られている周辺コンポーネント相互接続（ＰＣＩ）バスが含まれる。
【００３６】
コンピュータ１１０は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０によってアクセスできるいかなる使用可能な媒体であってもよく、揮発性および不揮発性媒体、取り外し可能および非取り外し可能媒体の両方を含む。限定はしないが例示として、コンピュータ可読媒体はコンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報を記憶するためのいかなる方法または技術によっても実施される揮発性および不揮発性、取り外し可能および非取り外し可能媒体の両方を含む。コンピュータ記憶媒体は、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、または所望の情報を記憶するために使用することができ、かつコンピュータ１１０によってアクセス可能な他のいかなる媒体をも含む。
【００３７】
通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、あるいは搬送波または他の搬送機構などの変更されたデータ信号形式による他のデータを実施し、また、いかなる情報伝達媒体をも含むものである。「変更されたデータ信号」という用語は、情報を信号形式に符号化するような方法で、その１つまたは複数の特徴をセットまたは変更させた信号を意味する。限定はしないが例示として、通信媒体は、有線ネットワークまたは直接配線式接続などの有線媒体、および、音響、ＲＦ、赤外線および他のワイヤレス媒体などのワイヤレス媒体を含む。上記のもののどのような組み合わせでも、コンピュータ可読媒体の範囲に含まれるものとする。
【００３８】
システムメモリ１３０は、読取専用メモリ（ＲＯＭ）１３１、およびランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性および／または不揮発性メモリ形式のコンピュータ記憶媒体を含む。コンピュータ１１０内の素子間で情報を、例えば、起動中などに転送するために役立つ基本ルーチンを含む基本入出力システム１３３（ＢＩＯＳ）は、通常、ＲＯＭ１３１に記憶されている。ＲＡＭ１３２は、通常、プロセッシングユニット１２０によって迅速にアクセス可能で、かつ／または現行で操作を受けているデータおよび／またはプログラムモジュールを含んでいる。限定はしないが例示として、図２はオペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００３９】
コンピュータ１１０は、他の取り外し可能／非取り外し可能、揮発性／不揮発性コンピュータ記憶媒体を含むこともできる。例示としてのみ、図２は、非取り外し可能な不揮発性磁気媒体に対して読書きするハードディスクドライブ１４１と、取り外し可能な不揮発性磁気ディスク１５２に対して読書きする磁気ディスクドライブ１５１と、ＣＤ  ＲＯＭまたは他の光媒体などの取り外し可能な不揮発性光ディスク１５６に対して読書きする光ディスクドライブ１５５を示す。例示的オペレーティング環境で使用することのできるこの他の取り外し可能／非取り外し可能な揮発性／不揮発性コンピュータ記憶媒体は、限定はしないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどを含む。ハードディスクドライブ１４１は、通常、インターフェース１４０などの非取り外し可能メモリインターフェースを介してシステムバス１２１に接続されており、磁気ディスクドライブ１５１と光ディスクドライブ１５５は、通常、インターフェース１５０などの取り外し可能メモリインターフェースによってシステムバス１２１に接続されている。
【００４０】
上記で議論し、図２に示したドライブとそれに関連するコンピュータ記憶媒体は、コンピュータ１１０に対して、コンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータの記憶域を提供する。
【００４１】
図２では、例えば、ハードディスクドライブ１４１はオペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶しているように示してある。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同一であっても異なるものであってもよいことに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７には、それらが少なくとも異なるものであるということを示すために本明細書では異なる参照番号を付した。ユーザは、キーボード１６２、および、マウス、トラックボールまたはタッチパッドと一般に称されるポインティングデバイス１６１などの入力装置によってコマンドおよび情報をコンピュータ１１０に入力することができる。
【００４２】
この他の入力装置（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどを含むことができる。これらまたはこの他の入力装置は、システムバスに結合されたユーザの入力インターフェース１６０を介してプロセッシングユニット１２０に接続されることがよくあるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構造によっても接続することができる。モニタ１９１またはこの他のタイプの表示装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタの他に、コンピュータは、拡声器１９７、プリンタ１９６などの、出力周辺インターフェース１９５を介して接続することのできる他の周辺出力装置を含むこともできる。
【００４３】
コンピュータ１１０は、遠隔コンピュータ１８０などの１つまたは複数の遠隔コンピュータに対する論理接続を使用したネットワーク接続環境で動作することができる。遠隔コンピュータ１８０は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはこの他の一般的なネットワークノードであってよく、通常は、パーソナルコンピュータ１１０に関して上述した多くの要素またはすべての要素を含むが、但し、図２にはメモリストレージデバイス１８１しか示さない。図２に示す論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３が含まれるが、さらに他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットでは一般的なものである。
【００４４】
ＬＡＮネットワーキング環境で使用される場合、パーソナルコンピュータ１１０はネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ１１０は、通常、モデム１７２、または、ＷＡＮ１７３を介したインターネットなどの通信を確立するための他の手段を含む。内部であっても外部であってもよいモデム１７２は、ユーザ入力インターフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク接続環境では、パーソナルコンピュータ１１０に関連して上述したプログラムモジュールまたはその一部は、遠隔メモリデバイスに記憶することができる。限定はしないが例示として、図２は、遠隔アプリケーションプログラム１８５をメモリデバイス１８１に常駐しているように示す。図示するネットワーク接続は一例であって、コンピュータ間に通信リンクを確立する他の手段を使用することも可能であることが理解されよう。
【００４５】
以下の説明では、本発明は、特に指定しない限り、１つまたは複数のコンピュータによって実行される作用と動作の記号による表記とを参照して記述する。
【００４６】
したがって、コンピュータによって実行されると称されることのあるそのような作用および動作には、コンピュータのプロセッシングユニットによる、構造化された形式のデータを表す電子信号の操作が含まれる。この操作はデータを変化させ、またはコンピュータのメモリシステム内の位置にそのデータを保持するが、これは、当業者ならばよく理解している方法でコンピュータの動作を再構成するか、そうでない場合はそれを変更する。データが維持されるデータ構造は、データのフォーマットによって定義される特定の特性を有するメモリの物理的位置である。
【００４７】
しかし、本発明は上記の状況で説明されるが、以下で記述する様々な作用および動作はハードウェアでも実施することができるということを当業者ならば理解するように、限定を意図するものではない。データセンターにおけるサーバまたはサーバ機器のライフサイクルを、本発明の説明に使用する。本発明は、本発明がこの他の多くのタイプのプログラマブルデバイスをそのライフサイクル全体にわたって計画し、配置し、供給し、管理することができると当業者ならば理解するように、サーバまたはサーバ機器に限定することを意図するものではない。
【００４８】
次に、図３および図４を参照すると、典型的なライフサイクル２００の状態が一実施形態に関して示されている。
【００４９】
図３は、プログラマブルデバイスに関する状態を示し、図４は、その実施形態に関するコンピュータサービスに関する状態を示す。当業者ならば、機能のライフサイクルの状態はいくつでも在り得るということを理解するだろう。
【００５０】
図３に示した実施形態におけるプログラマブルデバイスの典型的な状態は未テストの状態２０２、テスト済みの状態２０４、未配置の状態２０６、配置済みの状態２０８、準備済みの状態２１０、供給済みの状態２１２、サービス中の状態２１４、トラブルの状態２１６、リタイヤの状態２１８である。
【００５１】
図４に示したコンピュータサービスの典型的な状態は、未テストの状態２０２、テスト済みの状態２０４、計画済みの状態２５０、供給済みの状態２１２、オンラインの状態２１４、トラブルの状態２１６、およびリタイヤの状態２１８である。オンラインの状態はサービス中の状態と同じである。
【００５２】
以下の記述では、機能のプログラマブルデバイスの部分に対する遷移およびトリガーイベントを説明し、状態が同一または類似の場合に関して、機能のコンピュータサービスの部分への参照を議論する。プログラマブルデバイスとは異なる状態、トリガーイベント、およびサービスの遷移は別途議論する。
【００５３】
コントローラ２４は、トリガーイベントの受信に応答して機能２２をある状態から別の状態に遷移するために遷移を開始する。トリガーイベントは、様々な方法でコントローラ２４によって受信することができる。例えば、トリガーイベントはシンプルネットワーク管理プロトコル（ＳＮＭＰ）またはウィンドウズ（登録商標）マネジメントインスツルメント（ＷＭＩ）管理アプリケーションからの出力、システムイベント、複数の入力に応答するオペレーショナルロジック、様々な入力および所定のポリシーの実施に応答するポリシーコードなどをユーザが手動で入力するか、自動化することができる。コントローラ２４は機能２２をある状態から別の状態に遷移するための手順のセットを使用する。状態間におけるそれぞれの遷移は、自動化された独自の手順のセットを有する。
【００５４】
次に、図５から図９を参照すると、機能２２をあるライフサイクルの状態から別のライフサイクルの状態に遷移するためのトリガーイベントと手順のセットが示されている。未テストの状態２０２からテスト済みの状態２０４に遷移するためのトリガーイベントは、新しい機能２２を開発し、テストするときに行われる。
【００５５】
図５を参照すると、機能をテスト済みの状態に遷移するために使用されるテスト／開発手順２２０で実施される初期ステップは、遷移中に実施されるべきタスクを決定する（ステップ３００）。
【００５６】
コンピュータサービスを有する機能の場合、実施されるべきタスクは、そのサービスを実行するために必要となる任意のプログラマブルデバイスを構築することと、そのプログラマブルデバイスのテストの実行を含む。プログラマブルデバイスを有する機能の場合、実施されるタスクは、イメージをアップグレードすることと、新しいイメージを作成することと、アップグレードされたイメージまたは新しいイメージをテストすることを含む。本明細書で使用されるイメージはプログラム、オペレーティングシステム、データ、またはプログラムとオペレーティングシステムとデータの組み合わせの複製、コピー、または表現である。
【００５７】
新しいイメージが作成される場合（ステップ３０２）、オペレーティングシステムとアプリケーションがある場合は、それらが基準システムにインストールされる（ステップ３０４）。基準システムは、プログラマブルデバイス２２と同じタイプのプログラマブルデバイスである。インストールされたシステムは基準システム上でテストされ（ステップ３０６）、そのシステムが正確に機能しているかどうかの決定がなされる（ステップ３０８）。
【００５８】
システムが正確に機能していない場合、そのシステムが正確に機能するまで調整が行われる（ステップ３１０）。システムが正確に機能している場合、当技術分野で周知のツールを使用してシステムイメージ化され、そのイメージがイメージリポジトリ５２に転送される（ステップ３１２）。そのイメージは、次いでイメージリポジトリ５２からテストシステムにコピーされ（ステップ３１４）、イメージリポジトリ５２にあるイメージが、互換性、信頼性、性能などの点で正確に機能しているかどうかを検証するためにテストされる（ステップ３１６）。
【００５９】
イメージが検証されると、そのイメージを適格とみなしてプログラマブルデバイス２２に配置することができることを示すために、イメージリポジトリ５２内にタグが作成される。そうでない場合、そのイメージが適格とみなされることを示すためにストア５４が更新される。
【００６０】
既存のイメージがアップグレードされる場合（ステップ３１８）、既存のイメージがイメージリポジトリ５２からコピーされ、基準システムにインストールされる（ステップ３２０）。更新（例えば、サービスパックおよび他のフィックス）が既存のイメージに適用され、更新されたイメージがイメージリポジトリ５２にコピーして戻される（ステップ３２２）。アップグレードされたイメージがイメージリポジトリ５２からテストシステムにコピーされ（ステップ３２６）、テストされる（ステップ３２８）。
【００６１】
動作を検証するために新しいイメージまたはアップグレードされたイメージがテストされると、新しいまたはアップグレードされたイメージがプログラマブルデバイス２２にインストールされる。複数のプログラマブルデバイスがある場合（例えば、データセンター内のサーバ）、選択されたプログラマブルデバイス上またはすべてのプログラマブルデバイス上に新しいまたはアップグレードされたイメージがコピーされる。そうでない場合、変更をスクリプト記述し、その変更を直接プログラマブルデバイス上で実行することによって、プログラマブルデバイスを更新するためにコマンドスクリプトが使用される。手順２２０の上記のセットが完了すると、未テストの状態とテスト済みの状態間の遷移は完了し、機能２２はテスト済みの状態２０４に入る。
【００６２】
テスト済みの状態２０４から未配置の状態２０６に遷移するためのトリガーイベントは、プログラマブルデバイス内に追加容量を加えるため、または機能に追加のプログラマブルデバイスを加えるためにニーズが予想される場合に発生する（例えば、データセンター）。
【００６３】
次に、図６を参照すると、需要計画および資源計画が、コントローラ２４が遷移を開始した後に計画手順２２２で実行される（ステップ４００）。
【００６４】
顧客需要（例えば、新しい顧客、および、既存の顧客に対する容量の拡張）、マシンの交換（例えば、故障、リタイヤ）、余分の容量の維持、および予測需要計画に基づいてニーズを定量化し、企画するために需要計画が実行される。需要計画が完了すると、需要計画によって企画されたニーズを計画が満たすかどうかを判定するために、資源計画が実行される。資源計画には、計画物理資源（例えば、データセンター、ラック、スロット、など）、計画コンピュータ資源、計画ネットワーキングおよびストレージ資源（例えば、ルータ、スイッチ、ストレージデバイスなど）、および環境計画（例えば、電源および冷却要件、空間要件など）が含まれる。
【００６５】
需要および資源計画から、事前識別（ステップ４０２）、および事前位置決め（ステップ４０４）が実行される。事前識別は要求されるアイテムを識別する。例えば、プログラマブルデバイス、マシン名などが識別される。事前位置決めは、プログラマブルデバイスに関する位置、スロット、ネットワーク設定などを識別する。上記の手順のセット２２２が完了すると、テスト済みの状態２０４と未配置の状態２０６間の遷移が完了し、機能２２は未配置の状態２０６に入る。計画が不要の場合（例えば、プログラマブルデバイス２２上のイメージがアップグレードされているなど）、プログラマブルデバイス２２は直接、未配置の状態２０６に遷移する。
【００６６】
プログラマブルデバイス２２に配置の準備が整うと、コントローラ２４は、配置済みの状態２０８への遷移を開始する。
【００６７】
次に、図７を参照すると、配置する手順２２４の第１のステップはインストールサイトでプログラマブルデバイス２２を受信することになる（ステップ５００）。プログラマブルデバイス２２のインストールされる位置が決定され、プログラマブルデバイス２２がインストールされる（ステップ５０２）。プログラマブルデバイス２２が物理的位置にインストールされると、オペレータは、プログラマブルデバイス２２を配置済みの状態に遷移するためのコマンドスクリプトモジュール５０を使用するために、コントロールスクリプト３０またはウェブ／ワイヤレスインターフェース３２を介してコントローラ２４を呼び出す。あるいは、ポリシーまたは管理アプリケーション２８が、プログラマブルデバイス２２を配置済みの状態に遷移するためのコマンドスクリプトモジュール５０を使用するために自動的にコントローラ２４を呼び出す。
【００６８】
コントローラ２４は、オペレーティングシステムがプログラマブルデバイス２２上にインストールされているかどうかを検出する（ステップ５０４）。オペレーティングシステムがインストールされている場合、コントローラ２４は、任意のＯＥＭまたは顧客特有のサービスパックを追加するためのコマンドスクリプトモジュール５０を使用し、必要に応じてＢＩＯＳを構成または再構成する（ステップ５０６）。
【００６９】
プログラマブルデバイス２２がＰｘＥ（ポータブル拡張可能環境（Ｐｏｒｔａｂｌ  Ｅｘｅｃｕｔａｂｌｅ  Ｅｎｖｉｒｏｎｍｅｎｔ））をブートすることができる場合（ステップ５０８）、ロードされるべき特定イメージに（すなわち、使用されるべきオペレーティングシステムのイメージに）プログラマブルデバイス２２を向けるためにＰｘＥが使用され、そのイメージをプログラマブルデバイス２２にロードする（ステップ５１０）。
【００７０】
コマンドスクリプトモジュール５０は初期ブートイメージをインストールし、必要に応じて任意のＯＥＭまたは顧客特有のサービスパックを追加し、ＢＩＯＳを構成または再構成する（ステップ５１２）。プログラマブルデバイス２２がＰｘＥをブートさせることができない場合、ロードされるべき特有イメージがプログラマブルデバイス２２上に手動でインストールされる（ステップ５１４）。
【００７１】
次いで、コマンドスクリプトモジュール５０が初期ブートイメージをインストールし、必要に応じて任意のＯＥＭまたは顧客特有のサービスパックを追加し、ＢＩＯＳを構成または再構成する（ステップ５１６）。初期ブートイメージは、コントローラ２４がプログラマブルデバイス２２を検出し、それと通信することを可能にするエージェントを含む初期オペレーティング環境である。プログラマブルデバイス２２には名称と他の識別子が割り当てられる。例えば、ＤＨＣＰなどの自動システムまたは追加のコマンドスクリプトモジュール５０を介してプログラマブルデバイス２２にＩＰアドレスが割り当てられ、プログラマブルデバイス２２はグループなどに割り当てられる。上記の手順のセット２２４が完了すると、遷移が完了し、プログラマブルデバイス２２は配置済みの状態２０４に入る。
【００７２】
一旦、プログラマブルデバイス２２が配置されると、コントローラ２４は準備済みの状態２１０への遷移を開始することができる。この遷移は、配置済みの状態２０８への遷移またはその後の時点に続いて即座に行うことができる。
【００７３】
次に、図８を参照すると、準備済みの状態２１０に遷移するためのトリガーイベントは、「ｗｏｒｋ  ｑｕｅｕｅ  ｅｎｔｒｙ」が作成され、タスクが定義されると発生する。コントローラ２４は、ストア５２が更新されたかどうかを検証するために「ｗｏｒｋ  ｑｕｅｕｅ  ｅｎｔｒｙ」が作成されかどうかを確認し（ステップ６００）、プログラマブルデバイス２２に対するタスクがオペレータまたはポリシーによって定義されているかどうかを判定する（ステップ６０２）。
【００７４】
タスクが定義されていないか、またはエントリが作成されていない場合、プログラマブルデバイス２２の状態は再度配置済みの状態２０８に戻る。タスクが定義されており、エントリが作成されている場合、タスクに関連付けられたタスクイメージがイメージリポジトリ５０からプログラマブルデバイス２２にコピーされる（ステップ６０４）。プログラマブルデバイスは動作可能なポイントに供給される。この時点で、検証されたイメージはプログラマブルデバイス２２に既にインストールされており、プログラマブルデバイス２２は準備済みの状態に入る。
【００７５】
プログラマブルデバイス２２が準備されると、コントローラ２４は、プログラマブルデバイスの役割が決定された時点で供給済みの状態２１０への遷移を開始する。本明細書で使用されるように、定義済みのタスクおよび完全に定義された供給設定を含めて、プログラマブルデバイスのジョブが完全に定義された時点で役割が決定される。
【００７６】
次に、図９を参照すると、役割が定義されている場合、プログラマブルデバイス２２が供給される。供給手順２２８には、識別供給（ステップ６１０）、ストレージ供給（ステップ６１２）、サービス供給（ステップ６１４）、ネットワーク供給（ステップ６１６）および追加供給（ステップ６１８）が含まれる。
【００７７】
識別供給では、コマンドスクリプト５０が通信アドレス（例えば、ＩＰアドレス）およびプログラマブルデバイスのマシン名を、オーナー／顧客によって割り当てられたものに変更する。コマンドスクリプト５０は、プログラマブルデバイスを識別するこの他の識別子も変更することができる。通信アドレス、マシン名、およびこの他の識別子がストア５２に記憶される。さらに、プログラマブルデバイス２２がグループまたはドメインに置かれている場合、コマンドスクリプト５０はそのグループまたはドメインを顧客によって割り当てられたものに変更する。
【００７８】
ストレージの供給では、コマンドスクリプト５０はプログラマブルデバイス２２上に任意のローカルストレージドライブをマッピングし、ネットワークドライブからそのローカルストレージドライブにデータをコピーする。プログラマブルデバイス２２がストレージエリアネットワーク（ＳＡＮ）にインストールされている場合、コマンドスクリプト５０は、データを受信することができるように、ストレージアブストラクション４４を使用してプログラマブルデバイス２２をＳＡＮに入れる。プログラマブルデバイス２２がＮＡＳ機器の場合、そのサイトに関するすべてのデータが収納されている場所を共有するために必要となる許可をプログラマブルデバイス２２が有していることを確認するためにコマンドスクリプト５０が使用される。
【００７９】
サービス供給では、コントローラ２４は通信構成を追加し、機器がプログラマブルデバイス２２上にインストールされて構成される。ユーザのセキュリティ許可（例えば、ローカル管理者、パワーユーザなど）がプログラマブルデバイス２２に追加される。
【００８０】
プログラマブルデバイス２２がネットワーク上にインストールされている場合、コントローラ２４はネットワーク供給においてネットワークスイッチと通信し、プログラマブルデバイス２２を特定ＬＡＮに割り当てる。プログラマブルデバイス２２および他のデバイスがロードバランスされるように、コマンドスクリプト５０ドライブは、ネットワークのロードバランシングインフラストラクチャに変更する。
【００８１】
必要に応じてプログラマブルデバイス２２に追加供給が加えられる。追加供給は追加アプリケーションをインストールすること、ユーザを追加することなどを含むことができる。
【００８２】
供給が完了すると、機能２２は供給済みの状態２１２に入る。コマンドスクリプト５０は、プログラマブルデバイス２２をオンラインにするために実行される。サービス中の状態２１４に入ると、コントローラ２４は、タスクの監視、管理および保守を実行する。タスクの監視には、プログラマブルデバイス２２が準拠していることを確認するためにソフトウェアライセンスをトラッキングすることと、サービスレベル条件が満たされているかどうかを確認するためにサービスレベル条件を監視することが含まれる。サービスレベル条件が満たされていない場合、コントローラ２４は、サービスを回復するためにどのアクションを取る必要があるかを決定する。
【００８３】
コントローラ２４は、電力管理に関して請求書を作成発行すること、および会計報告することを含めていくつかのレベルの管理を提供することができる。プログラマブルデバイス２２が他のプログラマブルデバイスと共にラックにインストールされている場合、このラックを単一のエンティティとみなされて電力管理が実行される。新しいハードウェア設計が電力および冷却の負荷を上回ることはよくあることである。例えば、５年前に構成された典型的なデータセンターでは、サーバの４２ユニットのラック（すなわち、プログラマブルデバイス）は約５，０００ワットの最大電力消費を有している。現在のサーバで満杯になった４２ユニットのラックは、１０，０００ワットを容易に超えてしまう。これに対する現在の解決策は、定格出力を超過しないように、ラックを完全にサーバで一杯にしないというものである。
【００８４】
本発明によれば、サーバのラックを完全に満杯にして、単一電力および冷却エンベロープ内で管理することができる。各プログラマブルデバイス２２は、４２ユニットのラックが所定の定格（例えば、５，０００ワット）を超過しないように、課された負荷に基づいて最適に電力を管理することができる。ラック内のすべてのサーバが任意の所与の時間内に全電力で稼動しなければならないということはほとんど有り得ない。したがって、この種の電力のロードバランシングは個々のサーバに対してほとんどまたは全く影響を与えないものと考えられる。したがって、これらのサーバは、その負荷に与えられた十分な電力だけで稼動することができ、ほとんどの場合、平均の統計は定格の最大限（本例では５０００ワット）よりも低く負荷を維持することになる。
【００８５】
コントローラ２４は、「電力低下」または電力警報中に、顧客が均等に痛み分けするアルゴリズムを実施して、サーバの各ラックの電力エンベロープを低減するコマンドスクリプト５０を使用することもできる。あるいは、割増金を支払っている顧客に対してはより多くの電力を供給するアルゴリズムを使用することができる。また、深夜の個々のデバイスが使用されていないときには、それらデバイスを低電力状態に遷移することができる。
【００８６】
コントローラ２４は、サービス中の状態における計画された保守の自動化も行う。計画された保守において実行されるタスクは、ホットフィックスのアプリケーション、セキュリティパッチ、オペレーティングシステムおよびアプリケーションのアップグレード、ハードウェアのアップグレード、機能のバックアップおよび回復、顧客のマイグレーション、セキュリティの管理および監査、およびセルフサービス供給（すなわち、アプリケーションのインストールおよび構成）を含む。
【００８７】
サービス中の状態２１４にある間、コントローラ２４は、機能が提供するサービスに予想外の破壊が発生した場合、機能をトラブルの状態２１６に遷移する。この破壊には、ウイルス、ハードウェアまたはソフトウェアを原因とする低速の応答時間（例えば、ボトルネック）および、ハードウェアまたはソフトウェアを原因とするひどい故障や断続的な故障が含まれる。トラブルの状態２１６において、コントローラ２４は、予想外の破壊の原因を決定し、その原因の解消を試み、機能２２をオンラインに戻す。機能２２がオンラインに戻ると、サービス中の状態２１４に再び入る。
【００８８】
サービス中の状態２１４にある間、機能２２を再配置または再供給するようにコントローラに指示することができる。コントローラ２４が機能を再配置または再供給するように指示される場合、機能２２はオフラインに移され、供給済みの状態２１２に移される。機能２２が再配置されるべき場合、供給済みの状態２１２から未配置の状態２０６に遷移するためのトリガーイベントが発生する。機能２２の物理的所有権が変更した場合またはプログラマブルデバイス２２の位置が変更した場合には再配置が行われる。
【００８９】
次に、図１０を参照すると、再配置が行われる場合（ステップ７００）、コントローラ２４が開始するプロセス２３０は、初期ブートイメージ以外のプログラマブルデバイス２２上にインストールされているすべてのソフトウェアを削除し（ステップ７０２）、プログラマブルデバイス２２を再配置する。これによって、プログラマブルデバイス２２から消去されるすべてのデータと、プログラマブルデバイス２２とは、配置のプロセス２２４を使用して配置済みの状態２０８に遷移する。
【００９０】
コントローラ２４が指示する再供給にはいくつかの程度がある。例えば、ロードリバランシングが行われる場合（例えば、２つの別個のウェブサイトの位置間でのロードバンランシング）またはピークロードバランシングが行われる場合（例えば、ニュース記事の公表によってウェブサイトへのトラフィックが増大し、その増大したトラフィックを処理するためにウェブ機器をそのニュースサイトドメインに移動する）、再供給が行われる。コントローラは、再供給が行われるべきかどうかを決定する（ステップ７０４）。供給が変更されるべきであり、コントローラ２４がタスクを変更するよう指示を受ける場合（ステップ７０６）、コントローラ２４は追加タスクが加えられているかどうかを確認する（ステップ７０８）。
【００９１】
タスクが変更されるべきであり、既存のタスクが削除される場合、プログラマブルデバイス２２上にインストールされたタスクイメージは削除される。新しいタスクイメージがインストールされ、プログラマブルデバイス２２に対する新しい供給設定がストア５４に記憶され（ステップ７１０）、コントローラはプログラマブルデバイスを配置済みの状態２０８に遷移する。タスクが変更され、新しいタスクが追加される場合、新しいタスクイメージがインストールされ、プログラマブルデバイス２２のための新しい供給設定がストア５４に記憶され（ステップ７１２）、コントローラはプログラマブルデバイスを配置済みの状態２０８に遷移する。
【００９２】
タスクが変更されていない場合、コントローラ２４は、役割が変更されたかどうかを判定する（ステップ７１４）。プログラマブルデバイスの役割が変更されていない場合、供給の更新が実行される。プログラマブルデバイス２２は準備済みの状態２１０に遷移し（プロセス２３２）、供給のプロセス２２８を使用して設定が変更され（ステップ７１６）、プログラマブルデバイス２２は供給状態２１２に遷移して戻される。プログラマブルデバイス７１４の役割が変更されている場合、再準備のプロセス２３４がプログラマブルデバイス２２上で実行され、そこでプログラマブルデバイス２２は再供給され、新しい供給設定が記憶され（ステップ７１８）、コントローラはプログラマブルデバイスを準備済みの状態２１０に遷移する。
【００９３】
供給が変更されていない場合、コントローラ２４は、プログラマブルデバイス２２がアップグレードされたか、またはホットフィックスされたかを判定する（ステップ７２０）。プログラマブルデバイス２２がアップグレードされたか、またはホットフィックスである場合、コントローラ２４は、ＢＩＯＳがプログラマブルデバイス上にインストールされている場合はＢＩＯＳがアップグレードされるべきかどうかを判定する（ステップ７２２）。ＢＩＯＳがアップグレードされるべきでないか、またはプログラマブルデバイス２２の１つではない場合、アップグレードイメージがプログラマブルデバイス２２上にインストールされ、供給設定が回復され、プログラマブルデバイス２２は配置済みの状態２０８に遷移する（ステップ７２４）。ＢＩＯＳがアップグレードされるべき場合、プログラマブルデバイス２２のすべてのパーティションが除去され（ステップ７２６）、プログラマブルデバイス２２は未配置の状態２０６に遷移する。
【００９４】
プログラマブルデバイス２２がアップグレードされず、ホットフィックスでない場合、コントローラ２４は、プログラマブルデバイス２２にフィックスまたはアップグレードがインストールされた後でトラブルが発生した場合に、プログラマブルデバイス２２が前の状態にロールバックしているかどうかを判定する（ステップ７２８）。プログラマブルデバイスがロールバックしている場合、アップグレード／ホットフィックス以前にプログラマブルデバイス２２上にあったイメージはイメージリポジトリ５２からプログラマブルデバイス２２上にコピーされ、アップグレード／ホットフィックス以前のイメージからの供給設定が回復され（ステップ７３０）、プログラマブルデバイスは配置済みの状態２０８に遷移される。ロールバックが全く実行されていない場合、プログラマブルデバイス２２は供給済みの状態２０８に戻される。
【００９５】
プログラマブルデバイス２２がサービスから削除される場合、プログラマブルデバイス２２はリタイヤの状態２１６に移動する。プログラマブルデバイス２２はリサイクルまたは破棄される。
【００９６】
上述のように、コンピュータサービスの典型的な状態（図４参照のこと）には、未テストの状態２０２、テスト済みの状態２０４、計画済みの状態２５０、供給済みの状態２１２、オンラインの状態２１４、トラブルの状態２１６、リタイヤの状態２１８が含まれる。コンピュータサービス用の多くのトリガーイベントはプログラマブルデバイス用のものと同様である。新しいサービスが開発され、テストされる場合、未テストの状態２０２とテスト済みの状態２０４との間の遷移のためのトリガーイベントが発生する。サービスのためのテストおよび開発のプロセス２２０には、サービスに必要となる任意のプログラマブルデバイスおよび他のハードウェア／ソフトウェアを構築することと、プログラマブルデバイスおよびハードウェア／ソフトウェアのテストの実行が含まれる。
【００９７】
プログラマブルデバイス内に追加容量を加えるため、またはサービスに追加のプログラマブルデバイスを加えるためにニーズが予想される場合、テスト済みの状態２０４から計画済みの状態２５０への遷移またはオンラインの状態２１４から計画済みの状態２５０への遷移がトリガーされる。計画のプロセス２２２で実行されるべきタスクには、既存のサービスに新しいサービスが追加されるかどうかを判定すること、ユーザ数を決定すること、およびサービスをサポートするために必要とされるプログラマブルデバイスの数を決定することが含まれる。一旦タスクが実行されると、サービスは計画済みの状態２５０に移される。
【００９８】
コントローラ２４は、計画済みの状態２０８への遷移の直後またはその若干後で、計画済みの状態２５０から供給済みの状態２１２への遷移を開始することができる。供給デバイスプロセスで実行されるタスク２５２には、サービスを実施するために必要なプログラマブルデバイスおよび他のハードウェア／ソフトウェアを順序付けること、プログラマブルデバイスのそれぞれを各プログラマブルデバイスが供給済みの状態２１２に遷移するまでライフサイクルを経過させることが含まれる（図３および図５〜図９を参照のこと）。
【００９９】
一旦プログラマブルデバイスが供給されると、コントローラ２４はプログラマブルデバイスのサービス中の状態２１４への遷移を開始し、サービスをオンラインの状態２１４に移動する。
【０１００】
オンラインの状態２１４にある間、サービスの予想外の破壊が発生した場合、コントローラ２４はサービス２２をトラブルの状態２１６に遷移する。これらの破壊には、ウイルス、ハードウェアまたはソフトウェアによる低速の応答時間（例えば、ボトルネック）、およびハードウェアまたはソフトウェアによるひどい故障および断続的な故障が含まれる。トラブルの状態２１６では、コントローラ２４は、予想外の破壊の原因を決定し、その原因を解消するように試み、サービス２２をオンラインに遷移して戻す。サービス２２がオンラインに戻ると、オンラインの状態２１４に再度入る。
【０１０１】
サービス２２が最早必要ない場合、そのサービス２２はリタイヤの状態２１６に遷移される。サービスに使用されるプログラマブルデバイスは、上述の手順に従って、リタイヤされるか、再配置されるか、再準備されるか、または再度供給される。
【０１０２】
各プログラマブルデバイスが独自のライフサイクルを有し、各サービスが独自のライフサイクルを有することが理解されよう。例えば、サービスがウェブサイトである場合、そのウェブサイトは、ウェブサイトを実施するサーバがライフサイクルを有する間にユーザが経験するライフサイクルを有する。サービスのライフサイクルとプログラマブルデバイスのライフサイクルとの間には依存関係が存在する。例えば、カスタマーアカウントを有するサービスは複数のプログラマブルデバイスとデバイスとの間のロードバランスを使用するか、または１つのプログラマブルデバイスを使用することができる。複数のプログラマブルデバイスを使用しているサービス内の特定のプログラマブルデバイスにトラブルが発生した場合、サービスがオンラインの状態２１４で継続している間、その特定プログラマブルデバイスはトラブルの状態２１６に遷移する。
【０１０３】
反対に、サービスがプログラマブルデバイスを１つだけ使用しており、そのプログラマブルデバイスにトラブルが発生した場合、プログラマブルデバイスとサービスはどちらもトラブルの状態２１６に遷移する。一旦、プログラマブルデバイスがサービス中の状態２１４に戻ると、サービスをオンラインの状態２１４に戻すことができる。
【０１０４】
【発明の効果】
以上、本発明によれば、機能（例えば、プログラマブルデバイスまたはコンピュータサービス）のライフサイクルに関して、機能の配置、供給および管理を自動化する方法およびシステムを提示し、トリガーイベントが発生すると、システムは、プログラマブルデバイスまたはコンピュータサービスをそのライフサイクルのある状態から別の状態に動的に移す。その結果、拡張可能なインフラストラクチャおよび機構は、ホスティングアプリケーションおよび他のアプリケーションに対する直接的な技術支援（例えば、ハードウェアおよびソフトウェアを配置および供給すること）するために必要となる仕事量と技術レベルを大幅に低減することができる。
【０１０５】
また、本システムによって、プログラマブルデバイスの効率が高まり、それによって、特定の機能に必要となるプログラマブルデバイスの数を低減することができる。これにより、メーカー独自の供給ソフトウェアを開発しサポートする間接的な技術支援スタッフは、本発明によって低減され、その結果、クライアントは本来の仕事に集中することができるようになる。ｘＳＰの応答性は、追加のウェブサービスに対する新規または既存の顧客の要求に迅速に（数秒でないにしろ数分で）応答することができることによって高められる。
【０１０６】
本システムおよび本方法は、ＯＥＭまたは他の開発者が付加価値製品を独自に作成するための共通した業界規模のプラットフォームを提供し、計算負荷および需要の問題に対処するためにハードウェアおよび資源の最も有効な使用法を可能にする。
【０１０７】
以上説明したように、本発明によれば、システムは、開発者がプログラマブルデバイスの配置、供給、および管理の自動化を支援するモジュールを開発し、ユーザがライフサイクルのある状態に入るようシステムに指示するための自動化インターフェースを含み、コントローラは、トリガーイベントの発生に応答してプログラマブルデバイスをライフサイクルの状態に移動するようにしたので、プログラマブルデバイスをサポートするために必要となる仕事量と技術レベルとを大幅に低減させ、安価な管理する方法および装置を提供することができる。
【０１０８】
本発明の原理を適用することができる多くの実施可能な実施形態に鑑みて、図面に関して本明細書で記述した実施形態は例示を意図したものであり、本発明の範囲を限定するものと解釈されるべきではない。例えば、当業者ならば、ソフトウェア形式で示した例示の実施形態の要素をハードウェアで、またこの反対に実施することが可能であり、または例示の実施形態は、本発明の趣旨を逸脱せずに構成および細部を変更することができることを理解するだろう。したがって、本明細書に記載の本発明は、頭記の特許請求の範囲内で実現することのできるすべてのそのような実施形態およびその等価形態を想定している。
【図面の簡単な説明】
【図１】本発明が動作する例示的システムを全体的に示すブロック図である。
【図２】本発明が動作する例示的プログラマブルデバイスを全体的に示すブロック図である。
【図３】本発明の一実施形態におけるプログラマブルデバイスのライフサイクルの状態を示すブロック図である。
【図４】本発明の一実施形態におけるコンピュータサービスのライフサイクルの状態を示すブロック図である。
【図５】本発明によるイメージを開発し、テストする方法の流れ図である。
【図６】本発明による追加容量を計画する方法の流れ図である。
【図７】本発明によるプログラマブルデバイスを配置する方法の流れ図である。
【図８】本発明によるプログラマブルデバイスを準備する方法の流れ図である。
【図９】本発明によるプログラマブルデバイスを供給する方法の流れ図である。
【図１０】本発明によるプログラマブルデバイスに再度目的を与える方法の流れ図である。
【符号の説明】
２２  機能
２４  コントローラ
３８  ウェブ機器インターフェース
４０  ＮＡＳ機器インターフェース
５２  イメージリポジトリ
５４  ストア
【図１】
0004716637.tif 000002
【図２】
0004716637.tif 000003
【図３】
0004716637.tif 000004
【図４】
0004716637.tif 000005
【図５】
0004716637.tif 000006
【図６】
0004716637.tif 000007
【図７】
0004716637.tif 000008
【図８】
0004716637.tif 000009
【図９】
0004716637.tif 000010
【図１０】
0004716637.tif 000011