JP6930891B2 - グラフ・リライティングを介したサーバレス・アプリケーションのデバッグの容易化 - Google Patents

グラフ・リライティングを介したサーバレス・アプリケーションのデバッグの容易化 Download PDF

Info

Publication number
JP6930891B2
JP6930891B2 JP2017202438A JP2017202438A JP6930891B2 JP 6930891 B2 JP6930891 B2 JP 6930891B2 JP 2017202438 A JP2017202438 A JP 2017202438A JP 2017202438 A JP2017202438 A JP 2017202438A JP 6930891 B2 JP6930891 B2 JP 6930891B2
Authority
JP
Japan
Prior art keywords
serverless
application
computing device
serverless application
computing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017202438A
Other languages
English (en)
Other versions
JP2018073405A (ja
Inventor
ニコラス・マシュー・ミッチェル
スティーブン・フィンク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2018073405A publication Critical patent/JP2018073405A/ja
Application granted granted Critical
Publication of JP6930891B2 publication Critical patent/JP6930891B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本開示は、サーバレス・コンピューティング・システムに関し、より具体的には、サーバーレス・コンピューティング・システムと関連したサーバレス・アプリケーションのデバッグに関する。
サーバレス・コンピューティング・アプリケーションのデバッグは、多数の課題を抱えている。例えば、サーバレス・コンピューティング・アプリケーションのデバッグは、一般に、関数にアタッチすること、サーバレス・コンピューティング・アプリケーションの実行を停止すること、及びデバッガのユーザがその関数の評価の速度を制御することを可能にすることを要する。しかしながら、これは一般に、1つ又は複数の重要な作業者リソースが、無期限独占されることを要する。さらに、ユーザは、デバッグ・セッションについて忘れ、何時間も又は何日もたってから再開することがある。
サーバレス・アプリケーションのサブセットのリホスト(re-host)を容易にするシステム、コンピュータ実施方法、及びコンピュータ・プログラムを提供する。
以下は、本発明の1つ又は複数の実施形態の基本的理解を与えるための概要を提示する。この概要は、重要な若しくは重大な要素を特定すること、又は特定の実施形態のあらゆる範囲若しくはあらゆる特許請求の範囲を正確に説明することを意図するものではない。この概要の唯一の目的は、後述する詳細な説明の前置きとして本発明の概念を簡易的な形態で示すことである。本明細書に説明される1つ又は複数の実施形態において、サーバレス・アプリケーションのサブセットのリホストを容易にするデバイス、システム、コンピュータ実施方法、装置、及び/又はコンピュータ・プログラム製品が説明される。
1つの実施形態によると、システムは、インターフェース・コンポーネント、リライタ・コンポーネント、及びブローカ・コンポーネントを含むことができる。インターフェース・コンポーネントは、コンピューティング・デバイスから、該コンピューティング・デバイスによりリホストされるサーバレス・アプリケーションの第1の部分を識別する識別子データを受け取る。コンピューティング・デバイスは、ネットワーク・デバイスを介して、サーバレス・コンピューティング・システムと通信する。リライタ・コンポーネントは、サーバレス・アプリケーションの第1の部分がコンピューティング・デバイスにより実行され、サーバレス・アプリケーションの第2の部分がサーバレス・コンピューティング・システムにより実行されるのを可能にするように、サーバレス・アプリケーションをリライト(rewrite)する。インターフェース・コンポーネントは、サーバレス・アプリケーションの第1の部分をコンピューティング・デバイスに経路変更(re-route)し、コンピューティング・デバイスにより実行されるサーバレス・アプリケーションの第1の部分についてのデバッグ・セッションを容易にすることができる。
別の実施形態によると、コンピュータ実施方法が提供される。コンピュータ実施方法は、プロセッサに動作的に結合されたシステムにより、コンピューティング・デバイスから、コンピューティング・デバイスによりリホストされるサーバレス・アプリケーションの第1の部分を識別する識別子データを受け取ることであって、システムは、ネットワーク・デバイスを介してコンピューティング・デバイスと通信する、受け取ることを含むことができる。コンピュータ実施方法はまた、システムにより、サーバレス・アプリケーションの第1の部分をコンピューティング・デバイスに伝送することを含むこともできる。さらに、コンピュータ実施方法はまた、システムにより、コンピューティング・デバイスを介して、サーバレス・アプリケーションの第1の部分と関連したデバッグ・セッションの性能を促進することを含むことができる。コンピュータ実施方法は、システムにより、サーバレス・アプリケーションの第2の部分を実行することを含むこともできる。
さらに別の実施形態によると、コンピュータ実施方法が提供される。コンピュータ実施方法は、プロセッサに動作的に結合されたシステムにより、サーバレス・アプリケーションの第1の部分と関連した識別子データを判断することとを含むことができる。コンピュータ実施方法はまた、システムにより、ネットワーク・デバイスを介して、識別子データをサーバレス・コンピューティング・システムに伝送することを含むこともできる。さらに、コンピュータ実施方法は、システムにより、サーバレス・コンピューティング・システムから、サーバレス・アプリケーションの第1の部分を受け取ることを含むことができる。コンピュータ実施方法はまた、システムにより、サーバレス・コンピューティング・システムによるサーバレス・アプリケーションの第2の部分の実行とほぼ同時に、サーバレス・アプリケーションの第1の部分と関連したデバッグ・セッションを実行することを含むこともできる。
更に別の実施形態によると、サーバレス・アプリケーションをデバッグするためのコンピュータ・プログラム・プログラム製品が、プログラム命令がそこに具体化されたコンピュータ可読ストレージ媒体を含むことができる。プログラム命令は、プロセッサにより実行可能であり、プロセッサに、プロセッサにより、コンピューティング・デバイスから、サーバレス・コンピューティング・システムと関連したサーバレス・アプリケーションの第1の部分を識別する識別子データを受け取らせることができる。プログラム命令はまた、プロセッサに、プロセッサにより、サーバレス・アプリケーションの第1の部分をコンピューティング・デバイスに伝送させることもできる。プログラム命令はまた、プロセッサに、プロセッサによりサーバレス・アプリケーションの第1の部分をデバッグするコンピューティング・デバイスによるデバッグ・セッションの間、サーバレス・アプリケーションの第2の部分を実行させることも可能である。
さらに別の実施形態によると、サーバレス・アプリケーションをデバッグするためのコンピュータ・プログラム・プログラム製品が、プログラム命令がそこに具体化されたコンピュータ可読ストレージ媒体を含むことができる。プログラム命令は、プロセッサにより実行可能であり、プロセッサに、プロセッサにより、コンピューティング・コンピューティング・システムからサーバレス・アプリケーションの第1の部分と関連した識別子データをサーバレス・コンピューティング・システムに伝送させることができる。プログラム命令はまた、プロセッサに、プロセッサにより、サーバレス・コンピューティング・システムから、サーバレス・アプリケーションの第1の部分を受け取らせることもできる。プログラム命令はまた、プロセッサに、プロセッサにより、サーバレス・アプリケーションの第1の部分と関連したデバッグ・セッションを実行させることもできる。
本明細書で説明される1つ又は複数の実施形態による、サーバレス・アプリケーションのサブセットのリホストを容易にするための、限定されない例示的システムのブロック図を示す。 本明細書で説明される1つ又は複数の実施形態による、サーバレス・アプリケーションのサブセットのリホストを容易にするための、別の限定されない例示的システムのブロック図を示す。 本明細書で説明される1つ又は複数の実施形態による、サーバレス・アプリケーションのサブセットのリホストを容易にするための、さらに別の限定されない例示的システムのブロック図を示す。 本明細書で説明される1つ又は複数の実施形態による、デバッグ・セッションを容易にする、限定されない例示的システムを示す。 本明細書で説明される1つ又は複数の実施形態による、デバッグ・セッションを容易にする、限定されない例示的システムを示す。 本明細書で説明される1つ又は複数の実施形態による、デバッグ・セッションを容易にするための、限定されない例示的コンピュータ実施方法のフロー図を示す。 本明細書で説明される1つ又は複数の実施形態による、デバッグ・セッションを容易にするための別の限定されない例示的コンピュータ実施方法のフロー図を示す。 本明細書で説明される1つ又は複数の実施形態を容易にすることができる、限定されない例示的動作環境のブロック図を示す。 本明細書で説明される1つ又は複数の実施形態による、限定されない例示的クラウド・コンピューティング環境のブロック図を示す。 本明細書で説明される1つ又は複数の実施形態による、限定されない例示的抽象化モデル層のブロック図を示す。
以下の詳細な説明は例証にすぎず、実施形態及び/又は実施形態の用途若しくは使用を制限することを意図するものではない。さらに、前述の背景又は概要セクション、又は詳細な説明セクション内に提示されたいずれの表現された情報又は暗黙的(implied)情報にも制約されることを意図しない。
ここで、全体を通して同様の要素を指すために同様の参照番号が用いられる図面を参照して、1つ又は複数の実施形態を説明する。以下の説明において、説明のために、1つ又は複数の実施形態のより完全な理解を与えるために、多数の特定の詳細が説明される。しかしながら、様々の場合において、1つ又は複数の実施形態は、これらの特定の詳細なしに実施できることが明らかである。
クラウド・アプリケーションのデバッグは、通常、クラウド・アプリケーションに関連したログ、又はクラウド・アプリケーションの状態に対応するスナップショットを用いて達成される。例えば、ログを収集及び/又はキュレート(curate)して、クラウド・アプリケーションのデバッグを容易にすることができる。或いは、クラウド・アプリケーションの状態のスナップショットを分析して、クラウド・アプリケーションのデバッグを容易にすることができる。クラウド・アプリケーションのデバッグをさらに容易にするために、クラウド・プラットフォームは、ユーザにより利用できるログ収集及び分析ユーティリティを提供することができる。しかしながら、ログ収集及び分析は、特にデバッグに関して多数の欠点がある。例えば、高容量クラウド・アプリケーションは、膨大な量のデータを生成すること、及び/又は事前計画(例えば、ログすべきコンテンツのタイプに関する事前計画)を必要とすることがある。従って、ログ収集及び分析ユーティリティは、デバッガに共通するシングル・ステップのエクスペリエンスを提供することができない。また、ログ収集及び分析ユーティリティは、ユーザがクラウド・アプリケーションのコンピュータ・コードをトラバースするとき、プログラム状態を修正する能力を提供することができない。場合によっては、システムは、システムの状態のスナップショットの収集及び仮想化によりロギングを増強することができる。例えば、デバッガは、ユーザが、クラウド・アプリケーションの状態に関連したスナップショットをいつ収集するかを決定するのを可能にすることができる。その後ユーザは、完全なデバッグ・エクスペリエンスのサブセットをエミュレートするツールにおいてこれらを見ることができる。ツールは、瞬時(moment-in-time)スナップショットを利用することができ、それにより、ユーザが、メモリの構造、並びにスナップショットが撮られた瞬間におけるスレッドの呼び出しスタックを見ることが可能になる。しかしながら、瞬時スナップショットのタイミング情報(例えば、瞬時スナップショットをいつ撮るべきかなど)のエンコードは、通常、デバッグ目的で瞬時スナップショットの利用を容易にすることを要する。さらに、システムの状態のスナップショットを用いるとき、コードのステップ実行(stepping through code)及びプログラム状態の修正などのデバッグ・タスクが可能ではない。別の例において、開発者のローカル・マシン上で、完全なデバッグ環境を実行することができる。しかしながら、完全なデバッグ環境では、ユーザは通常、テストのパイプライン及び配備に変更を加える前に、局所的に開発及びデバッグすることを要する。さらに、これらのクラウド・プラットフォームにおいて実行されるアプリケーションは、一般に、長寿命(long-lived)プロセス又は長寿命仮想マシン(VM)により実行される。
クラウド・コンピューティングのランドスケープへの最近の追加は、サーバレス・コンピューティングのものである。サーバレス・コンピューティング・プラットフォームは一般に、イベント駆動型プログラミング(又は、出版購読型プログラミング)、自動スケーリング、及び細粒度(fine-grained)価格設定モデルを組み合わせる。例えば、プログラマは、イベント駆動型プログラムを一式のイベント・アクション対としてエンコードし、該イベント駆動型プログラムをサービスにアップロードすることができる。システムは、イベントをリッスンし(listen)、イベントの受信時にアクションを処理するために使用する作業者装置(workerdevice)のプールを維持することができる。このように、稼働時間ではなく使用に対してのみ課金しながら、制限されたセットのリソースを多数の間で共有することができる。つまり、サーバレス・コンピューティング・プラットフォーム上で実行されているサーバレス・コンピューティング・アプリケーションは、通常、アクティブ時にのみリソース(例えば、作業者装置)を消費する。対照的に、クラウド・ホスト型アプリケーションは、その配備期間中、価値あるリソース(例えば、特定の数の中央処理ユニット・サイクル)を消費する。サーバレス・コンピューティング・アプリケーションのデバッグは、多数の課題を抱えている。例えば、サーバレス・コンピューティング・アプリケーションのデバッグは、一般に、関数にアタッチすること、サーバレス・コンピューティング・アプリケーションの実行を停止すること、及びデバッガのユーザがその関数の評価の速度を制御することを可能にすることを要する。しかしながら、これは一般に、1つ又は複数の重要な作業者リソースが、無期限独占されることを要する。さらに、ユーザは、デバッグ・セッションについて忘れ、何時間も又は何日もたってから再開することがある。
クラウド・アプリケーションは、コンピューティング・デバイスから遠く離れて、通常はコンピューティング・デバイスにより直接アクセスできないプラットフォーム上で実行されるので、クラウド・アプリケーションのデバッグには問題のあることもある。クラウド・アプリケーションは通常、長期プロセス(long-running process)により供されるので、「アタッチ及び検査」(attach-and-inspect)スタイルのデバッガを用いて、クラウド・アプリケーションにアタッチし、及び/又はクラウド・アプリケーションのコードを検査することができる。その上、サーバレス・アプリケーションは通常、長期プロセスと関連付けられていないので、サーバレス・アプリケーションのデバッグは、デバッグ・プロセスをさらに複雑にする。さらに、サーバレス・アプリケーションをアタッチし、従って停止することが、サーバレス環境の性能に悪影響を与えることがある。例えば、ランタイムに、サービス要求のための制限されたサイズのスレッド・プール及び/又はコンテナが利用されることが多い。デバッガは、長期プロセスにアタッチし、その実行を停止し、ユーザがプロセスの状態を検査できるようにすることによって、動作することができる。「アタッチ及び停止(attach-and-halt)」デバッグは、トラップのようなオペレーティング・システムの機能を利用することが多い。多くの場合、アタッチ及び停止デバッグは、実行可能プログラムにパッチをあてて、細粒度ブレークポイントをサポートすることもできる。従って、サーバレス・アプリケーションのデバッグに対してアタッチ及び停止を用いることにより、サーバレス・アプリケーションと関連したサーバレス環境の性能が迅速に低下する。最後に、サーバレス・プラットフォームが複雑であるならば、サーバレス・アプリケーションと関連したランタイム・プロセスから、開発をシフトすること及び/又はタスクをデバッグすることが非常に望ましい。
これら及び/又は他の問題に対処するため、本明細書で説明される実施形態は、サーバレス・アプリケーションのサブセットのリホストを容易にするシステムを含む。例えば、サーバレス・クラウド・プラットフォームによりホストされるサーバレス・アプリケーションのサブセットは、ネットワークを介してサーバレス・クラウド・プラットフォームと通信するコンピューティング・デバイスによりリホストすることができる。サーバレス・アプリケーションのサブセットのリホストは、サーバレス・アプリケーションのデバッグの改善を容易にする。例えば、サーバレス・クラウド・プラットフォーム上で実行されているサーバレス・アプリケーションと関連したコンピュータ・コードの一部を、デバッガ・プログラムを用いてローカル・コンピューティング・デバイス上でリホストすること(例えば、サーバレス・クラウド・プラットフォームからオフロードすること)、及び/又はデバッグすることができる。付加的に又は代替的に、サーバレス・アプリケーションのサブセットのリホストは、サーバレス・クラウド・プラットフォームとは異なるコンピューティング・デバイスによるサーバレス・アプリケーションのサブセットの実行を容易にすることができる。従って、サーバレス・アプリケーションの性能を改善することができる。さらに、サーバレス・アプリケーションと関連したエラーの数の減少を達成することができる。さらに、サーバレス・アプリケーションのコアランタイムを変更することなく、サーバレス・アプリケーションのためのデバッガを用いることができる。
図1は、本明細書で説明される1つ又は複数の実施形態による、サーバレス・アプリケーションのサブセットのリホストを容易にする限定されない例示的システム100のブロック図を示す。簡潔にするために、本明細書で説明される他の実施形態において用いられる同様の要素の反復的な説明は省略する。
種々の実施形態において、システム100は、サーバレス・クラウド・プラットフォーム・システムとすることができる。1つの態様において、システム100は、サーバレス・アプリケーションのサブセットをリホストするためのシステムとすることができる。さらに、システム100は、デバッグ・システム、サーバレス・コンピューティング・システム、ログ分析システム(例えば、リアルタイム・ログ分析システム)、ログ管理システム、監視システム、オペレーショナル・インテリジェンス・システム、コンピューティング・デバイス・システム、アプリケーション管理システム、サーバ・システム、ネットワーク・システム、ウェブ・システム、オンプレミス(on-premise)システム、マシン学習システム、人工知能システム、及び/又は別のタイプのシステムと関連付けること、これらと共に用いること、又はその中に含ませることができる。システム100は、ハードウェア及び/又はソフトウェアを用いて、本質的に非常に技術的な問題、抽象的でない問題、及び人間による精神的行為(mental act)のセットとして実行できない問題を解決することができる。さらに、実行されるプロセスの一部は、メモリ操作に関連する定義されたタスクを実行するための専用コンピュータ(例えば、サーバレス・コンピューティング・コンポーネントを有する専用コンピュータ)によって実行することができる。システム100及び/又はシステムのコンポーネントを用いて、技術の進歩、コンピューティング・デバイスの利用、クラウド・プラットフォームの利用、サーバレス・アプリケーションのデバッグ、サーバレス・アプリケーションの実行、及び/又はコンピュータ・アーキテクチャ等によって生じる新しい問題を解決することができる。システム100の1つ又は複数の実施形態は、サーバレス・クラウド・プラットフォーム・システム、デバッグ・システム、ログ分析システム(例えば、リアルタイム・ログ分析システム)、ログ管理システム、監視システム、オペレーショナル・インテリジェンス・システム、コンピューティング・デバイス・システム、アプリケーション管理システム、サーバ・システム、ネットワーク・システム、ウェブ・システム、オンプレミス・システム、マシン学習システム、人工知能システム等の技術の改善を提供することができる。システム100の1つ又は複数の実施形態はまた、コンピューティング・デバイスのデバッグ能力を改善することにより、コンピューティング・デバイスの技術の改善を提供することもできる。
図1に示される実施形態において、システム100は、サーバレス・コンピューティング・コンポーネント102を含むことができる。サーバレス・コンピューティング・コンポーネント102は、サーバレス・コンピューティング・システムと関連付けることができる。例えば、特定の実施形態において、サーバは、サーバレス・コンピューティング・コンポーネント102をホストすることができる。図1に示されるように、サーバレス・コンピューティング・コンポーネント102は、インターフェース・コンポーネント104、リライタ(rewriter)コンポーネント106、及びブローカ(broker)コンポーネント108を含むことができる。サーバレス・コンピューティング・コンポーネント102の態様は、マシン内に具体化された、例えば1つ又は複数のマシンと関連した1つ又は複数のコンピュータ可読媒体(単数又は複数の)内に具体化された、マシン実行可能コンポーネントを構成することができる。こうしたコンポーネントは、例えば、コンピュータ、コンピューティング・デバイス、仮想マシン等などの1つ又は複数のマシンにより実行されるとき、マシンに、説明される動作を実行させることができる。1つの態様において、サーバレス・コンピューティング・コンポーネント102はまた、コンピュータ実行可能コンポーネント及び命令を格納するメモリ110を含むこともできる。さらに、サーバレス・コンピューティング・コンポーネント102は、サーバレス・コンピューティング・コンポーネント102による命令(例えば、コンピュータ実行可能コンポーネント及び対応する命令)の実行を容易にするためのプロセッサ112を含むことができる。示されるように、1つ又は複数の実施形態において、インターフェース・コンポーネント104、リライタ・コンポーネント106、ブローカ・コンポーネント108、メモリ110、及び/又はプロセッサ112を互いに電気的に及び/又は通信可能に結合することができる。
サーバレス・コンピューティング・コンポーネント102は、ネットワーク116を介して、コンピューティング・デバイス114と通信することができる。コンピューティング・デバイス114は、1つ又は複数のプロセッサを含むハードウェア・デバイスとすることができる。例えば、コンピューティング・デバイスは、電子デバイス(例えば、コンシューマ電子デバイス)、ネットワーク・デバイス、クラウド・デバイス(例えば、クラウド・コンポーネント)、及び/又はサーバレス・アプリケーションの少なくとも一部を実行できる別のタイプのデバイスとすることができる。ネットワーク116は、1つ又は複数のネットワークを含むことができる。例えば、ネットワーク116は、これらに限定されるものではないが、広域ネットワーク(WAN、例えばインターネット)、ローカル・エリア・ネットワーク(LAN)、及び/又はセルラー・ネットワークを含む、1つ又は複数の無線ネットワーク及び/又は1つ又は複数の有線ネットワークを含むことができる。ネットワーク116はまた、少なくともコンピューティング・デバイス114とサーバレス・コンピューティング・コンポーネント102との間の通信及び/又は対話を容易にするために、1つ又は複数のネットワーク・デバイス(例えば、ネットワーク・ハードウェア、ネットワーク機器、コンピュータ・ネットワーキング・デバイス等)を含むこともできる。
1つの実施形態において、インターフェース・コンポーネント104は、コンピューティング・デバイス114から、識別子データ(図1に示される識別子データ)を受け取ることができる。例えば、コンピューティング・デバイス114は、コンピューティング・デバイス114によりリホストされるサーバレス・アプリケーションの第1の部分を識別することができる。サーバレス・アプリケーションは、ユーザのためのfunction as a service(FaaS)と関連付けることができるので、ユーザは、サーバレス・アプリケーションと関連したコンピュータ・コードを実行するために、サーバ又は仮想マシンを購入することも又は借りることもなく、サーバレス・アプリケーションを利用することができる。一例において、サーバレス・アプリケーションは、サーバレス・コンピューティング・コンポーネント102により(例えば、メモリ110により)格納することができる。別の例において、サーバレス・アプリケーションは、サーバレス・コンピューティング・コンポーネント102をホストするサーバ、及び/又はサーバレス・コンピューティング・コンポーネント102をホストする仮想マシン上に格納することができる。サーバレス・アプリケーションの第2の部分が、サーバレス・コンピューティング・コンポーネント102(例えば、サーバレス・コンピューティング・コンポーネント102と関連したサーバ及び/又は仮想マシン)により実行される間、コンピューティング・デバイス114は、該コンピューティング・デバイス114のサーバレス・アプリケーションの部分を実行することにより、サーバレス・アプリケーションの第1の部分をリホストすることができる。1つの態様において、リライタ・コンポーネント106は、サーバレス・アプリケーションの第1の部分がコンピューティング・デバイス114により実行され、サーバレス・アプリケーションの第2の部分がサーバレス・コンピューティング・コンポーネント102により実行されることを可能にするように、サーバレス・アプリケーションをリライトすることができる。例えば、リライタ・コンポーネント106は、サーバレス・アプリケーションを、サーバレス・アプリケーションのコアランタイムなしに、サーバレス・アプリケーションについてのデバッグ・プロセスを容易にする結合アクション(例えば、コンピュータ実行可能機能のグラフ)としてサーバレス・アプリケーションをリライトする。
1つの実施形態において、インターフェース・コンポーネント104は、サーバレス・アプリケーションの第1の部分をコンピューティング・デバイス114に経路変更して、コンピューティング・デバイス114により実行されるサーバレス・アプリケーションの部分に対するデバッグ・セッションを容易にすること、及び/又は、コンピューティング・デバイス114によるサーバレス・アプリケーションの部分の実行を容易にすることができる。例えば、コンピューティング・デバイス114との直接通信が可能である(例えば、コンピューティング・デバイス114が、サーバレス・アプリケーションの第1の部分と関連した長期計算を実行するのにより適した別個のクラウド・デバイスである)との判断に応答して、インターフェース・コンポーネント104は、サーバレス・アプリケーションの第1の部分をコンピューティング・デバイス114に経路変更することができる。
別の実施形態において、ブローカ・コンポーネント108は、サーバレス・アプリケーションの第1の部分をコンピューティング・デバイス114に経路変更して、コンピューティング・デバイス114により実行されるサーバレス・アプリケーションの第1の部分に対するデバッグ・セッションを容易にすることができる。付加的に又は代替的に、ブローカ・コンポーネント108は、サーバレス・アプリケーションの第1の部分をコンピューティング・デバイス114に経路変更して、コンピューティング・デバイス114によるサーバレス・アプリケーションの第1の部分の実行を容易にすることができる。例えば、サーバレス・コンピューティング・プラットフォームがコンピューティング・デバイス114と直接通信できない(例えば、コンピューティング・デバイス114は、サーバレス・コンピューティング・プラットフォームが通信することができるインターネット経路と関連付けられていない)との判断に応答して、インターフェース・コンポーネント104は、サーバレス・アプリケーションの第1の部分をコンピューティング・デバイス114に経路変更することができる。1つの態様において、ユーザは、コンピューティング・デバイス114上のデバッガ・プログラムを用いて、デバッグ・セッション中のサーバレス・アプリケーションの第1の部分のデバッグを容易にすることができる。サーバレス・アプリケーションの第1の部分のデバッグ後、コンピューティング・デバイス114は、サーバレス・アプリケーションの第1の部分の変更されたバージョン(例えば、サーバレス・アプリケーションの第1の部分のデバッグされたバージョン)をサーバレス・コンピューティング・コンポーネント102に伝送することができる。例えば、インターフェース・コンポーネント104は、コンピューティング・デバイス114から、サーバレス・アプリケーションの第1の部分の変更されたバージョンを受け取ることができる。別の態様において、リライタ・コンポーネント106は、サーバレス・アプリケーションの第1の部分の変更されたバージョンを、デバッグ中にサーバレス・コンピューティング・コンポーネント102により実行されるサーバレス・アプリケーションの第2の部分と結合することができる。従って、改善された安定性、改善された信頼性、改善された精度、及び/又は改善された品質を有する更新されたサーバレス・アプリケーションを提供することができる。
別の実施形態において、コンピューティング・デバイス114は、サーバレス・アプリケーションのコアランタイムを修正することなく、デバッグ・プロセス中、サーバレス・アプリケーションの第1の部分を実行することができる。例えば、サーバレス・アプリケーションは、コンピューティング・デバイス114がサーバレス・アプリケーションの第1の部分を実行している間(例えば、コンピューティング・デバイスがサーバレス・アプリケーションの第1の部分と関連したデバッグ・セッションを実行する間)、サーバレス・アプリケーションの第2の部分と関連した処理スレッドのセットを実行し続けることができる。1つの態様において、サーバレス・アプリケーションは、少なくともサーバレス・プログラムについての機能を作成するために用いることができるプリミティブ・コード・セグメント(primitive code segment)のセットを含むことができる。プリミティブ・コード・セグメントのセットは、例えば、サーバレス・プログラムにより提供される呼び出し可能なアクションのセット、サーバレス・プログラムによるアクションのトリガされた呼び出し、及び/又はサーバレス・プログラムによるアクションのカリー化(curried)評価を含むことができる。1つの態様において、サーバレス・アプリケーションは、結合されたアクションのグラフとして処理することができ、そこでグラフは、デバッグをサポートする方法でリライトされる。1つの態様において、コンピューティング・デバイス114により実行されるデバッガ・プログラムは、トランポリン・スタイル(trampoline-style)のインストルメンテーションと関数型プログラミングのための継続渡しスタイル(continuation-passing style)の関数呼び出しとの組み合わせを用いることができる。特定の実施形態において、サーバレス・アプリケーションの第1の部分は、関数のシーケンスにおける第1の関数とすることができる。インターフェース・コンポーネント104は、例えば、第1の関数をコンピューティング・デバイス114に経路変更することができる。さらに、リライタ・コンポーネント106は、命令のシーケンスにおける第1の関数に先立って第2の関数を生成することができる。リライタ・コンポーネント106はまた、命令のシーケンスにおける第1の関数の後に第3の関数を生成することもできる。リライタ・コンポーネント106は、第1の関数がコンピューティング・デバイスに経路変更された後に)第2の関数及び第3の関数を実行することができる(例えば、リライタ・コンポーネント106は、コンピューティング・デバイス114がサーバレス・アプリケーションの第1の部分と関連したデバッグ・セッションを実行する間、第2の関数及び第3の関数を実行することができる)。特定の実施形態において、インターフェース・コンポーネント104は、サーバレス・アプリケーションの第1の部分と関連したデバッグ・セッションに基づいて生成されたリアルタイム・データを受け取ることができる。さらに、リライタ・コンポーネント106は、デバッグ・セッションと関連したリアルタイム・データに基づいて、サーバレス・アプリケーションの第2の部分を実行することができる。
更に別の実施形態において、サーバレス・コンピューティング・コンポーネント102は、コンピューティング・デバイス114と組み合わせて、サーバレス・アプリケーションをデバッグするための種々の動作モードを提供することができる。例えば、サーバレス・アプリケーションをデバッグするための第1のモードは、コンピューティング・デバイス114、又はコンピューティング・デバイス114及び/又はサーバレス・コンピューティング・コンポーネント102と通信する別のデバイスに提供されるユーザデータに基づいて、実行することができる。ユーザデータは、サーバレス・アプリケーションに関連した1つ又は複数の処理点と関連付けられるアクションのセットを含むことができる。付加的に又は代替的に、ユーザデータは、サーバレス・アプリケーションのコンピュータ・コード内のプログラム可能演算子を手動で呼び出すための手動呼び出しを容易にすることができる。1つの態様において、第1のモードは、呼び出し信号をコンピューティング・デバイス114からサーバレス・コンピューティング・コンポーネント102へ(例えば、ブローカ・コンポーネント108へ)転送するトランポリン・コンピューティング・プロセスを用いることができる。呼び出し信号は、例えば、サーバレス・アプリケーションのコンピュータ・コード内のプログラム可能演算子を呼び出すための呼び出しに関するパラメータのセットを含むことができる。コンピューティング・デバイス114により実行されるデバッグ・プロセスが完了したとき、呼び出し信号を、呼び出されるトリガと共に伝送することができる。1つの態様において、コンピューティング・デバイス114は、コンピューティング・デバイス114により実行されるデバッグ・プロセスが完了したとの判断に応答して、デバッグされたアクションについてのデータ(例えば、戻り値)でトリガが生成されることを検証するデバッグ・クライアントとして用いることができる。特定の実施形態において、コンピューティング・デバイス114により実行されるデバッグ・プロセスがエラーと関連付けられる(例えば、コンピューティング・デバイス114により実行されるデバッグ・プロセスが異常終了した)との判断に応答して、コンピューティング・デバイス114は、デバッグ・プロセスと関連した既に実行されたアクション(例えば、オリジナル・アクション)についてのデータ(例えば、戻り値)でトリガを生成することができる。
付加的に又は代替的に、サーバレス・アプリケーションをデバッグするための第2のモードは、ユーザデータと、サーバレス・アプリケーションの第1の部分及び/又はユーザデータの分析に基づいて生成された分析データとに基づいて、実行することができる。例えば、第2のモードは、サーバレス・アプリケーションに関連する1つ又は複数の処理点と関連付けられたアクションのセットを提供することができる。さらに、第2のモードは、アクションのセットと交差するサーバレス・アプリケーションの第1の部分の1又は複数の部分をリライトすることもできる。一例では、第2のモードにおいて、アクションのセットに関連するエンクロージング使用(enclosing use)を探して、ユーザデータを走査することができる。Akがデバッグされるアクションであるものとして、エンクロージング使用が、アクションA1、...Ak、...Anのシーケンスである場合、アクションのシーケンスを、シーケンスS1及び第2のシーケンスS2に分割することができる。第1のシーケンスS1は、A1、...、Tであり、ここでTは、Akについてのトランポリンである。第2のシーケンスS2は、C、...、Anとすることができ、ここでCはAkについての継続(continuation)である。
付加的に又は代替的に、サーバレス・アプリケーションをデバッグするための第3のモードは、サーバレス・アプリケーションと関連したリアルタイム・データに基づいて実行することができる。例えば、リアルタイム・データは、サーバレス・アプリケーションの第1の部分及び/又はサーバレス・アプリケーションの第2の部分の実行に基づいて生成することができる。リアルタイム・データは、例えば、1又は複数のデータフローのリアルタイム活性化(activations)を含むことができる。1つの態様において、コンピューティング・デバイス114により実行されるデバッグ・プロセスの1又は複数のデータフローは、リアルタイム・データに基づいて更新することができる。例えば、サーバレス・アプリケーションの一部を異なるコンピュータ・コードに置換することができる。同様に、スプライス・ペア(splice pair)(例えば、上記の例におけるS1)についてのシーケンスを置換することもできる。
付加的に又は代替的に、サーバレス・アプリケーションをデバッグするための第4のモードは、増大した処理速度に基づいて実行することができる。例えば、第4のモードは、サーバレス・アプリケーションの第1の部分による、あらゆる発信要求を制限するような方法で1つ又は複数のアクションを実行しながら、コンピューティング・デバイス114により実行されるデバッグ・プロセスの1又は複数のデータフローが、増大した処理速度で(例えば、デバッグ・プロセスについてのほぼ最高処理速度で)実行されることを可能にする。第4のモードにおいて、ディスパッチャDを作成し、該ディスパッチャDを、第1のサーバレス・アプリケーションの1つ又は複数の部分の代わりに使用することができる。ディスパッチャDは、両方のオリジナル・アクション(例えば、上記のAk)に対する呼び出しの「teeを行い(teeing)」、第1のサーバレス・アプリケーションと関連した別のアクションを呼び出すことによって、動作することができる。
サーバレス・コンピューティング・コンポーネント102(例えば、インターフェース・コンポーネント104、リライタ・コンポーネント106、及び/又はブローカ・コンポーネント108)は、人間が実行できない(例えば、一人の人間の知性の能力を上回る)サーバレス・アプリケーションと関連した1つ又は複数のプロセスを実行することを理解されたい。例えば、特定の期間にわたって、サーバレス・アプリケーションの少なくとも一部を実行しているときに処理されるデータ量、サーバレス・アプリケーションの少なくとも一部を実行しているときのデータの処理速度、及び/又はサーバレス・コンピューティング・コンポーネント102(例えば、インターフェース・コンポーネント104、リライタ・コンポーネント106、及び/又はブローカ・コンポーネント108)により処理できるデータのタイプは、同じ期間にわたって、一人の人間の知性により処理できる量、速度及びデータ・タイプと比べて大きく、速く、そして、それらとは異なり得る。サーバレス・コンピューティング・コンポーネント102(例えば、インターフェース・コンポーネント104、リライタ・コンポーネント106、及び/又はブローカ・コンポーネント108)はまた、同じくサーバレス・アプリケーションと関連した上記の1つ又は複数のプロセスを実行しながら、1つ又は複数の他の機能の実行(例えば、完全に電源オンされる、完全に実行される等)に向けて完全に動作可能であり得る。さらに、サーバレス・コンピューティング・コンポーネント102(例えば、インターフェース・コンポーネント104、リライタ・コンポーネント106、及び/又はブローカ・コンポーネント108)により生成される出力は、ユーザが手動で取得することができない情報を含むことがある。例えば、サーバレス・アプリケーションにより生成される情報の量、及び/又は、サーバレス・アプリケーションにより生成される種々の情報は、ユーザにより手動で取得される情報よりも複雑であり得る。
図2は、本明細書で説明される1つ又は複数の実施形態による、サーバレス・アプリケーションのサブセットのリホストを容易にする、限定されない例示的システム200のブロック図である。簡潔にするために、本明細書で説明される他の実施形態において用いられる同様の要素の反復的な説明は省略する。
種々の実施形態において、システム200は、サーバレス・クラウド・プラットフォーム・システムとすることができる。1つの態様においては、システム200は、サーバレス・アプリケーションのサブセットをリホストするためのシステムとすることができる。さらに、システム200は、デバッグ・システム、サーバレス・コンピューティング・システム、ログ分析システム(例えば、リアルタイム・ログ分析システム)、ログ管理システム、監視システム、オペレーショナル・インテリジェンス・システム、コンピューティング・デバイス・システム、アプリケーション管理システム、サーバ・システム、ネットワーク・システム、ウェブ・システム、オンプレミス・システム、マシン学習システム、人工知能システム、及び/又は別のタイプのシステムと関連付け、これらと共に使用し、又はこれらの中に含ませることができる。システム200は、本質的に非常に技術的な問題、抽象的ではない問題、及び人間による精神的行為のセットとして実行できない問題を解決するために、ハードウェア及び/又はソフトウェアを用いることができる。さらに、実行されるプロセスの一部は、メモリ操作に関連する定義されたタスクを実行するための特化したコンピュータ(例えば、サーバレス・コンピューティング・デバイス・コンポーネントを有する特化したコンピュータ)により実行することができる。システム200及び/又はシステムのコンポーネントを、技術の進歩、コンピューティング・デバイスの利用、クラウド・プラットフォームの利用、サーバレス・アプリケーションのデバッグ、サーバレス・アプリケーションの実行、及び/又はコンピュータ・アーキテクチャ等によって生じる新しい問題を解決するために用いることができる。システム200の1つ又は複数の実施形態は、サーバレス・クラウド・プラットフォーム・システム、デバッグ・システム、ログ分析システム(例えば、リアルタイム・ログ分析システム)、ログ管理システム、監視システム、オペレーショナル・インテリジェンス・システム、コンピューティング・デバイス・システム、アプリケーション管理システム、サーバ・システム、ネットワーク・システム、ウェブ・システム、オンプレミス・システム、マシン学習システム、人工知能システム等の技術の改善を提供することができる。システム200の1つ又は複数の実施形態はまた、コンピューティング・デバイスのデバッグ能力を改善することにより、コンピューティング・デバイスの技術の改善を提供することもできる。
図2に示される実施形態において、システム200は、サーバレス・コンピューティング・コンポーネント102及びコンピューティング・デバイス114を含むことができる。図2に示されるように、コンピューティング・デバイス114は、識別コンポーネント202及びデバッグ・コンポーネント204を含むことができる。付加的に、特定の実施形態において、サーバレス・コンピューティング・コンポーネント102は、インターフェース・コンポーネント104、リライタ・コンポーネント106、及びブローカ・コンポーネント108を含むことができる。コンピューティング・デバイス114の態様は、例えば、1つ又は複数のマシンと関連した1つ又は複数のコンピュータ可読媒体(単数又は複数)内に具体化されるなど、マシン内に具体化されたマシン実行可能コンポーネントを構成することができる。こうしたコンポーネントは、例えば、コンピュータ、コンピューティング・デバイス、仮想マシン等などの1つ又は複数のマシンにより実行されるとき、マシンに、説明される動作を実行させることができる。1つの態様において、コンピューティング・デバイス114はまた、コンピュータ実行可能コンポーネント及び命令を格納するメモリ206を含むこともできる。さらに、コンピューティング・デバイス114は、該コンピューティング・デバイス114による命令(例えば、コンピュータ実行可能コンポーネント及び対応する命令)の実行を容易にするためにプロセッサ208を含むことができる。示されるように、1つ又は複数の実施形態において、識別コンポーネント202、デバッグ・コンポーネント204、メモリ206、及び/又はプロセッサ208を電気的に及び/又は通信可能に互いに結合することができる。
識別コンポーネント202は、コンピューティング・デバイス114によりリホストされるサーバレス・アプリケーションの第1の部分を識別する識別子データを生成することができる。例えば、識別コンポーネント202は、サーバレス・アプリケーションによる以前に生成された出力データを示す履歴データに基づいて、サーバレス・アプリケーションの第1の部分を識別することができる。付加的に又は代替的に、識別コンポーネント202は、サーバレス・アプリケーションと関連したメタデータに基づいて、サーバレス・アプリケーションの第1の部分を識別することができる。付加的に又は代替的に、識別コンポーネント202は、コンピューティング・デバイス114又は別のデバイスと関連したユーザにより与えられるユーザデータに基づいて、サーバレス・アプリケーションの第1の部分を識別することができる。
デバッグ・コンポーネント204は、サーバレス・アプリケーションの第1の部分と関連したデバッグ・プロセスを実行することができる。例えば、デバッグ・コンポーネント204は、デバッガ・アプリケーションに基づいて、サーバレス・アプリケーションの第1の部分を実行することができる。1つの実施形態において、デバッグ・コンポーネント204は、ネットワーク116を介して、サーバレス・コンピューティング・コンポーネント102からサーバレス・アプリケーションの第1の部分を受け取ることができる。付加的に又は代替的に、デバッグ・コンポーネント204は、デバッグ・プロセスに基づいて、サーバレス・アプリケーションの第1の部分の変更されたバージョンを生成することができる。デバッグ・コンポーネント204はまた、ネットワーク116を介して、サーバレス・アプリケーションの第1の部分の変更されたバージョンをサーバレス・コンピューティング・コンポーネント102に伝送することができる。付加的に又は代替的に、デバッグ・コンポーネント204は、デバッグ・セッションと関連したリアルタイム・データを生成することができる。リアルタイム・データは、デバッグ・プロセスにより生成される出力データ、及び/又は、デバッグ・プロセスと関連した統計データとすることができる。リアルタイム・データはまた、サーバレス・アプリケーションの第1の部分と関連した1つ又は複数のエラーを識別することもできる。デバッグ・コンポーネント204はまた、ネットワーク116を介して、リアルタイム・データをサーバレス・コンピューティング・コンポーネント102に伝送することもできる。1つの態様において、デバッグ・コンポーネント204は、サーバレス・コンピューティング・コンポーネント102(例えば、サーバ又はサーバレス・コンピューティング・コンポーネント102と関連したサーバレス・コンピューティング・システム)によるサーバレス・アプリケーションの第2の部分の実行とほぼ同時に、サーバレス・アプリケーションの第1の部分と関連したデバッグ・セッションを実行することができる。
コンピューティング・デバイス114(例えば、識別コンポーネント202及び/又はデバッグ・コンポーネント204)は、人間が実行できない(例えば、一人の人間の知性の能力を上回る)サーバレス・アプリケーションの少なくとも一部と関連したデバッグ・プロセスを実行することを理解されたい。例えば、特定の期間にわたって、サーバレス・アプリケーションの少なくとも一部と関連したデバッグ・プロセスを実行しているときに処理されるデータ量、サーバレス・アプリケーションの少なくとも一部と関連したデバッグ・プロセスを実行しているときのデータ処理速度、及び/又はコンピューティング・デバイス114(例えば、識別コンポーネント202及び/又はデバッグ・コンポーネント204)により処理されるデータ・タイプは、同じ期間にわたって、一人の人間の知性により処理できる量、速度及びデータ・タイプと比べて大きく、速く、そして、それらとは異なり得る。また、コンピューティング・デバイス114(例えば、識別コンポーネント202及び/又はデバッグ・コンポーネント204)は、サーバレス・アプリケーションと関連した上記の1つ又は複数のプロセスも実行しながら、1つ又は複数の他の機能(例えば、完全に電源オンする、完全に実行する等)の実行に向けて完全に動作可能でもあり得る。さらに、コンピューティング・デバイス114(例えば、識別コンポーネント202及び/又はデバッグ・コンポーネント204)により生成される出力は、ユーザにより手動で取得できない情報を含むことがある。例えば、デバッグ・プロセスにより生成される情報の量、及び/又は、サーバレス・アプリケーションにより生成される種々の情報は、ユーザにより手動で取得される情報よりも複雑である場合がある。
図3は、本明細書で説明される1つ又は複数の実施形態によるサーバレス・アプリケーションのサブセットのリホストを容易にする、限定されない例示的システム300のブロック図を示す。簡潔にするために、本明細書で説明される他の実施形態において用いられる同様の要素の反復的な説明は省略する。
システム300は、コンピューティング・デバイス114及びサーバ302を含むことができる。コンピューティング・デバイス114は、ネットワーク116を介して、サーバ302と通信することができる。1つの実施形態において、サーバ302は、サーバレス・コンピューティング・コンポーネント102を含むことができる。代替的な実施形態において、サーバレス・コンピューティング・コンポーネント102は、サーバ302と通信する別のサーバ上に実装することができる。
システム300は、サーバレス・アプリケーションの残りの部分がサーバ302と関連したクラウド・プラットフォームにより実行される間、デバッグされるサーバレス・アプリケーションの部分のみが、コンピューティング・デバイス114と関連したデバッグ経路を通して与えられる、ハイブリッド実行モデルを可能にするサーバレス・プラットフォームとすることができる。従って、サーバレス・プラットフォームの特性(例えば、サーバレス・アプリケーションを書くために通常用いられる特性)を利用して、デバッグのためにサーバレス・アプリケーションの1つ又は複数の関数を削除し、コンピューティング・デバイス114にオフロードすることが可能である。コンピューティング・デバイス114は、例えば、サーバレス・アプリケーションのためのオフロード・ターゲットとすることができる。本明細書で用いられる場合、「オフロード・ターゲット」とは、サーバレス・アプリケーションに対するデバッグ・セッションが実行されるマシンとすることができる。特定の実施形態において、サーバレス・デバッガをサーバレス・アプリケーションとして書くことができる。付加的に、サーバ302と関連したクラウド・プラットフォームからサーバレス・アプリケーションの1つ又は複数の関数をオフロードすることによって、コンピューティング・デバイス114を介するネイティブ・デバッグ経験をユーザに提供することができる。例えば、サーバ302と関連したサーバレス・アプリケーションの関数が特定のプログラミング言語で書かれる場合、コンピューティング・デバイス114と関連したデバッガのユーザは、ネイティブ・デバッガ又はユーザが好む別のデバッガを使用することができる。本明細書で用いられる場合、「関数」とは、イベントに応答して実行されるコンピュータ・コードとすることができる。特定の実施形態において、関数は、引数タプル形式の入力(x1、...、xn)を受け取り、結果タプル(r1、...、rm)を返すことができる。関数の実行はまた、関数により生成される戻り値とは別個のログ記録(l1、...、lt)のシーケンスを生成することもできる。限定されない例において、サーバレス・アプリケーションが特定の関数a乃至fの出力を提供し、fの出力を別の関数bに提供する場合、関数シーケンスは、a→f→bの関数シーケンスと考えることができる。さらに、シーケンスの結果は、関数シーケンスにおける最終関数の結果と考えることができる。別の限定されない例において、fの実行が、何らかのイベントeによりトリガされるようにプログラミングされる場合、
Figure 0006930891

