(57)【要約】  ユーザのアプリケーションの開発および実行をどのように最適化するかに関する勧告を提供することができるツールをユーザに提供するための方法およびシステムを提供する。診断および最適化方法、システムおよびエンジンは、例えばユーザのアプリケーションの構築、展開、リリースおよび実行に関連付けられたさまざまなデータを取込み、このようなデータを利用して、どのようにユーザが高いリリース生産性と、管理のしやすさと、コスト最適化とのバランスを最適にとることができるかに関する勧告／提案を生成する。当該方法およびシステムは、ユーザの開発プロセスの端から端まで（例えば、ユーザがコードを提出したときから、アプリケーションが実際にアップされて実行されるときまで）のストーリを利用して、ユーザがシステムを最適化できる方法に関する勧告を生成する。当該勧告は、例えば、どのようにユーザがアプリケーショントポロジを異なったようにレイアウトできるか、どのようにユーザが待ち時間を減少させることができるか、どのようにユーザがデータ局所性を増大させることができるか、または、どのようにユーザが課金コストを最適化できるかを含む。
2017506400.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによって実行される方法であって、
アプリケーションに関連付けられたリリースワークフローデータを取得するステップ（３０５）と、
前記アプリケーションに関連付けられたプロダクションワークロードデータを取得するステップ（３１５）と、
前記リリースワークフローデータおよび前記プロダクションワークロードデータをデータベースに格納するステップ（３１０，３２０）と、
前記アプリケーションのために取得された前記リリースワークフローデータおよび前記プロダクションワークロードデータを、１つ以上の他のアプリケーションに関連付けられたデータと組み合わせるステップ（３２５）と、
前記組み合わせられたデータを分析して、診断および最適化の勧告を生成するステップ（３３０）と、
前記生成された勧告を前記ユーザに提供するステップ（３３５）とを備える、方法。
【請求項２】
１つ以上の他のアプリケーションに関連付けられた前記データは、１つ以上の他のアプリケーションに関連付けられた価格設定データを含む、請求項１に記載の方法。
【請求項３】
前記アプリケーションに関連付けられたリリースワークフローデータを取得するステップは、
前記アプリケーションのために規定されたパイプラインの１つ以上のステージの実行に関連付けられたデータを取込むステップを含む、請求項１に記載の方法。
【請求項４】
前記アプリケーションに関連付けられた前記リリースワークフローデータは、前記アプリケーションの構築に関連付けられたデータ、前記アプリケーションの展開に関連付けられたデータ、および前記アプリケーションのリリースに関連付けられたデータのうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項５】
前記アプリケーションに関連付けられたプロダクションワークロードデータを取得するステップは、
前記アプリケーションが展開されたと判断するステップと、
前記展開されたアプリケーションをモニタリングするステップと、
前記展開されたアプリケーションの前記モニタリングに基づいてデータを生成するステップとを含む、請求項１に記載の方法。
【請求項６】
前記展開されたアプリケーションをモニタリングするステップは、前記展開されたアプリケーションによって利用されているリソースの量を判断するステップを含む、請求項５に記載の方法。
【請求項７】
前記展開されたアプリケーションをモニタリングするステップは、前記展開されたアプリケーションにわたる利用されるリソースの割当てを判断するステップを含む、請求項５に記載の方法。
【請求項８】
前記１つ以上の他のアプリケーションに関連付けられた前記価格設定データは、前記アプリケーションとは別の１つ以上のソースから取得される、請求項２に記載の方法。
【請求項９】
前記生成された勧告を前記ユーザに提供するステップは、前記ユーザによってアクセス可能なユーザインターフェイススクリーンに表示されるように前記勧告を提供するステップを含む、請求項１に記載の方法。
【請求項１０】
システムであって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサに結合された非一時的なコンピュータ読取可能な媒体とを備え、前記コンピュータ読取可能な媒体は、命令を格納し、前記命令は、前記１つ以上のプロセッサによって実行されたときに、前記１つ以上のプロセッサにオペレーションを実行させ、前記オペレーションは、
アプリケーションに関連付けられたリリースワークフローデータを取得すること（３０５）と、
前記アプリケーションに関連付けられたプロダクションワークロードデータを取得すること（３１５）と、
前記リリースワークフローデータおよび前記プロダクションワークロードデータをデータベースに格納すること（３１０，３２０）と、
前記アプリケーションのために取得された前記リリースワークフローデータおよび前記プロダクションワークロードデータを、１つ以上の他のアプリケーションに関連付けられたデータと組み合わせること（３２５）と、
前記組み合わせられたデータを分析して、診断および最適化の勧告を生成すること（３３０）と、
前記生成された勧告を前記ユーザに提供すること（３３５）とを備える、システム。
【請求項１１】
１つ以上の他のアプリケーションに関連付けられた前記データは、１つ以上の他のアプリケーションに関連付けられた価格設定データを含む、請求項１０に記載のシステム。
【請求項１２】
前記１つ以上のプロセッサは、さらに他のオペレーションを実行するようにされ、前記さらに他のオペレーションは、
前記アプリケーションのために規定されたパイプラインの１つ以上のステージの実行に関連付けられたデータを取込むことを備える、請求項１０に記載のシステム。
【請求項１３】
前記アプリケーションに関連付けられた前記リリースワークフローデータは、前記アプリケーションの構築に関連付けられたデータ、前記アプリケーションの展開に関連付けられたデータ、および前記アプリケーションのリリースに関連付けられたデータのうちの少なくとも１つを含む、請求項１０に記載のシステム。
【請求項１４】
前記１つ以上のプロセッサは、さらに他のオペレーションを実行するようにされ、前記さらに他のオペレーションは、
前記アプリケーションが展開されたと判断することと、
前記展開されたアプリケーションをモニタリングすることと、
前記展開されたアプリケーションの前記モニタリングに基づいてデータを生成することとを備える、請求項１０に記載のシステム。
【請求項１５】
前記１つ以上のプロセッサは、さらに他のオペレーションを実行するようにされ、前記さらに他のオペレーションは、
前記展開されたアプリケーションによって利用されているリソースの量を判断することを備える、請求項１４に記載のシステム。
【請求項１６】
前記１つ以上のプロセッサは、さらに他のオペレーションを実行するようにされ、前記さらに他のオペレーションは、
前記１つ以上の他のアプリケーションに関連付けられた価格設定データを、前記アプリケーションとは別の１つ以上のソースから取得することを備える、請求項１１に記載のシステム。
【請求項１７】
前記１つ以上のプロセッサは、さらに他のオペレーションを実行するようにされ、前記さらに他のオペレーションは、
前記ユーザによってアクセス可能なユーザインターフェイススクリーンを生成することと、
前記ユーザインターフェイススクリーンに表示されるように前記勧告を提供することとを備える、請求項１０に記載のシステム。
【請求項１８】
コンピュータによって実行可能な命令を格納する１つ以上の非一時的なコンピュータ読取可能な媒体であって、前記コンピュータによって実行可能な命令は、１つ以上のプロセッサによって実行されたときに、前記１つ以上のプロセッサにオペレーションを実行させ、前記オペレーションは、
アプリケーションに関連付けられたリリースワークフローデータを取得すること（３０５）と、
前記アプリケーションに関連付けられたプロダクションワークロードデータを取得すること（３１５）と、
前記リリースワークフローデータおよび前記プロダクションワークロードデータをデータベースに格納すること（３１０，３２０）と、
前記アプリケーションのために取得された前記リリースワークフローデータおよび前記プロダクションワークロードデータを、１つ以上の他のアプリケーションに関連付けられたデータと組み合わせること（３２５）と、
前記組み合わせられたデータを分析して、診断および最適化の勧告を生成すること（３３０）と、
前記生成された勧告を前記ユーザに提供すること（３３５）とを備える、１つ以上の非一時的なコンピュータ読取可能な媒体。
【請求項１９】
前記コンピュータによって実行可能な命令は、前記１つ以上のプロセッサによって実行されたときに、前記１つ以上のプロセッサにさらに他のオペレーションを実行させ、前記さらに他のオペレーションは、
前記アプリケーションのために規定されたパイプラインの１つ以上のステージの実行に関連付けられたデータを取込むことを備える、請求項１８に記載の１つ以上の非一時的なコンピュータ読取可能な媒体。
【請求項２０】
前記コンピュータによって実行可能な命令は、前記１つ以上のプロセッサによって実行されたときに、前記１つ以上のプロセッサにさらに他のオペレーションを実行させ、前記さらに他のオペレーションは、
前記アプリケーションが展開されたと判断することと、
前記展開されたアプリケーションをモニタリングすることと、
前記展開されたアプリケーションの前記モニタリングに基づいてデータを生成することとを備える、請求項１８に記載の１つ以上の非一時的なコンピュータ読取可能な媒体。
【請求項２１】
１つ以上の他のアプリケーションに関連付けられた前記データは、１つ以上の他のアプリケーションに関連付けられた価格設定データを含む、請求項１８に記載の１つ以上の非一時的なコンピュータ読取可能な媒体。
【請求項２２】
前記アプリケーションに関連付けられた前記リリースワークフローデータは、前記アプリケーションの構築に関連付けられたデータ、前記アプリケーションの展開に関連付けられたデータ、および前記アプリケーションのリリースに関連付けられたデータのうちの少なくとも１つを含む、請求項１８に記載の１つ以上の非一時的なコンピュータ読取可能な媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
クラウドは、ユーザのワークロードをスケーリングするための新たな機能をユーザに提供する。リリースワークフローは、当該機能から大いに利益を得る。例えば、ハードウェアリソースによって課される制約がもはやないので、今ではさまざまなシナリオのテストを並行して行うことができる。
【０００２】
しかし、このスケーリングは、適切に管理されなければコストが高くなる可能性がある。クラウドの顧客は、コストに対する意識が非常に高くなってきている。クラウドの顧客は、高いリリース生産性と、管理のしやすさと、コスト最適化とのバランスをとることができることを望んでいる。クラウドリリースパイプラインの最適化に寄与し得る要因は数多くあり、例えば、パイプライントポロジ、リリーススケジュール、スケーリング規則、自動化レベル、選択されたリソース、価格設定オプション、および支払方法を含む。これらの要因の全てを把握してそれらを最適なセットアップに調整することは、手動で行うのは困難である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
概要
この概要は、本開示のいくつかの態様の基本的理解を与えるために、単純化された形態で一連の概念を紹介している。この概要は、本開示の広範な概略ではなく、本開示の重要もしくは不可欠な要素を特定することを意図したものではなく、または本開示の範囲を描写することを意図したものでもない。この概要は、単に、本開示の概念のうちのいくつかを、以下に提供される詳細な説明への前置きとして提示しているに過ぎない。
【課題を解決するための手段】
【０００４】
本開示は、一般に、オンラインサービスをユーザに提供するための方法およびシステムに関する。より具体的には、本開示の態様は、ユーザのアプリケーションの開発および実行の最適化に関する勧告を受取ることができる機能をユーザに提供することに関する。
【０００５】
本開示の一実施例は、コンピュータによって実行される方法に関し、上記方法は、アプリケーションに関連付けられたリリースワークフローデータを取得するステップと、上記アプリケーションに関連付けられたプロダクションワークロードデータを取得するステップと、上記リリースワークフローデータおよび上記プロダクションワークロードデータをデータベースに格納するステップと、上記アプリケーションのために取得された上記リリースワークフローデータおよび上記プロダクションワークロードデータを、１つ以上の他のアプリケーションに関連付けられたデータと組み合わせるステップと、上記組み合わせられたデータを分析して、診断および最適化の勧告を生成するステップと、上記生成された勧告を上記ユーザに提供するステップとを備える。
【０００６】
別の実施例では、上記アプリケーションに関連付けられたリリースワークフローデータを取得するステップは、上記アプリケーションのために規定されたパイプラインの１つ以上のステージの実行に関連付けられたデータを取込むステップを含む。
【０００７】
さらに別の実施例では、上記アプリケーションに関連付けられたプロダクションワークロードデータを取得するステップは、上記アプリケーションが展開されたと判断するステップと、上記展開されたアプリケーションをモニタリングするステップと、上記展開されたアプリケーションの上記モニタリングに基づいてデータを生成するステップとを含む。
【０００８】
別の実施例では、上記展開されたアプリケーションをモニタリングするステップは、上記展開されたアプリケーションによって利用されているリソースの量を判断するステップを含む。
【０００９】
さらに別の実施例では、上記展開されたアプリケーションをモニタリングするステップは、上記展開されたアプリケーションにわたる利用されるリソースの割当てを判断するステップを含む。
【００１０】
別の実施例では、上記生成された勧告を上記ユーザに提供するステップは、上記ユーザによってアクセス可能なユーザインターフェイススクリーンに表示されるように上記勧告を提供するステップを含む。
【００１１】
本開示の別の実施例は、システムに関し、上記システムは、１つ以上のプロセッサと、上記１つ以上のプロセッサに結合された非一時的なコンピュータ読取可能な媒体とを備え、上記コンピュータ読取可能な媒体は、命令を格納し、上記命令は、上記１つ以上のプロセッサによって実行されたときに、上記１つ以上のプロセッサにオペレーションを実行させ、上記オペレーションは、アプリケーションに関連付けられたリリースワークフローデータを取得することと、上記アプリケーションに関連付けられたプロダクションワークロードデータを取得することと、上記リリースワークフローデータおよび上記プロダクションワークロードデータをデータベースに格納することと、上記アプリケーションのために取得された上記リリースワークフローデータおよび上記プロダクションワークロードデータを、１つ以上の他のアプリケーションに関連付けられたデータと組み合わせることと、上記組み合わせられたデータを分析して、診断および最適化の勧告を生成することと、上記生成された勧告を上記ユーザに提供することとを備える。
【００１２】
別の実施例では、上記システムの上記１つ以上のプロセッサは、さらに他のオペレーションを実行するようにされ、上記さらに他のオペレーションは、上記アプリケーションのために規定されたパイプラインの１つ以上のステージの実行に関連付けられたデータを取込むことを備える。
【００１３】
さらに別の実施例では、上記システムの上記１つ以上のプロセッサは、さらに他のオペレーションを実行するようにされ、上記さらに他のオペレーションは、上記アプリケーションが展開されたと判断することと、上記展開されたアプリケーションをモニタリングすることと、上記展開されたアプリケーションの上記モニタリングに基づいてデータを生成することとを備える。
【００１４】
さらに別の実施例では、上記システムの上記１つ以上のプロセッサは、さらに他のオペレーションを実行するようにされ、上記さらに他のオペレーションは、上記展開されたアプリケーションによって利用されているリソースの量を判断することを備える。
【００１５】
さらに別の実施例では、上記システムの上記１つ以上のプロセッサは、さらに他のオペレーションを実行するようにされ、上記さらに他のオペレーションは、上記１つ以上の他のアプリケーションに関連付けられた価格設定データを、上記アプリケーションとは別の１つ以上のソースから取得することを備える。
【００１６】
別の実施例では、上記システムの上記１つ以上のプロセッサは、さらに他のオペレーションを実行するようにされ、上記さらに他のオペレーションは、上記ユーザによってアクセス可能なユーザインターフェイススクリーンを生成することと、上記ユーザインターフェイススクリーンに表示されるように上記勧告を提供することとを備える。
【００１７】
本開示のさらに別の実施例は、コンピュータによって実行可能な命令を格納する１つ以上の非一時的なコンピュータ読取可能な媒体に関し、上記コンピュータによって実行可能な命令は、１つ以上のプロセッサによって実行されたときに、上記１つ以上のプロセッサにオペレーションを実行させ、上記オペレーションは、アプリケーションに関連付けられたリリースワークフローデータを取得することと、上記アプリケーションに関連付けられたプロダクションワークロードデータを取得することと、上記リリースワークフローデータおよび上記プロダクションワークロードデータをデータベースに格納することと、上記アプリケーションのために取得された上記リリースワークフローデータおよび上記プロダクションワークロードデータを、１つ以上の他のアプリケーションに関連付けられたデータと組み合わせることと、上記組み合わせられたデータを分析して、診断および最適化の勧告を生成することと、上記生成された勧告を上記ユーザに提供することとを備える。
【００１８】
１つ以上の他の実施例では、本明細書に記載されている方法、システムおよびコンピュータ読取可能な媒体は、以下のさらに他の特徴のうちの１つ以上を任意に含み得る。１つ以上の他のアプリケーションに関連付けられた上記データは、１つ以上の他のアプリケーションに関連付けられた価格設定データを含み、上記アプリケーションに関連付けられた上記リリースワークフローデータは、上記アプリケーションの構築に関連付けられたデータ、上記アプリケーションの展開に関連付けられたデータ、および上記アプリケーションのリリースに関連付けられたデータのうちの少なくとも１つを含み、および／または、上記１つ以上の他のアプリケーションに関連付けられた上記価格設定データは、上記アプリケーションとは異なる１つ以上のソースから取得される。
【００１９】
本開示の適用可能性のさらに他の範囲は、以下に提供される詳細な説明から明らかになるであろう。しかし、本開示の精神および範囲の範囲内のさまざまな変更および変形がこの詳細な説明から当業者に明らかになるので、詳細な説明および具体的な例は、好ましい実施例を示しているが、単に例示として提供されているに過ぎないということが理解されるべきである。
【００２０】
本開示のこれらのおよび他の目的、特徴および特性は、全てが本明細書の一部を構成する添付の特許請求の範囲および図面とともに以下の詳細な説明を検討することにより当業者により明らかになるであろう。
【００２１】
本明細書に記載されている見出しは、単に便宜上のものであるに過ぎず、本開示に記載されているものの範囲または意味に必ずしも影響を及ぼすものではない。
【００２２】
理解を容易にするため、および便宜上、図中の同一の参照番号およびいかなる頭字語も、同一または同様の構造または機能を有する要素または行為を特定する。図面は、以下の詳細な説明の中で詳細に説明されている。
【図面の簡単な説明】
【００２３】
【図１】本明細書に記載されている１つ以上の実施例に係る例示的なクラウドコンピューティング環境を示すブロック図である。
【図２】本明細書に記載されている１つ以上の実施例に係るシステムの構成要素間の例示的なデータフローを含むクラウドリリースパイプラインの診断および最適化のための例示的なシステムを示す概略図である。
【図３】本明細書に記載されている１つ以上の実施例に係るユーザのアプリケーションの開発および実行に関連付けられたデータに基づいて診断および最適化の勧告をユーザに提供するための例示的な方法を示すフローチャートである。
【図４】本明細書に記載されている１つ以上の実施例に係る例示的なクラウド管理コンソールを示すユーザインターフェイスである。
【図５】本明細書に記載されている１つ以上の実施例に係るクラウド管理コンソールの別の例を示すグラフィカルユーザインターフェイススクリーンである。
【図６】本明細書に記載されている１つ以上の実施例に係るクラウド管理コンソールの別の例を示すグラフィカルユーザインターフェイススクリーンである。
【図７】本明細書に記載されている１つ以上の実施例に係るユーザのアプリケーションの開発および実行をどのように最適化するかに関する勧告を受取ることができる機能をユーザに提供するように配置された例示的なコンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【００２４】
詳細な説明
ここで、さまざまな例および実施例について説明する。以下の説明は、これらの例を完全に理解してこれらの例の説明を可能にするための具体的な詳細を提供している。しかし、本明細書に記載されている１つ以上の実施例は、これらの詳細のうちの多くがなくても実施できることを当業者は理解するであろう。同様に、本開示の１つ以上の実施例は、本明細書に詳細に記載されていない多くの他の自明な特徴を含み得ることも当業者は理解するであろう。さらに、関連する説明を不必要に曖昧にすることを回避するために、いくつかの周知の構造または機能については、以下で詳細に図示または説明していない。
【００２５】
クラウドコンピューティングの出現により、より多くのアプリケーション開発プロセスをオンラインで行う機会がある。例えば、開発者のアプリケーションソースコード、構築、どのようにアプリケーションが展開されているか、どこにアプリケーションが展開されているか、いつアプリケーションが重／軽負荷下で実行されるかなどに関する知識を持つことにより、アプリケーションの開発プロセスについての関連するデータを収集することが可能になる。このような収集されたデータは、どのように展開、ソースコードコンフィギュレーションなどを最適化するかに関する勧告を開発者に提供するために使用されることができる。
【００２６】
本開示の実施例は、ユーザのアプリケーションの開発および実行の最適化に関する勧告を提供することができるツールをユーザに提供するための方法およびシステムに関する。例えば、本明細書に記載されている１つ以上の実施例に従って、診断および最適化エンジンは、例えばアプリケーションの構築、展開、リリースおよび実行に関連付けられたさまざまなデータを取込み、このようなデータを利用して、どのようにユーザ（例えば、アプリケーションの開発者）が高いリリース生産性と、管理のしやすさと、コスト最適化とのバランスを最適にとることができるかに関する勧告／提案を生成し得る。
【００２７】
以下により詳細に記載されるように、本開示の方法およびシステムは、ユーザのアプリケーションのための展開パイプラインのさまざまなステージ中に収集されたデータに基づいて診断および最適化の提案を受取ることができる機能をユーザ（例えば、顧客、加入者、開発者など）に提供する。ユーザのアプリケーションおよび優先事項が時間とともに変化するにつれて、ユーザは、最適化を再調整して、何らかの状況を仮定したシナリオを実行して、トレードオフを理解することも必要である。例えば、多くのクラウドプロバイダは、使用量が経時的に一定であると想定した予約を提供する。しかし、それは、大半のワークロードが実際にどのように作用するかということではない。したがって、本明細書に記載されている１つ以上の実施例は、顧客の開発ワークフローの知識を利用して、一定でない使用量パターンのための予約パッケージを提供する。
【００２８】
本開示の方法およびシステムは、ユーザの開発プロセスの端から端まで（例えば、ユーザがコードを提出したときから、アプリケーションが実際にアップされて実行されるときまで）のストーリを利用して、ユーザがシステムを最適化できる方法に関する勧告を生成する。例えば、勧告は、どのようにユーザがアプリケーショントポロジを異なったようにレイアウトできるか、どのようにユーザが待ち時間を減少させることができるか、どのようにユーザがデータ局所性を増大させることができるか、またはさらには、どのようにユーザが課金コストを最適化できるかに関してなされてもよい。例えば、本明細書に記載されている最適化エンジンは、一般にユーザがこのようなリソースを利用する期間中は、他の期間中よりもさまざまなクラウドリソースが高価であると判断することができる。したがって、最適化エンジンは、（例えば、国の異なる場所では）より低い価格を利用するためにユーザが既存のワークロードを調節するよう勧告することができる。
【００２９】
図１は、本開示の１つ以上の実施例を実現することができる例示的なクラウドコンピューティング環境１００である。クラウドコンピューティング環境１００は、１つ以上のネットワークまたはクラウドコンピューティングノード１２０，１２５を含み得て、当該ノード１２０，１２５と、エンドノード１０５ａ，１０５ｂ，１０５ｃ，１０５ｎ（ｎは任意の数）とが通信し得る。エンドノード１０５ａ，１０５ｂ，１０５ｃ，１０５ｎ（例えば、ローカルコンピューティングデバイス、ユーザデバイスなど）は、例えば、タブレットコンピュータ（１０５ａ）、ラップトップコンピュータ（１０５ｂ）などの携帯型コンピューティングデバイス、デスクトップコンピュータ（１０５ｃ）、パーソナルデジタルアシスタント（personal digital assistant：ＰＤＡ）（１０５ｎ）、携帯電話、スマートフォンなどを含み得る。図１に示される特定のエンドノード（１０５ａ，１０５ｂ，１０５ｃ，１０５ｎ）は、クラウドコンピューティングノード１２０，１２５と通信することができるタイプのデバイスのいくつかの例に過ぎず、多数の他のタイプのエンドノードも、さまざまな異なるネットワークおよび／またはネットワークアドレス可能な接続（例えば、ウェブブラウザ）を介してクラウドコンピューティング環境１００と通信してもよい、ということが理解されるべきである。
【００３０】
図２は、クラウドリリースパイプラインに診断および最適化の勧告を提供するための例示的なシステム２００である。本明細書に記載されている１つ以上の実施例に従って、システム２００は、診断および最適化エンジン２５０と、パイプラインマネージャ２４０と、アプリケーション２３０（例えば、ウェブアプリケーション）とを含み得る。
【００３１】
以下により詳細に記載されるように、ユーザは、アプリケーションのための「パイプライン」を規定することができる。例えば、ユーザ２０５は、アプリケーション２３０に関するさまざまなデータ（例えば、アプリケーションのためのパイプラインを規定するデータ（２６０））をパイプラインマネージャ２４０に提供することによってアプリケーション２３０のためのパイプラインを規定してもよい。本明細書に記載されている１つ以上の実施例に従って、パイプラインを規定するためにユーザによって提供され得るデータは、例えば、どのようにアプリケーション２３０が構築されるべきであるか、どのようにおよびどこにアプリケーション２３０が展開されるべきであるか、どのぐらいの頻度でアプリケーション２３０がリリースされるべきであるか、アプリケーション２３０の前回のリリースに戻るための条件などを指定するデータを含み得る。
【００３２】
本開示の１つ以上の実施例に従って、ユーザ２０５は、アプリケーションのためのパイプラインを規定するデータ（２６０）をウェブベースのユーザインターフェイスエディタ（例えば、図４〜図６に示され、以下にさらに詳細に記載されるクラウド管理コンソールユーザインターフェイス４００，５００および６００）を介して提供することができる。例えば、ユーザインターフェイスエディタは、パイプラインマネージャ２４０に関連付けられてもよく、ユーザがアプリケーションの開発、テスト、生産および展開に関連付けられたさまざまなデータを入力および提出することを可能にするように構成された１つ以上のコンソールを含んでいてもよい。
【００３３】
図４〜図６は、本明細書に記載されている方法およびシステムのうちの１つ以上を実現する際に使用可能な例示的なユーザインターフェイスを示す。例えば、ユーザは、ユーザがユーザのアプリケーションのためのパイプラインをセットアップ、提出および管理することを可能にするために、クラウド管理コンソール（図４、図５および図６のユーザインターフェイススクリーン４００，５００および６００にそれぞれ図示）を備えていてもよい。本開示の１つ以上の実施例に従って、ユーザは、単一のダッシュボードからのクラウド展開および資源の全てをモニタリング、比較および最適化することができる能力を備えている。
【００３４】
図４〜図６に示される例示的なユーザインターフェイスのさまざまな特徴および構成要素は、アプリケーション「ＴａｃｏＴｒｕｃｋ」を伴う例示的なシナリオの文脈において記載されており、アプリケーション「ＴａｃｏＴｒｕｃｋ」は、規定されたパイプライン（例えば、図４に示される例示的なユーザインターフェイススクリーン４００におけるパイプライン４０５）を含む。例示的なアプリケーション、ユーザインターフェイスの構成要素（例えば、リリース（４１０，５１０，６１０）、アプリケーション環境（４１５，５１５，６１５）、許可（４２０，５２０，６２０）など）、パイプラインの構成要素（例えば、リリース（４３０）、展開ステージ（４４０）など）、および図４〜図６に示される他のコンテンツを含むこの特定のシナリオは、単に例示の目的であり、本開示の範囲を限定することを意図したものでは決してないということが理解されるべきである。
【００３５】
（例えば、図２に示される例示的なシステム２００においてパイプラインマネージャ２４０を介してアプリケーション２３０のユーザ２０５によって）パイプラインがアプリケーションのためにセットアップされると、規定されたパイプラインを利用することができる。例えば、ユーザは、さまざまな予め規定された機構のうちのいずれか（例えば、ソースコードを提出する、ボタンをクリックする、指定の日付および／または時刻まで待機する、など）によってパイプラインの実行をトリガしてもよい。パイプラインが実行されると、パイプラインは、アプリケーションを構築、テストおよび展開するように（例えば、ユーザ２０５によって）構成された全てのオペレーションを実行する。
【００３６】
本明細書に記載されている１つ以上の実施例に従って、本開示の診断および最適化システム２００は、所与のアプリケーションのために規定されたパイプラインの実行に関連付けられたデータ（例えば、パイプラインの１つ以上のステージの実行に関連付けられたデータであり、「ステージ」は、コアタスク（例えば、構築、展開、テスト）と、１つ以上のプロジェクト（例えば、複数の開発またはテストプロジェクト）であり得るターゲット上のゲートとで構成され得る）を取込む（例えば、取得、検索、受信など）ことができる。システム２００によって取込まれるまたは取得されることができるパイプラインの実行に関連付けられたデータは、本明細書では「リリースワークフローデータ」と呼ぶこともある。アプリケーションに関連付けられたリリースワークフローデータ（２７０）は、例えば、アプリケーションの構築に関連付けられたデータ、アプリケーションの展開に関連付けられたデータ、アプリケーションのリリースに関連付けられたデータなどを含み得る。少なくとも１つの実施例に従って、パイプラインがそのオペレーションを実行すると、システム２００は、取込まれたリリースワークフローデータを（例えば、システム２００に含まれるまたは関連付けられる１つ以上のデータベースに）格納することができる。
【００３７】
また、診断および最適化システム２００は、アプリケーションに関連付けられたプロダクションワークロードデータ（２７５）を取込むように構成されてもよい。例えば、本明細書に記載されている１つ以上の実施例に従って、ユーザのアプリケーション（２３０）が展開された後、診断および最適化システム２００は、「プロダクションワークロードデータ」を取得してもよく、当該「プロダクションワークロードデータ」は、例えば、ランタイムデータ、診断データ、モニタリングデータなどを含み得る。
【００３８】
別の例では、診断および最適化システム２００は、ユーザのアプリケーションが展開されたと判断し、展開されたアプリケーションをモニタリングし、このモニタリングに基づいてさまざまなプロダクションワークロードデータ（２７５）を生成してもよい。少なくとも１つの実施例に従って、システムは、展開されたアプリケーションをモニタリングするときに、例えばアプリケーションによって利用されているリソースの量、どのようにおよびどこでリソースがアプリケーションによって使用されているか（例えば、アプリケーションにわたる利用されるリソースの割当て）などを判断することができる。上記のリリースワークフローデータ（２７０）と同様に、取込まれたプロダクションワークロードデータ（２７５）も、システムによって（例えば、１つ以上のデータベースに）格納されることができる。
【００３９】
リリースワークフローデータ（２７０）およびプロダクションワークロードデータ（２７５）を用いて、システム２００は、（例えば、診断および最適化エンジン２５０を介して）ユーザのアプリケーションを分析し、どのようにユーザがアプリケーションを最適化できるかに関するさまざまな提案／勧告を生成することができる。少なくとも１つの実施例に従って、システム２００は、リリースワークフローデータ（２７０）およびプロダクションワークロードデータ（２７５）を、アプリケーション２３０のために取得される価格設定データ（２８０）と組み合わせることができる。このような価格設定データ（２８０）は、アプリケーション２３０に関連付けられてもよく、または１つ以上の他のアプリケーションに関連付けられてもよい。例えば、システム２００は、世界中のさまざまなデータセンタにおいてアプリケーションを実行するのにどれぐらいのコストがかかるかに関するデータなどの価格設定データを他のデータソースから取得するように構成されてもよい。
【００４０】
システム２００がデータ（例えば、リリースワークフローデータ（２７０）、プロダクションワークロードデータ（２７５）、価格設定データ（２８０）および／またはこれらの任意の組み合わせ）を分析すると、システム２００は、１つ以上の診断および最適化の勧告（２９０）を生成することができる。例えば、システム２００は、ユーザ２０５がアプリケーションをよりコストがかかるデータセンタに展開しており、異なる領域を使用することによってコストを削減できる、と判断し得る。別の例として、システム２００は、ユーザのアプリケーション２３０が（他のデータセンタと比較して）特定のデータセンタにおいてより多くのトラフィックを受けており、そのため、ユーザ２０５は、当該データセンタにより多くのレプリカ／インスタンスを置くことによってＣＰＵ負荷を減少させることができる、と判断し得る。１つ以上の実施例に従って、診断および最適化の勧告（２９０）は、使用量（例えば、特定の既存のリソースを再利用できるか、または引退させることができるか）、性能（例えば、よりよい態様でリソースをサイズ決め（拡張／縮小）することができるか否か）、コスト（例えば、予約価格設定を利用すべきか否か）、ユーザのプロダクションワークロードおよびリリースワークフローの理解に関連する多数の他の要因、ならびにクラウド価格設定オプションおよび可用性に関して、生成および提供されることができる。
【００４１】
図３は、ユーザのアプリケーションの開発および実行をどのように最適化するかに関する勧告をユーザに提供するための例示的なプロセスを示す。少なくとも１つの実施例に従って、例示的なプロセス３００は、診断および最適化エンジン（例えば、図２に示される例示的なシステム２００における診断および最適化エンジン２５０）によって実行されることができる。
【００４２】
ブロック３０５において、アプリケーションに関連付けられたリリースワークフローデータを取得することができる。例えば、少なくとも１つの実施例に従って、診断および最適化エンジンは、アプリケーションに関連付けられたリリースワークフローデータ（例えば、図２に示される例示的なシステム２００における診断および最適化エンジン２５０によってパイプラインマネージャ２４０から取得された、アプリケーション２３０に関連付けられたリリースワークフローデータ（２７０））をパイプラインマネージャから取得してもよい。ブロック３１０において、ブロック３０５で取得されたリリースワークフローデータを（例えば、図２に示される例示的なシステム２００に含まれるまたは接続される１つ以上のデータベースに）格納することができる。
【００４３】
ブロック３１５において、アプリケーションに関連付けられたプロダクションワークロードデータを取得することができる。例えば、少なくとも１つの実施例に従って、ユーザのアプリケーションが展開されたと判断し、展開されたアプリケーションをモニタリングし、このモニタリングに基づいてさまざまなプロダクションワークロードデータ（例えば、図２に示される例示的なシステム２００における診断および最適化エンジン２５０によってパイプラインマネージャ２４０から取得された、アプリケーション２３０に関連付けられたプロダクションワークロードデータ（２７５））を生成するように設計された診断および最適化エンジンによって、プロダクションワークフローデータが取込まれてもよい。少なくとも１つの実施例に従って、ブロック３１５で取得されることができるプロダクションワークロードデータは、例えば、アプリケーションによって利用されているリソースの量、どのようにおよびどこでリソースがアプリケーションによって使用されているか（例えば、アプリケーションにわたる利用されるリソースの割当て）などを含み得る。ブロック３２０において、ブロック３１５で取得されたプロダクションワークロードデータを（例えば、図２に示される例示的なシステム２００に含まれるまたは接続される１つ以上のデータベースに）格納することができる。
【００４４】
ブロック３２５において、アプリケーションのためにブロック３０５で取得されたリリースワークフローデータおよびアプリケーションのためにブロック３１５で取得されたプロダクションワークロードデータを、１つ以上の他のアプリケーションに関連付けられたデータと組み合わせることができる。例えば、少なくとも１つの実施例に従って、ブロック３２５において、リリースワークフローデータおよびプロダクションワークロードデータは、アプリケーションのために取得された価格設定データ（例えば、図２に示される例示的なシステム２００における価格設定データ（２８０））と組み合わせられてもよい。このような価格設定データは、例えば、アプリケーションに関連付けられてもよく、または１つ以上の他のアプリケーションに関連付けられてもよい。例えば、ブロック３２５において、価格設定データは、アプリケーションとは別の（例えば、図２に示される例示的なシステム２００の外側の）１つ以上のデータソースから取得されてもよい。
【００４５】
ブロック３３０において、組み合わせられたデータ（例えば、アプリケーションのためにブロック３０５で取得されたリリースワークフローデータ、アプリケーションのためにブロック３１５で取得されたプロダクションワークロードデータ、およびブロック３２５で取得された、１つ以上の他のアプリケーションに関連付けられたデータ（例えば、価格設定データ））を分析して、１つ以上の診断および最適化の勧告（例えば、図２に示される例示的なシステム２００における診断および最適化の勧告（２９０））を生成することができる。
【００４６】
ブロック３３５において、ブロック３３０で生成された診断および最適化の勧告をユーザに提供することができる。例えば、少なくとも１つの実施例に従って、ブロック３３０で生成された診断および最適化の勧告は、ユーザによってアクセス可能なユーザインターフェイススクリーン（例えば、図４、図５および図６にそれぞれ示される例示的なユーザインターフェイス４００，５００および６００のうちの１つ以上）に表示されるように提供されてもよい。
【００４７】
図７は、ユーザのアプリケーションの開発および実行をどのように最適化するかに関する勧告を受取るためのツールをユーザに提供するように配置された例示的なコンピュータ（７００）のハイレベルブロック図である。例えば、本明細書に記載されている１つ以上の実施例に従って、コンピュータ（７００）は、ユーザのアプリケーションのための展開パイプラインのさまざまなステージ中に収集されたデータに基づいて診断および最適化の提案を受取ることができる機能をユーザに提供するように構成されてもよい。非常に基本的な構成（７０１）では、コンピューティングデバイス（７００）は、一般に、１つ以上のプロセッサ（７１０）と、システムメモリ（７２０）とを含む。プロセッサ（７１０）とシステムメモリ（７２０）との間での通信には、メモリバス（７３０）を使用することができる。
【００４８】
所望の構成に応じて、プロセッサ（７１０）は、任意のタイプのものであってもよく、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタル信号プロセッサ（digital signal processor：ＤＳＰ）、またはこれらの任意の組み合わせを含むが、これらに限定されるものではない。プロセッサ（７１０）は、レベル１キャッシュ（７１１）およびレベル２キャッシュ（７１２）などの１つ以上のキャッシングレベルと、プロセッサコア（７１３）と、レジスタ（７１４）とを含み得る。プロセッサコア（７１３）は、算術論理演算装置（arithmetic logic unit：ＡＬＵ）、浮動小数点演算装置（floating point unit：ＦＰＵ）、デジタル信号処理コア（ＤＳＰコア）、またはこれらの任意の組み合わせを含み得る。プロセッサ（７１０）とともにメモリコントローラ（７１６）も使用することができ、またはいくつかの実現例では、メモリコントローラ（７１５）は、プロセッサ（７１０）の内部部品であってもよい。
【００４９】
所望の構成に応じて、システムメモリ（７２０）は、任意のタイプのものであってもよく、（ＲＡＭなどの）揮発性メモリ、（ＲＯＭ、フラッシュメモリなどの）不揮発性メモリ、またはこれらの任意の組み合わせを含むが、これらに限定されるものではない。システムメモリ（７２０）は、一般に、オペレーティングシステム（７２１）と、１つ以上のアプリケーション（７２２）と、プログラムデータ（７２４）とを含む。アプリケーション（７２２）は、例えばアプリケーションの構築、展開、リリースおよび実行に関連付けられたさまざまなデータを取込み、このようなデータを利用して、高いリリース生産性、管理のしやすさおよびコスト最適化という検討事項のバランスをどのようにユーザがとることができるかに関する勧告／提案を生成するための診断および最適化システム（例えば、図２に示されるシステム２００）を含み得る。
【００５０】
プログラムデータ（７２４）は、１つ以上の処理装置によって実行されたときに、ユーザのアプリケーションの開発および実行に関連付けられたデータに基づいてユーザに診断および最適化の勧告を提供するためのシステムおよび方法を実現する命令の格納を含み得る。さらに、少なくとも１つの実施例に従って、プログラムデータ（７２４）は、所与のアプリケーションのために取得されたリリースワークフローデータおよびプロダクションワークロードデータに関連し得るワークフロー、プロダクションおよび価格設定データ（７２５）と、さまざまなクラウドコンピューティングの提供および可用性に関連付けられたさまざまな価格データとを含み得る。いくつかの実施例では、アプリケーション（７２２）は、オペレーティングシステム（７２１）上でプログラムデータ（７２４）とともに動作するように配置されることができる。
【００５１】
コンピューティングデバイス（７００）は、基本構成（７０１）と任意の必要なデバイスおよびインターフェイスとの間の通信を容易にするために、さらに他の特徴または機能と、さらに他のインターフェイスとを有し得る。
【００５２】
システムメモリ（７２０）は、コンピュータ記憶媒体の一例である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（digital versatile disk：ＤＶＤ）もしくは他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または、所望の情報を格納するために使用可能であり、かつ、コンピューティングデバイス７００によってアクセス可能なその他の媒体を含むが、これらに限定されるものではない。任意のこのようなコンピュータ記憶媒体は、デバイス（７００）の一部であってもよい。
【００５３】
コンピューティングデバイス（７００）は、携帯電話、スマートフォン、パーソナルデータアシスタント（ＰＤＡ）、パーソナルメディアプレーヤデバイス、タブレットコンピュータ（タブレット）、無線ウェブウォッチデバイス、パーソナルヘッドセットデバイス、特定用途向けデバイス、または上記の機能のうちのいずれかを含むハイブリッドデバイスなどの、フォームファクタが小さな、携帯型の（またはモバイル）電子デバイスの一部として実現されてもよい。また、コンピューティングデバイス（７００）は、ラップトップコンピュータの構成もラップトップでないコンピュータの構成も含むパーソナルコンピュータとして実現されてもよい。
【００５４】
上記の詳細な説明は、ブロック図、フローチャートおよび／または例を使用することによって装置および／またはプロセスのさまざまな実施例を説明してきた。このようなブロック図、フローチャートおよび／または例が１つ以上の機能および／または動作を含む限りにおいて、このようなブロック図、フローチャートまたは例における各機能および／または動作は、さまざまなハードウェア、ソフトウェア、ファームウェア、または事実上これらの任意の組み合わせによって、個々におよび／または集合的に実行可能である、ということが当業者によって理解されるであろう。一実施例では、本明細書に記載されている主題のいくつかの部分は、特定用途向け集積回路（Application Specific Integrated Circuit：ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（Field Programmable Gate Array：ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）または他の集積フォーマットによって実現されてもよい。しかし、本明細書に開示されている実施例のいくつかの態様は、全体または一部が、１つ以上のコンピュータで実行される１つ以上のコンピュータプログラムとして、１つ以上のプロセッサで実行される１つ以上のプログラムとして、ファームウェアとして、または事実上これらの任意の組み合わせとして、集積回路において同等に実現されてもよく、ソフトウェアおよび／またはファームウェアのために回路を設計することおよび／またはコードを書込むことは、本開示に鑑みて十分に当業者の知識の範囲内であろう、ということを当業者は認識するであろう。
【００５５】
また、本明細書に記載されている主題の機構は、さまざまな形態のプログラム製品として流通されることができ、本明細書に記載されている主題の例示的な実施例は、実際に流通を行うために使用される特定のタイプの非一時的な信号担持媒体にかかわらず適用される、ということを当業者は理解するであろう。非一時的な信号担持媒体の例としては、フロッピー（登録商標）ディスク、ハードディスクドライブ、コンパクトディスク（Compact Disc：ＣＤ）、デジタルビデオディスク（Digital Video Disk：ＤＶＤ）、デジタルテープ、コンピュータメモリなどの記録可能なタイプの媒体、ならびに、デジタルおよび／またはアナログ通信媒体（例えば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）などの伝送タイプの媒体が挙げられるが、これらに限定されるものではない。
【００５６】
本明細書における実質的にいずれの複数形および／または単数形の用語の使用に関しても、当業者は、文脈および／または用途に適切であるように複数形から単数形に、および／または、単数形から複数形に変換することができる。さまざまな単数形／複数形の置換は、明確にするために本明細書に明記され得る。
【００５７】
本明細書に記載されているシステムがユーザに関する個人情報を収集するか、または個人情報を利用する可能性がある状況では、ユーザは、プログラムまたは機能がユーザ情報（例えば、ユーザのソーシャルネットワーク、社会的行為もしくは活動、職業、ユーザの好み、またはユーザの現在位置についての情報）を収集するか否かを制御する機会を提供されることができる。
【００５８】
このように、主題の特定の実施例について説明してきた。他の実施例は、以下の特許請求の範囲の範囲内である。場合によっては、特許請求の範囲に記載されている行為は、異なる順序で行われてもよく、依然として望ましい結果を達成することができる。また、添付の図面に示されているプロセスは、望ましい結果を達成するために、示されている特定の順序またはシーケンシャルな順序を必ずしも必要としない。特定の実現例では、マルチタスクおよび並列処理が有利であろう。
【図１】
2017506400.tif 000003
【図３】
2017506400.tif 000004
【図７】
2017506400.tif 000005
【図２】
2017506400.tif 000006
【図４】
2017506400.tif 000007
【図５】
2017506400.tif 000008
【図６】
2017506400.tif 000009
【手続補正書】
【提出日】平成28年8月22日(2016.8.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータによって実行される方法であって、
アプリケーションに関連付けられたリリースワークフローデータを取得するステップと、
前記アプリケーションに関連付けられたプロダクションワークロードデータを取得するステップと、
前記アプリケーションのために取得された前記リリースワークフローデータおよび前記プロダクションワークロードデータを、１つ以上の他のアプリケーションに関連付けられたデータと組み合わせるステップと、
前記組み合わせられたデータに基づいて、前記アプリケーションに関連付けられたプロダクションワークロードおよび／またはリリースワークフローに対する１つ以上の勧告された調節を生成するステップと、
前記１つ以上の勧告された調節をユーザに提供するステップとを備える、方法。
【請求項２】
１つ以上の他のアプリケーションに関連付けられた前記データは、１つ以上の他のアプリケーションに関連付けられた価格設定データを含む、請求項１に記載の方法。
【請求項３】
前記アプリケーションに関連付けられたリリースワークフローデータを取得するステップは、
前記アプリケーションのために規定されたパイプラインの１つ以上のステージの実行に関連付けられたデータを取込むステップを含む、請求項１または２に記載の方法。
【請求項４】
前記アプリケーションに関連付けられた前記リリースワークフローデータは、前記アプリケーションの構築に関連付けられたデータ、前記アプリケーションの展開に関連付けられたデータ、および前記アプリケーションのリリースに関連付けられたデータのうちの少なくとも１つを含む、請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記アプリケーションに関連付けられたプロダクションワークロードデータを取得するステップは、
前記アプリケーションが展開されたと判断するステップと、
前記展開されたアプリケーションをモニタリングするステップと、
前記展開されたアプリケーションの前記モニタリングに基づいてデータを生成するステップとを含む、請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記展開されたアプリケーションをモニタリングするステップは、前記展開されたアプリケーションによって利用されているリソースの量を判断するステップを含む、請求項５に記載の方法。
【請求項７】
前記展開されたアプリケーションをモニタリングするステップは、前記展開されたアプリケーションにわたる利用されるリソースの割当てを判断するステップを含む、請求項５に記載の方法。
【請求項８】
前記１つ以上の他のアプリケーションに関連付けられた前記価格設定データは、前記アプリケーションとは別の１つ以上のソースから取得される、請求項２に記載の方法。
【請求項９】
前記１つ以上の勧告された調節を前記ユーザに提供するステップは、前記ユーザによってアクセス可能なユーザインターフェイススクリーンに表示されるように前記勧告された調節を提供するステップを含む、請求項１から８のいずれか１項に記載の方法。
【請求項１０】
請求項１から９のいずれか１項に記載の方法をコンピュータに実行させるためのプログラム。
【請求項１１】
システムであって、
請求項１０に記載のプログラムを格納するためのメモリと、
前記メモリに格納された前記プログラムを実行するためのプロセッサとを備える、システム。
【国際調査報告】
2017506400.tif 000010
2017506400.tif 000011
2017506400.tif 000012