JP2017507381A - 自動化された実験プラットホーム - Google Patents

自動化された実験プラットホーム Download PDF

Info

Publication number
JP2017507381A
JP2017507381A JP2016540578A JP2016540578A JP2017507381A JP 2017507381 A JP2017507381 A JP 2017507381A JP 2016540578 A JP2016540578 A JP 2016540578A JP 2016540578 A JP2016540578 A JP 2016540578A JP 2017507381 A JP2017507381 A JP 2017507381A
Authority
JP
Japan
Prior art keywords
execution
work
experimental
dag
data
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.)
Granted
Application number
JP2016540578A
Other languages
English (en)
Other versions
JP6659544B2 (ja
Inventor
グプタ,グンジャン
サクラル,アマン
モリス,ジョン
ペイン,ロバート
サンドバル,マイケル
タルバイ,デイビッド
Original Assignee
アティジオ リミテッド ライアビリティ カンパニー
アティジオ リミテッド ライアビリティ カンパニー
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 アティジオ リミテッド ライアビリティ カンパニー, アティジオ リミテッド ライアビリティ カンパニー filed Critical アティジオ リミテッド ライアビリティ カンパニー
Publication of JP2017507381A publication Critical patent/JP2017507381A/ja
Application granted granted Critical
Publication of JP6659544B2 publication Critical patent/JP6659544B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0633Workflow analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • Development Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本発明は、ユーザが様々なタイプのデータ駆動ワークフローを構築および実行することができるようにする視覚的統合開発環境(「IDE」)を提供する自動化された実験プラットホームに関する。自動化された実験プラットホームは、APIサーバ、カタログ、クラスタ管理構成要素、および実行クラスタノードを含むバックエンド構成要素を含む。ワークフローは、有向非巡回グラフとして視覚的に表現され、テキストにエンコードされる。ワークフローは、実行クラスタノードの実行のために分散される作業に変換される。

Description

関連出願の相互参照
本出願は、2013年12月17日付で提出された米国特許仮出願第61/916,888号の利益を主張する。
本発明は、演算システムに関し、特に、ユーザが、データ駆動ワークフローを構築および実行することができるようにする視覚的統合開発環境を提供する自動化された実験プラットホームに関する。
データ処理は、過去60年間、主に、基本オペレーティングシステム機能およびハンドコードされたデータ処理ルーチンを使用するアドホックプログラム(ad hoc program)に依存することから、データベース管理システムと関連する各種の一般化されたデータ処理アプリケーションと、ユーティリティと、ツールとを含む、非常に様々な異なるタイプのさらに高いレベルの自動化されたデータ処理環境に進化して来た。しかしながら、かかる自動化されたデータ処理システムのほとんどは、データ処理手順、データモデル、データタイプ、および他のかかる制約の規定による制約を含む重要な制約と関連する。また、ほとんどの自動化されたシステムは、依然として特定のインターフェイスと関連する機能の特定タイプのデータを目指すために必要なデータ変換だけでなく、データ処理ステップを規定するために多量の問題特定コーディングを伴う。その結果、データ処理システムおよびツールを設計および開発する者だけでなく、それを使用する者もまた、新たなデータ処理システムおよび機能を模索し続ける。
本発明は、ユーザが、様々なタイプのデータ駆動ワークフローを構築および実行することができるようにする視覚的統合開発環境(「IDE」)を提供する自動化された実験プラットホームに関する。自動化された実験プラットホームは、APIサーバと、カタログと、クラスタ管理構成要素と、実行クラスタノードとを含むバックエンド構成要素を含む。ワークフローは、有向非巡回グラフとして視覚的に表現され、テキストにエンコードされる。ワークフローは、実行クラスタノードに実行のために分散される作業に変換される。
現在開示されている自動化された実験プラットホームのユーザにより生成される例示的なワークフローを図示している。 図1に図示されている実験の駆動に次いで、ユーザが図1における入力データセット102の代わりに新たな入力データセット202を使用することにより、実験をどのように修正できるかを示している。 図2に図示されている第2ワークフローのダッシュボード図を示している。 様々なタイプのコンピュータに対する一般的なアーキテクチャダイヤグラムを提供している。 インターネット連結されている分散コンピューティングシステムを示している。 クラウドコンピューティングを示している。 図1に図示されているものと類似のアーキテクチャを有する汎用コンピュータシステムのような汎用コンピュータシステムの一般化されたハードウェアおよびソフトウェア構成要素を示している。 2タイプの仮想マシンおよび仮想マシン実行環境を示している。 2タイプの仮想マシンおよび仮想マシン実行環境を示している。 クライアントとサーバコンピュータとの間の電子通信を示している。 RESTful APIにおけるリソースの役割を示している。 RESTfulアプリケーションで使用されるHTTPアプリケーション階層プロトコルにより提供される四つの基本動詞、または動作を示している。 RESTfulアプリケーションで使用されるHTTPアプリケーション階層プロトコルにより提供される四つの基本動詞、または動作を示している。 RESTfulアプリケーションで使用されるHTTPアプリケーション階層プロトコルにより提供される四つの基本動詞、または動作を示している。 RESTfulアプリケーションで使用されるHTTPアプリケーション階層プロトコルにより提供される四つの基本動詞、または動作を示している。 本発明が目指す科学的なワークフローシステムの主要構成要素を示している。 比較的簡単な六つのノード実験DAGのJSONエンコーディングを示している。 比較的簡単な六つのノード実験DAGのJSONエンコーディングを示している。 比較的簡単な六つのノード実験DAGのJSONエンコーディングを示している。 比較的簡単な六つのノード実験DAGのJSONエンコーディングを示している。 比較的簡単な六つのノード実験DAGのJSONエンコーディングを示している。 カタログサービスに格納されるメタデータ(図12における1226)を示している。 カタログサービスに格納されるメタデータ(図12における1226)を示している。 カタログサービスに格納されるメタデータ(図12における1226)を示している。 カタログサービスに格納されるメタデータ(図12における1226)を示している。 図13C〜図13Dを参照して前記論じられた実験DAGのような実験DAGに対応する実験レイアウトDAGの一例を提供している。 図13C〜図13Dを参照して前記論じられた実験DAGのような実験DAGに対応する実験レイアウトDAGの一例を提供している。 図13C〜図13Dを参照して前記論じられた実験DAGのような実験DAGに対応する実験レイアウトDAGの一例を提供している。 図13C〜図13Dを参照して前記論じられた実験DAGのような実験DAGに対応する実験レイアウトDAGの一例を提供している。 図13C〜図13Dを参照して前記論じられた実験DAGのような実験DAGに対応する実験レイアウトDAGの一例を提供している。 図13C〜図13Dを参照して前記論じられた実験DAGのような実験DAGに対応する実験レイアウトDAGの一例を提供している。 図13C〜図13Dを参照して前記論じられた実験DAGのような実験DAGに対応する実験レイアウトDAGの一例を提供している。 図13C〜図13Dを参照して前記論じられた実験DAGのような実験DAGに対応する実験レイアウトDAGの一例を提供している。 図13C〜図13Dを参照して前記論じられた実験DAGのような実験DAGに対応する実験レイアウトDAGの一例を提供している。 科学的なワークフローシステム内における実験設計および実行のプロセスを示している。 科学的なワークフローシステム内における実験設計および実行のプロセスを示している。 科学的なワークフローシステム内における実験設計および実行のプロセスを示している。 科学的なワークフローシステム内における実験設計および実行のプロセスを示している。 科学的なワークフローシステム内における実験設計および実行のプロセスを示している。 科学的なワークフローシステム内における実験設計および実行のプロセスを示している。 科学的なワークフローシステム内における実験設計および実行のプロセスを示している。 科学的なワークフローシステム内における実験設計および実行のプロセスを示している。 科学的なワークフローシステム内における実験設計および実行のプロセスを示している。 実験DAGのサンプル視覚的表現および実験DAGの対応するJSONエンコーディングを図示している。 実験DAGのサンプル視覚的表現および実験DAGの対応するJSONエンコーディングを図示している。 フロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出に次いで、科学的なワークフローシステムバックエンドのAPIサーバ構成要素(図16Aにおける1608)により行われる活動を示している。 フロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出に次いで、科学的なワークフローシステムバックエンドのAPIサーバ構成要素(図16Aにおける1608)により行われる活動を示している。 フロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出に次いで、科学的なワークフローシステムバックエンドのAPIサーバ構成要素(図16Aにおける1608)により行われる活動を示している。 フロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出に次いで、科学的なワークフローシステムバックエンドのAPIサーバ構成要素(図16Aにおける1608)により行われる活動を示している。 フロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出に次いで、科学的なワークフローシステムバックエンドのAPIサーバ構成要素(図16Aにおける1608)により行われる活動を示している。 フロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出に次いで、科学的なワークフローシステムバックエンドのAPIサーバ構成要素(図16Aにおける1608)により行われる活動を示している。 フロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出に次いで、科学的なワークフローシステムバックエンドのAPIサーバ構成要素(図16Aにおける1608)により行われる活動を示している。 実行のために実行クラスタノードに作業を分散するために科学的なワークフローシステムバックエンドのクラスタマネージャ構成要素上で実行されるルーチン「クラスタマネージャ」に対する制御流れ図を提供している。 ルーチン「ピンガ」に対する制御流れ図を提供している。 実行クラスタノード上で作業の実行を開始するルーチン「実行器」に対する制御流れ図を提供している。
本発明は、ユーザがデータ駆動実験を実施することができるようにする自動化された実験プラットホームに関する。実験は、複雑な演算タスクであり、視覚的IDEによりユーザによるワークフローとして組み立てられる。かかる視覚的IDEおよび自動化された実験プラットホームに基づくモデルは、一般的に、三つの基本エンティティを含む。:(1)入力データセット;(2)中間および出力データセットを含む生成されたデータセット;および(3)設定による実行モジュール。ワークフローがグラフィックで構築されると、自動化された実験プラットホームは、ワークフローを実行して出力データセットを生産する。設定された実行モジュールは、実験のランタイムインスタンスにより複数の作業に変換される。かかる作業は、自動化された実験プラットホームにより実行され監視され、自動化された実験プラットホームが含まれている同一のコンピュータシステム上で局所的に、若しくはリモートコンピュータシステム上で遠隔に実行され得る。換言すれば、ワークフローの実行は、分散コンピューティング構成要素にマッピングされ得る。特定の具現において、自動化された実験プラットホームは、それ自体が多数のコンピュータシステムを介して分散される。自動化された実験プラットホームは、多数の作業および多数のワークフローを並列に駆動することができ、データセットの冗長生成および作業の冗長実行を避けるために高度な論理を含み、必要に応じて、データセットは、自動化された実験プラットホームにより既に生成されカタログ化されている。
実行モジュールは、python、java、hive、mysql、scala、spark、および他のプログラミング言語を含む、非常に様々な他の言語のいずれかで記録され得る。自動化された実験プラットホームは、各種タイプの実行モジュールへのデータの入力に要するデータ変換を自動処理する。自動化された実行プラットホームは、実験の全体ヒストリーが再利用および再実行だけでなく、前の実験、実行モジュール、およびデータセットに基づく新たな実験の構築のためにユーザによりアクセスされ得るように、ワークフロー、実行モジュール、およびデータセットとして具現される相違するバージョンの実験を認識しカタログ化するバージョニング構成要素をさらに含む。
自動化された実験プラットホームは、ユーザがローカルマシンから、またローカルマシンに実行モジュールをアップロードおよびダウンロードするだけでなく、ローカルマシンから、またローカルマシンに、入力、中間、および出力データセットをアップロードおよびダウンロードすることができるようにするダッシュボード能力を提供する。また、ユーザは、ネームにより、実行モジュールおよびユーザデータセットと関連する一つ以上の属性に対する値により、また説明により実行モジュールおよびデータセットを検索することができる。既存のワークフローが複製され得、既存のワークフローの一部は、新たな実験のための新たなワークフローを生成するために抽出され修正され得る。自動化された実験プラットホームにより提供される視覚的ワークフロー生成施設は、ユーザが複雑なデータ駆動処理タスクを迅速に設計および実行することができるようにすることで、ユーザの生産性を大幅に増加させる。また、自動化された実験プラットホームは、実行の潜在的な重複および重複したデータを識別することができることから、ハンドコードされたり、より知能的ではない自動化されたデータ処理システムに比べて、相当な演算効率性が得られる。また、自動化された実験プラットホームは、ユーザが実験、ワークフロー、データセット、および実行モジュールを公開、共有、および協力的に生成するようにチームとして協動することができるようにする。
図1は現在開示されている自動化された実験プラットホームのユーザにより生成される例示的なワークフローを図示している。以下に論じられる図1、および図2〜図3はワークフローが自動化された実験プラットホームにより提供される視覚的IDEのグラフィックユーザインターフェイスを介してユーザにディスプレイされるようなワークフローを図示している。図1において、ワークフロー100は、二つの入力データセット102および104を含む。第1入力データセット102は、示されている例において、モンテカルロシミュレーション(Monte‐Carlo simulation)の結果セットからなる、円形108で表される、中間データセットを生産する第1実行モジュール106に入力される。次いで、中間データセット108は、出力データセット112を生産する第2実行モジュール110に入力される。第2入力データセット104は、第2中間データセット116を生成する第3実行モジュール114により処理され、この場合、大容量ファイルは、非常に多い数のモンテカルロシミュレーションの結果を継続する。第2中間データセット116は、入力データセット102とともに実行モジュール106に入力される。
図2に図示されているように、図1に図示されている実験の駆動に次いで、ユーザは、図1における入力データセット102の代わりに新たな入力データセット202を使用することにより実験を修正することができる。次いで、ユーザは、新たな出力データセット204を生産するために新たなワークフローを実行することができる。この場合において、第2入力データセット104および第3実行モジュール114に対する変更がないため、第2ワークフローの実行は、第3実行モジュール114への第2入力データセット104の再入力および第3実行モジュール114の実行を伴わない。その代りに、第3実行モジュールの実行により前に生産される中間データセット116は、前に生産された中間データセットのカタログから検索され、図2に図示されている第2ワークフローの駆動中に、第2実行モジュール106に入力され得る。三つの実行モジュール106,110,および114は、相違する言語でプログラミングされ得、相違する物理的コンピュータシステム上で駆動され得ることに注目する。また、自動化された実験プラットホームは、入力データセット102および104のタイプを決定し、必要な場合に、かかるデータセットがワークフローの実行中に入力される実行モジュール106および114により求められる適切な形式およびデータタイプを有するために、適切に修正されることを保証する責任があることに注目する。
図3は図2に図示されている第2ワークフローのダッシュボード図を示している。図3から分かるように、ワークフローは、ワークフローディスプレイパネル302において、ユーザに視覚的にディスプレイされる。また、ダッシュボードは、対応する入力および操作特徴304〜308を有する様々なツールだけでなく、入力および操作特徴を使用してユーザにより行われる各種タスクおよび動作と関連する情報をディスプレイする更なるディスプレイウィンドウ310および312を提供する。
二つの以下の小項目において、ハードウェアプラットホームおよびRESTful通信の概要は、本発明が目指す自動化された実験プラットホームの説明された具現に使用される。最後の小項目は、「科学的なワークフローシステム」と称される、本発明が目指す自動化された実験プラットホームの具現について説明する。
コンピュータハードウェア、分散演算システム、および仮想化
用語「抽象化」は、どのようにしても、抽象的な発想または概念を意味または提示するように意図されない。演算抽象化は、つまり、物理的コンピュータハードウェア、データ格納装置、および通信システムを使用して具現される有形の物理的インターフェイスである。その代りに、用語「抽象化」は、現在の議論において、電子的にエンコードされたデータが交換され、プロセス実行が開始され、電子サービスが提供される定義されたインターフェイスを有する一つ以上の具体的に、有形に、物理的に具現されているコンピュータシステム内に圧縮される機能の論理レベルを指す。インターフェイスは、物理的ディスプレイ装置上にディスプレイされるグラフィックおよびテキストデータだけでなく、物理的コンピュータプロセッサを制御して各種のタスクおよび動作を行い、電子的に具現されたアプリケーションプログラミングインターフェイス(「API」)および他の電子的に具現されているインターフェイスにより呼び出されるコンピュータプログラムと、ルーチンとを含むことができる。現代の科学技術に不慣れなもののうち現代のコンピュータの特定の様態を説明するために使用されるときに、用語「抽象的な」および「抽象化」を誤って解釈する傾向がある。例えば、一つの頻繁に直面する論点は、演算システムが、抽象化、機能的階層、およびインターフェイスの面から説明されるため、演算システムが物理的マシンまたは装置と多少相違するというものである。かかる主張は、根拠のないものである。ただし、一つは、複雑なコンピュータ技術の物理的、機械的性質を理解するために、それぞれの電源装置からコンピュータシステムまたはコンピュータシステムのグループを分離する必要がある。また、一つの頻繁に直面する記述は、演算技術を「単にソフトウェア」であって、機械または装置ではないものに特定するものである。ソフトウェアは、本質的に光ディスク上にまたは電子機械の大容量格納装置内にファイルに順に格納されるコンピュータプログラムまたはデジタルエンコードされたコンピュータ命令の出力のような一連のエンコードされた符号である。ソフトウェアは、単独では何も行うことができない。いわゆる「ソフトウェア具現」機能が提供されるのは、エンコードされたコンピュータ命令がコンピュータシステム内の電子メモリにロードされ、物理的プロセッサ上で実行される場合のみである。デジタルエンコードされたコンピュータ命令は、内燃機関内のカムシャフト制御システムほど必須で物理的な、プロセッサ制御機械および装置の必須で物理的な制御構成要素である。マルチクラウド集成、クラウドコンピューティングサービス、仮想マシンコンテナおよび仮想マシン、通信インターフェイス、および以下に論じられる多数の異なるトピックは、物理的、電子光学機械式コンピュータシステムの有形の物理的構成要素である。
図4は様々なタイプのコンピュータに対する一般的なアーキテクチャダイヤグラムを提供している。例えば、クラウドコンピューティング施設内のコンピュータは、図4に図示されている一般的なアーキテクチャダイヤグラムにより説明され得る。コンピュータシステムは、一つまたは多数の中央処理装置(「CPU」)402〜405、CPU/メモリザブシステムバス410または多数のバスによりCPUと相互連結される一つ以上の電子メモリ408、CPU/メモリザブシステムバス410を更なるバス414および416と相互連結する第1ブリッジ412、または多数の高速直列相互連結を含む他のタイプの高速相互連結メディアを含む。かかるバスまたは直列相互連結は、順に、グラフィックプロセッサ418のような特殊化されたプロセッサ、および各種の相違するタイプの大容量格納装置428、電子ディスプレイ、入力装置、および他のかかる構成要素、サブ構成要素、および演算リソースにアクセスを提供するコントローラ427のような多数のコントローラ422〜427または高速シリアルリンクと相互連結される一つ以上の更なるブリッジ420によりCPUおよびメモリを連結する。コンピュータ読み取り可能データ格納装置は、光および電磁気ディスク、電子メモリ、および他の物理的データ格納装置を含むことに注目すべきである。現代の科学および技術に慣れている者は、電磁放射線および伝播信号が後続検索のためにデータを格納せず、最も簡単なルーチンをエンコードするために必要なものよりはるかに少ない情報である1マイル当たり1バイト以下の情報のみを一時的に「格納」できることを理解する。
勿論、相違するタイプの階層キャッシュメモリを含む相違するメモリの数、プロセッサおよび前記プロセッサと異なるシステム構成要素の連結性の数、内部通信バスおよびシリアルリンクの数、および他の方式において互いに異なる多数の相違するタイプのコンピュータシステムアーキテクチャがある。しかしながら、コンピュータシステムは、一般的にメモリから命令を取り出し、一つ以上のプロセッサで命令を実行することにより格納されたプログラムを実行する。コンピュータシステムは、パーソナルコンピュータ(「PC」)のような汎用コンピュータシステム、様々なタイプのサーバおよびワークステーション、およびハイヤーエンドメインフレームコンピュータを含むが、また、データ格納システム、通信ルータ、ネットワークノード、タブレットコンピュータ、および携帯電話を含む多量の様々なタイプの特殊目的コンピューティング装置を含み得る。
図5はインターネット連結された分散コンピュータシステムを示している。通信およびネットワーキング技術は、容量およびアクセス性が進化し、演算帯域幅、データ格納容量、および様々なタイプのコンピュータシステムの他の能力および容量が急速に増加し続けることに伴い、ほとんどの現代コンピューティングは、現在、ローカルネットワーク、ワイドエリアネットワーク、無線通信、およびインターネットを介して相互連結される大規模分散システムおよびコンピュータを一般的に伴う。図5は多数のPC502〜505、大規模データ格納システム512を有するハイエンド分散メインフレームシステム510、および多数のラックマウントサーバまたはブレードサーバを有する大規模コンピュータセンター514がインターネット516をともに含む各種通信およびネットワーキングシステムを介していずれも相互連結される通常の分散システムを図示している。かかる分散コンピューティングシステムは、機能性の様々なアレイを提供する。例えば、ホームオフィスに座っているPCユーザは、全世界に数十万個の相違するウェブサーバにより提供される数億個の相違するウェブサイトにアクセスすることができ、複雑な演算タスクを駆動するためにリモートコンピュータ施設から高い演算帯域幅コンピュータサービスにアクセスすることができる。
図6はクラウドコンピューティングを示している。近年開発されたクラウドコンピューティングパラダイムにおいて、コンピュータサイクルおよびデータ格納施設は、クラウドコンピューティング提供者により組織および個人に提供される。また、さらに大きい組織は、パブリッククラウドコンピューティングサービス提供者により提供されるコンピュータサービスに加入する代りに、若しくは加入することに加え、プライベートクラウドコンピューティング施設を確立することを選択することができる。図6において、組織に対するシステム管理者は、PC602を使用して、ローカルネットワーク606およびプライベートクラウドインターフェイス608を介して組織のプライベートクラウド604にアクセスし、また、インターネット610を介してパブリッククラウドサービスインターフェイス614によりパブリッククラウド612にアクセスする。管理者は、プライベートクラウド604またはパブリッククラウド612のいずれか一つの場合に、多数の相違するタイプの演算タスクのいずれかを行うために仮想コンピュータシステムおよびさらには全体仮想データセンターを構成し、仮想コンピュータシステムおよび仮想データセンター上でアプリケーションプログラムの実行を開始することができる。一例として、小規模組織は、遠隔ユーザシステム616上で組織の電子商取引ウェブページを見ているユーザのような、組織の遠隔顧客にパブリッククラウドにより電子商取引インターフェイスを提供するためにウェブサーバを実行するパブリッククラウド内に仮想データセンターを構成し、駆動させることができる。
クラウドコンピューティング施設は、ユーティリティ会社が消費者に電力および水を提供するように、多い演算帯域幅およびデータ格納サービスを提供するように意図される。クラウドコンピューティングは、社内データセンターを購入、管理、および保持するためのリソースなしに小規模組織に相当な利点を提供する。かかる組織は、ピーク演算帯域幅およびデータ格納需要を処理するために物理的データセンター内に十分なコンピュータシステムを購入するよりは、むしろ演算帯域幅およびデータ格納要求を追跡するためにパブリッククラウド内にその仮想データセンターから仮想コンピュータシステムを動的に追加および除去することができる。また、小規模組織は、情報技術専門家を雇って定期的に再教育すること、およびオペレーティングシステムおよびデータベース管理システムのアップグレードのために費用を支払い続けることを含む物理的コンピュータシステムの保持および管理に対するオーバーヘッドを完全に避けることができる。また、クラウドコンピューティングインターフェイスは、仮想コンピューティング施設の容易且つ簡単な構成、構成可能なアプリケーションおよびオペレーティングシステムのタイプの柔軟性、および単一組織により使用されるプライベートクラウドコンピューティング施設の所有者および管理者にも有用な他の機能を許容する。
図7は図1に図示されているものと類似のアーキテクチャを有する汎用コンピュータシステムのような汎用コンピュータシステムの一般化されたハードウェアおよびソフトウェア構成要素を示している。コンピュータシステム700は、三つの基本階層を含むものと見なされることが時々ある。:(1)ハードウェア階層またはレベル702;(2)オペレーティングシステム階層またはレベル704;および(3)アプリケーションプログラム階層またはレベル706。ハードウェア階層702は、一つ以上のプロセッサ708と、システムメモリ710と、各種の相違するタイプの入出力(「I/О」)装置710および712と、大容量格納装置714とを含む。勿論、ハードウェアレベルはまた電源装置、内部通信リンクおよびバス、特殊化された集積回路、多数の相違するタイプのプロセッサ制御またはマイクロプロセッサ制御周辺装置およびコントローラ、および多数の異なる構成要素を含む多数の異なる構成要素を含む。オペレーティングシステム704は、一般的に1セットの非特権コンピュータ命令718、1セットの特権コンピュータ命令720、1セットの非特権レジスタおよびメモリアドレス722、および1セットの特権レジスタおよびメモリアドレス724を含む低レベルオペレーティングシステムおよびハードウェアインターフェイス716によりハードウェアレベル702に接続する。一般的に、オペレーティングシステムは、オペレーティングシステムを介してアプリケーションプログラムに提供される実行環境内で実行されるアプリケーションプログラム732〜736に、オペレーティングシステムインターフェイス730として非特権命令、非特権レジスタ、および非特権メモリアドレス726、およびシステムコールインターフェイス728を露出させる。オペレーティングシステムは、単独で、特権命令、特権レジスタ、および特権メモリアドレスをアクセスする。特権命令、特権レジスタ、および特権メモリアドレスに対するアクセスを有することにより、オペレーティングシステムは、アプリケーションプログラムおよび他のさらに高いレベルの演算エンティティが互いの実行を邪魔することができず、システム動作に有害な影響を及ぼし得る方式にコンピュータシステムの全体的な状態を変化させることができないことを保証することができる。オペレーティングシステムは、スケジューラ742、メモリ管理744、ファイルシステム746、デバイスドライバ748、および多数の異なる構成要素およびモジュールを含む、多数の内部構成要素およびモジュールを含む。ある程度、現代のオペレーティングシステムは、オペレーティングシステムにより各種電子メモリおよび大容量格納装置にマッピングされる別の大規模線形メモリアドレス空間をそれぞれのアプリケーションプログラムおよび他の演算エンティティに提供する仮想メモリを含む、ハードウェアレベル以上の多くのレベルの抽象化を提供する。スケジューラは、アプリケーションプログラムに完全に充実している仮想スタンドアロンシステムを各アプリケーションプログラムに提供することにより、様々な相違するアプリケーションプログラムおよびさらに高いレベルの演算エンティティのインタリーブされた実行を調整する。アプリケーションプログラムの観点から、アプリケーションプログラムは、他のアプリケーションプログラムおよびさらに高いレベルの演算エンティティとプロセッサリソースおよび他のシステムリソースを共有する必要性に対する心配なく実行し続ける。デバイスドライバは、アプリケーションプログラムが通信ネットワーク、大容量格納装置、および他のI/О装置およびサブシステムに、また、それからデータを転送および受信するためのシステムコールインターフェイスを利用可能にし得るハードウェア構成要素動作の詳細を抽象化する。ファイルシステム736は、高いレベルのアクセスが容易なファイルシステムインターフェイスとして、大容量格納装置およびメモリリソースの抽象化を容易にする。したがって、オペレーティングシステムの開発および進化は、アプリケーションプログラムおよび他のさらに高いレベルの演算エンティティに対する一種の多面的な仮想実行環境の発生をもたらした。
オペレーティングシステムにより提供される実行環境は、コンピュータシステム内で相当成功的なレベルの抽象化であることが証明されているが、それにもかかわらず、オペレーティングシステムにより提供されたレベルの抽象化は、アプリケーションプログラムおよび他のさらに高いレベルの演算エンティティの開発者およびユーザには、難題および挑戦課題と関連する。一つの難題は、各種の相違するタイプのコンピュータハードウェア内で駆動する多数の相違するオペレーティングシステムが存在するという事実から生じる。多数の場合において、大衆向けのアプリケーションプログラムおよび演算システムは、利用可能なオペレーティングシステムのサブセット上でのみ駆動するように開発されており、そのため、オペレーティングシステムが駆動されるように設計される各種の相違するタイプのコンピュータシステムのサブセット内でのみ実行され得る。時々、アプリケーションプログラムまたは他の演算システムが更なるオペレーティングシステムに移植される場合にも、アプリケーションプログラムまたは他の演算システムは、それにもかかわらずアプリケーションプログラムまたは他の演算システムが最初から目標にしたオペレーティングシステム上でより効率よく駆動され得る。他の難題は、コンピュータシステムの益々分散される特性から生じる。分散オペレーティングシステムは、相当な研究および開発努力の対象であるが、多数の大衆向けのオペレーティングシステムは、主に単一コンピュータシステム上での実行のために設計される。多数の場合において、高可用性、耐欠陥性、およびロードバランシングの目的のために分散コンピューティングシステムの相違するコンピュータシステム同士の間に、リアルタイムで、アプリケーションプログラムを移動させることは困難である。問題は、相違するタイプのオペレーティングシステムを駆動する相違するタイプのハードウェアおよび装置を含む異種の分散コンピューティングシステムにおいてさらに多い。オペレーティングシステムは、特定の旧アプリケーションプログラムおよび他の演算エンティティが大規模分散システムで管理する特に困難な互換性問題を発生させることにより、それが目標とするより最新バージョンの運営システムと互換されないこともあるため、進化され続ける。
かかる理由の全体に対して、「仮想マシン」と称される、さらに高いレベルの抽象化は、前記論じられた互換性問題を含む、伝統的なコンピューティングシステムと関連する多数の難題および課題を処理するためにコンピュータハードウェアをさらに抽象化するように開発および進化されて来た。図8A〜図8Bは、2タイプの仮想マシンおよび仮想マシン実行環境を示している。図8A〜図8Bは、図7で使用されたものと同一の例示規則を使用する。図8Aは第1タイプの仮想を図示している。図8Aにおけるコンピュータシステム800は、図7に図示されているハードウェア階層702と同一のハードウェア階層802を含む。しかしながら、図7と同様に、ハードウェア階層のすぐ上にオペレーティングシステム階層を提供するよりは、むしろ図8Aに示されている仮想化されたコンピュータ環境は、図7におけるインターフェイス716と同等な仮想化階層/ハードウェア階層インターフェイス806によりハードウェアに接続する仮想化階層804を備える。仮想化階層は、仮想マシン階層812における仮想化階層の上で実行する、仮想マシン810のような多数の仮想マシンにハードウェア類似インターフェイス808を提供する。各仮想マシンは、仮想マシン810内にともにパッケージングされるアプリケーション814およびゲストオペレーティングシステム816のような「ゲストオペレーティングシステム」と称されるオペレーティングシステムとともにパッケージングされる一つ以上のアプリケーションプログラムまたは他のさらに高いレベルの演算エンティティを含む。したがって、各仮想マシンは、図7に図示されている汎用コンピュータシステムにおけるオペレーティングシステム階層704およびアプリケーションプログラム階層706と同等である。仮想マシン内の各ゲストオペレーティングシステムは、実際、ハードウェアインターフェイス806よりはむしろ仮想化階層インターフェイス808に接続する。仮想化階層は、ハードウェアリソースを仮想マシン内の各ゲストオペレーティングシステムが接続する抽象の仮想ハードウェアに区画する。仮想マシン内のゲストオペレーティングシステムは、一般的に、仮想化階層を認知することができず、それが本当にハードウェアインターフェイスを直接アクセスしたように動作する。仮想化階層は、仮想環境内で現在実行している仮想マシンそれぞれが公正な割り当ての基底ハードウェアリソースを受信することおよびすべての仮想マシンが実行を進行するに十分なリソースを受信することを保証する。仮想化階層インターフェイス808は、相違するゲストオペレーティングシステムに応じて異なり得る。例えば、仮想化階層は、一般的に、様々な相違するタイプのコンピュータハードウェアのために仮想ハードウェアインターフェイスを提供することができる。これは一例であって、特定のコンピュータアーキテクチャのために設計されるゲストオペレーティングシステムを含む仮想マシンが相違するアーキテクチャのハードウェア上で駆動するようにすることができる。仮想マシンの数は、物理的プロセッサの数またはさらにはプロセッサの多数の数と同等な必要はない。
仮想化階層は、仮想マシンそれぞれが実行する仮想プロセッサを生成するようにハードウェア階層における物理的プロセッサを仮想化する仮想マシンモニタモジュール818(「VMM」)を含む。実行の効率性のために、仮想化階層は、仮想マシンが非特権命令を直接実行させ、また非特権レジスタおよびメモリを直接アクセスすることができるようにするように試みる。しかしながら、仮想マシン内のゲストオペレーティングシステムが仮想化階層インターフェイス808により仮想特権命令、仮想特権レジスタ、および仮想特権メモリをアクセスする際に、アクセスは、特権リソースをシミュレートまたはエミュレートするように仮想化階層コードの実行をもたらす。仮想化階層は、実行中の仮想マシン(「VMカーネル」)の代りにメモリ、通信、およびデータ格納機械リソースを管理するカーネルモジュール820をさらに含む。VMカーネルは、例えば、ハードウェアレベルの仮想メモリ施設がメモリアクセスを処理するために使用されるように各仮想マシン上で陰のページテーブルを保持する。VMカーネルは、仮想通信およびデータ格納装置を具現するルーチンだけでなく、基底ハードウェア通信およびデータ格納装置の動作を直接制御するデバイスドライバをさらに含む。同様に、VMカーネルは、キーボード、光ディスクドライブ、および他のかかる装置を含む各種他のタイプのI/О装置を仮想化する。仮想マシンが完全で十分な機能の仮想ハードウェア階層内でそれぞれ行うように、仮想化階層は、必須にオペレーティングシステムがアプリケーションプログラムの実行をスケジューリングすることのように仮想マシンの実行をスケジューリングする。
図8Bは第2タイプの仮想化を図示している。図8Bにおいて、コンピュータシステム840は、図7に図示されているハードウェア階層702と同一のハードウェア階層842と、ソフトウェア階層844とを含む。いくつかのアプリケーションプログラム846および848は、オペレーティングシステムにより提供される実行環境で駆動することに図示される。また、仮想化階層850は、コンピュータ840にも提供されるが、図8Aを参照して論じられる仮想化階層804とは異なり、仮想化階層850は、「ホストOS」と称されるオペレーティングシステム844上に階層化され、オペレーティングシステムにより提供された機能だけでなく、ハードウェアをアクセスするようにオペレーティングシステムインターフェイスを使用する。仮想化階層850は、主に図8Aにおけるハードウェア類似インターフェイス808と類似のハードウェア類似インターフェイス852と、VMMとを含む。図7におけるインターフェイス716と同等な仮想化階層/ハードウェア階層インターフェイス852は、ゲストオペレーティングシステムとともにパッケージングされる一つ以上のアプリケーションプログラムまたは他のさらに高いレベルの演算エンティティをそれぞれ含む、多数の仮想マシン856〜858のための実行環境を提供する。
図8A〜図8Bにおいて、階層は、例示の明確性のために多少簡略化される。例えば、仮想化階層850の部分は、仮想化階層によるハードウェアアクセスを容易にするようにホストオペレーティングシステムに含まれる特殊化されたドライバのようなホストオペレーティングシステムカーネル内に常駐することができる。
仮想ハードウェア階層、仮想化階層、およびゲストオペレーティングシステムは、電子メモリ、大容量格納装置、光ディスク、磁気ディスク、および他のかかる装置を含む、物理的データ格納装置に格納されるコンピュータ命令により具現されるすべての物理的エンティティであることに注目すべきである。用語「仮想」は、いかなる方式でも、仮想ハードウェア階層、仮想化階層、およびゲストオペレーティングシステムが抽象的または無形のものを意味しない。仮想ハードウェア階層、仮想化階層、およびゲストオペレーティングシステムは物理的コンピュータシステムの物理的プロセッサ上で実行され、電子メモリおよび大容量格納装置を含む物理的装置の物理的状態を変更する動作を含む、物理的コンピュータシステムの動作を制御する。それは、電源装置、コントローラ、プロセッサ、バス、およびデータ格納装置のようなコンピュータシステムの任意の他の構成要素のように物理的で有形である。
RESTful API
コンピュータシステム同士の電子通信は、一般的に、クライアントコンピュータからサーバコンピュータへまたサーバコンピュータからクライアントコンピュータへ転送されるデータグラムと称される情報のパケットを含む。多数の場合において、コンピュータシステム同士の通信は、通常情報転送のためにアプリケーション階層プロトコルを使用する比較的高いレベルのアプリケーションプログラムから見られる。しかしながら、アプリケーション階層プロトコルは、トランスポート階層、インターネット階層、およびリンク階層を含む更なる階層の上に具現される。かかる階層は、通常、コンピュータシステム内の相違するレベルで具現される。各階層は、コンピュータシステムの対応する階層同士のデータ転送のためのプロトコルと関連する。かかるプロトコルの階層は、通常「プロトコルスタック」と称される。図9において、通常のプロトコルスタック930の表現は、相互連結されたサーバおよびクライアントコンピュータ904および902の下に図示される。階層は、アプリケーション階層934と関連する階層番号「1」932のような階層番号と関連する。かかる同一の階層番号は、アプリケーション階層プロトコルを介してサーバコンピュータのアプリケーション/サービス階層914とクライアントコンピュータのアプリケーション階層912の相互連結を示す破線936と関連する階層番号「1」932のような、サーバコンピュータ904とクライアントコンピュータ902の相互連結の描写に使用される。破線936は、図9におけるアプリケーション階層プロトコルを介する相互連結を示すが、これは、相互連結が物理的と言うよりはむしろ論理的であるためである。破線938は、トランスポート階層を介するクライアントおよびサーバコンピュータのオペレーティングシステム階層の論理的相互連結を示している。破線940は、インターネット階層プロトコルを介して二つのコンピュータシステムのオペレーティングシステムの論理的相互連結を示している。最後に、リンク906および908およびクラウド910は、クライアントコンピュータからサーバコンピュータへまたサーバコンピュータからクライアントコンピュータへデータを物理的に転送する物理的通信媒体および構成要素をともに示している。かかる物理的通信構成要素および媒体は、リンク階層プロトコルに応じてデータを転送する。図9において、プロトコルスタックを示す表930と整列される第2表942は、それぞれの相違するプロトコル階層のために使用され得る例示的プロトコルを含む。ハイパーテキストトランスファープロトコル(「HTTP」)は、アプリケーション階層プロトコル944として使用され得、転送制御プロトコル(「TCP」)946は、トランスポート階層プロトコルとして使用され得、インターネットプロトコル948(「IP」)は、インターネット階層プロトコルとして使用され得、ローカルイーサーネット(Ethernet)によりインターネットに相互連結されるコンピュータシステムの場合に、Ethernet/IEEE 802.3uプロトコル950は、コンピュータシステムからインターネットの複雑な通信構成要素で情報を転送および受信するために使用され得る。インターネットを示すクラウド910内で、多数の更なるタイプのプロトコルがクライアントコンピュータとサーバコンピュータとの間にデータを転送するために使用され得る。
HTTPプロトコルを介して、クライアントコンピュータからサーバコンピュータへのメッセージの転送を考慮する。アプリケーションプログラムは、一般的に、システムコールをオペレーティングシステムに行い、システムコールには、データが転送されるという受領の表示だけでなく、データを含むバッファに対する参照をも含む。データおよび他の情報は、データグラム952のような一つ以上のHTTPデータグラムに、ともにパッケージングされる。データグラムは、一般的に、ヘッダ954だけでなく、メモリのブロック内にバイトのシーケンスとしてエンコードされるデータ956をも含むことができる。ヘッダ954は、一般的に、多数のバイトエンコードされたフィールドからなる記録である。アプリケーション階層システムコールに対するアプリケーションプログラムによる呼び出しは、図9において実線垂直矢印958で表される。オペレーティングシステムは、TCPのようなトランスポート階層プロトコルを採用し、アプリケーション階層メッセージをともに示す一つ以上のアプリケーション階層データグラムを転送する。一般的に、アプリケーション階層メッセージが所定のしきい値のバイトを超える場合、メッセージは、二つ以上のトランスポート階層メッセージとして転送される。トランスポート階層メッセージ960のそれぞれは、トランスポート階層メッセージヘッダ962と、アプリケーション階層データグラム952とを含む。トランスポート階層ヘッダは、他のもののうち、一連のアプリケーション階層データグラムが単一アプリケーション階層メッセージに再度組み立てられるようにすることができるシーケンス番号を含む。トランスポート階層プロトコルは、基底ネットワークおよび他の通信ザブシステムとは独立して、エンドツーエンドメッセージ転送に責任を持ち、前記論じられたような誤り制御、セグメント化、流れ制御、輻輳制御、アプリケーションアドレシング、および信頼性のあるエンドツーエンドメッセージ転送の他の様態とさらに関係する。次いで、トランスポート階層データグラムは、オペレーティングシステム内のシステムコールによりインターネット階層に伝達され、インターネット階層ヘッダ966およびトランスポート階層データグラムをそれぞれ含むインターネット階層データグラム964内に内蔵される。プロトコルスタックのインターネット階層は、インターネットをともに含む潜在的に多数の相違する通信媒体およびザブシステムを介してデータグラムを送信することに関係する。これは、複雑な通信システムを介して意図した宛先へメッセージをルーティングすることを伴う。インターネット階層は、メッセージに対する送信コンピュータおよび受信コンピュータの両方に「IPアドレス」と知られている固有のアドレスを割り当てること、およびインターネットを介して受信コンピュータにメッセージをルーティングすることに関係する。最後に、インターネット階層データグラムは、オペレーティングシステムにより、リンク階層ヘッダ972を含み、一般的に、インターネット階層データグラムの末端に添付される更なるバイト974の番号を含むリンク階層データグラム970にインターネット階層データグラム964を内蔵するネットワークインターフェイスコントローラ(「NIC」)のような通信ハードウェアに転送される。リンク階層ヘッダは、衝突制御および誤り制御情報だけでなく、ローカルネットワークアドレスをも含む。リンク階層パケットまたはデータグラム970は、それぞれのプロトコルスタックの階層により導入される情報だけでなく、アプリケーション階層プロトコルによりソースコンピュータから宛先コンピュータに転送される実際のデータをも含むバイトのシーケンスである。
次いで、図10をはじめとして、ウェブサービスAPIに対するRESTful接近について説明する。図10はRESTful APIにおけるリソースの役割を示している。図10において、また、後続図面において、リモートクライアント1002がHTTPプロトコル1006を介して一つ以上のサーバコンピュータにより提供されるサービス1004と相互連結され通信することが図示されている。多数のRESTful APIは、HTTPプロトコルに基づく。したがって、以下の議論におけるアプリケーション階層に焦点を合わせる。しかしながら、図10を参照して前記論じられているように、リモートクライアント1002および一つ以上のサーバコンピュータにより提供されるサービス1004は、事実上、クライアントコンピュータおよびサーバコンピュータのアプリケーション、オペレーティングシステム、およびハードウェア階層で具現されるプロトコルスタックにおける最も高いレベルの階層のHTTPプロトコルにより様々なタイプの通信媒体および通信ザブシステムと相互連結されるアプリケーション、オペレーティングシステム、およびハードウェア階層を有する物理的システムである。サービスは、前の部分で前記論じられたように、一つ以上のサーバコンピュータにより提供され得る。一例として、多数のサーバは、様々なレベルの中間サーバおよびエンドポイントサーバとして階層的に組織化され得る。しかしながら、サービスをともに提供するサーバの全体集合は、以下にさらに論じられるように、統一リソース識別子(「URI」)に含まれるドメインネームによりアドレス化される。RESTful APIは、対応するURIによりそれぞれ固有に識別されるリソース上でHTTPプロトコルにより提供される小さいセットの動詞、または動作に基づく。リソースは、ドメインをともに含む一つ以上のサーバ上に格納される情報である論理的エンティティである。URIは、リソースの固有の名である。インターネットに連結されるサーバ上に情報が格納されるリソースは、かかる情報の適切な認可および権限によりインターネットにまた連結される任意のクライアントコンピュータによりアクセスされ得るようにする固有のURIを有する。したがって、URIは、全世界の固有の識別子であり、全世界にわたりサーバコンピュータ上にリソースを規定するために使用され得る。リソースは、デジタルエンコードされた情報により説明され特定され得る者、デジタルエンコードされた文献、組織、および他のかかるエンティティを含む任意の論理的エンティティであり得る。したがって、リソースは、論理的エンティティである。リソースを説明し、サーバコンピュータからクライアントコンピュータによりアクセスされ得るデジタルエンコードされた情報は、対応するリソースの「表現」と称される。一例として、リソースがウェブページである場合、リソースの表現は、リソースのハイパーテキストマークアップ言語(「HTML」)エンコードであり得る。他の例として、リソースが会社の従業員である場合、リソースの表現は、従業員の姓名、住所、電話番号、職責、経歴、および他のかかる情報のような従業員を特定する情報を格納する一つ以上のフィールドをそれぞれ含む一つ以上の記録であり得る。
図10に図示されている例において、ウェップサーバ1004は、HTTPプロトコル1006に基づくRESTful APIおよびサービスのクライアントがアクメ社(Acme Company)の顧客により行われる注文および顧客に関する情報にアクセスすることができるようにする階層的に組織化されたセットのリソース1008を提供する。このサービスは、アクメ社自体により、または第3者の情報提供者により提供され得る。顧客および注文情報の両方は、URI「HTTP://www.acme.com/customerinfo」1012と関連する顧客情報リソース1010により一括して表される。以下にさらに論じられるように、この単一URIおよびHTTPプロトコルは、サービス1004により格納および分散される特定タイプの顧客および注文情報のいずれかにアクセスするようにリモートクライアントコンピュータに十分な情報をともに提供する。顧客情報リソース1010は、多数の従属リソースを示す。かかる従属リソースは、アクメ社のそれぞれの顧客に対して、顧客リソース1014のような顧客リソースを含む。顧客リソース1014〜1018は、何れも単一URI「HTTP://www.acme.com/customerinfo/customers」1020により一括して名づけられたり規定される。顧客リソース1014のような個別顧客リソースは、顧客識別子番号と関連し、顧客リソース1014で表される顧客に対する顧客識別子「361」を含むURI「HTTP://www.acme.com/customerinfo/customers/361」1022のような顧客リソース規定URIによりそれぞれ個別にアドレス化することができる。各顧客は、一つ以上の注文と論理的に関連し得る。例えば、顧客リソース1014で表される顧客は、注文リソースによりそれぞれ表される三つの相違する注文1024〜1026と関連する。注文は、いずれも単一URI「HTTP://www.acme.com/customerinfo/orders」1036により一括して規定されたり名づけられる。顧客と関連する注文は、リソース1014で表され、注文リソース1024〜1026で表される注文は、URI「HTTP://www.acme.com/customerinfo/customers/361/orders」1038により一括して規定され得る。注文リソース1024で表される注文のような特定の注文は、URI「HTTP://www.acme.com/customerinfo/customers/361/orders/1」1040のようなその注文と関連する固有のURIにより規定され得、ここで、最後の「1」は、顧客識別子「361」により識別される特定の顧客に対応する注文のセット内における特定の注文を規定する注文番号である。
ある意味で、URIは、コンピュータオペレーティングシステムにより提供されるファイルディレクトリ内のファイルに対するパスネームと類似性を有する。しかしながら、ファイルとは異なり、リソースは、コンピュータシステム内のファイルをともに構成する格納されたバイトのセットのような物理的エンティティというよりは、むしろ論理的エンティティであることを理解すべきである。ファイルがパスネームによりアクセスされる場合、そのファイルの一部としてメモリまたは大容量格納装置に格納されるバイトのシーケンスのコピーは、アクセッシングエンティティに転送される。対照的に、リソースがURIを介してアクセスされる場合、サーバコンピュータは、リソースのコピーよりは、むしろリソースのデジタルエンコードされた表現を返す。例えば、リソースが人間である場合、人間を規定するURIを介してアクセスされるサービスは、人間の様々な特徴の英数字エンコード、デジタルエンコードされた写真または写真、および他のかかる情報を返すことができる。パスネームを介してアクセスされるファイルの場合とは異なり、リソースの表現は、リソースのコピーではなく、その代りにリソースに対して一部タイプのデジタルエンコードされた情報である。
図10に示されている例示的RESTful APIにおいて、クライアントコンピュータは、特定の顧客に関する情報および特定の顧客により行われる注文に関する情報を取得するために、リソース1008の全階層をナビゲートするようにHTTPプロトコルおよび最上位レベルURI1012の動詞、または動作を使用することができる。
図11A〜図11Dは、RESTfulアプリケーションで使用されるHTTPアプリケーション階層プロトコルにより提供される、四つの基本動詞、または動作を示している。RESTfulアプリケーションは、クライアントがサービスまたはサーバにHTTP要請メッセージを発行し、サービスまたはサーバが対応するHTTP応答メッセージを返すことにより応答するクライアント/サーバプロトコルである。図11A〜図11Dはクライアント、サービス、およびHTTPプロトコルに対して、図10を参照して前記論じられた例示規則を使用する。例示の簡潔性および明確性のために、かかる図面それぞれにおいて、上位部分は要請を示し、下位部分は応答を示している。リモートクライアント1102およびサービス1104は、図10と同様に、ラベリングされた矩形に図示される。右向き実線矢印1106は、リモートクライアントからサービスへのHTTP要請メッセージの送信を示し、左向き実線矢印1108は、サービスによる要請メッセージに対応する応答メッセージのリモートクライアントへの転送を示す。例示の明確性および簡潔性のために、サービス1104は、少数のリソース1110〜1112と関連して図示される。
図11AはGET要請および通常の応答を示している。GET要請は、サービスからURIにより識別されるリソースの表現を要請する。図11Aに図示されている例において、リソース1110は、URI「HTTP://www.acme.com/item1」1116により固有に識別される。初期サブストリング「HTTP://www.acme.com」は、サービスを識別するドメインネームである。したがって、URI1116は、その中に位置しドメイン「www.acme.com.」により管理されるリソース「item1」を規定するものと考えられ得る。GET要請1120は、コマンド「GET」1122、ドメインネームに添付される場合に、リソースを固有に識別するURIを生成する相対的リソース識別子1124、および特定の基底アプリケーション階層プロトコル1126の表示を含む。要請メッセージは、要請が向けられるドメインを表示するホストヘッダ1128「ホスト:www.acme.com」のような一つ以上のヘッダ、またはキー/値ペアを含むことができる。含まれ得る多数の相違するヘッダがある。また、要請メッセージは、要請メッセージボディを含むこともできる。ボディは、各種の相違する自己説明エンコード言語、時々JSON、XML、またはHTMLのいずれかでエンコードされ得る。現在の例において、要請メッセージボディがない。サービスは、GETコマンドを含む要請メッセージを受信し、メッセージを処理し、対応する応答メッセージ1130を返す。応答メッセージは、アプリケーション階層プロトコル1132の表示、数値状態1134、テキスト状態1136、各種ヘッダ1138および1140、および現在の例において、ウェブページのHTMLエンコードを含むボディ1142を含む。しかしながら、また、ボディは、人事ファイル、顧客説明、または注文説明をエンコードするJSONオブジェクトのような多数の異なるタイプの情報のいずれかを含むことができる。GETは、最も基本的且つ一般的に最も頻繁に使用されるHTTPプロトコルの動詞、または機能である。
図11BはPOST HTTP動詞を示している。図11Bにおいて、クライアントは、POST要請1146をURI「HTTP://www.acme.com/item1」と関連するサービスに送信する。多数のRESTful APIにおいて、POST要請メッセージは、サービスがPOST要請と関連するURIに従属する新たなリソースを生成し、新たに生成されたリソースのためにネームおよび対応するURIを提供することを要請する。したがって、図11Bに図示されているように、サービスは、URI「HTTP://www.acme.com/item1」により規定されるリソース1110に従属する新たなリソース1148を生成し、識別子「36」をこの新たなリソースに割り当て、新たなリソースに固有のURI「HTTP://www.acme.com/item1/36」1150を生成する。次いで、サービスは、POST要請に対応する応答メッセージ1152をリモートクライアントにまた送信する。アプリケーション階層プロトコル、状態、およびヘッダ1154以外に、応答メッセージは、新たに生成されたリソースのURIを有する位置ヘッダ1156を含む。HTTPプロトコルによると、POST動詞はまた更新情報を有するボディを含むことにより、既存のリソースを更新するために使用され得る。しかしながら、RESTful APIは、一般的に新たなリソースに対するネームがサービスにより決定される場合に、新たなリソースの生成のためにPOSTを使用する。POST要請1146は、サービスによりリソースのための格納された情報に含まれ得るリソースの表現または部分表現を含むボディを含むことができる。
図11CはPUT HTTP動詞を図示している。RESTful APIにおいて、PUT HTTP動詞は、一般的に、新たなリソースに対するネームがサービスよりはむしろクライアントにより決定される場合に、既存のリソースを更新したり新たなリソースを生成するために使用される。図11Cに図示されている例において、リモートクライアントは、新たに生成されたリソース1148を名付けるURI「HTTP://www.acme.com/item1/36」に対してPUT HTTP要請1160を発行する。PUT要請メッセージは、リソース1162の表現または部分表現のJSONエンコーディングを有するボディを含む。この要請の受信に応答して、サービスは、PUT要請に送信される情報1162を含むようにリソース1148を更新し、次いで、PUT要請1164に対応する応答をリモートクライアントに返す。
図11DはDELETE HTTP動詞を図示している。図11Dに図示されている例において、リモートクライアントは、新たに生成されたリソース1148をサービスに固有に規定するURI「HTTP://www.acme.com/item1/36」に対するDELETE HTTP要請1170を送信する。これに応答して、サービスは、URLと関連するリソースを削除し、応答メッセージ1172を返す。
以下にさらに論じられ、上述されたように、サービスは、リソース表現以外に応答メッセージ、各種の相違するリンク、またはURIを返すことができる。かかるリンクは、対応する要請メッセージと関連するURIにより規定されるリソースと各種の相違する方式で関連する更なるリソースをクライアントに表示することができる。一例として、要請に応答してクライアントに返される情報が単一HTTP応答メッセージに比べて多すぎる場合に、情報は、クライアントが更なるGET要請を使用して残りのページを検索可能にする更なるリンク、またはURIとともに返される第1ページを有するページに分割され得る。他の例として、顧客情報リソース(図10における1010)に対する初期GET要請に応答して、サービスは、クライアントが後続GET要請における階層的リソース組織を横断し始め得ることを使用して、クライアントに対する要請された表現に、さらにURI1020および1036を提供することができる。
現在発明が目指す科学的なワークフローシステム
図12は現在発明が目指す科学的なワークフローシステムの主要構成要素を示している。科学的なワークフローシステムは、フロントエンド1202と、バックエンド1204とを含む。フロントエンドは、インターネット1206および/またはパーソナルエリアネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、および通信サブシステム、システム、およびメディアの各種タイプおよび組み合わせにより前記バックエンドに連結される。科学的なワークフローシステムのフロントエンド部分は、一般的に、ユーザコンピュータまたは他のプロセッサ制御ユーザ装置上でそれぞれ駆動する多数のフロントエンド実験ダッシュボードアプリケーション1208〜1210を含む。各フロントエンド実験ダッシュボードは、人間ユーザが科学的なワークフローシステム1204のバックエンド部分に格納される実行モジュール、データセット、および実験に関する情報をダウンロードし、有向非巡回グラフ(「DAG」)ベースの視覚化を用いて実験を生成および編集し、実行のために実験を提出し、実行された実験により生成される結果を見て、科学的なワークフローシステムバックエンドにデータセットおよび実行モジュールをアップロードし、他のユーザと実験、実行モジュール、およびデータセットを共有するように、人間ユーザにユーザインターフェイスを提供する。必須として、フロントエンド実験ダッシュボードアプリケーションは、一種の相互作用開発環境およびウィンドウまたはポータルを科学的なワークフローシステムに、科学的なワークフローシステムを介して一群の科学的なワークフローシステムユーザに提供する。図12において、外部破線矩形1202は、科学的なワークフローシステムフロントエンドを示す一方、内部破線矩形1220は、科学的なワークフローシステムフロントエンドをサポートするハードウェアプラットホームを示す。外部破線矩形1202内にあり、内部破線矩形1220の外部にある陰の構成要素1208〜1210は、ハードウェアプラットホーム1220内で具現される科学的なワークフローシステムの構成要素を示している。類似の例示規則は一つ以上のクラウドコンピューティングシステム、集中型または分散型プライベートデータセンター内に、または他の一般的に大規模マルチコンピュータシステム演算環境1222上に具現される科学的なワークフローシステムバックエンド1204のために使用される。かかる大規模演算環境は、一般的に、多数のサーバコンピュータと、ネットワークアタッチト格納システムと、内部ネットワークとを含み、メインフレームまたは他の大規模コンピュータシステムを時々含む。科学的なワークフローシステムバックエンド1204は、一つ以上のAPIサーバ1224と、分散カタログサービス1226と、クラスタ管理サービス1228と、多数の実行クラスタノード1230〜1233とを含む。かかるバックエンド構成要素それぞれは、多数の物理的サーバおよび/または大規模コンピュータシステムにマッピングされ得る。結果として、科学的なワークフローシステム1204のバックエンド部分は、増加する数のユーザに、科学的なワークフローサービスを提供するように比較的直接的にスケールされる。双方向矢印1240〜1244で表されるフロントエンド実験ダッシュボード1208〜1210とAPIサーバ1224との通信は、双方向矢印1250〜1262で表されるバックエンド構成要素同士の内部通信のように、前に論じられたRESTful通信モデルに基づく。カタログサービス1226以外にバックエンド内の図12に図示されている構成要素はいずれもステートレスであり、ステートレスRESTfulプロトコルを介して情報を交換する。
APIサーバ1224は、ユーザコンピュータ上で駆動するフロントエンド実験ダッシュボードアプリケーションから要請を受信し、このアプリケーションに応答を送信する。APIサーバは、カタログサービス1226およびクラスタ管理サービス1228により提供されるサービスをアクセッシングすることにより要請を行う。また、APIサーバは、実行クラスタノード1230〜1233およびクラスタ管理サービス1228にサービスを提供する。カタログサービス1226は、格納された実行モジュール、実験、データセット、および作業にインターフェイスを提供する。多数の具現において、カタログサービス1226は、エンティティ自体がネットワークアタッチト格納機器、データベースシステム、ファイルシステム、および他のかかるデータ格納システムを含む遠隔またはアタッチト格納システムからアクセスされ、それらの上に格納されるように、かかる相違するエンティティに対するメタデータを局所的に格納する。カタログサービス1226は、前に実行され、現在実行されており、以降実行される作業と関連する状態情報に対するリポジトリである。作業は、実行モジュールの実行インスタンスである。カタログサービス1226は、格納されたデータセット、実験、実行モジュール、および作業エンティティのバージョニング、およびそれに検索インターフェイスを提供する。
クラスタ管理サービス1228は、ユーザの代わりに実験を実行するために実行クラスタノード上で実行される必要がある作業のための作業識別子を、APIサーバから受信する。クラスタ管理サービスは、実行のための適切な実行クラスタノードに作業をディスパッチする。作業は、現在実行中の作業または実行待機中の作業により生産されるデータを待機する必要のある作業が、その従属性が満たされると作業を開始するように従属性の満足度を断続的に検査するために実行クラスタノード内で実行されるピンガルーチンに伝達される間に実行のための準備が即時実行のために特定の実行クラスタノードに伝達される。作業が実行を完了すると、出力データおよび状態情報は、実行クラスタノードからAPIサーバを介してカタログに返される。
前記論じられたように、実験は、データソースと、実行モジュールノードとを含むDAGのようにフロントエンド実験ダッシュボードを介して視覚的に表現される。科学的なワークフローシステムの一具現において、実験DAGは、ジャバスクリプトオブジェクト表現(「JSON」)にテキストにエンコードされる。実験DAGは、JSON実行モジュールのリストのようにテキストにエンコードされる。図13A〜図13Eは比較的簡単な六つのノード実験DAGのJSONエンコーディングを示している。図13Aにおいて、JSONエンコードされた実験DAGのブロック図類似例示が提供される。JSONエンコードされた実験DAGは、JSONエンコードされた実行モジュール1302および1303のリスト1300からなる。実行モジュール1302のJSONエンコーディングは、実行モジュールネーム1304とバージョン番号1306およびそれぞれの一つ以上の実行モジュールインスタンス1308および1310に対するエンコードを含む。各実行モジュールインスタンスは、インスタンスネームまたは識別子1312およびキー値ペア1314〜1316のリストまたはセットを含み、各キー値ペアは、コロン1322によりテキストで表された値1320から分離されるテキストで表されたキー1318を含む。
実行モジュールは、実行クラスタノードにより実行され得る実行ファイルである。科学的なワークフローシステムは、多数の異なるプログラミング言語のいずれかからコンパイルされる実行可能ファイルを格納および実行することができる。実行モジュールは、ルーチンまたはマルチルーチンプログラムであり得る。実行モジュールインスタンスは、実験DAGの単一ノードにマッピングされる。同一の実行モジュールが実験の間に多数回呼び出される場合、各呼び出しは、相違するインスタンスに対応する。キー値ペア1314〜1316は、実行モジュールへのデータ入力、実行モジュールからのデータ出力、静的パラメータ、および実行モジュールに対する可変パラメータの表示を提供する。図13Bは実行モジュール内のインスタンスのJSONエンコーディングにおけるキー値ペアのリストまたはセット内で発生し得る相違するタイプのキー値ペアを示している。図13Bにおいては、2タイプの入力キー値ペア1330および1332がある。両方タイプの入力キー値ペアは、キー「イン」1334を含む。第1入力キー値ペア1330は、「@」符号1336、データセットネーム1338、およびバージョン番号1340を含む値ストリングを含む。かかる第1タイプの入力キー値ペアは、科学的なワークフローシステムバックエンド(図12における1204)のカタログサービス(図12における1226)に格納される名づけられたデータセットを規定する。第2入力キー値ペアタイプ1332は、実行モジュールインスタンスから入力キー値ペアを含む実行モジュールインスタンスへのデータ出力を規定する。第2入力キー値ペアタイプ1332は、ドル記号1342で開始し、後に実行モジュールネーム1344が付く値ストリング、実行モジュールに対するバージョン番号1346、実行モジュールのインスタンスに対するインスタンスネームまたは識別子1348、および実行モジュールの出力が入力キー値ペアを含む実行モジュールのインスタンスに入力されるデータを生産することを表示する出力番号1350を含む。
実行モジュールのインスタンスからのデータ出力は、いずれも出力キー値ペア1352により規定される。出力キー値ペアに対するキーは「アウト」1354であり、値は、整数出力番号1355である。コマンドライン静的パラメータおよび可変パラメータは、静的キー値ペア1356およびパラメータキー値ペア1357で表される。静的およびパラメータキー値ペアは、いずれもストリング値1358および1359を含む。
図13Cはノードおよびリンクにより視覚的に表現される比較的簡単な実験DAGを図示している。乱数発生器実行可能モジュール1360の単一インスタンスは、単一出力1361によりファイルスプリッタ実行可能モジュールインスタンス1362にデータを生成する。ファイルスプリッタ実行可能モジュールインスタンスは、三つのデータ出力1363〜1365を生産する。かかる出力は、ダブルソーティング実行モジュール1366〜1368の三つのインスタンスそれぞれに関するものである。ダブルソーティング実行モジュール1366〜1368の三つのインスタンスは出力1369〜1371をそれぞれ生成し、かかる三つの出力は、いずれも単一出力1373を生産するダブルマージング実行モジュール1372のインスタンスに入力される。図13Dは図13Cに図示されている実験DAGのJSONエンコーディングを図示している。乱数発生器実行モジュール(図13Cにおける1360)の単一インスタンスは、テキスト1375で表される。ファイルスプリッタ実行モジュール(図13Cにおける1362)の単一インスタンスは、テキスト1376で表される。ダブルマージング実行モジュール(図13Cにおける1372)の単一インスタンスは、テキスト1377で表される。ダブルソーティング実行モジュール(図13Cにおける1366〜1368)は、図13Dにおけるテキスト1378,1379,および1380で表される。図13Dにおけるファイルスプリッタ実行モジュールを表現する図13Cの実験DAGのJSONエンコーディングからのテキスト1376を考慮する。コマンドライン静的パラメータは、キー値ペア1382で表される。乱数発生器実行モジュール(図13Cにおける1360)から出力されるデータの入力は、入力キー値ペア1384で表される。ファイルスプリッタ実行モジュールのインスタンスからの三つのデータ出力(図13Cにおける1363〜1365)は、三つの出力キー値ペア1386〜1388で表される。乱数発生器実行モジュール(図13Cにおける1360)により受信される二つのパラメータは、二つの変数キー値ペア1390および1392により規定される。
図13Eは三つの相違するJSONエンコードされたオブジェクトを示している。図13Eは図13Dにおいてのみならず、後続図に使用されるJSONの特定の様態を示すように意図される。第1JSONエンコードされたオブジェクト1393は、中括弧1393bおよび1393c内にあるコンマで分離されているキー値ペア1393aのリストである。各キー値ペアは、コロンにより分離される二つのストリングからなる。また、第2JSONエンコードされたオブジェクト1394は、キー値ペア1394aのリストを含む。しかしながら、この場合において、第1キー値ペア1394bは、中括弧1394cおよび1394d内にあるキー値ペア1394dのリストである値1394cを含む。したがって、キー値ペアの値は、ストリングであってもよく、JSONエンコードされたサブオブジェクトであってもよい。他のタイプの値は、ストリング1394eのアレイを表現するストリングの括弧で閉じられたリストである。第3JSONエンコードされたオブジェクト1395において、第2キー値ペア1395aは、二つのキー値ペア1395eおよび1395fだけでなく、二つのキー値ペアを含むオブジェクト1395dを含む要素を有する括弧1395bおよび1395c内にあるアレイ値を含む。したがって、JSONは、階層的レベルの任意の数を許容する階層的オブジェクトまたはエンティティエンコードシステムである。オブジェクトは、キー値ペアとしてのJSONによりエンコードされるが、所定のキー値ペアの値は、それ自体でサブオブジェクトおよびアレイであり得る。
図14A〜図14Dはカタログサービス(図12における1226)に格納されるメタデータを示している。図14Aはカタログサービス内に格納されるメタデータの論理的組織を示している。各カタログエントリー1402は、インデックス1404と、タイプ1405と、識別子1406とを含む。四つの相違するタイプのカタログエントリーがある。:(1)データソースエントリー;(2)実験エントリー;(3)実行モジュールエントリー;および(4)作業エントリー。データエントリーは、作業実行の間に作業に入力されるデータセットを説明する。データエントリーは、実験の脈絡内で実行する他の作業に入力される作業からの出力を表現する臨時データセットだけでなく、ユーザにより科学的なワークフローシステムにアップロードされる名づけられたデータセットをすべて説明する。例えば、図1の実験DAGに図示されているデータソース102および104は、実験実行の前に科学的なワークフローシステムにアップロードされるか、それらの内に生成される名づけられたデータソースである。対照的に、出力116のような実行モジュールインスタンスからの出力は、実行モジュールインスタンス106に後続入力のためのカタログにより臨時データセットとして格納される。実験は、図13A〜図13Dを参照して前記論じられた実験DAGにより説明される。実行モジュールは、JSONエンコーディングにより部分的に説明されるが、また、実験実行の間に作業として実行される実際のコンピュータ命令またはpコード命令を含む格納された実行可能ファイルまたはオブジェクトに対する参照を含む。作業エントリーは、アップストリーム従属作業からの入力のための作業状態および識別子を含むだけでなく、実行モジュールに対応する作業を説明する。
科学的なワークフローシステムは、多数の異なるユーザおよび組織に対する実験ワークフローおよび実験実行をサポートすることができる。したがって、図14Aに図示されているように、各ユーザまたはユーザ組織に対して、カタログは、そのユーザまたはユーザ組織に対するデータ、実験、実行モジュール、および作業エントリーを含むことができる。図14Aにおいて、大規模矩形1408のような各大規模矩形は、特定のユーザまたはユーザ組織の代わりに、格納されるカタログエントリーを表現する。各大規模矩形内に、格納されたデータ、実験、実行モジュール、および作業エントリーそれぞれを表現するより大きい矩形1408内のより小さい矩形1410〜1413のようなより小さい四つの矩形がある。カタログエントリー1404のインデックスフィールドは、特定のユーザまたはユーザ組織に対する格納されたメタデータの特定の集合を識別する。カタログエントリーのタイプフィールド1405は、エントリーが属する四つの相違するタイプの格納されたエントリーのいずれかを表示する。格納されたエントリーのIDフィールド1406は、特定のユーザまたは組織に対する同一のタイプのエントリーの集合から格納されたエントリーを探索および検索するために使用可能な格納されたエントリーに対する固有の識別子である。
図14Bはカタログエントリーのコンテンツに対してより詳細な事項を提供する。図14Aを参照して前記論じられたように、各カタログエントリー1420は、インデックス1404と、タイプ1405と、IDフィールド1406とを含む。また、各エントリーは、ソース部分1422を含む。ソース部分は、状態値1423と、短い説明1424と、ネーム1425と、オーナ1426と、最新更新日付/時間1427と、タイプ1428と、生成日1429と、バージョン1430と、メタデータ1431とを含む。図14Cは図13Cに図示されている実験DAGでノード1362として示されるファイルスプリッタ実行モジュールを説明する実行モジュールカタログエントリーに対するメタデータの一部を図示している。このノードは、図13Dに図示されている実験のJSONエンコーディング内のテキスト1376にエンコードされる。図14Cに図示されているこの実行モジュールに対する実行モジュールカタログエントリーのメタデータの部分は、実行モジュールに対するインターフェイスのJSONエンコーディングであり、これは図13Cに図示されている実験DAGで表される実験のための図13Dにおけるファイルスプリッタノード1376のJSONに含まれるキー値ペア1382〜1388の説明である。インターフェイスは、図13Dにおけるキー値ペア1382〜1388に対応する五つのオブジェクト1440〜1444を含むアレイである。インターフェイスアレイ内のJSONエンコードされたオブジェクト1441は、入力パラメータ1384に関する説明であり、これは、図14Cに図示されているインターフェイスエンコードを含む実行モジュールエントリーにより説明される実行モジュールを表現する実験DAGへの実験DAGノードのJSONエンコーディングを含むために使用され得る。
図14Dは作業カタログエントリー内に格納されるメタデータの一部を図示している。このメタデータは、作業に対応する実行モジュールのための各種実行モジュールパラメータに対する値だけでなく、作業の実行のために求められるディスク空間、CPU帯域幅、およびメモリの量を規定するリソースキー値ペア1450を含む。図14Dに図示されているメタデータにおいて、現在説明されている作業が依存する作業からの入力に対応する入力パラメータは、図13に図示されている実験DAGに対するダブルマージングノードのJSONエンコーディング(図13Dにおける1377)と同様に、実行モジュールインスタンスに対する参照よりは、むしろ作業識別子1452および1454のような作業識別子を含むことに注目する。
図15A〜図15Iは図13C〜図13Dを参照して前記論じられた実験DAGのような実験DAGに対応する実験レイアウトDAGの一例を提供している。図15A〜図15Iに図示されている実験レイアウトDAGは、フロントエンド実験ダッシュボードを介してユーザに提供される実験DAGの視覚的表現をともに含むノードおよびリンクのような視覚的ディスプレイ要素の位置および配向を説明するレイアウト部分を含む相当の追加情報を含む。実験DAGの実験レイアウトDAG形態は、フロントエンドおよびAPIサーバにより使用され得るが、一般的に、クラスタ管理サービスおよび実行クラスタノードにより使用されない。
図16A〜図16Iは科学的なワークフローシステム内の実験設計および実行のプロセスを示している。図16A〜図16Iは、いずれも12を参照して前に論じられた科学的なワークフローシステム構成要素を示すブロックと同一の例示規則を使用する。初期実験設計ステップにおいて、ユーザコンピュータまたは他のプロセッサ制御装置上で駆動するフロントエンド実験ダッシュボードアプリケーションは、ユーザが実験設計の視覚的表現、若しくは実験DAG1604を構築することができるようにするユーザインターフェイスを提供する。視覚的表現は、図13C〜図13Dおよび図15A〜図15Iを参照して前記説明されたDAG1606のJSONエンコーディングに基づく。フロントエンド実験ダッシュボードアプリケーションは、科学的なワークフローシステムバックエンドのAPIサーバ構成要素1608により提供される各種のDAGエディタツールサービスおよび検索サービスを呼び出す。APIサーバ構成要素1608は、順に、カタログサービス1610を呼び出しそれから情報を受信する。実験設計を構築する際に、ユーザは、前に開発された実験設計および実験設計の構成要素を検索しダウンロードすることができ、それに対するメタデータはカタログ1610に格納される。検索は、図14Bを参照して前記論じられたカタログエントリー内の各種のフィールドの値に対して行われ得る。また、ユーザは、完全に新たな実験設計を構築するために編集ツールを利用することができる。実験設計は、フロントエンド実験ダッシュボードアプリケーションから呼び出される各種のAPIサーバサービスを介してユーザにより名づけられカタログに格納され得る。「複製」と称される実験設計に対する一つの接近において、既存の実験設計は、カタログに格納される実験設計の検索により識別され、フロントエンド実験ダッシュボードアプリケーションによりユーザにディスプレイされる。次いで、ユーザは、データソースを変更、追加、削除したり、実行モジュールおよび実行モジュール同士のデータフローリンクを変更することにより、また、実行モジュールのインスタンスを追加または削除することにより、既存の実験を修正することができる。前に実行された実験および作業に関する情報が科学的なワークフローシステム内に保持されることから、現在実験の実行の間に、前に実行された実験における同一の作業と同一の入力を受信する修正された実験設計内のかかる作業はまた実行される必要がない。その代りに、かかる作業により生産されるデータは、現在実験のダウンストリーム作業に入力のためのカタログから取得され得る。実際、修正された実験設計の全体サブグラフは、それのサブグラフが同一の入力を有して現在実験設計内で同様に発生する場合、現在実験設計の実行の間に実行される必要がないことがある。
図16Bに示されているように、実験設計が開発されると、ユーザは、APIサーバ構成要素1608により提供されるアップロードサービスを介してカタログにカタログに既に存在していないデータセットおよび実行モジュールをアップロードするためにフロントエンド実験ダッシュボード特徴を利用することができる。図16Cに図示されているように、ユーザがカタログに既に存在していない実験を実行するために求められる必要なデータセットおよび実行モジュールをアップロードすると、ユーザは、実行のためにAPIサーバ構成要素1608により提供される実験提出サービスに、対応する実験DAG1612のJSONエンコーディングとして実験設計を提出するようにフロントエンド実験ダッシュボードの実験提出特徴を入力する。図16Dに図示されているように、実験設計を受信すると、APIサーバ構成要素1608は、実験設計を実行モジュールインスタンスおよびデータセットに分析し、データセットおよび実行モジュールの両方がカタログ内に常駐することを保証するために、カタログサービス1610と相互作用し、実験設計を検証し、すべての実行モジュールインスタンスに対する作業署名をコンピューティングし、カタログに既に格納された作業エントリーの作業署名とマッチしない作業署名に対する新たな作業エントリーを生成するためにカタログと相互作用して、新たに生成された作業エントリーに対する作業識別子を受信する。それは、単に実験を実行するために実行される必要がある新たに生成された作業エントリーである。
図16Eに図示されているように、実験を実行するために実行される必要がある作業に対する作業識別子は、APIサーバ構成要素1608からクラスタマネージャ構成要素1614に伝達される。クラスタマネージャ構成要素は、作業識別子に対応する作業に対する入力データがいずれも利用可能な場合に即時実行のために、若しくはデータ従属性が満たされた場合に後続実行のために、実行クラスタノード1616中に受信された作業識別子を分散する。図16Fに図示されているように、従属性満足度のために待機中の作業に対応するかかる作業識別子に対して、作業識別子がクラスタマネージャ構成要素により伝達された実行クラスタノード内のピンガ1618は、入力データ従属性がアップストリーム作業の実行完了の結果として満たされるか否かを判断するために、APIサーバ構成要素1608を連続的にまたは断続的にポーリング(polling)する。従属性が満たされた場合、この際、作業識別子は、実行クラスタノードによる実行のために提出される。図16Gに図示されているように、実行クラスタノードが作業の実行を開始するために準備されると、実行クラスタノードは、APIサーバサービスを介して、ローカルメモリおよび/または他のローカルデータ格納リソースに必要なデータセットおよび実行可能ファイルをダウンロードする。図16Hに図示されているように、作業が実行を完了すると、実行クラスタノードは、APIサーバ構成要素1608を介して、実行により生成されるデータセット、標準エラー出力およびI/О出力、および完了状態を格納用カタログ1610に送信する。図16Iに図示されているように、APIサーバ構成要素1608は、実験のためのすべての作業が実行されたことを決定する際に、APIサーバ構成要素は、フロントエンド実験ダッシュボードアプリケーション1602に実行完了表示を返すことができる。その代わりに、フロントエンド実験ダッシュボードアプリケーションは、実行が完了する時を決定するように、APIサーバ構成要素インターフェイスまたはサービスを介してカタログをポーリングすることができる。実行が完了すると、ユーザは、フロントエンド実験ダッシュボード上における実験からの出力をアクセスしディスプレイすることができる。
図16A〜図16Iを参照して、前記論じられたバックエンド活動は、以下でより詳細に説明される。かかる議論の前に、実験設計および実験実行の各種様態が以下に要約される。科学的なワークフローシステムの第一の重要な様態は、実験設計が概念的に簡単な実行モジュールおよびデータソースからなるというものである。これは、システムカタログ内の視覚的編集ツール、検索能力、およびメタデータ格納と結合し、時々、前に開発された実験設計の多数の部分を再利用することにより、ユーザが迅速に実験を構築することができるようにする。科学的なワークフローシステムの第二の重要な特徴は、作業および成功的に実行された作業によるデータ出力がカタログに格納され保持されることから、前に実行された実験の部分を含む新たな実験設計がシステムにより実行される際に、同一の入力で同一の作業を再実行する必要がない。かかる作業からの出力が格納されることから、かかる出力は、実験が実行されるに伴いダウンストリーム作業への供給にすぐ利用可能である。したがって、設計実験の処理および実験実行の演算効率性は、いずれも科学的なワークフローシステム内に保持される広範囲なカタログにより大幅に向上する。科学的なワークフローシステムの他の重要な様態は、カタログ以外に、バックエンド構成要素がいずれもステートレスであるため、それが増加し続ける数のユーザをサポートするために簡単にスケーリングされるようにすることができるというものである。作業を実行するためのデータおよび実行モジュールは、作業が実行される実行クラスタノード上に局所的に格納され、これは、多数の分散システムにおける分散実行と関連する通信帯域幅の問題を相当改善する。科学的なワークフローシステムは、実験を実行モジュールに対応する作業に分解し、実行ステップで作業を実行し、初期作業は、名づけられたデータソースにのみ従属したり外部リソースと独立しており、実行の後続ステップは、従属性が前に実行された作業により満たされたかかる作業を伴う。この実行スケジューリングは、カタログにより保持される作業状態情報により編成され、実験のDAG説明から自然に発生する。
図17A〜図17Bは実験DAGのサンプル視覚的表現および実験DAGの対応するJSONエンコーディングを図示している。図17Aに図示されているように、実験設計は、三つのデータソースノード1702〜1704と、五つの実行モジュールインスタンスノード1705〜1709とを含む。図17Bにおいて、実行モジュールノードに対する図17Aにおいて使用される数値ラベルは、JSONエンコーディングの対応する部分を表示するためにまた使用される。
図18A〜図18Gはフロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出後の科学的なワークフローシステムバックエンドのAPIサーバ構成要素(図16Aにおける1608)により行われる活動を示している。図18AはAPIサーバによる実験設計の検証の間に行われる多数の相違するステップを示している。図18Aにおいて、図17Bに図示されている実験DAGのJSONエンコーディングは、第1左側列1802で再生産される。第1ステップにおいて、APIサーバは、実験設計内の実行モジュールおよびデータセットを識別し、図18Aにおける第2右側列1804で矩形に図示されているカタログからのかかる構成要素に対する対応するカタログエントリーを検索する。APIサーバが各実行モジュールおよびデータソースに対応するカタログエントリーを識別および検索することができないときに、実験提出が拒絶される。そうでなければ、次のステップにおいて、実行モジュールの各インスタンスに対するキー値ペアは、対応するカタログエントリー内のメタデータインターフェイスに対して検査され、検査は、双方向矢印1806のような双方向矢印で図18Aに表示される。インターフェイス仕様が実験DAGのJSONエンコーディングにおけるキー値ペアと一致しない場合、実験提出が拒絶される。最後に、入力キー値ペア1808のような他の実行モジュールを参照する各入力キー値ペアは、入力キー値ペアが曲線矢印1810のような曲線矢印で表される第1レベル実行モジュールネームを参照することを保証するように実験DAGに対して検査される。
図18Bは図18Aを参照して前記論じられた検証ステップに対する制御流れ図を提供している。ステップ1812において、ルーチン「検証」は、実験DAGを受信する。ステップ1813〜1824のfor‐ループにおいて、要素が実行モジュールまたは参照されたデータセットであるDAGの各要素が検査される。先ず、ステップ1814において、カタログからの対応するエントリーは、現在考慮されているDAG要素に対して取り出される。カタログ取り出しが成功しなかった場合、ステップ1815で決定されるように、失敗が返される。そうでなければ、取り出されたエントリーが実行モジュールである場合、ステップ1816で決定されるように、次いで、ステップ1817において、カタログエントリーのメタデータ上におけるインターフェイスは、実験DAGにおける実行モジュールエンコーディングの入力、出力、およびパラメータに対して検査される。インターフェイスメタデータに対する入力、出力、およびパラメータの検査が成功すると、ステップ1818で決定されるように、次いで、ステップ1819〜1821の内部for‐ループで、他の実行モジュールに対する参照を含む入力キー値ペアはいずれも図18Aを参照して前記論じられたように、妥当性に対して検査される。参照が有効しない場合、失敗が返される。そうでなければ、現在考慮されている要素が検証される。現在考慮されている要素がデータセットである場合、ステップ1816で決定されるように、次いで、任意のデータセットの妥当性検査は、ステップ1822で行われる。かかる検査は、データがデータセットカタログエントリー情報に基づいてアクセス可能であるか否かを判断することを含むことができる。データセット検査が成功すると、ステップ1823で決定されるように、次いで、データセットエントリーが検証される。ステップ1813〜1824のfor‐ループは、すべての実験DAG要素を介して繰り返されすべて検証されると成功を返す。
図18C〜図18Dは実験DAGの手順を示している。図18Cは実行モジュールインスタンス実行に対する手順、またはステップを示している。実行モジュール1705は、データソース1702および1703からデータソース入力のみを受信する。したがって、実行モジュールインスタンス1705は、丸数字番号1825で表されているように、第1ステップにおいて即時実行され得る。対照的に、実行モジュール1706および1707はいずれも実行モジュールインスタンス1705からの出力に依存する。したがって、それは、いずれも実行モジュールインスタンス1705の実行の完了を待機しなければならない。したがって、それは、丸数字番号1826および1827で表されているように、実行の第2ステップに割り当てられる。実行モジュールインスタンス1708は、実行モジュールインスタンス1706の前の実行に依存するため、第3実行ステップ1828に割り当てられる。最後に、実行モジュールインスタンス1709は、実行モジュールインスタンス1708の実行の完了を待機しなければならないため、第4実行ステップ1829に割り当てられる。かかるステップ割り当ては、実験DAGの実行手順を表現する。勿論、実行モジュールインスタンスが実行クラスタノード上で開始可能な時点は、すべてのデータ従属性が満たされるものにのみ依存し、実行モジュールインスタンスが常駐すると見なされるステップに依存しない。
図18Dは実験DAGに対する実行手順を決定するルーチン「順序DAG」に対する制御流れ図を提供している。ステップ1830において、ルーチン「順序DAG」は、実験DAGを受信し、ローカル変数を0に設定し、二つのローカルセット変数sourceNodesおよびotherNodesを空のセットに設定する。次いで、ステップ1831〜1837のwhile‐ループにおいて、ステップは、ローカル可変セットsourceNodesおよびotherNodesに格納されるノードが、いずれも実験DAGにおける全体ノードと同一になるまで繰り返して決定される。ステップ1832において、ルーチンは、セットsourceNodesおよびotherNodesにおけるデータソースおよびノードにのみ依存する実験DAGにおけるすべてのノードを探索する。ステップ1833において、ルーチンは、任意のノードがステップ1832で探索されるかを判断する。そうでない場合、次いで、実験DAGは、実行手順化を邪魔するサイクルまたは他の異常を有さなければならないため、ルーチンは、偽を返す。そうでなければ、ローカル変数numLevelsに格納される値が0である場合、ステップ1834で決定されるように、次いで、探索されたノードは、ステップ1835でローカルセット変数sourceNodesに追加され、変数numLevelsは1に設定される。そうでなければ、探索されたノードは、ステップ1836でセットotherNodesに追加され、変数numLevelsは1だけ増加する。
図18Eはルーチン「作業署名生成」に対する制御流れ図を提供している。作業署名は、実行モジュールインスタンスに対応する作業に対する固有指紋のタイプである。ステップ1840において、ルーチンは、実行モジュールインスタンスのJSONエンコーディングを受信する。ステップ1841において、ルーチンは、ローカル変数job_sigを空のストリングに設定する。次いで、ステップ1842〜1847のfor‐ループにおいて、ルーチンは、ローカル変数job_sigに格納される作業署名に各キー値ペアストリングを添付する。現在考慮されているキー値ペアが他の実行モジュールを参照する入力キー値ペアであれば、ステップ1843で決定されるように、$エンコードされた参照は、他の実行モジュールのために作業署名に置き換えられ、d参照された入力キー値ペアは、ステップ1844〜1845で作業署名に追加される。そうでなければ、キー値ペアは、ステップ1846で作業署名に追加される。したがって、作業署名は、かかる実行モジュールのために作業署名に置き換えられる他の実行モジュールを参照して実行モジュールインスタンス内のすべてのキー値ペアの結合である。
図18Fは実験の実行を開始するように科学的なワークフローシステムバックエンドのクラスタ管理構成要素にAPIサーバにより伝達される作業識別子のリストを生成するルーチン「作業準備」に対する制御流れ図である。ステップ1850において、ルーチン「作業準備」は、ローカル変数listをヌル(null)または空のリストに設定する。次いで、ステップ1851〜1855のfor‐ループにおいて、ルーチン「順序DAG」の前の実行において、ソースノードおよび他のノードセットに格納される各実行モジュールインスタンスが考慮される。ステップ1852において、作業署名は、実行モジュールインスタンスに対してコンピューティングされる。ステップ1853において、ルーチン「作業準備」は、この作業署名がカタログにおける作業エントリーと既に関連しているかを判断する。そうでない場合、次いで、新たな作業エントリーが生成され、状態CREATEDでステップ1854においてカタログに格納される。次いで、ステップ1856〜1863のfor‐ループにおいて、作業がカタログで探索されたり、カタログで生成および格納される時に取得される作業署名に対応する各作業署名および作業識別子が考慮される。対応する実行モジュールインスタンスがsourceNodesセットにあり、作業識別子に対応する作業エントリーの状態がCREATEDである場合、ステップ1857で決定されるように、次いで、ステップ1858で状態がカタログにおける作業エントリーでREADYに変更され、作業識別子は、ステップ1859で作業識別子のリストに追加される。そうでなければ、作業署名に対応する実行モジュールインスタンスがセットotherNodesで探索され、カタログにおける作業署名のための作業エントリーの状態が生成されると、ステップ1860で決定されるように、次いで、作業エントリーに対する状態がカタログでSUBMITTEDに変更され、作業識別子がステップ1862でリストに追加される。したがって、ルーチン「作業準備」により生産されるリストは、実験の実行の間に実行される必要のある実行モジュールインスタンスに対応する作業識別子のリストを含む。多数の場合において、リストは、実験DAGにおける実行モジュールインスタンスよりも少ない作業識別子を含む。これは、前記論じられたように、カタログにおいて、前に実行された作業の作業署名とマッチする作業署名を有するかかる作業は、そのデータ出力がカタログで利用可能であることから実行される必要がない。
図18Gは提出された実験設計のAPIサーバ処理を表現するルーチン「DAG処理」に対する制御流れ図を提供している。ステップ1870において、ルーチン「DAG処理」は、実験DAGを受信する。ステップ1872において、ルーチン「DAG処理」は、受信された実験DAGを検証するために、ルーチン「検証」を呼び出す。検証が失敗すると、ステップ1874で決定されるように、実験提出が失敗する。そうでなければ、ステップ1876において、実験DAGは、ルーチン「DAG手順化」に対する呼び出しにより手順化される。手順化が失敗すると、ステップ1878で決定されるように、次いで、実験提出が失敗する。そうでなければ、ステップ1880において、実験を実行するために実行される必要がある作業のリストがルーチン「作業準備」に対する呼び出しにより準備される。ステップ1882において、作業識別子のリストは、実行のためのクラスタマネージャに伝達される。ステップ1884において、ルーチン「DAG処理」は、実行のリストまたはタイムアウトにおける作業識別子に対応するすべての作業の成功的な完了の通知を待機する。すべての作業が成功的に完了すると、ステップ1886で決定されるように、次いで、実験提出が成功したものである。そうでなければ、実験提出は、成功できなかったものである。
図19は実行のための実行クラスタノードに作業を分散するように科学的なワークフローシステムバックエンドのクラスタマネージャ構成要素上で実行するルーチン「クラスタマネージャ」に対する制御流れ図を提供している。ステップ1902において、クラスタマネージャは、APIサーバから作業識別子のリストを受信する。ステップ1903〜1912のfor‐ループにおいて、ルーチン「クラスタマネージャ」は、実行のための実行クラスタノードに対する作業識別子で表される作業をディスパッチする。ステップ1904において、ルーチン「クラスタマネージャ」は、APIサーバを介して、カタログで作業識別子に対応する作業エントリーをアクセスする。作業エントリーの状態がREADYであれば、ステップ1905で決定されるように、ルーチン「クラスタマネージャ」は、ステップ1906で作業のための適切な実行クラスタノードを決定し、ステップ1907で即時実行のための実行ノード実行器に作業識別子を送信する。ステップ1906において、作業を実行するための適切な実行クラスタノードの決定は、実行クラスタノードを介する実行負荷をバランシングする戦略だけでなく、実行クラスタノード上で利用可能なリソースに対する作業の実行のために求められるリソースをマッチする戦略を伴う。特定の具現において、作業を実行するために任意の実行クラスタノード上でリソースが十分でない場合、作業は、後続実行のために待機し、科学的なワークフローシステムは、科学的なワークフローシステムに利用可能なクラウドコンピューティング施設内で演算リソースを増加させるようにスケーリング動作を行うことができる。作業エントリーの状態がREADYでない場合、ステップ1905で決定されるように、次いで、状態がSUBMITTEDである場合、ステップ1908で決定されるように、ルーチン「クラスタマネージャ」は、ステップ1909で作業の実行のための適切な実行クラスタノードを決定し、次いで、作業識別子をステップ1910で決定された実行クラスタノード内で実行するピンガに伝達する。ピンガが実行クラスタノード上でまだ実行されていない場合、ルーチン「クラスタマネージャ」は、作業識別子を受信するためにピンガ作業を開始するように実行クラスタノードインターフェイスをアクセスすることができる。上述のように、ピンガは、作業識別子により識別される作業の実行を開始する前にすべての従属性が満たされた時を決定するようにカタログをポーリングし続ける。作業エントリーの状態がREADYでもSUBMITTEDでもない場合、エラー条件が取得され、これは、ステップ1911で処理される。特定の具現において、作業エントリーは、たぶん他の実験の脈絡において、作業が実行のために既に待機していることを表示するREADYまたはSUBMITTED以外の状態を有することができる。かかる場合において、作業を含む実験の実行が行われ得る。
図20はルーチン「ピンガ」に対する制御流れ図を提供している。前記論じられたように、ピンガは、作業の実行を開始するためにクラスタマネージャから受信する作業識別子と関連する作業の従属性の満足度を検査し続けるように実行クラスタノード内で駆動する。前記論じられたように、実験DAGは、作業が従属する前の実行ステップでの作業が実行を完了し、現在考慮されている作業に入力される出力データを生産するときにのみ、実行可能な特定の実行ステップでの各作業により実行ステップに手順化される。ステップ2002において、ピンガは、次のイベントを待機する。イベントが新たな作業識別子の受信である場合、ステップ2003で決定されるように、次いで、作業識別子は、ピンガにより監視される作業識別子のリストに配置される。次のイベントがポーリングタイマー満了イベントである場合、ステップ2005で決定されるように、ステップ2006〜2010のfor‐ループにおいて、ピンガは、ピンガにより監視される作業識別子のリスト上での各作業識別子に対する従属性の満足度を検査する。すべての従属性が特定の作業識別子に対して満たされると、ステップ2008で決定されるように、次いで、作業識別子は、監視される作業識別子のリストから除去される作業識別子の実行のために実行クラスタノード内の実行器に伝達される。リスト上のすべての作業識別子が従属性の満足度のために検査されると、次いで、ステップ2011において、ポーリングタイマーが再設定される。ステップ2012において、発生し得る他のイベントが一般的なイベントハンドラーにより処理される。他のイベントが考慮のためにキューされる場合、ステップ2013で決定されるように、制御は、ステップ2003にまたフローされる。そうでなければ、制御は、ピンガが次に発生するイベントを待機するステップ2002にまたフローされる。
図21は実行クラスタノード上で作業の実行を開始するルーチン「実行器」に対する制御流れ図を提供している。ステップ2102において、ルーチン「実行器」は、科学的なワークフローシステムバックエンドのクラスタマネージャ構成要素から作業識別子を受信する。ステップ2103において、ルーチン「実行器」は、APIサーバを介して作業のためのカタログエントリーを取得する。ステップ2104において、ルーチン「実行器」は、実行クラスタノード上でローカル実行を保証するように、すべての入力データのローカルコピーおよび作業のための実行可能ファイルが実行クラスタノード内に局所的に格納されることを保証する。ステップ2105において、作業のためのカタログエントリーの作業状態は、RUNNINGに更新される。ステップ2106において、実行器は、作業の実行を開始する。特定の具現において、新たな実行器は、クラスタマネージャにより実行クラスタノードに伝達される各新たな作業識別子を受信するように開始する。他の具現において、実行クラスタノードは、実行器に連続して伝達される作業識別子に対応する作業を開始するために連続して駆動する実行器である。実行器は、実行中の作業からの出力がいずれもファイルまたは他の出力データ格納エンティティにキャプチャーされることを保証する。次いで、ステップ2108において、実行器は、実行を完了するために作業を待機する。作業が実行を完了すると、実行器は、出力ファイルをカタログに伝達する。作業が実行を成功的に完了すると、ステップ2110で決定されるように、作業のためのカタログエントリーは、ステップ2112において、状態FINISHEDを有するように更新される。そうでなければ、カタログに対する作業エントリーはステップ2111において、状態FAILEDを有するように更新される。
本発明は、特定の実施形態について説明しているが、本発明は、かかる実施形態に制限されるように意図されない。本発明の思想内の修正は、当業者にとって明らかである。例えば、多数の相違する具現のいずれかは、フロントエンドおよびバックエンドに対するハードウェアプラットホームの選択、プログラミング言語の選択、オペレーティングシステム、仮想化階層、クラウドコンピューティング施設および他のデータ処理施設、データ構造、制御構造、モジュール型組織、および多数の更なる設計および具現パラメータを含む、多数の異なる設計および具現パラメータのいずれかを変化させることにより取得され得る。
開示されている実施形態の前の説明は、任意の当業者が本開示を製作または利用することができるように提供されると理解される。かかる実施形態に対する各種の修正は、当業者にとってすぐに明らかであり、本願に定義される一般的な原理は、本開示の思想または範囲から逸脱することなく、他の実施形態に適用されてもよい。したがって、本開示は、本願に図示されている実施形態に制限されるように意図されず、本願に開示される原理および新たな特徴に合致する最も広い範囲を付与するものに意図される。

Claims (1)

  1. 自動化された実験プラットホームであって、
    一つ以上のプロセッサと、
    一つ以上のメモリと、
    一つ以上のデータ格納装置と、
    一つ以上または前記一つ以上のプロセッサ上で実行されるときに、
    グラフにともにリンクされる入力データセットと、実行モジュールと、生成されたセットとを含むワークフローが生成されディスプレイされる視覚的統合開発環境を提供し、
    出力データセットを生産するためにワークフローを実行するように、前記自動化された実験プラットホームを制御する前記メモリおよびデータ格納装置のいずれか一つ以上に格納されるコンピュータ命令と、を含む、自動化された実験プラットホーム。
JP2016540578A 2013-12-17 2014-12-17 自動化された実験プラットホーム Active JP6659544B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361916888P 2013-12-17 2013-12-17
US61/916,888 2013-12-17
PCT/US2014/070984 WO2015095411A1 (en) 2013-12-17 2014-12-17 Automated experimentation platform

Publications (2)

Publication Number Publication Date
JP2017507381A true JP2017507381A (ja) 2017-03-16
JP6659544B2 JP6659544B2 (ja) 2020-03-04

Family

ID=53400095

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016540578A Active JP6659544B2 (ja) 2013-12-17 2014-12-17 自動化された実験プラットホーム

Country Status (6)

Country Link
US (1) US20150178052A1 (ja)
EP (1) EP3084626A4 (ja)
JP (1) JP6659544B2 (ja)
CN (1) CN105830049B (ja)
CA (1) CA2929572A1 (ja)
WO (1) WO2015095411A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019060859A (ja) * 2017-09-01 2019-04-18 エフ.ホフマン−ラ ロシュ アーゲーF. Hoffmann−La Roche Aktiengesellschaft 実験室システムの動作方法
KR102012005B1 (ko) * 2018-03-07 2019-08-19 한전케이디엔 주식회사 전기차 충전 인프라 이동식 점검 시스템
WO2020149154A1 (ja) * 2019-01-16 2020-07-23 日本電信電話株式会社 カタログ作成支援システム、カタログ作成支援方法、及びプログラム

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190095262A1 (en) 2014-01-17 2019-03-28 Renée BUNNELL System and methods for determining character strength via application programming interface
US10635669B1 (en) 2014-01-27 2020-04-28 Microstrategy Incorporated Data engine integration and data refinement
US11921715B2 (en) 2014-01-27 2024-03-05 Microstrategy Incorporated Search integration
US10255320B1 (en) 2014-01-27 2019-04-09 Microstrategy Incorporated Search integration
US9952894B1 (en) * 2014-01-27 2018-04-24 Microstrategy Incorporated Parallel query processing
US11386085B2 (en) 2014-01-27 2022-07-12 Microstrategy Incorporated Deriving metrics from queries
US9823904B2 (en) * 2014-12-18 2017-11-21 International Business Machines Corporation Managed assertions in an integrated development environment
US9747082B2 (en) 2014-12-18 2017-08-29 International Business Machines Corporation Optimizing program performance with assertion management
US9703552B2 (en) 2014-12-18 2017-07-11 International Business Machines Corporation Assertions based on recently changed code
US9678855B2 (en) 2014-12-30 2017-06-13 International Business Machines Corporation Managing assertions while compiling and debugging source code
US9503353B1 (en) * 2014-12-30 2016-11-22 Emc Corporation Dynamic cross protocol tuner
US10528875B1 (en) 2015-04-06 2020-01-07 EMC IP Holding Company LLC Methods and apparatus implementing data model for disease monitoring, characterization and investigation
US10509684B2 (en) 2015-04-06 2019-12-17 EMC IP Holding Company LLC Blockchain integration for scalable distributed computations
US10812341B1 (en) 2015-04-06 2020-10-20 EMC IP Holding Company LLC Scalable recursive computation across distributed data processing nodes
US10791063B1 (en) * 2015-04-06 2020-09-29 EMC IP Holding Company LLC Scalable edge computing using devices with limited resources
US10541936B1 (en) 2015-04-06 2020-01-21 EMC IP Holding Company LLC Method and system for distributed analysis
US10425350B1 (en) * 2015-04-06 2019-09-24 EMC IP Holding Company LLC Distributed catalog service for data processing platform
US10270707B1 (en) 2015-04-06 2019-04-23 EMC IP Holding Company LLC Distributed catalog service for multi-cluster data processing platform
US10404787B1 (en) 2015-04-06 2019-09-03 EMC IP Holding Company LLC Scalable distributed data streaming computations across multiple data processing clusters
US10122806B1 (en) 2015-04-06 2018-11-06 EMC IP Holding Company LLC Distributed analytics platform
US10511659B1 (en) 2015-04-06 2019-12-17 EMC IP Holding Company LLC Global benchmarking and statistical analysis at scale
US10366111B1 (en) 2015-04-06 2019-07-30 EMC IP Holding Company LLC Scalable distributed computations utilizing multiple distinct computational frameworks
US10505863B1 (en) 2015-04-06 2019-12-10 EMC IP Holding Company LLC Multi-framework distributed computation
US10860622B1 (en) 2015-04-06 2020-12-08 EMC IP Holding Company LLC Scalable recursive computation for pattern identification across distributed data processing nodes
US10496926B2 (en) 2015-04-06 2019-12-03 EMC IP Holding Company LLC Analytics platform for scalable distributed computations
US10541938B1 (en) * 2015-04-06 2020-01-21 EMC IP Holding Company LLC Integration of distributed data processing platform with one or more distinct supporting platforms
US10706970B1 (en) 2015-04-06 2020-07-07 EMC IP Holding Company LLC Distributed data analytics
US10515097B2 (en) 2015-04-06 2019-12-24 EMC IP Holding Company LLC Analytics platform for scalable distributed computations
US10348810B1 (en) 2015-04-06 2019-07-09 EMC IP Holding Company LLC Scalable distributed computations utilizing multiple distinct clouds
US10331380B1 (en) 2015-04-06 2019-06-25 EMC IP Holding Company LLC Scalable distributed in-memory computation utilizing batch mode extensions
US10776404B2 (en) 2015-04-06 2020-09-15 EMC IP Holding Company LLC Scalable distributed computations utilizing multiple distinct computational frameworks
US10701039B2 (en) * 2015-09-25 2020-06-30 Intel Corporation Mutual approval for privacy-preserving computing
US10528327B2 (en) * 2015-11-23 2020-01-07 Microsoft Technology Licensing Llc Workflow development system with ease-of-use features
US10656861B1 (en) 2015-12-29 2020-05-19 EMC IP Holding Company LLC Scalable distributed in-memory computation
CA3009817A1 (en) * 2015-12-29 2017-07-06 Tao Tao Systems and methods for caching task execution
US10331495B2 (en) * 2016-02-05 2019-06-25 Sas Institute Inc. Generation of directed acyclic graphs from task routines
US10642896B2 (en) 2016-02-05 2020-05-05 Sas Institute Inc. Handling of data sets during execution of task routines of multiple languages
US10795935B2 (en) 2016-02-05 2020-10-06 Sas Institute Inc. Automated generation of job flow definitions
US10650046B2 (en) 2016-02-05 2020-05-12 Sas Institute Inc. Many task computing with distributed file system
US10650045B2 (en) 2016-02-05 2020-05-12 Sas Institute Inc. Staged training of neural networks for improved time series prediction performance
US11283900B2 (en) 2016-02-08 2022-03-22 Microstrategy Incorporated Enterprise performance and capacity testing
US10440153B1 (en) 2016-02-08 2019-10-08 Microstrategy Incorporated Enterprise health score and data migration
US10375211B2 (en) * 2016-06-03 2019-08-06 Ebay Inc. Optimization of user interface data transmission for a consistent multi-platform experience service delivery
US10417234B2 (en) * 2016-10-07 2019-09-17 Sap Se Data flow modeling and execution
US10374968B1 (en) 2016-12-30 2019-08-06 EMC IP Holding Company LLC Data-driven automation mechanism for analytics workload distribution
US10846318B1 (en) 2017-04-18 2020-11-24 Microstrategy Incorporated Natural language visualizations
CN107256158B (zh) * 2017-06-07 2021-06-18 广州供电局有限公司 电力系统负荷削减量的检测方法和系统
US11467882B2 (en) * 2018-12-21 2022-10-11 Target Brands, Inc. Methods and systems for rapid deployment of configurable computing resources
US11195050B2 (en) 2019-02-05 2021-12-07 Microstrategy Incorporated Machine learning to generate and evaluate visualizations
US11263111B2 (en) 2019-02-11 2022-03-01 Microstrategy Incorporated Validating software functionality
US11409644B2 (en) 2019-03-11 2022-08-09 Microstrategy Incorporated Validation of mobile device workflows
US11599385B2 (en) * 2019-08-02 2023-03-07 EMC IP Holding Company LLC System and method for distribution of dependent builds across orchestration job scheduler slaves
US11637748B2 (en) 2019-08-28 2023-04-25 Microstrategy Incorporated Self-optimization of computing environments
US10810041B1 (en) 2019-08-28 2020-10-20 Microstrategy Incorporated Providing computing workflows to remote environments
US11102330B2 (en) 2019-08-30 2021-08-24 Microstrategy Incorporated Providing updates for server environments
US20210065078A1 (en) * 2019-08-30 2021-03-04 Microstrategy Incorporated Automated workflows enabling selective interaction with users
US11210189B2 (en) 2019-08-30 2021-12-28 Microstrategy Incorporated Monitoring performance of computing systems
US11354216B2 (en) 2019-09-18 2022-06-07 Microstrategy Incorporated Monitoring performance deviations
US11360881B2 (en) 2019-09-23 2022-06-14 Microstrategy Incorporated Customizing computer performance tests
US11438231B2 (en) 2019-09-25 2022-09-06 Microstrategy Incorporated Centralized platform management for computing environments
US11966774B2 (en) 2019-10-25 2024-04-23 Microstrategy Incorporated Workflow generation using multiple interfaces
US11614970B2 (en) 2019-12-06 2023-03-28 Microstrategy Incorporated High-throughput parallel data transmission
US11567965B2 (en) 2020-01-23 2023-01-31 Microstrategy Incorporated Enhanced preparation and integration of data sets
CN112162727A (zh) * 2020-09-16 2021-01-01 深圳晶泰科技有限公司 云端高性能科学计算工作流设计控制系统及用户图形界面
US11500863B2 (en) * 2020-10-12 2022-11-15 Hippo Analytics Inc. Field inheritance removal system
CN112507623A (zh) * 2020-12-15 2021-03-16 交控科技股份有限公司 一种算法中台构建方法及系统
CN112734189A (zh) * 2020-12-30 2021-04-30 深圳晶泰科技有限公司 实验工作流模型建立方法
CN113609098A (zh) * 2021-07-31 2021-11-05 云南电网有限责任公司信息中心 一种基于数据挖掘流程的可视化建模平台

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006134005A (ja) * 2004-11-05 2006-05-25 Fuji Xerox Co Ltd 連携処理装置及びシステム及び方法
US20060190184A1 (en) * 2005-02-23 2006-08-24 Incogen, Inc. System and method using a visual or audio-visual programming environment to enable and optimize systems-level research in life sciences
JP2010244563A (ja) * 2002-10-10 2010-10-28 Ab Initio Software Llc グラフに基づく計算の実行方法、当該方法を実行させる命令を格納するコンピュータ可読記憶媒体、並びに当該方法を実行するためのシステム
JP2013541784A (ja) * 2010-10-25 2013-11-14 アビニシオ テクノロジー エルエルシー コンピュータプログラムを表すデータフローグラフ内のデータセットオブジェクトの管理

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040111421A1 (en) * 2002-12-10 2004-06-10 Cohen Norman H. Data source synthesis
DE102005025644A1 (de) * 2004-06-03 2006-01-26 MDL Information Systems, Inc., San Leandro Verfahren und Vorrichtung zum visuellen Applikationenentwurf
US8943163B2 (en) * 2005-05-02 2015-01-27 S-Matrix System for automating scientific and engineering experimentation
US8209149B2 (en) * 2005-10-28 2012-06-26 S-Matrix System and method for automatically creating data sets for complex data via a response data handler
US20080147371A1 (en) * 2006-12-13 2008-06-19 Gupton Kyle P User Defined Virtual Instruments in a Simulation Environment
US9727440B2 (en) * 2007-06-22 2017-08-08 Red Hat, Inc. Automatic simulation of virtual machine performance
US8239840B1 (en) * 2010-03-10 2012-08-07 Google Inc. Sensor simulation for mobile device applications
US20140007045A1 (en) * 2011-08-01 2014-01-02 Adobe Systems Incorporated Systems and methods for enabling customization of visual elements based on a specified class
CA2872051A1 (en) * 2012-05-01 2013-11-07 Agora Mobile Inc. System and method for providing an application development and distribution social platform
US8930891B2 (en) * 2013-02-04 2015-01-06 David Wei Ge Method for visual manipulations of all kinds of programming objects

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010244563A (ja) * 2002-10-10 2010-10-28 Ab Initio Software Llc グラフに基づく計算の実行方法、当該方法を実行させる命令を格納するコンピュータ可読記憶媒体、並びに当該方法を実行するためのシステム
JP2006134005A (ja) * 2004-11-05 2006-05-25 Fuji Xerox Co Ltd 連携処理装置及びシステム及び方法
US20060190184A1 (en) * 2005-02-23 2006-08-24 Incogen, Inc. System and method using a visual or audio-visual programming environment to enable and optimize systems-level research in life sciences
JP2013541784A (ja) * 2010-10-25 2013-11-14 アビニシオ テクノロジー エルエルシー コンピュータプログラムを表すデータフローグラフ内のデータセットオブジェクトの管理

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019060859A (ja) * 2017-09-01 2019-04-18 エフ.ホフマン−ラ ロシュ アーゲーF. Hoffmann−La Roche Aktiengesellschaft 実験室システムの動作方法
JP7241448B2 (ja) 2017-09-01 2023-03-17 エフ. ホフマン-ラ ロシュ アーゲー 実験室システムの動作方法
KR102012005B1 (ko) * 2018-03-07 2019-08-19 한전케이디엔 주식회사 전기차 충전 인프라 이동식 점검 시스템
WO2020149154A1 (ja) * 2019-01-16 2020-07-23 日本電信電話株式会社 カタログ作成支援システム、カタログ作成支援方法、及びプログラム
JP2020113170A (ja) * 2019-01-16 2020-07-27 日本電信電話株式会社 カタログ作成支援システム、カタログ作成支援方法、及びプログラム
JP7132507B2 (ja) 2019-01-16 2022-09-07 日本電信電話株式会社 カタログ作成支援システム、カタログ作成支援方法、及びプログラム

Also Published As

Publication number Publication date
EP3084626A1 (en) 2016-10-26
CN105830049A (zh) 2016-08-03
EP3084626A4 (en) 2016-12-28
WO2015095411A1 (en) 2015-06-25
CN105830049B (zh) 2019-04-12
JP6659544B2 (ja) 2020-03-04
US20150178052A1 (en) 2015-06-25
CA2929572A1 (en) 2015-06-25

Similar Documents

Publication Publication Date Title
JP6659544B2 (ja) 自動化された実験プラットホーム
US11853748B2 (en) Methods and systems that share resources among multiple, interdependent release pipelines
Sharma et al. A complete survey on software architectural styles and patterns
Van Gorp et al. SHARE: a web portal for creating and sharing executable research papers
De Oliveira et al. Data-intensive workflow management: for clouds and data-intensive and scalable computing environments
WO2015126409A1 (en) Migrating cloud resources
WO2015126411A1 (en) Migrating cloud resources
US20170163518A1 (en) Model-based artifact management
Debski et al. A scalable, reactive architecture for cloud applications
Kijsipongse et al. A hybrid GPU cluster and volunteer computing platform for scalable deep learning
Wang Stream processing systems benchmark: Streambench
Anjos et al. BIGhybrid: a simulator for MapReduce applications in hybrid distributed infrastructures validated with the Grid5000 experimental platform
Debski et al. In search for a scalable & reactive architecture of a cloud application: Cqrs and event sourcing case study
Hazekamp et al. Scaling up bioinformatics workflows with dynamic job expansion: A case study using galaxy and makeflow
Cafaro et al. The grid resource broker workflow engine
US20240176732A1 (en) Advanced application of model operations in energy
Redekopp et al. Performance analysis of vertex centric graph algorithms on the Azure cloud platform
Wang et al. Cloud service in stock trading game: Service virtualization, integration and financial application
Shahid Refactoring Monolithic Application into Cloud-Native Architecture
Gray Ph. D. Thesis Proprosal: Transportable Agents
Noureldien Big data platform for the development of scheduling strategies in cloud computing
Doan A developer's survey on different cloud platforms
Abhinit et al. Novel proposals for FAIR, automated, recommendable, and robust workflows
de Oliveira et al. Background Knowledge
Nguyen Microservices, RESTful API and a use case

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160620

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170526

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20170526

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190507

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20190822

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20190822

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: 20191210

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20200108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200206

R150 Certificate of patent or registration of utility model

Ref document number: 6659544

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250