を規則と考えることができ、fは、イベント・トリガ型アクションと考えることができる。
特定の実施形態において、サーバレス・プラットフォームのサーバレス・アプリケーションのサブセットを、コンピューティング・デバイス114上でリホストすることができる。例えば、サーバレス・アプリケーション304の第1の部分304aは、コンピューティング・デバイス114により実行することができ、サーバレス・アプリケーション304の第1の部分304bは、サーバ302及び/又はサーバレス・コンピューティング・コンポーネント102により実行することができる。サーバレス・アプリケーション304の第1の部分304aは、例えば、コンピューティング・デバイス114によりデバッグされるサービス・アプリケーション304の一部とすることができる。例えば、サーバレス・アプリケーション304の第1の部分304aは、デバッグ目的で利用することができる。付加的に、サーバレス・アプリケーション304の第1の部分304aが特定のサーバレス・プラットフォーム(例えば、サーバ302)による実行に適していないとの判断に応答して、代替的なコンピューティング環境において、サーバレス・アプリケーション304の第1の部分304aを実行することができる(例えば、サーバレス・アプリケーション304の第1の部分304aは、コンピューティング・デバイス114により実行することができ、サーバレス・アプリケーション304の第2の部分304bは、サーバ302により実行することができる)。
限定されない例において、コンピューティング・デバイス114は、デバッグされる関数fを識別することができる。コンピューティング・デバイス114を介して関数fをデバッグするとき、サーバ302の基本入力−出力期待値を保持することができる。従って、サーバ302により実行されるとき、関数fが(r、...、r)を返し、ログ(l、...、l)を生成する場合、コンピューティング・デバイス114により実行される関数fのデバッグされたバージョンは、同一の結果をもたらすことができる。さらに、関数fが、サーバ302により実行される他の構成子(construct)をもたらす場合、他の構成子は、あたかもデバッグ・セッションが進行中でなかったかのように、サーバ302を介して実行し続けることができる。例えば、関数fはが関数評価のシーケンスa→f→bの一部として実行される場合、又は、関数fがイベント・トリガ型アクション
Figure 0006930891

