(57)【要約】【課題】プロダクション・コンテナ内で実行されているコンピュータ・ソフトウェアに関連付けられたデバッグ情報を提供するための方法および関連するシステムを提供する。【解決手段】プロダクション・コンテナは、デバッグ・コンテナとして複製される。コンピュータ・ソフトウェアは、プロダクション・コンテナ内およびデバッグ・コンテナ内で実行される。コンピュータ・ソフトウェアを実行することは、プロダクション・コンテナ内で実行されているコンピュータ・ソフトウェアに送信された要求を、デバッグ・コンテナ内で実行されているコンピュータ・ソフトウェアに複製することを含む。プロダクション・コンテナ内で実行されているコンピュータ・ソフトウェアからの要求が、この要求に対する応答と一緒に格納される。デバッグ・コンテナ内で実行されているコンピュータ・ソフトウェアによって生成されたデバッグ情報が、格納される。【選択図】図２
2019519852.tif 000002
【特許請求の範囲】
【請求項１】
プロダクション・コンテナ内で実行されているコンピュータ・ソフトウェアに関連付けられたデバッグ情報を提供するための方法であって、
１つまたは複数のプロセッサによって、前記プロダクション・コンテナをデバッグ・コンテナとして複製することと、
前記１つまたは複数のプロセッサによって、前記コンピュータ・ソフトウェアを前記プロダクション・コンテナ内および前記デバッグ・コンテナ内で実行することであって、前記プロダクション・コンテナ内で実行されている前記コンピュータ・ソフトウェアに送信された要求を、前記デバッグ・コンテナ内で実行されている前記コンピュータ・ソフトウェアに複製することを含んでいる、前記実行することと、
前記１つまたは複数のプロセッサによって、前記プロダクション・コンテナ内で実行されている前記コンピュータ・ソフトウェアからの要求を、前記要求に対する応答と一緒に格納することと、
前記１つまたは複数のプロセッサによって、前記デバッグ・コンテナ内で実行されている前記コンピュータ・ソフトウェアによって生成されたデバッグ情報を格納することと
を含んでいる、方法。
【請求項２】
前記格納されたデバッグ情報を使用して、前記プロダクション・コンテナ内で実行されている前記コンピュータ・ソフトウェアをデバッグすることをさらに含んでいる、請求項１に記載の方法。
【請求項３】
前記格納されたデバッグ情報を前記使用することが、前記格納されたデバッグ情報をＷｅｂインターフェイスを介して使用することを含んでいる、請求項２に記載の方法。
【請求項４】
前記コンピュータ・ソフトウェアを前記デバッグ・コンテナ内で前記実行することが、アサートを有効化すること、シンボルを使用すること、最小限のコンパイラの最適化を使用すること、またはこれらの組み合わせによって、デバッグ情報を生成するために、前記コンピュータ・ソフトウェアを最適化することを含んでいる、請求項１に記載の方法。
【請求項５】
前記コンピュータ・ソフトウェアを前記デバッグ・コンテナ内で前記実行することが、トレースをオンにして、監査能力をオンにして、デバッグ・ポートを有効化して、またはこれらを組み合わせて、前記コンピュータ・ソフトウェアを前記デバッグ・コンテナ内で実行することによって、デバッグ情報を生成するために、前記デバッグ・コンテナの構成を最適化することを含んでいる、請求項１に記載の方法。
【請求項６】
前記デバッグ・コンテナ内の前記コンピュータ・ソフトウェアが、半導体ストレージ・デバイス、より大きいメモリ容量、追加のＣＰＵ能力、またはこれらの組み合わせを使用することによって、デバッグ情報を生成するために最適化されたハードウェア上で実行される、請求項１に記載の方法。
【請求項７】
前記１つまたは複数のプロセッサが、前記プロダクション・コンテナ内の前記コンピュータ・ソフトウェアの実行の要求および応答を記録し、その後、前記要求および前記応答を前記デバッグ・コンテナ内で実行されている前記コンピュータ・ソフトウェアでリプレイすることをさらに含んでいる、請求項１に記載の方法。
【請求項８】
コンピュータ・システムであって、１つまたは複数のプロセッサと、１つまたは複数のメモリと、１つまたは複数のコンピュータ可読ハードウェア・ストレージ・デバイスとを備えており、前記１つまたは複数のコンピュータ可読ハードウェア・ストレージ・デバイスが、プロダクション・コンテナ内で実行されているコンピュータ・ソフトウェアに関連付けられたデバッグ情報を提供するための方法を実施するために、前記１つまたは複数のメモリを介して前記１つまたは複数のプロセッサによって実行可能なプログラム命令を含んでおり、前記方法が、
前記１つまたは複数のプロセッサによって、前記プロダクション・コンテナをデバッグ・コンテナとして複製することと、
前記１つまたは複数のプロセッサによって、前記コンピュータ・ソフトウェアを前記プロダクション・コンテナ内および前記デバッグ・コンテナ内で実行することであって、前記プロダクション・コンテナ内で実行されている前記コンピュータ・ソフトウェアに送信された要求を、前記デバッグ・コンテナ内で実行されている前記コンピュータ・ソフトウェアに複製することを含んでいる、前記実行することと、
前記１つまたは複数のプロセッサによって、前記プロダクション・コンテナ内で実行されている前記コンピュータ・ソフトウェアからの要求を、前記要求に対する応答と一緒に格納することと、
前記１つまたは複数のプロセッサによって、前記デバッグ・コンテナ内で実行されている前記コンピュータ・ソフトウェアによって生成されたデバッグ情報を格納することと
を含んでいる、コンピュータ・システム。
【請求項９】
前記方法が、前記格納されたデバッグ情報を使用して、前記プロダクション・コンテナ内で実行されている前記コンピュータ・ソフトウェアをデバッグすることをさらに含んでいる、請求項８に記載のコンピュータ・システム。
【請求項１０】
前記格納されたデバッグ情報を前記使用することが、前記格納されたデバッグ情報をＷｅｂインターフェイスを介して使用することを含んでいる、請求項９に記載のコンピュータ・システム。
【請求項１１】
前記コンピュータ・ソフトウェアを前記デバッグ・コンテナ内で前記実行することが、アサートを有効化すること、シンボルを使用すること、最小限のコンパイラの最適化を使用すること、またはこれらの組み合わせによって、デバッグ情報を生成するために、前記コンピュータ・ソフトウェアを最適化することを含んでいる、請求項８に記載のコンピュータ・システム。
【請求項１２】
前記コンピュータ・ソフトウェアを前記デバッグ・コンテナ内で前記実行することが、トレースをオンにして、監査能力をオンにして、デバッグ・ポートを有効化して、またはこれらを組み合わせて、前記コンピュータ・ソフトウェアを前記デバッグ・コンテナ内で実行することによって、デバッグ情報を生成するために、前記デバッグ・コンテナの構成を最適化することを含んでいる、請求項８に記載のコンピュータ・システム。
【請求項１３】
前記デバッグ・コンテナ内の前記コンピュータ・ソフトウェアが、半導体ストレージ・デバイス、より大きいメモリ容量、追加のＣＰＵ能力、またはこれらの組み合わせを使用することによって、デバッグ情報を生成するために最適化されたハードウェア上で実行される、請求項８に記載のコンピュータ・システム。
【請求項１４】
前記方法が、
前記１つまたは複数のプロセッサが、前記プロダクション・コンテナ内の前記コンピュータ・ソフトウェアの実行の要求および応答を記録し、その後、前記要求および前記応答を前記デバッグ・コンテナ内で実行されている前記コンピュータ・ソフトウェアでリプレイすることをさらに含んでいる、請求項８に記載のコンピュータ・システム。
【請求項１５】
コンピュータ・プログラム製品であって、コンピュータ可読プログラム命令が格納されている１つまたは複数のコンピュータ可読ハードウェア・ストレージ・デバイスを備えており、プロダクション・コンテナ内で実行されているコンピュータ・ソフトウェアに関連付けられたデバッグ情報を提供するための方法を実施するために、前記プログラム命令がコンピュータ・システムの１つまたは複数のプロセッサによって実行可能であり、前記方法が、
前記１つまたは複数のプロセッサによって、前記プロダクション・コンテナをデバッグ・コンテナとして複製することと、
前記１つまたは複数のプロセッサによって、前記コンピュータ・ソフトウェアを前記プロダクション・コンテナ内および前記デバッグ・コンテナ内で実行することであって、前記プロダクション・コンテナ内で実行されている前記コンピュータ・ソフトウェアに送信された要求を、前記デバッグ・コンテナ内で実行されている前記コンピュータ・ソフトウェアに複製することを含んでいる、前記実行することと、
前記１つまたは複数のプロセッサによって、前記プロダクション・コンテナ内で実行されている前記コンピュータ・ソフトウェアからの要求を、前記要求に対する応答と一緒に格納することと、
前記１つまたは複数のプロセッサによって、前記デバッグ・コンテナ内で実行されている前記コンピュータ・ソフトウェアによって生成されたデバッグ情報を格納することと
を含んでいる、コンピュータ・プログラム製品。
【請求項１６】
前記方法が、前記格納されたデバッグ情報を使用して、前記プロダクション・コンテナ内で実行されている前記コンピュータ・ソフトウェアをデバッグすることをさらに含んでいる、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１７】
前記格納されたデバッグ情報を前記使用することが、前記格納されたデバッグ情報をＷｅｂインターフェイスを介して使用することを含んでいる、請求項１６に記載のコンピュータ・プログラム製品。
【請求項１８】
前記コンピュータ・ソフトウェアを前記デバッグ・コンテナ内で前記実行することが、アサートを有効化すること、シンボルを使用すること、最小限のコンパイラの最適化を使用すること、またはこれらの組み合わせによって、デバッグ情報を生成するために、前記コンピュータ・ソフトウェアを最適化することを含んでいる、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１９】
前記コンピュータ・ソフトウェアを前記デバッグ・コンテナ内で前記実行することが、トレースをオンにして、監査能力をオンにして、デバッグ・ポートを有効化して、またはこれらを組み合わせて、前記コンピュータ・ソフトウェアを前記デバッグ・コンテナ内で実行することによって、デバッグ情報を生成するために、前記デバッグ・コンテナの構成を最適化することを含んでいる、請求項１５に記載のコンピュータ・プログラム製品。
【請求項２０】
前記デバッグ・コンテナ内の前記コンピュータ・ソフトウェアが、半導体ストレージ・デバイス、より大きいメモリ容量、追加のＣＰＵ能力、またはこれらの組み合わせを使用することによって、デバッグ情報を生成するために最適化されたハードウェア上で実行される、請求項１５に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロダクション・コンテナ（production container）に関するデバッグ情報を提供することに関し、さらに詳細には、特殊なデバッグ・コンテナを使用して、プロダクション・コンテナ内で実行されているコンピュータ・ソフトウェアに関連付けられたデバッグ情報を提供することに関する。
【背景技術】
【０００２】
企業向けソフトウェアにおいてデバッグ・トレースおよびデバッグ機能を有効化すると、多くの場合、企業向けソフトウェアの性能に悪影響を与える。このため、テスト環境内で問題を再現できない場合に、オンプレミスのソリューションを使用している顧客は、多くの場合、デバッグ・トレースおよびその他のデバッグ機能を有効化することを嫌がる。これは、顧客が自分の問題を解決するために診断情報を収集するのを困難にすることがある。また、これは、提供されたソフトウェアにおいて起こり得る不具合の調査を顧客から要求された場合に、サポート・サービスにも悪影響を与えることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従って本発明が解決しようとする課題はデバッグ・コンテナを使用したプロダクション・コンテナに関するデバッグ情報を提供することである。
【課題を解決するための手段】
【０００４】
本発明は、プロダクション・コンテナ内で実行されているコンピュータ・ソフトウェアに関連付けられたデバッグ情報を提供するための、方法、ならびに関連するコンピュータ・システムおよびコンピュータ・プログラム製品を提供する。１つまたは複数のプロセッサは、プロダクション・コンテナをデバッグ・コンテナとして複製する。１つまたは複数のプロセッサは、コンピュータ・ソフトウェアをプロダクション・コンテナ内およびデバッグ・コンテナ内で実行し、コンピュータ・ソフトウェアを実行することは、プロダクション・コンテナ内で実行されているコンピュータ・ソフトウェアに送信された要求を、デバッグ・コンテナ内で実行されているコンピュータ・ソフトウェアに複製することを含む。１つまたは複数のプロセッサは、プロダクション・コンテナ内で実行されているコンピュータ・ソフトウェアからの要求を、この要求に対する応答と一緒に格納する。１つまたは複数のプロセッサは、デバッグ・コンテナ内で実行されているコンピュータ・ソフトウェアによって生成されたデバッグ情報を格納する。
【０００５】
ここで、添付の図面を単に例として参照し、本発明の実施形態について詳細に説明する。
【図面の簡単な説明】
【０００６】
【図１】デバッグ情報を提供する本発明の実施形態が実装されてよいコンピュータ・システムを示す図である。
【図２】本発明の実施形態に記載された、プロダクション・コンテナ内で実行されているコンピュータ・ソフトウェアに関連付けられたデバッグ情報を提供するコンピュータ実装方法の実施形態のフローチャートである。
【図３】本発明の実施形態に記載された、図２の要求および応答の複製ステップの実装の実施形態のブロック図である。
【図４】本発明の実施形態に記載された、図２のコンピュータ実装方法を呼び出す、第１の、ユーザによって開始されるコンピュータ実装方法のブロック図である。
【図５】本発明の実施形態に記載された、図２のコンピュータ実装方法を呼び出す、第２の、要求ごとにユーザによって開始されるコンピュータ実装方法のブロック図である。
【図６】本発明の実施形態に記載された、以前に記録されたメッセージのリプレイを使用して図２のコンピュータ実装方法を呼び出す、第３のコンピュータ実装方法のブロック図である。
【図７】本発明の実施形態に記載された、図２のコンピュータ実装方法を呼び出す、第４のコンピュータ実装方法のブロック図である。
【図８】本発明の実施形態の実装において使用されてよい、例示的なコンピュータ・システムの概略図である。
【図９】本発明の実施形態に記載された、クラウド・コンピューティング環境の例を示す図である。
【図１０】本発明の実施形態に記載された、図９のクラウド・コンピューティング環境によって提供される機能的抽象レイヤのセットを示す図である。
【発明を実施するための形態】
【０００７】
本発明は、本発明の以下の説明から明らかになるように、コンピュータ・システムの機能、具体的には、クラウド環境内で動作するコンピュータ・システムの機能を改善する。
【０００８】
本発明は、クラウドまたはＳａａＳ（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）内で利用可能な設備を使用して、ソフトウェアをデバッグするための診断情報の収集を可能にし、プロダクション・パフォーマンスに対するリスクを低減し、性能に対するデバッグ・トレースの影響を最小限に抑える。本発明は、クラウド・オファリング（cloud offering）でのデバッグ動作のＣＰＵ時間の価格の低減も可能にする。
【０００９】
ハイブリッド・クラウド・オファリングは、通常、クラウド・コントローラ・コンポーネントによってオーケストレートされたプロダクション・コンテナのグループを含む。ネットワーク・エッジは、ＩＢＭ（Ｒ）  ＤａｔａＰｏｗｅｒ  Ｇａｔｅｗａｙセキュリティおよび統合プラットフォームなどのゲートウェイ・ソフトウェアまたはゲートウェイ機器によって制御されることがある。一実施形態では、接続は、オンプレミス環境またはプライベート・クラウドが背後にある既存のセキュア・コネクタを介して行われ得る。コンテナは、顧客のアプリケーション定義を含んでいる共有ストレージ・ネットワーク・ロケーションから自己構成してよい。
【００１０】
コンテナは、コンピュータ・プログラムまたはコンピュータ・プログラムの一部をソフトウェアのレイヤ内で包含し、このソフトウェアのレイヤは、実行するためにコンピュータ・プログラムが依存するオペレーティング・システムおよびその他の計算リソースにシームレスに接続される。コンピュータ・プログラムをコンテナに入れることには、多くの利点がある。コンピュータ・プログラムを、あるコンピュータから別のコンピュータへ（例えば、プログラマーのラップトップからテスト・システムへ、さらにテスト・システムからクラウドへ）、素早く簡単に移動できることは、特に有利である。
【００１１】
本発明の実施形態では、標準コンテナに加えて、デバッグ活動用に最適化された、特殊なコンテナが提供される。それらのコンテナは、次の方法を含むが、これらに限定されない、複数の方法で特殊化される。（ｉ）コンピュータ・ソフトウェアのデバッグ・ビルドを実行することが実装されてよい、（ｉｉ）基礎になるハードウェアが、デバッグ・コストを最小限に抑えるように特殊化される（例えば、基礎になるハードウェアは、トレース情報の書き込みの入出力（Ｉ／Ｏ：Input/Output）コストが最小限に抑えられるように、半導体ストレージ・デバイス（ＳＳＤ：Solid state Storage Devices）を搭載してよい）、（ｉｉｉ）レコード・アンド・リプレイ（Record and Replay）機能などの監査能力がデフォルトで有効化されてよい、（ｉｖ）サポート担当者がデバッグ・システム上でリアルタイムに問題をデバッグできるように、デバッグ・ポートがデフォルトで開かれてよい。
【００１２】
本発明の実施形態は、特定の顧客のアプリケーションをデバッグ・コンテナ上およびプロダクション・コンテナ上で柔軟に拡大または縮小する能力を提供する。
【００１３】
従来技術の特殊なデバッグ・インスタンスは、診断能力の影響をある程度低減するが、性能に対する悪影響が依然として存在する。したがって、この悪影響を取り除くために、デバッグが有効化されたときに、本発明の実施形態では、既存の顧客のコンテナ・イメージが、オンデマンドで、本発明の実施形態の特殊なデバッグ・インスタンスのうちの１つにスピンアップされる。ネットワーク・トラフィックは、ゲートウェイ機器によって、またはネットワーク・エッジ上にあるソフトウェアによって、デバッグ・コンテナと通常のプロダクション・コンテナの間で自動的に複製されてよい。同様に、ネットワーク・エッジ上のゲートウェイ機器を介して、またはセキュア・コネクタを介してプロダクション・アプリケーションによって行われた送信要求は、同じデータをデバッグ・コンテナ・インスタンスにおいて発生する実際の要求のシミュレーションに使用できるように、その送信要求に対する応答と共に格納される。
【００１４】
前述した実施形態では、診断活動が、実行中のプロダクション環境のワークロードに影響を与えずに、個別に調整されたハードウェアまたはソフトウェアあるいはその両方で実行されてよい。デバッグ情報において収集された診断情報は、クラウド・オファリングのＷｅｂ管理コンソールを介して顧客が直接利用できるようにされてよい。診断情報は、必要に応じて、クラウド・オファリング・プロバイダの製品サポート・チームによって使用される問題チケッティング・システム（problem ticketing system）に直接リンクされてもよい。デバッグ・インスタンスは、デバッグ・クラウド環境内への直接的な仮想プライベート・ネットワーク（ＶＰＮ：Virtual Private Network）アクセスを介して、サポート担当者によるデバッグに使用可能であってもよい。
【００１５】
図１は、デバッグ情報を提供する本発明の実施形態が実装されてよいコンピュータ・システムを示している。クラウド１０２は、プロダクション・コンテナ１０６〜１１２のプロダクション・グループ１０４を備える。各プロダクション・コンテナ１０６〜１１２は、コンピュータ・プログラム（ソフトウェア）またはコンピュータ・プログラムの一部を、ソフトウェアのレイヤ内で包含し、このソフトウェアのレイヤは、実行するためにコンピュータ・プログラムが依存するオペレーティング・システム（図１に示されていない）およびその他の計算リソース（図１に示されていない）にシームレスに接続される。このソフトウェアは、顧客のビジネスの運用において、顧客によってプロダクション環境内で使用される。クラウド１０２は、デバッグ・コンテナ１２６〜１３０のデバッグ・グループ１２４をさらに備える。各デバッグ・コンテナ１２６〜１３０は、コンピュータ・プログラムまたはコンピュータ・プログラムの一部をソフトウェアのレイヤ内で包含し、このソフトウェアのレイヤは、実行するためにコンピュータ・プログラムが依存するオペレーティング・システムおよびその他の計算リソースにシームレスに接続される。このソフトウェアは、顧客のビジネスの運用において、顧客によってプロダクション環境内で使用されず、コンピュータ・プログラムに伴う問題のデバッグを支援するために、診断情報を取得する目的に使用される。デバッグ・コンテナ１２６〜１３０の各インスタンスは、プロダクション・コンテナ１０６〜１１２の１つのインスタンスに対応する。任意の数のプロダクション・コンテナ１０６〜１１２および任意の数のデバッグ・コンテナ１２６〜１３０が存在してよいが、デバッグ・コンテナ１２６〜１３０の各インスタンスは、プロダクション・コンテナ１０６〜１１２の１つのインスタンスに対応していなければならない。プロダクション・コンテナ１０６〜１１２は、対応するデバッグ・コンテナ１２６〜１３０を有していても、有していなくてもよい。プロダクション・コンテナ１０６〜１１２は、ワークロードの共有または同様の目的のために、２つ以上のデバッグ・コンテナ１２６〜１３０に関連付けられてよい。一実施形態では、少数のプロダクション・コンテナ１０６〜１１２のみが、対応するデバッグ・コンテナ１２６〜１３０を有する。
【００１６】
プロダクション・コンテナ１０６〜１１２およびデバッグ・コンテナ１２６〜１３０は、デバッグ・コンテナ１２６〜１３０とプロダクション・コンテナ１０６〜１１２の両方で共通の顧客の構成を読み込むことができるように、同じネットワーク環境内で実行され、ネットワーク・ストレージ１４０を共有する。一実施形態では、デバッグ・コンテナ１２６〜１３０は、特殊なハードウェア上で実行される。例えば、デバッグ・コンテナ１２６〜１３０を実行するハードウェアは、トレース情報を書き込むＩ／Ｏコストが低減されるように、ＳＳＤ１４２を搭載してよい。コンテナ（デバッグ・コンテナ１２６〜１３０またはプロダクション・コンテナ１０６〜１１２のいずれか）がスピンアップされた場合、構成データおよび顧客のアプリケーションが共有ネットワーク・ストレージ１４０上のある位置から読み込まれる。
【００１７】
プロダクション・グループ１０４およびデバッグ・グループ１２４が実行されるクラウド１０２は、顧客の施設の外部との（例えば、リモート・サーバ３１０などへの）通信用のゲートウェイ１５０を含む。クラウド１０２は、顧客の施設内の別のアプリケーションまたは同様のものへの接続用の、１つまたは複数のセキュア・コネクタ１５２をさらに含む。通常、ゲートウェイ１５０は、通信用のインターネット１７０に接続される。クラウド・コントローラ１７２は、クラウド１０２の正しい動作を保証するために、図１内の他のコンポーネントをオーケストレートする。
【００１８】
デバッガ１６２は、リモート・サポート・システム（remote support system）１６０内で実行される。リモート・サポート・システム１６０は、プロダクション・グループ１０４およびデバッグ・グループ１２４の位置から遠く離れた地理的な位置にあってよいが、プロダクション・グループ１０４およびデバッグ・グループ１２４と同じ地理的な位置にあってもよい。リモート・サポート・システム１６０は、リモートおよびローカルについての周知の従来技術の定義に従って、ローカルとは対照的に、リモートである。リモート・サポート・システム１６０の機能は、当業者によく知られており、本発明の実施形態との関連において、リモート・サポート・システム１６０は、プロダクション・グループ１０４内のソフトウェアの実行に関連付けられた問題の再現および解決を含む。デバッガ１６２の機能も、当業者によく知られており、本発明の実施形態との関連において、デバッガ１６２は、プロダクション・グループ１０４内のソフトウェアの実行の解析を含んでおり、この解析は、プロダクション・グループ１０４を複製するデバッグ・グループ１２４内のソフトウェアの実行の解析によって実現されてよい。仮想プライベート・ネットワーク（ＶＰＮ）１６４は、リモート・サポート１６０内のデバッガ１６２とデバッグ・グループ１２４内で実行されるソフトウェアとの間のセキュリティで保護された通信経路を提供する。一実施形態では、制御情報が、ＶＰＮ１６４を介してデバッガ１６２からデバッグ・コンテナ１２８に渡されてよく、データが、ＶＰＮ１６４を介してデバッガ１６２とデバッグ・コンテナ１２８の間で一方向または両方向に渡されてよい。他の実施形態では、ＶＰＮを介する接続は、必要に応じて、デバッグ・グループ１２４に進むか、またはクラウド１０２に進んでよい。
【００１９】
監査能力は、レコード・アンド・リプレイ１６６ソフトウェアなどのアイテムを含んでよい。レコード・アンド・リプレイ１６６ソフトウェアは、１つのコンピュータ・ソフトウェア（デバッグ・グループ１２４内で実行されているデバッグ・コンテナ１２８内のソフトウェアなど）によって受信された入力イベントをキャプチャしてよく、一連の入力イベントを、後でデバッグ・コンテナ１２８内のソフトウェアでリプレイできるようにする。レコード・アンド・リプレイ１６６ソフトウェアは、キャプチャされた入力イベントを、格納するため、および後で利用するために、リモート・サポート・システム１６０内の再現１６８ソフトウェアに送信する。
【００２０】
デバッグ・コンテナ１２６〜１３０は、一実施形態では、ソフトウェアの特殊なビルドを実行してよい。
【００２１】
一実施形態では、プロダクション・コンテナ１０６〜１１２は、最大性能を達成するために、アサーションが無効化されて実行されるソフトウェアのビルドを実行してよく、デバッグ・コンテナ１２６〜１３０は、高速に不具合を再現するために、アサーションが有効化されたソフトウェアのビルドを実行してよい。アサーションは、ブール値条件をチェックするアサート・ステートメントを含み、真である場合は何も行わず、偽である場合はプログラムを直ちに終了する。アサーションは、実行可能なソフトウェア・コードで表されているときに、真であると仮定されてよい。アサート・ステートメントは、例えばヌル・ポインタを識別するために使用されてよい。アサーションを使用することで、不具合を早期に、エラーの場所の近くで出現させることができ、エラーの診断および修正を容易にする。
【００２２】
一実施形態では、プロダクション・コンテナ１０６〜１１２は、メモリ使用量を削減するために、デバッグ・シンボルを含まないソフトウェアのビルドを実行してよく、デバッグ・コンテナ１２６〜１３０は、診断能力を高めるために、デバッグ・シンボルを含むソフトウェアのビルドを実行してよい。デバッグ・シンボルは、コンピュータ・プログラムのソース・コードのどの部分が実行可能なコンピュータ・ソフトウェアの一部の特定のオブジェクト・コードを生成したかを識別する情報を含む。デバッグ・シンボルは、ソフトウェアをデバッグする作業者が、元のソース・コードから、変数およびルーチンの名前などのオブジェクト・コードに関する情報を取得できるようにする。
【００２３】
一実施形態では、プロダクション・コンテナ１０６〜１１２は、ソフトウェアの最大性能を実現するために、コンパイラの最適化が最大限に有効化されたソフトウェアのビルドを実行してよく、デバッグ・コンテナ１２６〜１３０は、デバッグ能力を高めるため、およびコンパイラ・エラーの影響を減らすために、最小限のコンパイラの最適化を有するソフトウェアのビルドを実行してよい。コンパイラの最適化は、プログラムの実行時間を最小限に抑えること、プログラムによって占有されるメモリ量を最小限に抑えること、プログラムによって消費される電力を最小限に抑えること、あるいは実行可能なコンピュータ・プログラムの任意のその他の属性を最大化または最小化することとを、実行しようとすることがある。最適化変換、具体的には、コードの順序を変更する変換は、シンボリック・デバッガを使用するときに、出力コードを元のソース・コード内の行番号に関連付けることを困難にする可能性がある。
【００２４】
デバッグ・コンテナ１２６〜１３０は、一実施形態では、特殊な構成を有してよい。
【００２５】
一実施形態では、プロダクション・コンテナ１０６〜１１２は、最大性能を実現するために、トレースが常にオフにされる構成でソフトウェアを実行してよく、デバッグ・コンテナ１２６〜１３０は、ソフトウェアの実行に関する情報をできるだけ多くキャプチャするために、トレースが常に完全にオンにされる構成でソフトウェアを実行してよい。トレース情報は、特に、ソフトウェアに伴う問題のデバッグおよび識別の目的で、プログラムの実行に関してログに記録される情報である。トレースは、一実施形態では、低レベルのイベントである。
【００２６】
一実施形態では、プロダクション・コンテナ１０６〜１１２は、最大性能を実現するために、監査能力が常にオフにされる構成でソフトウェアを実行してよく、デバッグ・コンテナ１２６〜１３０は、監査能力が常にオンにされる構成でソフトウェアを実行してよい。監査能力は、レコード・アンド・リプレイ１６６ソフトウェアを含んでよい。レコード・アンド・リプレイ１６６ソフトウェアは、一実施形態では、１つのコンピュータ・ソフトウェアによって受信された入力イベントをキャプチャし、それらの一連の入力イベントを、後でそのソフトウェアでリプレイできるようにする。
【００２７】
一実施形態では、プロダクション・コンテナ１０６〜１１２は、最大性能を実現するために、デバッグ・ポートが無効化される構成でソフトウェアを実行してよく、デバッグ・コンテナ１２６〜１３０は、サポート担当者がソフトウェアをデバッグできるように、デバッグ・ポートが有効化される構成でソフトウェアを実行してよい。デバッグ・ポートは、開発およびデバッグを簡略化するためにソフトウェアに含まれているポートであるが、ソフトウェアの通常動作には不要である。一実施形態では、デバッグ・ポートは、権限のない人間によって余分な機能が使用されるのを防ぐために、無効化される。
【００２８】
一実施形態では、デバッグ・コンテナ１２６〜１３０は、特殊なハードウェア上で実行されてよい。
【００２９】
一実施形態では、プロダクション・コンテナ１０６〜１１２は、ＳＳＤ１４２を搭載していないハードウェア上でソフトウェアを実行してよく、デバッグ・コンテナ１２６〜１３０は、トレース情報を格納するＩ／Ｏコストを削減するために、ＳＳＤ１４２を搭載しているハードウェア上でソフトウェアを実行してよい。ＳＳＤ１４２は、情報の非常に高速な格納を実現するが、格納のコストが大きくなる。
【００３０】
一実施形態では、プロダクション・コンテナ１０６〜１１２は、所有権の総コストを削減するために、より小さいメモリ容量を有するハードウェア上でソフトウェアを実行してよく、デバッグ・コンテナ１２６〜１３０は、診断のメモリ・コストを考慮するために、より大きいメモリ容量を有するハードウェア上でソフトウェアを実行してよい。一実施形態では、顧客は、実際に使用されるメモリ量に応じて、ハードウェア上でのソフトウェアの実行に対して料金を支払うことがあるため、プロダクション環境では、実際に使用されるメモリ量を最小限に抑える必要がある。
【００３１】
一実施形態では、プロダクション・コンテナ１０６〜１１２は、所有権の総コストを削減するために、より小さいＣＰＵ能力を有するハードウェア上でソフトウェアを実行してよく、デバッグ・コンテナ１２６〜１３０は、デバッグ機能のコストを考慮するために、より大きいＣＰＵ能力を有するハードウェア上でソフトウェアを実行してよい。顧客は、一般的に、実際に使用されるＣＰＵ能力の量に応じて、ハードウェア上でのソフトウェアの実行に対して料金を支払うことがあるため、プロダクション環境では、実際に使用されるＣＰＵ能力の量を有利に最小限に抑えてよい。
【００３２】
図２は、本発明の実施形態に従う、プロダクション・コンテナ内で実行されているコンピュータ・ソフトウェアに関連付けられたデバッグ情報を提供するコンピュータ実装方法の実施形態のフローチャートである。コンピュータ実装方法は、ステップ２０２で開始する。ステップ２０４で、プロダクション・コンテナ１０６〜１１２は、プロダクション・コンテナ１０６〜１１２と並行するデバッグ・コンテナ１２６〜１３０として複製される。１つのプロダクション・コンテナ１０６〜１１２または複数のプロダクション・コンテナ１０６〜１１２が、デバッグ・コンテナ１２６〜１３０として複製されてよい。ただし、各デバッグ・コンテナ１２６〜１３０は、通常、１つのプロダクション・コンテナ１０６〜１１２と１対１に対応している。これの例外は、プロダクション・コンテナ１０６〜１１２が、ワークロードの共有または同様の目的のために、２つ以上のデバッグ・コンテナ１２６〜１３０に関連付けられる場合であってよい。図１の例では、プロダクション・コンテナ１０６がデバッグ・コンテナ１２６に関連付けられてよく、プロダクション・コンテナ１０８がデバッグ・コンテナ１２８に関連付けられてよく、プロダクション・コンテナ１１０がデバッグ・コンテナ１３０に関連付けられてよい。プロダクション・コンテナ１１２は、どのデバッグ・コンテナにも関連付けられないため、このプロダクション・コンテナに関するデバッグ情報は提供されていない。デバッグ・コンテナ１２６〜１３０に関連付けられているプロダクション・コンテナ１０６〜１１２の数は、ゼロと、プロダクション・グループ１０４内で同時に実行されてよいプロダクション・コンテナ１０６〜１１２の最大数との間の、任意の数であってよい。デバッグ・コンテナ１２６〜１３０の数は、ゼロと、プロダクション・グループ１０４内で実際に同時に実行されているプロダクション・コンテナ１０６〜１１２の数との間の、任意の数であってよい。前述したように、これの例外は、プロダクション・コンテナ１０６〜１１２が、ワークロードの共有または同様の目的のために、２つ以上のデバッグ・コンテナ１２６〜１３０に関連付けられる場合であってよい。
【００３３】
ステップ２０６で、デバッグ対象のソフトウェアが、プロダクション・コンテナ１０８などのプロダクション・コンテナ内と、デバッグ・コンテナ１２８などの複製されたデバッグ・コンテナ内の両方で実行される。以降の説明では、明確にするために、以降の説明における参照は、１つのプロダクション・コンテナ１０８が１つのデバッグ・コンテナ１２８に複製されていると仮定する。ただし実際は、前述したように、任意の数のプロダクション・コンテナ１０６〜１１２が、複製されたデバッグ・コンテナ１２６〜１３０に関連付けられてよい。
【００３４】
ステップ２０８で、ネットワーク・エッジ１５４にあるゲートウェイ１５０が、プロダクション・コンテナ１０８内で実行されているコンピュータ・ソフトウェアに送信された要求を、デバッグ・コンテナ１２８内で実行されているコンピュータ・ソフトウェアの対応するコピーに複製する。プロダクション・コンテナ１０８内で実行されている各コンピュータ・ソフトウェアおよびデバッグ・コンテナ１２８内で実行されているコンピュータ・ソフトウェアの対応するコピーは、これらの要求を実行する。各コンテナ内の実行の間の違いは、プロダクション・コンテナ１０８内で実行されているコンピュータ・ソフトウェアが、ソフトウェアのプロダクション・バージョン（production version）、プロダクション構成（production configuration）、およびプロダクション・ハードウェア（production hardware）で実行されるのに対して、デバッグ・コンテナ１２８内で実行されているコンピュータ・ソフトウェアが、ソフトウェアのデバッグ・バージョン、デバッグ構成、およびデバッグ・ハードウェアで実行されるという点である。これらの違いがすべて、コンピュータ・ソフトウェアの実行に関連付けられたデバッグ情報の収集を支援する。実施形態では、この違いは、ソフトウェアのデバッグ・バージョン、デバッグ構成、およびデバッグ・ハードウェアのうちの任意の１つ以上における違いであってよい。
【００３５】
ステップ２１０で、プロダクション・コンテナ１０８内で実行されているコンピュータ・ソフトウェアからのアウトバウンド要求のコピーが、この要求に対する関連するインバウンド応答と一緒に格納される。これらの要求は、ローカル・サーバへのセキュア・コネクタ１５２を介するか、またはリモート・サーバ３１０へのゲートウェイ１５０を介してよい。
【００３６】
要求および関連する応答を格納することによって、格納された関連する応答は、この応答がデバッグ・コンテナ１２８内で実行されているコンピュータ・ソフトウェアからの実際の要求から生じたかのように、デバッグ・コンテナ１２８内で実行されているコンピュータ・ソフトウェアに提供され得る。デバッグ・コンテナ１２８内で実行されているコンピュータ・ソフトウェアが、実際の要求を実際に行うことができるのは望ましくない。これは、デバッグ・コンテナ１２８内で（したがって、場合によってはソフトウェアのデバッグ・バージョン、デバッグ構成、およびデバッグ・ハードウェアで）実行されているコンピュータ・ソフトウェアに起因して、要求を行うことには副作用があることがあるからである。関連する応答のコピーを、デバッグ・コンテナ１２８内で実行されているコンピュータ・ソフトウェアに提供することによって、同じ刺激がデバッグ・コンテナ１２８に提供され、プロダクション環境１０４内の問題がデバッグ環境１２４内で再現されることを保証し、したがって、問題の解決策の決定を支援するための診断情報およびデバッグ情報の正確な収集を可能にする。これらはすべて、プロダクション環境１０４の運用に影響を与えないか、または影響を最小限に抑えて実現される。
【００３７】
ステップ２１０の後に、本発明のさまざまな実施形態が可能である。図２に示された実施形態では、ステップ２１０の後にステップ２１２および２１４が実行される。別の実施形態では、ステップ２１２のみが実行され、デバッグ情報が、後で解析を行うために格納される。さらに別の実施形態では、動作中の対話的なデバッグが実行されて、要求およびデバッグ情報を対話的にデバッガ１６２に送信できるように、デバッグ情報が一時的に格納される。
【００３８】
ステップ２１２で、デバッグ・コンテナ１２８内で実行されているコンピュータ・ソフトウェアによって生成されたデバッグ情報が格納される。一実施形態では、デバッグ情報は、プロダクション・コンテナ１０８内で実行されているコンピュータ・ソフトウェアと共有されたネットワーク・ストレージ１４０に格納されてよい。別の実施形態では、デバッグ情報は、追加デバッグ情報を書き込むＩ／Ｏコストが最小限に抑えられるように、ＳＳＤ１４２に格納されてよい。
【００３９】
ステップ２１４で、プロダクション・コンテナ１０８内で実行されているコンピュータ・ソフトウェアをデバッグするための格納されたデバッグ情報が使用される。格納されたデバッグ情報は、デバッグ・コンテナ１２８内で実行されているコンピュータ・ソフトウェアから取得されたが、デバッグ・コンテナ１２８がプロダクション・コンテナ１０８から複製されているため、格納されたデバッグ情報を使用して、プロダクション・コンテナ１０８内で実行されているコンピュータ・ソフトウェアをデバッグすることができる。格納されたデバッグ情報を使用するステップは、従来通りに格納されたデバッグ情報に対して実行される方法と同じ方法で実行される。ただし、本発明の実施形態には、デバッグ情報を収集できるようにするために、またはより効率的なデバッグ情報の収集を可能にするために、ソフトウェア、構成、またはハードウェアに対して変更が行われることなく、プロダクション・コンテナ１０８が正常に動作し続けるという利点がある。コンピュータ実装方法は、ステップ２１６で終了する。
【００４０】
図３は、本発明の実施形態に従う、図２の２０８での要求および応答の複製ステップの実装の実施形態のブロック図である。ステップ２０８で、プロダクション・コンテナ１０８へのすべてのトラフィックが、ネットワーク・エッジ１５４上のゲートウェイ１５０機器によって複製され、要求の複製されたコピーが特殊なデバッグ・コンテナ１２８に送信される。同様に、要求が、プロダクション・コンテナ１０８から、ゲートウェイ１５０を介するか、またはセキュア・コネクタ１５２を介して、オンプレミス・クラウド環境またはプライベート・クラウド環境に対して行われた場合、送信要求および送信要求に対する関連する応答のコピーが格納される。したがって、副作用によってデバッグ・コンテナ１２６〜１３０が実行されるのを防ぐために、プロダクション・コンテナが外部の世界に向けて実際の要求を行わずに、保存された応答を提示し、アプリケーションを透過的にデバッグすることができる。
【００４１】
プロダクション・コンテナ１０８は、ネットワーク・エッジ１５４にあるゲートウェイ１５０を介して、クラウド環境からリモート・サーバ３１０に対して、要求を行ってよい。プロダクション・コンテナ１０８は、セキュア・コネクタ１５２を介して、ローカル・サーバに対して要求を行ってもよい。いずれの場合も、ゲートウェイ１５０またはセキュア・コネクタ１５２は、要求のメッセージ・コンテキスト３０２を、リモート・サーバ３１０から受信された応答に関連付け、受信された応答をストア（store）３２０に格納する。その後、デバッグ・コンテナ１２８に関連付けられたストア３２０が、セキュア・コネクタ１６４を介して、デバッグ・コンテナ１２８インスタンスによってアクセスされる。
【００４２】
格納されるメッセージ・コンテキスト３０２データは、トランスポート依存（transport dependent）であるが、行われた要求を一意に識別できる必要がある。一実施形態では、この実施可能要件は、エンドポイント・アドレスおよびヘッダーの何らかの組み合わせであってよく、場合によっては、トランザクションＩＤを含む。
【００４３】
デバッグ・コンテナ１２８内で実行されているコンピュータ・ソフトウェアは、そのソフトウェアの送信要求が、ネットワーク・エッジ１５４にある実際のゲートウェイ１５０でも、セキュア・コネクタ１５２エンドポイントでもなく、ストア３２０にルーティングされてよい。メッセージ・コンテキスト３０２は、格納された応答の検索に使用され、その後、実際のリモート・エンドポイントを実際に呼び出さずに、検索された応答が、リモート・サーバ３１０から来たかのように、デバッグ・コンテナ１２８内で実行されているコンピュータ・ソフトウェアに提供され、それによって、望ましくない副作用を引き起こさないようにすることができる。
【００４４】
デバッグ情報を含んでいる診断データは、Ｗｅｂポータルを介して使用可能にされてよく、さらに、既存の問題チケッティング・システムとの直接的統合を介して、サポート・スタッフが使用できるようにされてよい。
【００４５】
本発明の特殊なデバッグ・コンテナ１２６〜１３０の実施形態は、複数の方法で開始されてよい。図４〜７では、以下の４つの方法が説明されているが、本発明の実施形態はこれら４つの方法に限定されない。デバッグ・コンテナ１２６〜１３０の実際の複製は、クラウド・コントローラ１７２またはオーケストレーション・コンポーネントあるいは同様のものによって制御されてよい。次に、すべてのデバッグ・オプションを提供するために、特殊なデバッグ能力をクラウド・オファリングに提供する、本発明の実施形態の統合について説明する。
【００４６】
図４は、本発明の実施形態に従う、図２のコンピュータ実装方法を呼び出す、第１の、ユーザによって開始されるコンピュータ実装方法のブロック図である。第１の実施形態では、ユーザは、Ｗｅｂ制御パネル４０２を使用して、特定のアプリケーションがデバッグ・モードで実行されることを具体的に要求してよい。第２の実施形態では、ユーザは、デバッグ・モードで実行するために、一定の割合のプロダクション・コンテナ１０６〜１１２を選択してよい。第３の実施形態では、ユーザは、すべての要求がデバッグ・モードで実行されることを要求してよい。これらの実施形態のいずれかにおいて、ユーザが、要求４０４を行うことによって図２のコンピュータ実装方法を開始した場合、クラウド・コントローラ１７２は、要求４０６を介して適切な数のデバッグ・コンテナ１２６〜１３０を開始し、要求がプロダクション・コンテナ１０６〜１１２およびデバッグ・コンテナ１２６〜１３０（例えば、デバッグ・コンテナ１２８）に正しくルーティングされるように、ネットワーク・エッジ１５４にあるゲートウェイ１５０およびセキュア・コネクタ１５２を再構成する。要求の正しいルーティングを確認するために、応答４０６、４０４が、クラウド・コントローラ１７２を介してＷｅｂパネル４０２に返されてよい。
【００４７】
図５は、本発明の実施形態に従う、図２のコンピュータ実装方法を呼び出す、第２の、要求ごとにユーザによって開始されるコンピュータ実装方法のブロック図である。一実施形態では、ユーザは、デバッグ・モードで実行されるべき特定の要求を送信してよく、これは、例えば、メッセージ・データが調査中の問題を引き起こしていると疑われる場合に、役立つことがある。この実施形態では、要求は、デバッグがオンにされるべきであることを示す特殊なＨＴＴＰヘッダーまたはＵＲＩパラメータを含んでよい。図５で、ユーザによって行われた特定の要求５０４が、「特定のエンドポイント上のＧＥＴ」５０２として示されており、この要求は、例えば、「ＧＥＴ／ｍｓｇｆｌｏｗ？ｄｅｂｕｇ  ＝  ｔｒｕｅ」などの要求であってよい。「ｄｅｂｕｇ  ＝  ｔｒｕｅ」の部分は、デバッグがオンにされるべきであることを示す特定のパラメータである。この実施形態では、ユーザが、デバッグ・フラグが有効化された特定の要求をゲートウェイ１５０に送信する場合、ユーザは要求５０８をクラウド・コントローラ１７２に送信する。クラウド・コントローラ１７２は、要求４０６を介して、適切な数のデバッグ・コンテナ１２６〜１３０（例えば、デバッグ・コンテナ１２８）を開始し、要求がプロダクション・コンテナ１０６〜１１２およびデバッグ・コンテナ１２６〜１３０に正しくルーティングされるように、ネットワーク・エッジ１５４にあるゲートウェイ１５０およびセキュア・コネクタ１５２を再構成する。デバッグ・コンテナ１２８が設定されたかどうかを示すために、クラウド・コントローラ１７２およびゲートウェイ１５０への応答４０６および要求５０８が、要求５０４を介してユーザに返される。デバッグ・コンテナ１２８が設定された後に、デバッグ・コンテナ１２８は、ゲートウェイ１５０を介して要求５１０を受信して、応答５１０を送信する。要求が完全に処理された後に、デバッグ・コンテナが自動的に終了され、デバッグ情報がネットワーク・ストレージ１４０またはＳＳＤ１４２に保存されている。
【００４８】
図６は、本発明の実施形態に従う、以前に記録されたメッセージのリプレイを使用して図２のコンピュータ実装方法を呼び出す、第３のコンピュータ実装方法のブロック図である。監査能力であるレコード・アンド・リプレイ１６６が使用可能である場合、デバッグ・コンテナ１２６〜１３０内で実行されているコンピュータ・ソフトウェアで正常に処理されなかったメッセージのリプレイを、自動的にスケジュールすることができる。この実施形態では、デバッグ・コンテナ１２６〜１３０は、プロダクション・コンテナ１０６〜１１２とは独立に実行され、デバッグ・コンテナ１２６〜１３０へのメッセージはバッチ・プロセスとして送信される。レコード・アンド・リプレイ（Ｒ＆Ｒ：Record & Replay）１６６は、要求６０４をクラウド・コントローラ１７２に送信し、クラウド・コントローラ１７２は、要求４０６を介して適切な数のデバッグ・コンテナ１２６〜１３０を開始し、要求がプロダクション・コンテナ１０６〜１１２およびデバッグ・コンテナ１２６〜１３０に正しくルーティングされるように、ネットワーク・エッジ１５４にあるゲートウェイ１５０およびセキュア・コネクタ１５２を再構成する。応答４０６、６０４は、デバッグ・コンテナ１２８が正常に設定されているかどうかを示すために使用される。
【００４９】
図７は、本発明の実施形態に従う、デバッグ・バースト（debug bursting）７０２と呼ばれる、図２のコンピュータ実装方法を呼び出す第４のコンピュータ実装方法のブロック図である。ユーザがプライベート・クラウド環境またはオンプレミス環境においてエラーに遭遇した場合、そのプライベート・クラウド環境またはオンプレミス環境は、プライベート・クラウド環境またはオンプレミス環境のプロダクション・ワークロードに影響を与えずに診断ツールを実行する能力を備えていないことがある。同様に、ユーザは、ホストされたクラウド・オファリングにおいて使用可能な、例えば内部のデバッグ・ビルドに対するアクセス権限などの、特殊機能の一部に対するアクセス権限を、持っていないことがある。この実施形態では、デバッグ・コンテナ１２６、１２８、１３０は、ユーザのオンプレミス・クラウド環境またはプライベート・クラウド環境からユーザによって提供された構成に基づいて、オンデマンドでクラウド・オファリング内で初期化される。プライベート・クラウド１０２環境内のプロダクション・コンテナ１０８、１１０は、デバッグ・バーストを使用して、情報をパブリック・クラウド７０４内のデバッグ・コンテナ１２６〜１３０に送信する。この実施形態では、デバッグ・コンテナ１２６〜１３０は、プロダクション・コンテナ１０８、１１０が含まれているクラウドとは異なるクラウド内にある。
【００５０】
図８は、本発明の実施形態の実装において使用されてよい、例示的なコンピュータ・システム８１２の概略図である。コンピュータ・システム８１２は、適切なコンピュータ・システムの一例に過ぎず、本明細書に記載された本発明の実施形態の使用または機能の範囲に関して、いかなる限定を示唆することも意図されていない。いずれにせよ、コンピュータ・システム８１２は、前述した機能のいずれかを実装すること、または実行すること、あるいはその両方を行うことができる。
【００５１】
コンピュータ・システム／サーバ８１２は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用可能である。コンピュータ・システム／サーバ８１２と共に使用するのに適した周知のコンピューティング・システム、環境、または構成、あるいはその組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークＰＣ、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
【００５２】
コンピュータ・システム／サーバ８１２は、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令との一般的な関連において説明されてよい。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム／サーバ８１２は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境で実行されてよい。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム・ストレージ媒体に配置されてよい。
【００５３】
図８に示すように、コンピュータ・システム／サーバ８１２は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム／サーバ８１２のコンポーネントは、１つまたは複数のプロセッサまたはプロセッシング・ユニット８１６、１つまたは複数のメモリを示しているシステム・メモリ８２８、およびシステム・メモリ８２８を含むさまざまなシステム・コンポーネントをプロセッサ８１６に結合するバス８１８を含むことができるが、これらに限定されない。
【００５４】
バス８１８は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、１つまたは複数の任意の種類のバス構造を表す。例として、そのようなアーキテクチャは、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカル・バス、およびＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを含むが、これらに限定されない。
【００５５】
コンピュータ・システム／サーバ８１２は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ８１２によってアクセスできる任意の使用可能な媒体にすることができ、揮発性および不揮発性媒体、取り外し可能および取り外し不可の媒体を含む。
【００５６】
システム・メモリ８２８は、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）８３０またはキャッシュ・メモリ８３２あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ８１２は、その他の取り外し可能／取り外し不可、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単に例として、取り外し不可、不揮発性の磁気媒体（図示されておらず、通常は「ハード・ドライブ」と呼ばれる）に対する読み取りと書き込みを行うために、ストレージ・システム８３４を提供することができる。図示されていないが、特に、取り外し可能、不揮発性の磁気ディスク（例えば、「フロッピー（Ｒ）・ディスク」）に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを含む１つまたは複数のハードウェア・ストレージ・デバイスを提供することができる。そのような例では、それぞれを、１つまたは複数のデータ媒体インターフェイスによってバス８１８に接続することができる。下で詳細に示され、説明されるように、メモリ８２８は、本発明の実施形態の機能を実行するように構成された一連の（例えば、少なくとも１つの）プログラム・モジュールを備える少なくとも１つのプログラム製品を含むことができる。
【００５７】
例えば、一連の（少なくとも１つの）プログラム・モジュール８４２を含んでいるプログラム／ユーティリティ８４０がメモリ８２８に格納されてよいが、これに限定されず、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも格納されてよい。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの組み合わせは、それぞれネットワーク環境の実装を含むことができる。プログラム・モジュール８４２は、通常、本明細書に記載された本発明の実施形態の機能または方法あるいはその両方を実行する。
【００５８】
また、コンピュータ・システム／サーバ８１２は、キーボード、ポインティング・デバイス、ディスプレイ８２４などの１つまたは複数の外部デバイス８１４、ユーザがコンピュータ・システム／サーバ８１２と情報をやりとりできるようにする１つまたは複数のデバイス、またはコンピュータ・システム／サーバ８１２が１つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、あるいはその組み合わせと通信することもできる。そのような通信は、入出力（Ｉ／Ｏ：Input/Output）インターフェイス８２２を介して行うことができる。さらに、コンピュータ・システム／サーバ８１２は、ローカル・エリア・ネットワーク（ＬＡＮ：Local Area Network）、一般的な広域ネットワーク（ＷＡＮ：Wide Area Network）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組み合わせなどの１つまたは複数のネットワークと、ネットワーク・アダプタ８２０を介して通信することができる。図示されているように、ネットワーク・アダプタ８２０は、バス８１８を介してコンピュータ・システム／サーバ８１２の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム／サーバ８１２と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【００５９】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【００６０】
クラウド・コンピューティングは、構成可能な計算リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス）の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも５つの特徴、少なくとも３つのサービス・モデル、および少なくとも４つのデプロイメント・モデルを含むことができる。
【００６１】
特徴は、次のとおりである。
オンデマンドのセルフ・サービス：クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス：能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、およびＰＤＡ）による利用を促進する。
リソース・プール：プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベル（例えば、国、州、データセンター）では、場所を指定できる場合がある。
迅速な順応性：能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
測定されるサービス：クラウド・システムは、計測機能を活用して、サービスの種類に適した抽象レベル（例えば、ストレージ、処理、帯域幅、アクティブな利用者のアカウント）で、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
【００６２】
サービス・モデルは、次のとおりである。
ＳａａＳ（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）：利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Ｗｅｂブラウザ（例えば、Ｗｅｂベースの電子メール）などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
ＰａａＳ（Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）：利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御する。
ＩａａＳ（Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）：利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、およびデプロイされたアプリケーションを制御し、場合によっては、選択されたネットワーク・コンポーネント（例えば、ホスト・ファイアウォール）を限定的に制御する。
【００６３】
デプロイメント・モデルは、次のとおりである。
プライベート・クラウド：このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド：このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事（例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項）を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド：このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド：このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術（例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト）によって固有の実体を残したまま互いに結合された２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の複合である。
【００６４】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを備えるインフラストラクチャである。
【００６５】
ここで図９を参照すると、本発明の実施形態に従って、クラウド・コンピューティング環境の例９５０が示されている。図示されているように、クラウド・コンピューティング環境９５０は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス（例えば、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）または携帯電話９５４Ａ、デスクトップ・コンピュータ９５４Ｂ、ラップトップ・コンピュータ９５４Ｃ、または自動車コンピュータ・システム９５４Ｎ、あるいはその組み合わせなど）が通信できる１つまたは複数のクラウド・コンピューティング・ノード９１０を備える。ノード９１０は、互いに通信することができる。ノード９１０は、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組み合わせなどの、１つまたは複数のネットワーク内で物理的または仮想的にグループ化されてよい（図示されていない）。これによって、クラウド・コンピューティング環境９５０は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはＳａａＳ、あるいはその組み合わせを提供できる。図９に示されたコンピューティング・デバイス９５４Ａ〜９５４Ｎの種類は、例示のみが意図されており、コンピューティング・ノード９１０およびクラウド・コンピューティング環境９５０は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続（例えば、Ｗｅｂブラウザを使用した接続）あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【００６６】
ここで図１０を参照すると、本発明の実施形態に従って、クラウド・コンピューティング環境（図９の９５０）によって提供される機能的抽象レイヤのセットが示されている。図１０に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【００６７】
ハードウェアおよびソフトウェア・レイヤ１０６０は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム１０６１、ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）アーキテクチャベースのサーバ１０６２、サーバ１０６３、ブレード・サーバ１０６４、ストレージ・デバイス１０６５、ならびにネットワークおよびネットワーク・コンポーネント１０６６が挙げられる。ソフトウェア・コンポーネントの例には、ネットワーク・アプリケーション・サーバ・ソフトウェアが含まれる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア１０６７およびデータベース・ソフトウェア１０６８を含む。
【００６８】
仮想化レイヤ１０７０は、仮想サーバ１０７１、仮想ストレージ１０７２、仮想プライベート・ネットワークを含む仮想ネットワーク１０７３、仮想アプリケーションおよびオペレーティング・システム１０７４、ならびに仮想クライアント１０７５などの仮想的実体を提供できる抽象レイヤを備える。
【００６９】
一例を挙げると、管理レイヤ１０８０は、以下で説明される機能を提供することができる。リソース・プロビジョニング１０８１は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定１０８２は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウドの利用者およびタスクのＩＤ検証を行うとともに、データおよびその他のリソースの保護を行う。ユーザ・ポータル１０８３は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理１０８４は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意（ＳＬＡ：Service Level Agreement）計画および実行１０８５は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、ＳＬＡに従って行う。
【００７０】
ワークロード・レイヤ１０９０は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション１０９１、ソフトウェア開発およびライフサイクル管理１０９２、仮想クラスルーム教育の配信１０９３、データ分析処理１０９４、トランザクション処理１０９５、およびデバッグ情報１０９６の提供が挙げられる。前述したように、図１０に関して示した前記の例は、すべて例示に過ぎず、本発明はこれらの例に限定されない。
【００７１】
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。
【００７２】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー（Ｒ）・ディスク、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、読み取り専用メモリ（ＲＯＭ：read-only memory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasable programmable read-only memoryまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：static random access memory）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read-only memory）、デジタル多用途ディスク（ＤＶＤ：digital versatile disk）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されているコンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一時的信号であると解釈されるべきではない。
【００７３】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ）を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【００７４】
本発明の処理を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：instruction-set-architecture）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）または広域ネットワーク（ＷＡＮ：wide area network）を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate arrays）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：programmable logic arrays）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【００７５】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【００７６】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【００７７】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータ実装プロセスを生成するべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれ、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で一連の動作可能なステップを実行させるものであってもよい。
【００７８】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および処理を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【００７９】
本発明のコンピュータ・プログラム製品は、コンピュータ可読プログラム命令が格納された１つまたは複数のコンピュータ可読ハードウェア・ストレージ・デバイスを備え、前述のプログラム命令は、本発明の方法を実施するために、１つまたは複数のプロセッサによって実行可能である。
【００８０】
本発明のコンピュータ・システムは、１つまたは複数のプロセッサと、１つまたは複数のメモリと、１つまたは複数のコンピュータ可読ハードウェア・ストレージ・デバイスであって、本発明の方法を実施するために、１つまたは複数のメモリを介して１つまたは複数のプロセッサによって実行可能なプログラム命令を含んでいる、１つまたは複数のコンピュータ可読ハードウェア・ストレージ・デバイスとを備える。
【００８１】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に限定されない。記載された実施形態の範囲および思想を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかである。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
【図１】
2019519852.tif 000003
【図２】
2019519852.tif 000004
【図３】
2019519852.tif 000005
【図４】
2019519852.tif 000006
【図５】
2019519852.tif 000007
【図６】
2019519852.tif 000008
【図７】
2019519852.tif 000009
【図８】
2019519852.tif 000010
【図９】
2019519852.tif 000011
【図１０】
2019519852.tif 000012
【国際調査報告】
2019519852.tif 000013
2019519852.tif 000014