である場合、両方の構成子は、あたかも関数fがデバッグされなかったかのように同じ結果を何度も実行することができる。
1つの実施形態において、コンピューティング・デバイス114及びサーバ302は、サーバレス実行環境として一緒に実装することができる。1つの態様において、サーバレス実行環境は、スタンドアロンの関数(例えば、いずれのトリガ・イベントにもリンクされないサブルーチン)の作成と関連したプリミティブ操作のセットをサポートすることができる。さらに、サーバレス実行環境はまた、アプリケーション定義のパラメータ化されたトリガの作成を容易にすることができる。サーバレス実行環境はまた、イベント・ソースのプログラマチック作成及び破壊も容易にすることができる。従って、トピックのセットを場当たり的方法で拡張及び減少することができる。付加的に、サーバレス・プラットフォームは、これらのトリガの発動をプログラムでサポートすることができる。イベントのプログラミングの発動に渡されるパラメータは、トリガと関連したイベント・トリガ型アクションのセットへの入力として渡すことができる。さらに、サーバレス実行環境は、こうしたアプリケーション定義のトリガを関数の実行に結合させるカスタム規則の作成を容易にすることができる。サーバレス実行環境はまた、コードのクローン化を回避するために、関数バインディング(function binding)のサポートを容易にすることもできる。1つの態様において、サーバレス実行環境は、カリー化形式の部分評価をサポートすることができ、それにより関数f(x、x、...、x)を新しい名前gにバインドすることができ、その結果、g(x、...、x)=f(x)となる。従って、コード・スキュー(code skew)のようなハザードを最小にすること、及び/又はサーバレス・アプリケーションの性能を向上させることができる。
別の実施形態において、コンピューティング・デバイス114は、サーバレス・アプリケーション304の第1の部分304aの実行中、バインディング・プロセスを用いて、x、...、xだけが分かっている文脈において関数fの実行を可能にすることができる。例えば、サーバレス・アプリケーション304の第1の部分304aと関連したデバッグ・プログラムが、デバッグ・プログラムの完了を容易にするために付加的なパラメータxを必要とする場合、バインディングは、サーバレス・アプリケーション304の第1の部分304aをクローン化及び変更する必要なしに、関数fを装うことができる関数gの作成を可能にする。別の実施形態において、サーバレス・アプリケーション304の第1の部分304aは、サーバレス・アプリケーション304の単一の関数とすることができる。従って、サーバレス・アプリケーション304の単一の関数を、サーバ302から抽出し、コンピューティング・デバイス114上で実行することができる(例えば、サーバレス・アプリケーション304の単一の関数は、サーバレス実行プラットフォームとは別個のマシン上で実行することができる)。一例において、単一の関数から、構成子のセットを作成することができる。構成子のセットは、継続渡しを用いて単一の関数を実装することができる。このことは、コンピューティング・デバイス114により実行されるデバッグ・プロセスが、サーバレス実行プラットフォームにおける1つ又は複数の他の処理の機能なしに、単一の関数の実行をサスペンドすることを可能にする。
図4は、本明細書で説明される1つ又は複数の実施形態によるデバッグ・セッションを容易にする、限定されない例示的システム400のブロック図を示す。簡潔にするために、本明細書で説明される他の実施形態において用いられる同様の要素の反復的な説明は省略する。
システム400は、インターフェース・コンポーネント104、リライタ・コンポーネント106、ブローカ・コンポーネント108、及びコンピューティング・デバイス114を含む。インターフェース・コンポーネント104、リライタ・コンポーネント106、及びブローカ・コンポーネント108は、サーバレス・クラウド・コンピューティング・プラットフォームと関連付けることができる。コンピューティング・デバイス114は、クライアント・プラットフォームと関連付けることができる。リライタ・コンポーネント106は、トリガ・コンポーネント402、プロキシ・コンポーネント404、ログ・コンポーネント406、及び/又はエラー条件コンポーネント408を含むことができる。トリガ・コンポーネント402、プロキシ・コンポーネント404、ログ・コンポーネント406、及び/又はエラー条件コンポーネント408は、コンピューティング・デバイス114により実行されるデバッグ・セッション410の実行を容易にすることができる。図4に示される実施形態において、システム400は、本明細書で説明される1つ又は複数の実施形態による、サーバレス・クラウド・コンピューティング・プラットフォームに対する正常なデバッグ・セッションについてのプロセス・フローを示すことができる。図4に示される代替的な実施形態において、システム400は、サーバレス・クラウド・コンピューティング・プラットフォームに対する異常終了(abort)のデバッグ・セッションについてのプロセス・フローを示すことができる。
1つの実施形態において、コンピューティング・デバイス114は、インターフェース・コンポーネント104及び/又はブローカ・コンポーネント108により容易にされるブローカリング(brokering)通信を介してリライタ・コンポーネント106と通信することができる。例えば、リライタ・コンポーネント106は、コンピューティング・デバイス114と間接的に通信することができる。1つの態様において、デバッグ・セッション410は、コンピューティング・デバイス114上に実装されるデバッガ・アプリケーションを介して、コンピューティング・デバイス114上で実行することができる。例えば、デバッグ・セッション410は、サーバレス・アプリケーション304の第1の部分304aを実行することができる。別の態様において、ブローカ・コンポーネント108は、リライタ・コンポーネント106とコンピューティング・デバイス114との間の通信を容易にするためのサービス・ブローカとすることができる。一例において、ブローカ・コンポーネント108は、仮想プライベート・ネットワーク(VPN)トンネリング・サービス(例えば、コモディティVPNサービス)を用いて、リライタ・コンポーネント106とコンピューティング・デバイス114との間の通信を容易にすることができる。従って、リライタ・コンポーネント106とコンピューティング・デバイス114との間にセキュリティ保護(secure)トンネルを設けることができる。コンピューティング・デバイス114上でインストール・ステップを実行し、リライタ・コンポーネント106とコンピューティング・デバイス114との間のセキュリティ保護トンネルに関する1つ又は複数のVPN資格証明(credentials)を獲得することができる。特定の実施形態において、1つ又は複数のVPN資格証明の獲得は、例えば、オフロード・ターゲット登録要求、アップストリーム・ハンドオフ・デバッグ開始要求等のような要求について監視するクラウド・サービスを介して達成することができる。この要求は、例えば、コンピューティング・デバイス114と関連したユーザ識別の既存のサーバレス・プラットフォームの資格証明を伴うことがある。さらに、ブローカ・コンポーネント108は、1つ又は複数のVPN資格証明を用いて、リライタ・コンポーネント106とコンピューティング・デバイス114とをセキュリティ保護された方法で接続することができる。しかしながら、コンピューティング・デバイス114が、リライタ・コンポーネント106により直接アクセス可能である特定の実施形態においては、コンピューティング・デバイス114は、リライタ・コンポーネント106との直接通信を開始することができる(例えば、ブローカ・コンポーネント108を用いずに)。
1つの実施形態において、コンピューティング・デバイス114によりデバッグされるサーバレス・アプリケーション304の第1の部分304a(例えば、サーバレス・アプリケーションの1つ又は複数の関数)に基づいて、リライタ・コンポーネント106により、アーチファクトのセット(例えば、アセットのセット)を生成することができる。アーチファクトのセットは、例えば、トリガ・コンポーネント402により生成される第1のアーチファクトを含むことができる。第1のアーチファクトは、トリガ・コンポーネント402によって生成される完了時(on−done)トリガTに関連し得る。例えば、デバッグされた関数は、トリガ・コンポーネント402によって生成される完了時トリガTに基づいて生成することができる(例えば、デバッグ・セッションが完了したとき)。デバッグされた関数は、ログ記録(l、...、l)を含み、結果(r、...、r)を返すことができる。トリガ・コンポーネント402によって生成される完了時トリガTは、T(r、...、r、l、...,l)として生成及び実行することができる。
付加的に又は代替的に、アーチファクトのセットは、プロキシ・コンポーネント404により生成される第2のアーチファクトを含むことができる。第2のアーチファクトは、プロキシ・コンポーネント404により生成されるアップストリーム・ハンドオフ関数Uに関連し得る。アップストリーム・ハンドオフ関数Uは、サーバ302とコンピューティング・デバイス114との間のプロキシとしての機能を果たすことができる。例えば、単一の関数fが、タイプ
Figure 0006930891

を含む場合、アップストリーム・ハンドオフ関数Uは、タイプ
Figure 0006930891

を含むことができる。アップストリーム・ハンドオフ関数Uは、完了時トリガT及びサーバレス・アプリケーション304の第1の部分304a(例えば、単一の関数f)に基づいて、サーバレス・アプリケーション304の第1の部分304aについてのソースを獲得することができる。アップストリーム・ハンドオフ関数Uはまた、コンピュータ・コード、完了時トリガT、及び/又はパラメータのセット(x、...、x)をコンピューティング・デバイス114に送ることもできる。1つの態様において、アップストリーム・ハンドオフ関数Uは、バウンド形式(bound form)U=U(T,f)を作成することにより、あたかも単一の関数fであるかのようにコンピューティング・デバイス114に提示することができる。このように、アップストリーム・ハンドオフ関数のバウンド形式U及びサーバレス・アプリケーション304の第1の部分304a(例えば、単一の関数f)は、対応するタイプのシグネチャを含むことができ、従って、サーバレス・アプリケーション304の第1の部分304a(例えば、単一の関数f)を用いる構成子のセット(例えば、シーケンス又は規則のセット)として用いることができる。
付加的に又は代替的に、アーチファクトのセットは、ログ・コンポーネント406により生成される第3のアーチファクトを含むことができる。第3のアーチファクトは、ログ・コンポーネント406により生成されるダウンストリーム・ハンドオフ関数Dに関連し得る。サーバレス・アプリケーション304の第2の部分304bが、あたかもサーバレス・アプリケーション304の第1の部分304a(例えば、単一の関数f)がコンピューティング・デバイス114によりデバッグされていないかのように実行されることを可能にするために、第3のアーチファクトを、ログ・コンポーネント406により生成することができる。第3のアーチファクトは、サーバレス・アプリケーション304の第1の部分304a(例えば、単一の関数f)の実行の完了を表すことができる。従って、サーバレス・アプリケーション304の第1の部分304a(例えば、単一の関数f)の呼び出しについての結果又はログ記録に関するあらゆる後のクエリを適切に供することができる。サーバレス・アプリケーション304の第1の部分304a(例えば、単一の関数f)が(r、...、r)を戻し、ログ記録(l、...、l)を作成する場合、ダウンストリーム・ハンドオフ関数Dは、D(r、...、r、l、...、l)と等しい。さらに、ダウンストリーム・ハンドオフ関数Dは、(r、...、r、l、...、l)と関連付けられた値を返す及び/又はログ記録する。付加的に又は代替的に、アーチファクトのセットは、ログ・コンポーネント406により生成される第4のアーチファクトを含むことができる。第4のアーチファクトは、ログ・コンポーネント406により生成される継続規則Rに関連し得る。継続規則Rは、サーバ302に、
Figure 0006930891

を介して、ダウンストリーム・ハンドオフ関数Dをイベント・トリガ型アクションに変化させるよう、命令することができ、ここで、イベント・トリガ型アクションは、デバッグ・セッション410に関連したイベントと関連付けられる。
付加的に又は代替的に、アーチファクトのセットは、エラー条件コンポーネント408により生成される第5のアーチファクトを含むことができる。第5のアーチファクトは、エラー条件コンポーネント408により生成される回路ブレーカ関数Cに関連し得る。特定の実施形態において、第5のアーチファクトは、デバッグ・セッション410に関連したエラーと関連付けられた実行経路のために作成することができる。例えば、サーバレス・アプリケーション304の第1の部分304aのデバッグが完了する前に、コンピューティング・デバイス114が、デバッグ・セッション410を早期に終了することがある。別の例において、デバッグ・セッション410と関連したデバッガにおいて、コンピューティング・デバイス114が、デバッグ・セッションがサーバレス・アプリケーション304の第1の部分304aの実行を正常終了しないような方法で、サーバレス・アプリケーション304の第1の部分304aを修正することがある。さらに別の例において、サーバレス・アプリケーション304の第1の部分304aを実行するデバッグ・セッション410と関連付けられたオフロード・プロセスにおいてエラーが存在することがある。そうした場合、コンピューティング・デバイス114は、サーバレス・アプリケーション304の第1の部分304aの正しい実行のファサード(facade)を保持するように1つ又は複数のアクションを実行することができ、その結果、サーバレス・クラウド・コンピューティング・プラットフォームは、サーバレス・アプリケーション304の第1の部分304aが適切に実行されると判断する。例えば、アップストリーム・ハンドオフ関数Uと同じように、完了時トリガTの入力、サーバレス・アプリケーション304の第1の部分304a(例えば、単一の関数f)、及び引数のセット(x、...、x)として利用する回路ブレーカ関数Cを作成することができる。回路ブレーカ関数Cは、引数のセット(x、...、x)に対してサーバレス・アプリケーション304の第1の部分304a(例えば、単一の関数f)をプログラムで呼び出すことができる。回路ブレーカ関数Cはまた、サーバレス・アプリケーション304の第1の部分304a(例えば、単一の関数f)の出力を用いて、完了時トリガTを実行することもできる。エラー条件の検出に応答して、コンピューティング・デバイス114は、回路ブレーカ関数Cと関連した第5のアーチファクトを呼び出すことができる。
特定の実施形態において、アップストリーム・ハンドオフ関数Uは、コンピューティング・デバイス114に、要求されるデバッグ・セッションを通知することができる。コンピューティング・デバイス114は、完了時トリガTを、サーバレス・アプリケーション304の第1の部分304a(例えば、単一の関数f)についての関数ソースにインジェクトすることができる。コンピューティング・デバイス114はまた、サーバレス・アプリケーション304の第1の部分304a(例えば、単一の関数f)を処理することができるデバッグ・セッション410のデバッガ・アプリケーションを判断及び/又はコンパイルすることもできる。完了時トリガTを、サーバレス・アプリケーション304の第1の部分304a(例えば、単一の関数f)にインジェクトするために、コンピューティング・デバイス114は、完了時トリガ・アルゴリズムを実行することができる。サーバレス・アプリケーション304の第1の部分304aと関連した関数がfと呼ばれ、完了時トリガはTと呼ばれ、関数fが特定のプラミング言語で書かれる例において、オフロード・ターゲット・アルゴリズムは、以下のコンピュータ・コードを生成することができる。
Figure 0006930891
fire(発動)コマンド「fire()」は、所定の記録により所定のトリガを発動するために、サーバ302との通信を容易にすることができる。ダウンストリーム・ハンドオフ関数Dを生成して、所定の結果とログ記録のセットの解釈を容易にすることができる。完了時トリガTをインジェクトした後、コンピューティング・デバイス114上のデバッグ・セッション410と関連したコンパイラ及びデバッガは、関数fの呼び出しを決定することができる。例えば、サーバレス・アプリケーション304の第1の部分304aが特定のプログラミング言語で書かれる場合、コンピューティング・デバイス114は、特定のプログラミング言語のためのコンパイラを用いて、サーバレス・アプリケーション304の第1の部分304aをコンパイルし、次に、特定のプログラミング言語のためのデバッガを呼び出すことができる。回路ブレーカ関数Cを呼び出すべきかどうかを決定するために、コンピューティング・デバイス114は、特定のアクティビティ(例えば、デバッグ・プロセスからの予期しない終了、デバッグ・プロセスからの早期終了等)について、デバッグ・セッション410と関連したコンパイラ及びデバッガを監視することができる。
図5は、本明細書で説明される1つ又は複数の実施形態によるデバッグ・セッションを容易にする、限定されない例示的システム500のブロック図を示す。簡潔にするために、本明細書で説明される他の実施形態において用いられる同様の要素の反復的な説明は省略する。
図5に示される実施形態において、システム500は、関数シーケンスA→B→Cに対するデバッグを示す。例えば、コンピューティング・デバイス114により生成される識別子データは、コンピューティング・デバイス114のデバッグ・セッション410を介してデバッグされるべき関数Bを識別することができる。関数Bは、少なくとも関数A及び関数Cと関連付けることができる。例えば、関数Bは、関数Aが情報を関数Bに提供し、関数Bがデータを関数Cに提供する関数シーケンスにおいて存在し得る。従って、リライタ・コンポーネント106は、関数A及び関数Bがサーバレス・クラウド・コンピューティング・プラットフォーム(例えば、サーバ302と関連したサーバレス・クラウド・コンピューティング・プラットフォーム)により実行される間、コンピューティング・デバイス114により実行される関数Bをコンピューティング・デバイス114に提供することができる。
関数A、関数B及び関数Cをコンピューティング・デバイスへオフロードするのではなく、コンピューティング・デバイス114と関連したオフロードを関数Bに限定することは、関数A、関数B及び関数Cと関連したサーバレス・アプリケーションのコンピューティング性能の低下を最小にするのを助長することができる。さらに、特定の実施形態において、関数A及び関数Cが、デバッグ・セッション410によりサポートされないプログラミング言語で書かれていることがある。例えば、関数Bは、第1のプログラミング言語で書かれ、関数A及び関数Cは、第1のプログラミング言語とは異なる少なくとも第2のプログラミング言語で書かれることがある。
コンピューティング・デバイス114への関数Bのオフロードを容易にするために、リライタ・コンポーネント106により、アーチファクトのセットを生成することができる。例えば、リライタ・コンポーネント106は、関数Aと関連した第1のシーケンスS、及び関数Bと関連した第2のシーケンスSを生成することができる。第1のシーケンスSは、S=a→Uと等しくなることができ、ここでUは、関数Bに対して作成される、プロキシ・コンポーネント404と関連したアップストリーム・ハンドオフ関数である。第2のシーケンスSは、S=D→cと等しくなることができ、ここでDは、関数Bに対して作成される、ログ・コンポーネント406と関連したダウンストリーム・ハンドオフ関数である。
関数Bをデバッグするとき、継続規則は、ダウンストリーム・ハンドオフ関数Dの呼び出しをトリガすることができる。関数Bと関連したシーケンスをスプライスするとき、継続規則は、代替的に、第2のシーケンスSを呼び出すことができる。従って、第1のシーケンスS及び第2のシーケンスSを呼び出す正味の影響は、オリジナル・シーケンスSが呼び出された場合と同じであり得る。従って、第2のシーケンスSの出力は、オリジナル・シーケンスSの出力と合致し、構成アクションについての呼び出しの全ての介在するログ及び記録を保持することができる。
1つの実施形態において、デバッグ・セッション410は、ログ記録及び/又は呼び出し記録を減らすことにより、さらに最適化することができる。例えば、デバッグ・セッション410は、ダウンストリーム・ハンドオフ関数Dなしに実行することができる。ダウンストリーム・ハンドオフ関数Dは、関数Bと関連した呼び出しの完了を反映するログ及びアクティブ化記録を提供するように作成できるので、関数Bについてのログ及び結果記録を最小限にし、第2のシーケンスSを関数Cから始めることができる。第2のシーケンスSを用いて、オリジナル・シーケンスSによる出力の生成を容易にすることができる。従って、特定の実施形態において、デバッグ・セッション410は、ダウンストリーム・ハンドオフ関数Dなしに実行することができる。特定の実施形態において、関数Bは、規則のセットに基づいて、デバッグ・セッション410を介してデバッグすることができる。例えば、関数Bは、規則のセットに基づいてデバッグされるイベント駆動型関数とすることができる。限定されない例において、デバッグされる関数Bが規則
Figure 0006930891

の一部である場合、アーチファクトのセットを作成することができる。新しい規則
Figure 0006930891

を作成することができ、ここで、Uは、関数Bについて作成されたアップストリーム・ハンドオフ関数である。さらに、特定の実施形態において、デバッグ可能な関数を作成するとき、コンピューティング・デバイス114は、デバッグ可能な関数がオリジナル関数の名前を選択する(co-opt)かどうかを決定することができる。例えば、関数Bをデバッグするとき、コンピューティング・デバイス114は、一時的に、関数Bの名前を関数B’に変更し、アップストリーム・ハンドオフ関数Uを関数Bと命名するかどうかを決定する。1つの態様において、関数Bと対話するための既存のインターフェースが、関数B’を用いることができる。1つの態様において、デバッグ・セッション410は、アップストリーム・ハンドオフ関数Uに、関数Bの名前を用いるよう選択させることにより開始することができる。別の態様において、デバッグ・セッション410は、関数Bからアップストリーム・ハンドオフ関数Uへの内部マッピングを維持することができる。
図6は、本明細書で説明される1つ又は複数の実施形態による、サーバレス・アプリケーションと関連したデバッグ・セッションを容易にするための、限定されない例示的コンピュータ実施方法600のフロー図を示す。1つの実施形態において、方法600は、サーバレス・コンピューティング・コンポーネント102と関連付けることができる。602において、コンピューティング・デバイスから、プロセッサに動作的に結合されたシステムにより(例えば、インターフェース・コンポーネント104により)、コンピューティング・デバイスによりリホストされるサーバレス・アプリケーションの第1の部分を識別する識別子データを受け取り、システムは、ネットワーク・デバイスを介してコンピューティング・デバイスと通信する。604において、システムにより(例えば、インターフェース・コンポーネント104又はブローカ・コンポーネント108により)、サーバレス・アプリケーションの第1の部分をコンピューティング・デバイスに伝送する。606において、システムにより(例えば、リライタ・コンポーネント106により)、コンピューティング・デバイスを介して、サーバレス・アプリケーションの第1の部分と関連したデバッグ・セッションの性能を促進させる。608において、システムにより(例えば、リライタ・コンポーネント106により)、サーバレス・アプリケーションの第2の部分を実行する。付加的に又は代替的に、サーバ及び/又はシステムと関連したサーバレス・クラウド・コンピューティング・プラットフォームにより、サーバレス・アプリケーションの第2の部分を実行することができる。1つの実施形態において、方法600は、システムにより(例えば、インターフェース・コンポーネント104により)、コンピューティング・デバイスから、サーバレス・アプリケーションの第1の部分の変更されたバージョンを受け取ることをさらに含むことができる。付加的に、方法600は、システムにより(例えば、リライタ・コンポーネント106により)、サーバレス・アプリケーションの第1の部分の変更されたバージョンを、サーバレス・アプリケーションの第2の部分と結合することをさらに含むことができる。特定の実施形態において、方法600は、システムにより(例えば、リライタ・コンポーネント106により)、デバッグ・セッションと関連したリアルタイム・データに基づいて、サーバレス・アプリケーションの第2の部分を実行することをさらに含むことができる。さらに、特定の実施形態において、方法600は、(例えば、サーバレス・アプリケーションと関連したエラーの数の低減を促進するため、及び/又は、サーバレス・アプリケーションの性能の改善を促進するために)コンピューティング・デバイスがサーバレス・アプリケーションの第1の部分と関連したデバッグ・セッションを実行する間、サーバレス・アプリケーションの第2の部分を実行することをさらに含むことができる。
図7は、本明細書で説明される1つ又は複数の実施形態による、サーバレス・アプリケーションと関連したデバッグ・セッションを容易にするための、限定されない例示的コンピュータ実施方法700のフロー図を示す。1つの実施形態において、方法700は、コンピューティング・デバイス114と関連付けることができる。702において、プロセッサに動作的に結合されたシステムにより(例えば、識別コンポーネント202により)、サーバレス・アプリケーションの第1の部分と関連した識別子データを判断する。704において、システムにより(例えば、識別コンポーネント202により)、ネットワーク・デバイスを介して、識別子データをサーバレス・コンピューティング・システムに伝送する。706において、システムにより(例えば、デバッグ・コンポーネント204により)、サーバレス・コンピューティング・システムから、サーバレス・アプリケーションの第1の部分を受け取る。708において、システムにより(例えば、デバッグ・コンポーネント204により)、サーバレス・コンピューティング・システムによるサーバレス・アプリケーションの第2の部分の実行とほぼ同時に、サーバレス・アプリケーションの第1の部分と関連したデバッグ・セッションを実行する。1つの実施形態において、方法700は、システムにより(例えば、識別コンポーネント202又はデバッグ・コンポーネント204により)、ネットワーク・デバイスを介して、サーバレス・コンピューティング・システムと通信することをさらに含むことができる。別の実施形態において、方法700は、システムにより(例えば、デバッグ・コンポーネント204により)、サーバレス・アプリケーションの第1の部分の変更されたバージョンをサーバレス・コンピューティング・システムに伝送することをさらに含むことができる。さらに別の実施形態において、方法700は、システムにより(例えば、デバッグ・コンポーネント204により)、デバッグ・セッションと関連したリアルタイム・データをサーバレス・コンピューティング・システムに伝送することをさらに含むことができる。特定の実施形態において、方法700は、ネットワーク・デバイスを介してサーバレス・コンピューティング・システムと通信するコンピューティング・デバイスによってデバッグ・アプリケーションを用いることを含むことができる。
説明を簡単にするために、コンピュータ実施方法は、一連の動作として示され、説明される。本革新は、示される動作、及び/又は動作の順序に限定されるものではなく、例えば、動作は、様々な順序で及び/又は同時に行われ、他の動作は本明細書に提示及び説明されないことを認識及び理解されたい。さらに、開示される主題によるコンピュータ実施方法を実施するために、全ての示される動作を必要としないことがある。さらに、当業者であれば、コンピュータ実施方法を、状態図又はイベントを介して一連の相関状態として代替的に表すこともできることを理解及び認識するであろう。付加的に、以下に及び本明細書の全体を通して開示されるコンピュータ実施方法は、こうしたコンピュータ実施方法をコンピュータに伝送及び転送するのを容易にするために、物品上に格納することができる。本明細書で用いられる場合、物品という用語は、あらゆるコンピュータ可読デバイス又はストレージ媒体からアクセス可能なコンピュータ・プログラムを含むように意図される。
さらに、少なくともサーバレス・アプリケーションを実行し、ネットワーク(例えば、コンピューティング・デバイスとサーバとの間の通信)を介してサーバレス・アプリケーションの一部を伝送することは、電気的及び機械的コンポーネント及び回路の組み合わせから確立されるので、人間は、サーバレス・コンピューティング・コンポーネント(例えば、サーバレス・コンピューティング・コンポーネント102)及び/又はコンピューティング・デバイス(例えば、本明細書に開示されるコンピューティング・デバイス114)により実行される処理を再現又は実行することはできない。例えば、人間は、サーバレス・コンピューティング・コンポーネントを実行することができず、かつ、コンピューティング・デバイスとサーバ等との間のサーバレス・アプリケーションと関連したデータ及び/又はパケット化されたデータを通信することができない。
開示される主題の種々の態様についての文脈を与えるために、図8及び以下の説明は、開示される主題の種々の態様を実装できる適切な環境の一般的な説明を提供するように意図される。図8は、本明細書に説明される1つ又は複数の実施形態を容易にすることができる限定されない例示的動作環境のブロック図を示す。簡潔にするために、本明細書で説明される他の実施形態において用いられる同様の要素の反復的な説明は省略する。
図8を参照すると、本開示の種々の態様を実施するための好適な動作環境800が、コンピュータ812を含むこともできる。コンピュータ812は、処理ユニット814、システム・メモリ816及びシステム・バス818を含むこともできる。システム・バス818は、これに限定されるものではないが、システム・メモリ816を含むシステム・コンポーネントを処理ユニット814に結合する。処理ユニット814は、種々の利用可能なプロセッサのいずれかとすることができる。二重マイクロプロセッサ及び他のマルチプロセッサ・アーキテクチャを処理ユニット814として用いることもできる。システム・バス818は、メモリ・バス又はメモリ・コントローラ、周辺バス又は外部バス、及び/又は、これらに限定されるものではないが、業界標準アーキテクチャ(ISA)、マイクロ・チャネル・アーキテクチャ(MSA)、拡張ISA(EISA)、Intelligent Drive Electronics(IDE)、VESA Local Bus(VLB)、Peripheral Component Interconnect(PCI)、カード・バス、ユニバーサル・シリアル・バス(USB)、Advanced Graphics Port(AGP)、Firewire(IEEE1394)、及びSmall Computer Systems Interface(SCSI)を含む任意の種々の利用可能なバス・アーキテクチャを用いたローカル・バスを含む、幾つかのタイプのバス構造体のいずれかとすることができる。
システム・メモリ816はまた、揮発性メモリ820及び不揮発性メモリ822を含むこともできる。起動の際などにコンピュータ812内の要素間で情報を転送するための基本ルーチンを含む基本入力/出力システム(BIOS)は、不揮発性メモリ822内に格納される。コンピュータ812はまた、取り外し可能/取り外し不能な揮発性/不揮発性コンピュータ・ストレージ媒体を含むこともできる。図8は、例えば、ディスク・ストレージ824を示す。ディスク・ストレージ824は、これらに限定されるものではないが、磁気ディスク・ドライブ、フロッピー・ディスク・ドライブ、テープ・ドライブ、Jazドライブ、Zipドライブ、LS−100ドライブ、フラッシュ・メモリ・カード、又はメモリ・スティックのようなデバイスを含むこともできる。ディスク・ストレージ824は、別個に又は他のストレージ媒体と組み合わせてストレージ媒体を含むこともできる。システム・バス818へのディスク・ストレージ824の接続を容易にするために、一般的に、インターフェース826のような、取り外し可能又は取り外し不能インターフェースが用いられる。図8は、ユーザと好適な動作環境800において説明される基本コンピュータ・リソースとの間の媒介として働くソフトウェアも示す。そうしたソフトウェアは、例えば、オペレーティング・システム828を含むこともできる。ディスク・ストレージ824上に格納することができるオペレーティング・システム828は、コンピュータ812のリソースを制御し、割り当てるように働く。
システム・アプリケーション830は、例えばシステム・メモリ816内又はディスク・ストレージ824上に格納された、プログラム・モジュール832及びプログラム・データ834を通じたオペレーティング・システム828によるリソースの管理を利用する。この開示は、種々のオペレーティング・システム、又はオペレーティング・システムの組み合わせにより実施できることを認識されたい。ユーザは、入力デバイス836を通じてコマンド又は情報をコンピュータ812に入力する。入力デバイス836は、これらに限定されるものではないが、マウス、トラックボール、スタイラス、タッチ・パッドのようなポインティング・デバイス、キーボード、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星放送受信アンテナ、スキャナ、TVチューナ・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、ウェブ・カメラ等を含む。これら及び他の入力デバイスは、インターフェース・ポート838を介してシステム・バス818を通じて処理ユニット814に接続される。インターフェース・ポート838は、例えば、シリアル・ポート、パラレル・ポート、ゲーム・ポート及びユニバーサル・シリアル・バス(USB)を含む。出力デバイス840は、同じタイプのポートの一部を入力デバイス836として使用する。従って、例えば、USBポートを用いて、コンピュータ812への入力を提供し、出力情報をコンピュータ812から出力デバイス840に提供することができる。出力アダプタ842は、特別なアダプタを必要とする他の出力デバイス840の中でも、モニタ、スピーカ及びプリンタのような幾つかの出力デバイス840があることを示すように提供される。出力アダプタ842は、限定ではなく例示として、出力デバイス840とシステム・バス818との間の接続手段を提供するビデオ及び音声カードを含む。遠隔コンピュータ844のような、他のデバイス及び/又はデバイスのシステムは、入力及び出力の機能の両方を提供することに留意されたい。
コンピュータ812は、遠隔コンピュータ844のような1つ又は複数の遠隔コンピュータへの論理接続を用いるネットワーク化環境で動作することができる。遠隔コンピュータ844は、コンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサ・ベースのアプライアンス、ピア・デバイス、又は他の共通ネットワーク・ノード等とすることができ、一般的に、コンピュータ812に関して記載される要素の多く又は全てを含むこともできる。簡潔にするために、メモリ・ストレージ・デバイス846だけが、遠隔コンピュータ844と共に示されている。遠隔コンピュータ844は、ネットワーク・インターフェース848を通じてコンピュータ812に論理的に接続され、次に、通信接続850を介して物理的に接続される。ネットワーク・インターフェース848は、ローカル・エリア・ネットワーク(LAN)、広域エリア・ネットワーク(WAN)、セルラー・ネットワーク等のような有線及び/又は無線通信ネットワークを含む。LAN技術として、Fiber Distributed Data Interface(FDDI)、Copper Distributed Data Interface(CDDI)、イーサネット、トークン・リング等が挙げられる。WAN技術として、これらに限定されるものではないが、ポイント・ツー・ポイント・リンク、統合サービス・デジタル網(Integrated Service Digital Networks:ISDN)及びその変形のような回路交換網、パケット交換網、及びデジタル加入者線(Digital Subscriber Line:DSL)が挙げられる。通信接続850は、ネットワーク・インターフェース848をシステム・バス818に接続するために用いられるハードウェア/ソフトウェアに関する。通信接続850は、ネットワーク・インターフェース848をシステム・バス818に接続するために用いられるハードウェア/ソフトウェアを指す。通信接続850は、明確に示すためにコンピュータ812内部に示されるが、これはコンピュータ812の外部にあってもよい。ネットワーク・インターフェース848への接続のためのハードウェア/ソフトウェアは、例示のためだけに、正規電話グレード・モデム(regular telephone grade modem)、ケーブル・モデム及びDSLモデム、ISDNモデムを含むモデム、ISDNアダプタ、及びイーサネット・カードのような内部及び外部技術を含むこともできる。
本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書に述べられる技術の実装は、クラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られている又は後に開発される他のあらゆるタイプのコンピューティング環境と共に実装されることが可能である。
クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダとの対話で迅速にプロビジョニング及び解放することができる構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの、便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、及び少なくとも4つの配備モデルを含むことができる。
特徴は、以下の通りである。
オンデマンド・セルフサービス:クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的な機構を通じてアクセスされる。
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて、異なる物理及び仮想リソースを要求に応じて動的に割り当て及び再割り当てすることにより、複数のコンシューマにサービスを提供するためにプールされる。コンシューマは、一般に、提供されるリソースの正確な位置についての制御又は知識を持たないが、より高レベルの抽象化では位置(例えば、国、州、又はデータセンタ)を特定できる場合があるという点で、位置とは独立しているといえる。
迅速な弾力性:機能は、迅速かつ弾力的に、幾つかの場合自動的に、プロビジョニングして素早くスケール・アウトし、迅速にリリースして素早くスケール・インさせることができる。コンシューマにとって、プロビジョニングに利用可能なこれらの機能は、多くの場合、無制限であり、いつでもどんな量でも購入できるように見える。
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御及び最適化する。リソース使用を監視し、制御し、報告し、利用されるサービスのプロバイダとコンシューマの両方に対して透明性をもたらすことができる。
サービス・モデルは以下の通りである。
Software as a Service(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。これらのアプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定の考え得る例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎をなすクラウド・インフラストラクチャを管理又は制御しない。
Platform as a Service(PaaS):プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上に配備するために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージなどの基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、配備されたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成に対して制御を有する。
Infrastructure as a Service(IaaS):コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアを配備及び動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングするために、コンシューマに提供される機能である。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対する制御、及び場合によってはネットワーク・コンポーネント(例えば、ホストのファイアウォール)選択の限定された制御を有する。
配備モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運営される。このクラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
コミュニティ・クラウド:クラウド・インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、オンプレミス又はオフプレミスに存在することができる。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散のためのクラウド・バースティング)によって結び付けられる2つ又はそれより多いクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
クラウド・コンピューティング環境は、無国籍性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
ここで図9を参照すると、例証的なクラウド・コンピューティング環境950が示される。図示のように、クラウド・コンピューティング環境950は、例えば、携帯情報端末(PDA)又は形態電話954A、デスクトップ・コンピュータ954B、ラップトップ・コンピュータ954C、及び/又は自動車コンピュータ・システム954Nなどといった、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスが通信することができる、1つ又は複数のクラウド・コンピューティング・ノード910を含む。ノード910は、互いに通信することができる。ノード910は、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、若しくはハイブリッド・クラウド、又はこれらの組み合わせなど、1つ又は複数のネットワークにおいて物理的又は仮想的にグループ化することができる(図示せず)。これにより、クラウド・コンピューティング環境950は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、及び/又はソフトウェアを提供することが可能になる。図9に示されるコンピューティング・デバイス954A〜Nのタイプは単に例示であることを意図し、コンピューティング・ノード910及びクラウド・コンピューティング環境950は、いずれのタイプのネットワーク及び/又はネットワーク・アドレス指定可能な接続上でも(例えば、ウェブ・ブラウザを用いて)、いずれのタイプのコンピュータ化された装置とも通信できることを理解されたい。
ここで図10を参照すると、クラウド・コンピューティング環境950(図9)によって提供される機能抽象化層のセットが示される。図10に示されるコンポーネント、層、及び機能は単に例示であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
ハードウェア及びソフトウェア層1060は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、メインフレーム1061と、RISC(Reduced Instruction Set Computer(縮小命令セット・コンピュータ))アーキテクチャ・ベースのサーバ1062と、サーバ1063と、ブレード・サーバ1064と、ストレージ・デバイス1065と、ネットワーク及びネットワーキング・コンポーネント1066とが含まれる。幾つかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア1067及びデータベース・ソフトウェア1068を含む。
仮想化層1070は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ1071、仮想ストレージ1072、仮想プライベート・ネットワークを含む仮想ネットワーク1073、仮想アプリケーション及びオペレーティング・システム1074、並びに仮想クライアント1075を提供することができる。
一例においては、管理層1080は、以下で説明される機能を提供することができる。リソース・プロビジョニング1081は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定1082は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡と、リソースの消費に対する課金又は請求とを提供する。1つの例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータル1083は、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理1084は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(Service Level Agreement、SLA)の計画及び履行1085は、SLAに従って将来の要件が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
ワークロード層1090は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロード及び機能の例には、マッピング及びナビゲーション1091、ソフトウェア開発及びライフサイクル管理1092、仮想教室教育配信1093、データ分析処理1094、トランザクション処理1095、及び本発明の1つ又は複数の実施形態のガベージ・コレクション処理1096が含まれる。
本発明は、統合のいずれかの可能な技術的詳細レベルにおける、システム、方法、及び/又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの:すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカード若しくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び/又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び/又はエッジサーバを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、又は、「C」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて、電子回路を個人化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施する命令を含む製品を製造するようにすることもできる。コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
本主題は、1つのコンピュータ及び/又は複数のコンピュータ上で実行されるコンピュータ・プログラム製品のコンピュータ実行可能命令の一般的な文脈で上述されたが、当業者であれば、本開示は、他のプログラム・モジュールと組み合わせて実装する又は実装されることも可能であることを認識するであろう。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、コンポーネント、データ構造などを含むことができる。さらに、当業者であれば、本発明のコンピュータ実施方法は、シングル・プロセッサ又はマルチプロセッサ・コンピュータ・システム、ミニ・コンピューティング・デバイス、メインフレーム・コンピュータ、並びにコンピュータ、手持ち式コンピューティング・デバイス(例えば、PDA、電話)、マイクロプロセッサ・ベースの又はプログラム可能なコンシューマ若しくは産業用電子機器等を含む、他のコンピュータ・システム構成で実施できることを理解するであろう。示される態様は、通信ネットワークを通じてリンクされる遠隔処理デバイスによってタスクが実行される分散型コンピューティング環境で実施することもできる。しかしながら、本開示の全てではないが一部の態様をスタンドアロン・コンピュータ上で実施することができる。分散型コンピューティング環境において、プログラム・モジュールは、ローカル及び遠隔両方のメモリ・ストレージ・デバイス内に配置することができる。
本出願において用いられるとき、「コンポーネント」、「システム」、「プラットフォーム」、「インターフェース」等の用語は、コンピュータに関連するエンティティ、又は1つ又は複数の特定の機能を有する動作マシンに関連するエンティティを指すこと、及び/又は含むことができる。本明細書に開示されるエンティティは、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、又は実行中のソフトウェアとすることができる。例えば、コンポーネントは、これらに限定されるものではないが、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行可能プログラム、実行のスレッド、プログラム、及び/又はコンピュータとすることができる。例証として、サーバ上で実行されているアプリケーション及びサーバの両方が、コンポーネントであり得る。1つ又は複数のコンポーネントは、プロセス及び/又は実行のスレッド内にあることができ、コンポーネントは、1つのコンピュータ上に局所化されること、及び/又は2つ又はそれより多いコンポーネント間で分散されることが可能である。別の例において、それぞれのコンポーネントは、種々のデータ構造がその上に格納された種々のコンピュータ可読媒体から実行することができる。コンポーネントは、1つ又は複数のデータ・パケットを有する信号(例えば、ローカル・システム、分散型システムにおいて、及び/又は信号を介する他のシステムと共にインターネットなどのネットワークにわたって、別のコンポーネントと対話する1つのコンポーネントからのデータ)などに従って、ローカル及び/又は遠隔プロセスを介して通信することができる。別の例において、コンポーネントは、電気若しくは電子回路により動作される機械的部品により与えられる特定の機能を有し、プロセッサにより実行されるソフトウェア又はファームウェア・アプリケーションにより動作される装置とすることができる。こうした場合において、プロセッサは、装置の内部にあっても又は外部にあってもよく、ソフトウェア又はファームウェア・アプリケーションの少なくとも一部を実行することができる。更に別の例として、コンポーネントは、機械的部品なしに電子コンポーネントを通じて特別な機能を提供する装置とすることができ、電子コンポーネントは、電子コンポーネントの機能を少なくとも部分的に与えるソフトウェア又はファームウェアを実行するためのプロセッサ又は他の手段を含むことができる。1つの態様において、コンポーネントは、例えば、クラウド・コンピューティング・システム内の仮想マシンを介して電子コンポーネントをエミュレートすることができる。
付加的に、用語「又は(or)」は、排他的「又は」ではなく包含的「又は」を意味するよう意図される。つまり、特に断らない限り又は文脈から明らかな場合、「XはA又はBを用いる」は、自然の包含的順列(natural inclusive permutation)のいずれかを意味するように意図される。つまり、XはAを用いる;XはBを用いる;又は、XはA及びBの両方を用いる場合、「XはA又はBを用いる」は、上記の例のいずれかにおいて満たされる。さらに、本の明細書及び添付の図面において使用される冠詞「1つ(a及びan)」は一般的に、特に断らない限り又は文脈から明らかな場合、「1つ又はそれ以上」を単数の形態に向けることを意味するように解釈すべきである。本明細書で用いられる場合、用語「例」及び/又は「例示的」は、例、事例、又は例証としての役割を果たすように用いられる。誤解を避けるために、本明細書に開示される主題は、こうした例に限定されない。さらに、用語「例」及び/又は「例示的」として本明細書に説明されるいずれの態様又は設計も、他の態様又は設計と比べて好ましい又は有利であるとは限らず、又は当業者には周知の同等の例示的構造及び技術を排除することを意味するものではない。
本明細書で用いられるとき、用語「プロセッサ」は、これらに限定されるものではないが、シングルコア・プロセッサ、ソフトウェア・マルチスレッド実行能力を有するシングル・プロセッサ、ハードウェア・マルチスレッド技術を有するマルチコア・プロセッサ、並列プラットフォーム、及び分散型共有メモリを有する並列プラットフォームを含む、実質的にあらゆるコンピューティング処理ユニット又はデバイスを指すことがある。付加的に、プロセッサは、集積回路、特定用途向け集積回路(ASIC)、デジタル・シグナル・プロセッサ(DSP)、フィールド・プログラマブル、ゲート・アレイ(FPGA)、プロ具ラマブル論理コントローラ(PLC)、結合プログラム可能論理回路(complex programmable logic device、CPLD)、ディスクリート・ゲート又はトランジスタ論理、ディスクリート・ハードウェア・コンポーネント、又は本明細書で説明される機能を実施するように設計されたそれらの任意の組み合わせを指すこともある。さらに、プロセッサは、空間使用量を最適化する又はユーザ機器の性能を高めるために、これらに限定されるものではないが、分子及び量子ドット・ベースのトランジスタン、スイッチ及びゲートのようなナノスケール・アーキテクチャを利用することができる。プロセッサはまた、コンピューティング処理ユニットの組み合わせとして実装することもできる。本開示において、「格納する(store)」、「ストレージ」、「データ・ストア」、「データ・ストレージ」、「データベース」、並びに動作及びコンポーネントの機能に関連した実質的に他のいずれかの情報ストレージ・コンポーネントのような用語は、「メモリ・コンポーネント」、「メモリ」内に具体化されたエンティティ、又はメモリを含むコンポーネントを指すために用いられる。本明細書で説明されるメモリ及び/又はメモリ・コンポーネントは、揮発性メモリ若しくは不揮発性メモリのいずれかとすることができ、又は揮発性メモリ及び不揮発性メモリの両方を含むことができることを認識されたい。限定ではなく例証として、不揮発性メモリは、読み取り専用メモリ(ROM)、プログラム可能ROM(PROM)、電気的プログラム可能ROM(EPROM)、電気的消去可能ROM(EEPROM)、フラッシュ・メモリ、又は不揮発性ランダム・アクセス・メモリ(RAM)(例えば、強誘電体RAM(FeRAM))を含むことができる。揮発性メモリは、外部キャッシュ・メモリとして働くことができるRAMを含むことができる。限定ではなく例証として、RAMは、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブル・データ・レートSDRAM(DDR SDRAM)、エンハンストSDRAM(ESDRAM)、シンクリンク(Synchlink)DRAM(SLDRAM)、ダイレクト・ランバス(Rambus)・ダイナミックRAM(DRDRAM)、及びランバス・ダイナミックRAM(RDRAM)のような多くの形態で利用可能である。さらに、システム又はコンピュータ実施方法の開示されたメモリ・コンポーネントは、これら及び他の何れかの好適なタイプのメモリを含むが、これらに限定されないことを意図する。
上述したものは、システム及びコンピュータ実施方法の単なる例を含む。もちろん、本開示を説明するためにコンポーネント又はコンピュータ実施方法のあらゆる考えられる組み合わせを説明することはできないが、当業者であれば、本開示の多くのさらなる組み合わせ及び順列が可能であることを認識することができる。さらに、用語「含む(include)」、「有する(have)」、「持っている(possess)」等が詳細な説明、特許請求の範囲、及び添付図面に用いられる範囲で、そうした用語は、用語「備える(comprising)」が特許請求の範囲中で移行語として用いられるときに解釈されるように用語「備える(comprising)」と同様に包括的であることが意図されている。
種々の実施形態の説明が例証のために提示されたが、網羅的であること又は開示される実施形態を制限することを意図するものではない。当業者には、説明される実施形態の範囲及び趣旨からいつ出すすることなく、多くの変更及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理及び実際の用途、又は市場で見出される技術に優る技術の改善を最もよく説明するために、又は、当業者が本明細書で開示される実施形態を理解することができるように、選択された。
100、200、300、400、500:システム
102:サーバレス・コンピューティング・コンポーネント
104:インターフェース・コンポーネント
106:リライタ・コンポーネント
108:ブローカ・コンポーネント
110:メモリ
112:プロセッサ
114:コンピューティング・デバイス
116:ネットワーク
202:識別コンポーネント
204:デバッグ・コンポーネント
302:サーバ
304:サーバレス・アプリケーション
304a:第1の部分
304b:第2の部分
402:トリガ・コンポーネント
404:プロキシ・コンポーネント
406:ログ・コンポーネント
408:エラー条件コンポーネント
410:デバッグ・セッション
600、700:方法
800:動作環境
812:コンピュータ
814:処理ユニット
816:システム・メモリ
818:システム・バス
820:揮発性メモリ
822:不揮発性メモリ
824:ディスク・ストレージ
828:オペレーティング・システム
830:システム・アプリケーション
836:入力デバイス
838:インターフェース・ポート
840:出力デバイス
842:出力アダプタ
844:遠隔コンピュータ
850:通信接続

Claims (25)

  1. コンピュータ実行可能な複数のコンポーネントを格納するメモリと、
    前記メモリ内に格納されるコンピュータ実行可能な複数のコンポーネントを実行するプ
    ロセッサと、
    を備え、前記コンピュータ実行可能な複数のコンポーネントは、
    コンピューティング・デバイスから、前記コンピューティング・デバイスによりリホ
    ストされるサーバレス・アプリケーションの第1の部分を識別する識別子データを受け取
    るインターフェース・コンポーネントであって、前記コンピューティング・デバイスは、
    ネットワーク・デバイスを介してサーバレス・コンピューティング・システムと通信する
    、インターフェース・コンポーネントと、
    前記サーバレス・アプリケーションの前記第1の部分が前記コンピューティング・デ
    バイスにより実行され、前記サーバレス・アプリケーションの第2の部分が前記サーバレ
    ス・コンピューティング・システムにより実行されるのを可能にするように、前記サーバ
    レス・アプリケーションをリライトするリライタ・コンポーネントであって、前記インタ
    ーフェース・コンポーネントは、前記サーバレス・アプリケーションの前記第1の部分を
    前記コンピューティング・デバイスに経路変更し、前記コンピューティング・デバイスに
    より実行される前記サーバレス・アプリケーションの前記第1の部分についてのデバッグ
    ・セッションを容易にする、リライタ・コンポーネントと、
    を含む、システム。
  2. 前記インターフェース・コンポーネントは、前記コンピューティング・デバイスから、
    前記サーバレス・アプリケーションの前記第1の部分の変更されたバージョンを受け取る
    、請求項1に記載のシステム。
  3. 前記リライタ・コンポーネントは、前記サーバレス・アプリケーションの前記第1の部
    分の前記変更されたバージョンを、前記サーバレス・アプリケーションの前記第2の部分
    と結合する、請求項2に記載のシステム。
  4. 前記サーバレス・コンピューティング・システムは、前記コンピューティング・デバイ
    スが前記サーバレス・アプリケーションの前記第1の部分と関連した前記デバッグ・セッ
    ションを実行する間、前記サーバレス・アプリケーションの前記第2の部分と関連した処
    理スレッドのセットを実行する、請求項1に記載のシステム。
  5. 前記サーバレス・アプリケーションの前記第1の部分は、関数のシーケンスにおける第
    1の関数であり、前記インターフェース・コンポーネントは、前記第1の関数を前記コン
    ピューティング・デバイスに経路変更する、請求項1に記載のシステム。
  6. 前記リライタ・コンポーネントは、命令の前記シーケンスにおける前記第1の関数の前
    に第2の関数を生成し、命令の前記シーケンスにおける前記第1の関数の後に第3の関数
    を生成し、かつ前記第1の関数が前記コンピューティング・デバイスに経路変更された後
    に前記第2の関数及び前記第3の関数を実行する、請求項5に記載のシステム。
  7. 前記インターフェース・コンポーネントは、前記サーバレス・アプリケーションの前記
    第1の部分と関連する前記デバッグ・セッションと関連したリアルタイム・データを受け
    取る、請求項1に記載のシステム。
  8. 前記リライタ・コンポーネントは、前記デバッグ・セッションと関連した前記リアルタ
    イム・データに基づいて、前記サーバレス・アプリケーションの前記第2の部分を実行す
    る、請求項7に記載のシステム。
  9. 前記インターフェース・コンポーネントは、前記サーバレス・アプリケーションの前記
    第1の部分を前記コンピューティング・デバイスに経路変更して、前記サーバレス・アプ
    リケーションの性能の改善を促進する、請求項7に記載のシステム。
  10. プロセッサに動作的に結合されたシステムにより、コンピューティング・デバイスから
    、前記コンピューティング・デバイスによりリホストされるサーバレス・アプリケーショ
    ンの第1の部分を識別する識別子データを受け取ることであって、前記システムは、ネッ
    トワーク・デバイスを介して前記コンピューティング・デバイスと通信する、受け取るこ
    とと、
    前記システムにより、前記サーバレス・アプリケーションの前記第1の部分を前記コン
    ピューティング・デバイスに伝送することと、
    前記システムにより、前記コンピューティング・デバイスを介して、前記サーバレス・
    アプリケーションの前記第1の部分と関連したデバッグ・セッションの性能を促進するこ
    とと、
    前記システムにより、前記サーバレス・アプリケーションの第2の部分を実行すること
    と、
    を含む、コンピュータにより実施される方法。
  11. 前記システムにより、前記コンピューティング・デバイスから、前記サーバレス・アプ
    リケーションの前記第1の部分の変更されたバージョンを受け取ることをさらに含む、請
    求項10に記載のコンピュータにより実施される方法。
  12. 前記システムにより、前記サーバレス・アプリケーションの前記第1の部分の前記変更
    されたバージョンを、前記サーバレス・アプリケーションの前記第2の部分と結合するこ
    とをさらに含む、請求項11に記載のコンピュータにより実施される方法。
  13. 前記システムにより、前記デバッグ・セッションと関連したリアルタイム・データに基
    づいて、前記サーバレス・アプリケーションの第2の部分を実行することをさらに含む、
    請求項11に記載のコンピュータにより実施される方法。
  14. 前記実行することは、前記コンピューティング・デバイスが前記サーバレス・アプリケ
    ーションの前記第1の部分と関連した前記デバッグ・セッションを実行して、前記サーバ
    レス・アプリケーションと関連したエラー数の低減を促進する間、前記サーバレス・アプ
    リケーションの前記第2の部分を実行することを含む、請求項13に記載のコンピュータ
    により実施される方法。
  15. プロセッサに動作的に結合されたシステムにより、サーバレス・アプリケーションの第
    1の部分と関連した識別子データを判断することと、
    前記システムにより、ネットワーク・デバイスを介して、前記識別子データをサーバレ
    ス・コンピューティング・システムに伝送することと、
    前記システムにより、前記サーバレス・コンピューティング・システムから、前記サー
    バレス・アプリケーションの前記第1の部分を受け取ることと、
    前記システムにより、前記サーバレス・コンピューティング・システムによる前記サー
    バレス・アプリケーションの第2の部分の実行とほぼ同時に、前記サーバレス・アプリケ
    ーションの前記第1の部分と関連したデバッグ・セッションを実行することと、
    を含む、コンピュータにより実施される方法。
  16. 前記システムにより、ネットワーク・デバイスを介して前記サーバレス・コンピューテ
    ィング・システムと通信することをさらに含む、請求項15に記載のコンピュータにより
    実施される方法。
  17. 前記システムにより、前記サーバレス・アプリケーションの前記第1の部分の変更されたバージョンを前記サーバレス・コンピューティング・システムに伝送することをさらに含む、請求項15に記載
    のコンピュータにより実施される方法。
  18. 前記システムにより、前記デバッグ・セッションと関連したリアルタイム・データを前
    記サーバレス・コンピューティング・システムに伝送することをさらに含む、請求項15
    に記載のコンピュータにより実施される方法。
  19. 前記デバッグ・セッションを実行することは、ネットワーク・デバイスを介して前記サ
    ーバレス・コンピューティング・システムと通信するコンピューティング・デバイスによ
    ってデバッガ・アプリケーションを用いることを含む、請求項15に記載のコンピュータ
    により実施される方法。
  20. サーバレス・アプリケーションをデバッグするためのコンピュータ・プログラムであっ
    て、前記コンピュータ・プログラムはプログラム命令を有し、前記プログラム命令は、プ
    ロセッサにより実行可能であり、前記プロセッサに、
    前記プロセッサにより、コンピューティング・デバイスから、サーバレス・コンピュ
    ーティング・システムと関連したサーバレス・アプリケーションの第1の部分を識別する
    識別子データを受け取ることと、
    前記プロセッサにより、前記サーバレス・アプリケーションの前記第1の部分を前記
    コンピューティング・デバイスに伝送することと、
    前記プロセッサにより、前記サーバレス・アプリケーションの前記第1の部分をデバ
    ッグする前記コンピューティング・デバイスによるデバッグ・セッションの間、前記サー
    バレス・アプリケーションの第2の部分を実行することと、
    を行わせる、コンピュータ・プログラム。
  21. 前記プログラム命令は、前記プロセッサにより実行可能であり、さらに前記プロセッサ
    に、
    前記コンピューティング・デバイスから、前記サーバレス・アプリケーションの前記第
    1の部分の変更されたバージョンを受け取ることを行わせること、
    を行わせる、請求項20に記載のコンピュータ・プログラム。
  22. 前記プログラム命令は、前記プロセッサにより実行可能であり、さらに前記プロセッサ
    に、
    前記プロセッサにより、前記サーバレス・アプリケーションの前記第1の部分の前記変
    更されたバージョンを、前記サーバレス・アプリケーションの前記第2の部分と結合する
    こと、
    を行わせる、請求項21に記載のコンピュータ・プログラム。
  23. サーバレス・アプリケーションをデバッグするためのコンピュータ・プログラムであっ
    て、前記コンピュータ・プログラムはプログラム命令を有し、前記プログラム命令は、プ
    ロセッサにより実行可能であり、前記プロセッサに、
    前記プロセッサにより、サーバレス・アプリケーションの第1の部分と関連した識別子
    データをサーバレス・コンピューティング・システムに伝送することと、
    前記プロセッサにより、前記サーバレス・コンピューティング・システムから、前記サ
    ーバレス・アプリケーションの前記第1の部分を受け取ることと、
    前記プロセッサにより、前記サーバレス・アプリケーションの前記第1の部分と関連し
    たデバッグ・セッションを実行することと、
    を行わせる、コンピュータ・プログラム。
  24. 前記プログラム命令は、前記プロセッサにより実行可能であり、さらに前記プロセッサ
    に、
    前記プロセッサにより、前記サーバレス・アプリケーションの前記第1の部分の変更さ
    れたバージョンを前記サーバレス・コンピューティング・システムに伝送すること、
    を行わせる、請求項23に記載のコンピュータ・プログラム。
  25. 前記プログラム命令は、前記プロセッサにより実行可能であり、さらに前記プロセッサ
    に、
    前記プロセッサにより、前記デバッグ・セッションと関連したリアルタイム・データを
    前記サーバレス・コンピューティング・システムに伝送すること、
    を行わせる、請求項23に記載のコンピュータ・プログラム。








JP2017202438A 2016-10-25 2017-10-19 グラフ・リライティングを介したサーバレス・アプリケーションのデバッグの容易化 Active JP6930891B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662412564P 2016-10-25 2016-10-25
US62/412564 2016-10-25
US15/475491 2017-03-31
US15/475,491 US10303582B2 (en) 2016-10-25 2017-03-31 Facilitating debugging serverless applications via graph rewriting

Publications (2)

Publication Number Publication Date
JP2018073405A JP2018073405A (ja) 2018-05-10
JP6930891B2 true JP6930891B2 (ja) 2021-09-01

Family

ID=61969646

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017202438A Active JP6930891B2 (ja) 2016-10-25 2017-10-19 グラフ・リライティングを介したサーバレス・アプリケーションのデバッグの容易化

Country Status (4)

Country Link
US (4) US10303582B2 (ja)
JP (1) JP6930891B2 (ja)
DE (1) DE102017217971B4 (ja)
GB (1) GB2558045A (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10990073B2 (en) * 2016-08-30 2021-04-27 Mitsubishi Electric Corporation Program editing device, program editing method, and computer readable medium
US10257033B2 (en) * 2017-04-12 2019-04-09 Cisco Technology, Inc. Virtualized network functions and service chaining in serverless computing infrastructure
WO2018195899A1 (en) * 2017-04-28 2018-11-01 Beijing Didi Infinity Technology And Development Co., Ltd. System and method for task scheduling and device management
US11283694B2 (en) * 2017-07-20 2022-03-22 Movius Interactive Corportion System and method providing usage analytics for a mobile device
US10394695B2 (en) * 2017-09-25 2019-08-27 Oracle International Corporation Method and system for recording and debugging process flows
US10951633B1 (en) * 2018-03-30 2021-03-16 Citigroup Technology, Inc. Serverless auto-remediating security systems and methods
US10990369B2 (en) * 2018-04-30 2021-04-27 EMC IP Holding Company LLC Repurposing serverless application copies
WO2019228632A1 (en) * 2018-05-30 2019-12-05 Telefonaktiebolaget Lm Ericsson (Publ) Serverless lifecycle management dispatcher
US11281635B2 (en) * 2018-10-26 2022-03-22 EMC IP Holding Company LLC Serverless solution for optimization of object versioning
DE112019005604T5 (de) * 2018-11-08 2021-09-09 Intel Corporation Function-as-a-service-system-verbesserungen (faas-system-verbesserungen)
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
CN115291964B (zh) 2018-12-21 2023-05-09 华为云计算技术有限公司 减少无服务器函数启动延迟的机制
US10986184B1 (en) 2019-03-05 2021-04-20 Edjx, Inc. Systems and methods for it management of distributed computing resources on a peer-to-peer network
CN112019475B (zh) * 2019-05-28 2021-12-21 阿里巴巴集团控股有限公司 无服务器架构下的资源访问方法、设备、系统及存储介质
US10769058B1 (en) * 2019-05-30 2020-09-08 Capital One Services, Llc Generic serverless performance testing framework
US11240045B2 (en) * 2019-10-30 2022-02-01 Red Hat, Inc. Detection and prevention of unauthorized execution of severless functions
CN114830614B (zh) * 2019-12-13 2024-06-11 利维帕尔森有限公司 用于双向通信系统的功能即服务云聊天机器人
US11416273B2 (en) 2020-01-16 2022-08-16 Red Hat, Inc. Adaptive and secure bitecode injection based on comparison with previously stored bytecode
US11489844B2 (en) * 2020-04-17 2022-11-01 Twistlock Ltd. On-the-fly creation of transient least privileged roles for serverless functions
US11375042B2 (en) * 2020-07-10 2022-06-28 Kyndryl, Inc. Symphonizing serverless functions of hybrid services
US12056396B2 (en) 2021-09-13 2024-08-06 Pure Storage, Inc. Storage-aware management for serverless functions
US11681445B2 (en) 2021-09-30 2023-06-20 Pure Storage, Inc. Storage-aware optimization for serverless functions
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution
US11947445B2 (en) * 2022-02-18 2024-04-02 Mckinsey & Company, Inc. Adjustment of operating parameters of arranged software assets
US20240022578A1 (en) * 2022-07-13 2024-01-18 International Business Machines Corporation Invoking response(s) based on analysis of a dataset obtained from searching a security endpoint
US11614982B1 (en) * 2022-08-29 2023-03-28 Sedai Inc. Autonomous concurrency for serverless functions

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819093A (en) 1995-03-03 1998-10-06 Sun Microsystems, Inc. System and method for a distributed debugger for debugging distributed application programs
JP2003271418A (ja) 2002-03-11 2003-09-26 Empirix Inc ウエブベースのソフトウエアオブジェクトのテスト方法
JP2007156987A (ja) 2005-12-07 2007-06-21 Toshiba Corp ソフトウェア部品およびソフトウェア部品管理システム
US7792992B2 (en) * 2008-05-29 2010-09-07 Xerox Corporation Serverless distributed monitoring and anomaly detection for a service oriented architecture
US20130167123A1 (en) 2008-12-18 2013-06-27 Adobe Systems Incorporated Application debugging
US8060792B2 (en) * 2009-03-31 2011-11-15 Amazon Technologies, Inc. Monitoring and automated recovery of data instances
US8332365B2 (en) * 2009-03-31 2012-12-11 Amazon Technologies, Inc. Cloning and recovery of data volumes
US8819701B2 (en) * 2009-12-12 2014-08-26 Microsoft Corporation Cloud computing monitoring and management system
US9111035B2 (en) * 2010-10-11 2015-08-18 At&T Intellectual Property I, L.P. Methods, systems, and computer program products for analyzing an occurrence of an error in a computer program by restricting access to data identified as being sensitive information
WO2012170705A1 (en) * 2011-06-07 2012-12-13 Vertical Computer Systems, Inc. System and method for running an internet server behind a closed firewall
CN103237082B (zh) 2013-05-06 2016-07-27 百度在线网络技术(北京)有限公司 云测试方法、系统和云端服务器
US9104432B2 (en) * 2013-06-24 2015-08-11 International Business Machines Corporation Extracting stream graph structure in a computer language by pre-executing a deterministic subset
US9201759B2 (en) * 2013-07-26 2015-12-01 Sap Se Debugging applications in the cloud
US8930067B1 (en) * 2014-05-05 2015-01-06 Nmtc, Inc. System and method for a subscription-based diagnostic software service
US10049033B2 (en) * 2014-06-03 2018-08-14 Sap Se Application gateway for cloud computing systems
US9378079B2 (en) * 2014-09-02 2016-06-28 Microsoft Technology Licensing, Llc Detection of anomalies in error signals of cloud based service
US9684502B2 (en) * 2015-06-24 2017-06-20 Cliqr Technologies, Inc. Apparatus, systems, and methods for distributed application orchestration and deployment
US20170024717A1 (en) * 2015-07-21 2017-01-26 Mitoc Group Inc. Microapplications Software Marketplace for Digital Systems and Method of Use
CN105117337B (zh) 2015-08-26 2018-09-04 小米科技有限责任公司 应用调试方法、客户端及调试平台
CN105528288B (zh) 2015-12-01 2018-12-14 深圳市迪菲特科技股份有限公司 一种软件测试方法以及装置
US10033833B2 (en) * 2016-01-11 2018-07-24 Cisco Technology, Inc. Apparatus, systems and methods for automatic distributed application deployment in heterogeneous environments
US10768920B2 (en) * 2016-06-15 2020-09-08 Microsoft Technology Licensing, Llc Update coordination in a multi-tenant cloud computing environment

Also Published As

Publication number Publication date
US10303582B2 (en) 2019-05-28
JP2018073405A (ja) 2018-05-10
US20190213111A1 (en) 2019-07-11
GB2558045A (en) 2018-07-04
US20180113793A1 (en) 2018-04-26
US11301364B2 (en) 2022-04-12
DE102017217971B4 (de) 2022-08-11
US20180113791A1 (en) 2018-04-26
GB201717042D0 (en) 2017-11-29
US10929274B2 (en) 2021-02-23
US10489277B2 (en) 2019-11-26
US20210117311A1 (en) 2021-04-22
DE102017217971A1 (de) 2018-04-26

Similar Documents

Publication Publication Date Title
JP6930891B2 (ja) グラフ・リライティングを介したサーバレス・アプリケーションのデバッグの容易化
US9971810B2 (en) Multifusion of a stream operator in a streaming application
US8327337B2 (en) Stream based debugging techniques
US20170255545A1 (en) Methods and systems of function-specific tracing
US11902251B2 (en) Socket transferring for HPC networks using kernel tracing
US20160294662A1 (en) Dynamic tracing framework for debugging in virtualized environments
US20170262355A1 (en) Debugging applications
US20200142812A1 (en) Debugging streaming applications using debug regions
US20140123114A1 (en) Framework for integration and execution standardization (fiesta)
US10212023B2 (en) Methods and systems to identify and respond to low-priority event messages
US9513948B2 (en) Automated virtual machine provisioning based on defect state
US10812406B2 (en) Assigning processing elements to stream computing servers
US10248554B2 (en) Embedding profile tests into profile driven feedback generated binaries
US11163603B1 (en) Managing asynchronous operations in cloud computing environments
US11327973B2 (en) Critical path analysis of activity trace files
US10078572B1 (en) Abnormal timing breakpoints
US11748244B2 (en) Regression testing for web applications
Kutner Deploying with JRuby 9k: deliver scalable web apps using the JVM
Savchenko Testing microservice applications
Hamzeh Decision support for migrating application's functionality to FaaS

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210406

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210705

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210805

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210812

R150 Certificate of patent or registration of utility model

Ref document number: 6930891

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150