JP2017534996A - クラウドサービスインフラストラクチャのためのドメイン固有言語を提供し実行するシステム及び方法 - Google Patents
クラウドサービスインフラストラクチャのためのドメイン固有言語を提供し実行するシステム及び方法 Download PDFInfo
- Publication number
- JP2017534996A JP2017534996A JP2017525815A JP2017525815A JP2017534996A JP 2017534996 A JP2017534996 A JP 2017534996A JP 2017525815 A JP2017525815 A JP 2017525815A JP 2017525815 A JP2017525815 A JP 2017525815A JP 2017534996 A JP2017534996 A JP 2017534996A
- Authority
- JP
- Japan
- Prior art keywords
- source code
- infrastructure
- instances
- variables
- cloud
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
クラウドサービスインフラストラクチャのためのドメイン固有プログラミング言語を提供し実行するシステム及び方法が提供される。システムは、クラウドサービス計算インスタンスなどの外部エンティティへの参照を、直接的にドメイン固有プログラミング言語へ統合するために使用され得、開発者はドメイン固有プログラミング言語を直接用いてクラウドサービスを容易に統合することができるようになる。ドメイン固有プログラミング言語を用いれば、変数のように(メモリ内にない)外部エンティティへの参照を用い得る。以下に示すドメイン固有プログラミング言語を用いる場合、レキシカルスコーピングは、言語のネイティブ部分ではないエンティティの集合にマップされ得る。これら及び他の恩恵を促進するために、システムは全ての参照の状態情報を保持し得、プログラムの境界を超えて変数を共有し得る。システムは、状態情報を、ドメイン固有プログラミング言語の言語特性を把握することができる状態情報サービスを介してアクセス可能にし得る。
Description
[0001] 本出願は、2014年11月13日に提出された米国仮出願第62/079,403号の優先権を主張し、これにより当該米国仮出願は参照によってその全体が本明細書に援用される。
[0002] クラウドサービスインフラストラクチャのためのドメイン固有プログラミング言語を提供し実行するシステム及び方法
[0003] 多くのクラウドサービスのプロバイダが、カスタマの代わりに計算インスタンスを実行するための様々なクラウドサービスを販売する。例えば、アマゾン社はそのアマゾンウェブサービス(AMAZON WEB SERVICES、AWS)なるサービスを販売し、グーグル社はそのグーグルアップエンジン(GOOGLE APP ENGINE)なるサービスを販売し、更に他社は同様のサービスを販売する。料金と引き換えに、アマゾン社、グーグル社及び他のクラウドサービスプロバイダは、これらのサービスと他のインフラストラクチャの使用を、クラウドサービスインスタンスの形式で限定的な時間分を顧客に提供する。料金は、クラウドサービスインスタンスが実行される時間/日付、クラウドサービスインスタンスのパフォーマンス(例えばスループット、レイテンシ等)、提供されるクラウドサービスインスタンスがスポットインスタンスであるか標準インスタンスであるか、及び/又は他の属性に応じて変わり得る。
[0004] 組織のプロセスにクラウドサービスの使用を統合することは困難であるかもしれない。従来的に、ユーザはクラウドサービスのコマンドラインインタフェース(CLI)又はグラフィカルユーザインタフェース(GUI)で入力を手動で入力することができる。クラウドインフラストラクチャを生成するプロセスをよりユーザフレンドリにすることは、クラウドインスタンスのインスタンス生成、モニタ、アップデートを試みる従来のプログラミング言語において、専門化されたプログラムを使用することによって達成することができる。
[0005] 従って、以下の開示は、クラウドコンピューティングサービスプロバイダによって読み取り可能なコードに変換できるユーザフレンドリな構文を用いて、ユーザがコンピューティング環境を生成することができる、クラウドサービスインフラストラクチャのためのドメイン固有言語に関する。ある例では、ユーザの生成したコードはコンピューティングインフラストラクチャの宣言を含む。当該宣言は、宣言されたインフラストラクチャがクラウドサービスプロバイダに存在するか、及び宣言されたインフラストラクチャがクラウドサービスプロバイダによって提供されるものに見合うスコープ内であるか、を判定することができる状態情報サービスに照らして確認されてよい。
[0012] 図1は、本発明の実施に従う、クラウドサービスインフラストラクチャのためのドメイン固有プログラミング言語(以下、便宜のため「ドメイン固有プログラミング言語」)を提供し実行するシステム100を説明している。システムは、クラウドサービス計算インスタンスなどの外部エンティティへの参照を、直接的にドメイン固有プログラミング言語へ統合するために使用され得、開発者はドメイン固有プログラミング言語を直接用いてクラウドサービスを容易に統合することができるようになる。
[0013] 非限定的な説明として、外部エンティティは、以下に示すドメイン固有プログラミング言語内で直接参照され得るクラウド計算インスタンス(例えば、クラウドサービスプロバイダによって運用されるコンピュータにおいて実行されるコンピュータインスタンス)として示されるだろう。しかしながら、(例えば、以下に示すドメイン固有プログラミング言語を使用するコードを実行するコンピュータデバイスの所定のメモリの外にある)他の外部エンティティも同様に用いられてよい。一例として、外部エンティティは、DNSエントリ、バイナリオブジェクト、共有されるキュー、データベーステーブル等を含み得る。
[0014] システムは、オーサリング、ビルド及びランタイムの時点を含む、言語自体における外部エンティティの型及び状態に対する確認を容易にするために用いられ得る。更に、システムは、エラー及びバグを発見するためにテストを実施することを必要とするのとは対照的に、外部エンティティに対するプログラムをオーサリングする間のコンパイル、型のチェック、デバッグを容易にし得る。
[0015] インフラストラクチャ又は他の外部エンティティへの参照となる言語プリミティブ
[0016] プログラミング言語では典型的に、変数はランタイムにおけるメモリ内のアドレスに帰着され得る。例えば、my-thing = 123456と定義された場合、値123456はメモリ内のある位置に置かれる。この定義の後では、my-thingを用いる任意のコードは、そのメモリアドレスへの参照を取得するか、値のコピーを受け取るかする。
[0017] 以下で示されるドメイン固有プログラミング言語を用いれば、変数のように(メモリ内にない)外部エンティティへの参照を用い得る。例えば、mything = this-instanceと定義することにより、this-instanceは、メモリ内のアドレスとは対照的に、URL又は動作している仮想コンピュータの他の識別子に帰着される。これは、オーサリング、ビルド及びランタイムの時点を含む、言語自体における外部エンティティの型及び状態に対する確認を可能にする。参照は、他のプログラム、(例えばコンパイル時における)手動の設定、及び/又は他の処理によって設定され得る。クラウドサービスインフラストラクチャへの参照となる言語プリミティブを用いることによって、システムは、コンパイル及びデバッグ時における、参照の正当性の確認、及びランタイムにおいて有効な参照を有することを容易にする。コンピューティングインフラストラクチャは、物理的なオンサイトデバイスを使用する必要がなく、クラウドサービスによって提供されているコンピューティングシステム内のコンポーネントを参照することができる。例えば、コンピューティングインフラストラクチャは、仮想マシン、ロードバランサ、仮想ネットワーク、データストレージサービス、ドメイン名サービス、ディスクイメージャ、コンテナ、クラスタ及びラムダインストラクション(lambda instruction)のようなコンピューティングデバイスを参照することができる。これらの例は限定を意味するものではなく、例としてのみ提供されたものである。ドメイン固有プログラミング言語は、更に、エラー及びバグを発見するためにテストを実施することを必要とするのとは対照的に、外部エンティティに対する、プログラムをオーサリングする間のコンパイル、型チェック、デバッグを容易にし得る。
[0018] 外部エンティティのアブストラクションにマップするレキシカルスコーピング(lexical scoping)
[0019] 典型的なプログラミング言語では、レキシカルスコーピングは、名称を再利用できるようにコードの部分を組織化し、またプログラムの要素のセグメンテーション及びカプセル化を可能にする方法である。例えば、オブジェクト指向言語におけるプライベートフィールドは、定義されたクラスのインスタンスの外から直接的にそのデータにアクセスすることを防止する。
[0020] 以下に示すドメイン固有プログラミング言語を用いる場合、レキシカルスコーピングは、言語のネイティブ部分ではないエンティティの集合にマップされ得る。例えば、計算インスタンスは、上述した外部エンティティのメソッドへの参照:my-thing = this-instanceを用いて定義され得、ここでthis-instanceは、ランタイム環境における実エンティティへのポインタである。
[0021] 外部エンティティのレキシカルスコーピングを用いる場合、システムはthis-instanceをthisvenueの子要素にし得、ここで、this-venueはエンティティの任意の集合を含み得る。仮にthis-instanceが呼び出しコードのスコープに対してパブリックでなかった場合、コンパイラは直接的な参照の際にエラーを返す。これは、例えば変数のスコープがエンティティの特定の組に限定される場合に起こり得る。外部エンティティは、単一のクラウドサービスプロバイダ又は異なるサービスプロバイダと関連付けられ得、その識別子は所定の変数又は参照と関連付けられ得る。
[0022] サービスへの言語ランタイム状態情報の外面化
[0023] これら及び他の恩恵を促進するために、システムは全ての参照の状態情報と、共有される変数とをプログラムの境界を超えて保持し得る。システムは、状態情報を、ドメイン固有プログラミング言語の言語特性を把握することができる状態情報サービスを介してアクセス可能にし得る。
[0024] コンパイル時において、コンパイルされたコードは、ランタイム環境のインタプリタモジュール(詳細を後に説明する)によって処理されてよく、このランタイム環境インタプリタモジュールは、変数が存在するかを判定し、そして存在する場合に参照のスコープ内であるかどうかを判定するために、言語で用いるスコープにおいて変数を識別する状態情報サービスに問い合わせを行い得る。状態情報サービスはまた、利用可能な関数や演算など、エンティティがどのように使用され得るかについての詳細を明らかにし得る。
[0025] 状態情報サービスは、変数の状態における詳細なバージョン情報を保持し得る。例えば、ユーザAがコンパイルとプログラムの実行によってエンティティを生成した場合、対応する変数は、1に設定されたシリアルナンバー(又は他のバージョン情報)と併せて状態情報サービス内に現れ得る。ある例では、対応する変数は、プログラム内のコンピューティングインフラストラクチャのインスタンスから得られる固有なハッシュであってよい。エンティティの通常の演算の間に、その状態は(例えば他のインターネットプロトコルのアドレスに)変化する。この変化を生じさせる第2のプログラムは、テーブルを新たなIPアドレスで更新し得、そしてシリアルナンバーの値を2に増加させ得る。第3のプログラムがエンティティを参照し、エンティティがその状態を表すバージョン1を有する場合、新たなシリアルナンバーは2であると理解して、最新のバージョンを状態情報サービスに問い合わせ得る。
[0026] 状態情報は、組織が利用可能にしたい全てのエンティティに渡って一般化され、スコープが決定され得る。このように、組織の多くの部分に跨る複数ユーザは、他のチームにおける彼らのピア(peers)の生成物を用いて相互利用し得る。
[0027] システム100の他の使用は以下に説明され、更なるものは当業者にとって明らかである。いくつかのシステムの機能の高レベルの概要を説明したので、これから、これら及び他の機能を促進する様々なシステム構成要素に注意が向けられるであろう。
[0028] 上述したように、上記インフラストラクチャのプリミティブ及びそれらに適用されるレキシカルスコーピングは、関数を生成するために用いることができ、この関数は、関数に入力される所定の引数に基づいてインフラストラクチャのパターンを生み出すことができる。以下に提供されるコード例は、列挙型(enumeration type)の例である。
Type IcmpDescription:
| Ping
| DestinationUnreachable
| RedirectMessage
Type IcmpDescription:
| Ping
| DestinationUnreachable
| RedirectMessage
[0029] 以下に提供されるコード例は、「icmp」の属性を定義することができるデータ構造体型(data structure type)の例である。以下の例では、icmp型は、属性の値である「型(type)」及び「コード(code)」を有し、これらの属性は整数値として表される。
Type Icmp:
| type: INT
| code: INT
Type Icmp:
| type: INT
| code: INT
[0030] 以下のコード例はドメイン固有言語を用いる関数の例を示している。以下のコード例はインフラストラクチャの記述をとり、icmp(機器データ)を評価する。
Icmp fromDescription(IcmpDescription icmp):
Case icmp of
| ping {code: 0, type: 0}
| DestinationUnreachable {code: 0, type: 3}
| Redirect Message {code: 0, type: 5}
Icmp fromDescription(IcmpDescription icmp):
Case icmp of
| ping {code: 0, type: 0}
| DestinationUnreachable {code: 0, type: 3}
| Redirect Message {code: 0, type: 5}
[0031] 上述の関数は、更なる詳細を以下で示す説明関数(explain function)によって、コンパイル時に評価されてよい。
[0032] 例示的なシステムアーキテクチャ
[0033] システム100は、コンピュータシステム110、コンピュータシステム140、1つ以上のクラウドサービスプロバイダ150、及び他の構成要素の少なくともいずれかを含み得る。
[0034] コンピュータシステム110
[0035] コンピュータシステム110は、1つ以上のプロセッサ112(以下では、適宜、複数のプロセッサ112、1つ又は複数のプロセッサ112、又は1つのプロセッサ112としても置き換え可能に参照される)、1つ以上のストレージデバイス114(状態情報サービス120、適宜、以下SIS120を格納し得る)、1つ以上のエンティティ状態情報データベース130、及び他の構成要素、の少なくともいずれかを含み得る。プロセッサ112は、1つ以上のコンピュータプログラム命令によってプログラムされ得る。例えば、プロセッサ112は、SIS120及び他の命令の少なくともいずれかによってプログラムされ得る。
[0035] コンピュータシステム110は、1つ以上のプロセッサ112(以下では、適宜、複数のプロセッサ112、1つ又は複数のプロセッサ112、又は1つのプロセッサ112としても置き換え可能に参照される)、1つ以上のストレージデバイス114(状態情報サービス120、適宜、以下SIS120を格納し得る)、1つ以上のエンティティ状態情報データベース130、及び他の構成要素、の少なくともいずれかを含み得る。プロセッサ112は、1つ以上のコンピュータプログラム命令によってプログラムされ得る。例えば、プロセッサ112は、SIS120及び他の命令の少なくともいずれかによってプログラムされ得る。
[0036] コンピュータシステム140
[0037] コンピュータシステム140は、1つ以上のプロセッサ142(以下では、適宜、複数のプロセッサ142、1つ又は複数のプロセッサ142、又は1つのプロセッサ142としても置き換え可能に参照される)、1つ以上のストレージデバイス144(コンパイラ150A、1つ以上のプログラム152及び他の命令、の少なくともいずれかを格納し得る)及び他の構成要素、の少なくともいずれかを含み得る。プロセッサ142は、1つ以上のコンピュータプログラム命令によってプログラムされ得る。例えば、プロセッサ142は、コンパイラ150、プログラム152及び他の命令の少なくともいずれかによってプログラムされ得る。
[0038] クラウドサービスプロバイダ160
[0039] クラウドサービスプロバイダ160は、カスタマの代わりに計算インスタンスを実行するための様々なクラウドサービスを販売するエンティティを含み得る。例えば、アマゾン社は、そのアマゾンウェブサービス(AMAZON WEB SERVICES、AWS)サービスを用いるクラウドサービスインスタンスを販売し、グーグル社は、そのグーグルアップエンジン(GOOGLE APP ENGINE)サービスを用いるクラウドサービスインスタンスを販売する。他の例では、クラウドサービスプロバイダはまた、コンテンツデリバリネットワーク、ドメイン名サービス等のような非計算サービスを提供する他の専門化したプロバイダを含んでよい。
[0040] クラウドサービスプロバイダ160はまた、クラウドサービスのための市場又は取引所を提供するエンティティを含み得る。例えば、クラウドサービスプロバイダ160は、自身のインフラストラクチャを用いてクラウドサービスインスタンスを実際に提供する他の者に代わって、クラウドサービスインスタンスを販売する市場を含み得る。このように、システム100は、異なるエンティティから様々なクラウドサービスインスタンスを販売し得る取引所を活用し得る。
[0041] 図1では、1つの構成要素として図示するが、コンピュータシステム110とコンピュータシステム140とは、それぞれが複数の個々の構成要素(例えばコンピュータデバイス)であって、それぞれが以下に説明される機能の少なくともいくつかがプログラムされている個々の要素を含み得る。このように、コンピュータシステム110及びコンピュータシステム140の少なくともいずれかのいくつかの構成要素は、理解されるように、他の構成要素が他の機能を実行し得る間にいくつかの機能を実行し得る。1つ以上のプロセッサ112、142のそれぞれは、コンピュータプログラム命令によってプログラムされる1つ以上の物理的なプロセッサを含み得る。以下に説明される様々な命令は単なる例示である。プロセッサ112、142が以下に説明される機能を実行するようにプログラムされる限り、他の構成及び複数の命令が使用され得る。
[0042] 更に、図1では様々な命令が1つのプロセッサユニット内に共に配置されるものとして図示されるが、プロセッサ112、142が複数のプロセッサユニットを含む実施では、1つ以上の命令が他の命令からリモートで実行され得ることが理解されるべきである。加えて、プロセッサ112に関して以下で説明される少なくともいくつかの機能は、プロセッサ142によって実行され得、またその逆もあり得る。例えば、プロセッサ112は、コンパイラ150、プログラム152、及びプログラム152のためのランタイム環境の少なくともいずれかによってプログラムされ得る。同様に、プロセッサ142は、状態情報サービス120とともにプログラムされ得る。
[0043] 以下で説明される、異なる命令によって提供される機能の記載は、説明を目的とするものであって、限定することを意図したものではなく、任意の命令は記載よりも多かれ少なかれ機能を提供し得る。例えば、1つ以上の命令は除去され得、そのいくつか又は全ての機能は他の命令によって提供され得る。他の例では、プロセッサ112は、以下では命令の1つに属する機能のいくつか又は全てを実行し得る、1つ以上の追加的な命令によってプログラムされ得る。
[0044] 以下で説明される様々な命令は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、及び他のメモリの少なくともいずれかを含むストレージデバイス114に格納され得る。ストレージデバイスは、プロセッサ112によって操作され得るデータと同様、プロセッサ112によって実行されるコンピュータプログラムの命令(例えば上述した命令)を格納し得る。ストレージデバイスは、フロッピディスク、ハードディスク、光学ディスク、テープ、又は、コンピュータで実行可能な命令及び/又はデータを格納する他のストレージメディアを含み得る。
[0045] 図1に図示される様々な構成要素は、ネットワーク102を介して少なくとも1つの他の構成要素と接続され得る。これらは、任意の1つ以上の、例えば、インターネット、イントラネット、PAN(Personal Area Network)、LAN(Local Area Network)、WAN(Wide Area Network)、SAN(Storage Area Network)、MAN(Metropolitan Area Network)、無線ネットワーク、移動体通信ネットワーク、公衆交換電話網、及び他のネットワークの少なくともいずれかを含み得る。図1及び他の図において、図示されるものとは異なる数のエンティティが用いられ得る。更に、様々な実施によれば、以下で説明される構成要素は、ハードウェア及びハードウェアを構成するソフトウェアの少なくともいずれかで実施され得る。
[0046] 以下で説明されるエンティティ状態情報データベース130(及び他のデータベースの少なくともいずれか)は、例えば、オラクル社によって商業的に販売されるオラクル(TM)リレーショナルデータベースを含み、或いはインタフェースで接続し得る。上で提供された例示的データベースは限定を意味するものではなく、エンティティ状態情報データベース130は、例えば、Informix(TM)、DB2(Database 2)、Amazon DynamoDB(TM)などの他のデータベースを含み又はインタフェースで接続され、又は、OLAP(On Line Analytical Processing)、SQL(Structured Query Language)、SAN(storage area network)、Microsoft Access(TM)又は他の、ファイルベース又はクエリフォーマット、プラットフォーム又はリソースを含む他のデータストレージも用いられ、組み込まれ、又はアクセスされ得る。データベースは、1つ以上の物理的なデバイス内及び1つ以上の物理的な場所に存在する1つ以上のそのようなデータベースを含み得る。データベースは、複数の型のデータ及び/又はファイル及び関連付けられたデータ又はファイル記述、管理情報、又は他の任意のデータを格納し得る。
[0047] 例示的なシステム処理の動作
[0048] 図2は、本発明の実施に従う、クラウドサービスインフラストラクチャのためのドメイン固有プログラミング言語を提供し実行する、様々なシステム構成要素の処理フロー図200を示す。図2に図示される様々な処理の動作及び/又はデータフローは、以下により詳細に説明される。説明される動作は、上で詳細に説明したシステムの構成要素のいくつか又は全てを用いて達成され得、ある実施では、様々な動作が異なるシーケンスで実行され得、かつ、様々な動作が省略され得る。追加的な動作は、図示されたフローチャートに示される動作のいくつか又は全てと共に実行され得る。1つ以上の動作は、同時に実行され得る。従って、図示される(かつ以下でより詳細に説明される)動作は、そもそも例示であり、それ自体は限定するものとして見られるべきではない。
[0049] 動作202において、クラウドサービスインフラストラクチャのためのドメイン固有プログラミング言語におけるソースコードが受け付けられ得る。例えば、開発者は、受け付けられてコンパイラ150によってコンパイルされるべきソースコードをドラフトし得る。
[0050] コンパイラ150によって生成されたコンパイル済コードは、ランタイム環境20に送信され得る。ランタイム環境20は、説明動作(explain action)を開始することができ(更に以下で説明される)、更に、変数が存在するか、そして存在する場合に参照のスコープ内であるかどうかを判定するために、ソースコードで用いるスコープにおいて変数を識別するSIS120にクエリを送信することができる。
[0051] 動作206において、SIS120はエンティティ状態情報データベース130に問い合わせて、変数及び参照の少なくともいずれかに対する状態情報を取得し得る。
[0052] SIS120は、(変数の存在、そのスコープ、クラウドサービスプロバイダ150によって提供される計算インスタンスなどの外部エンティティへの参照、その利用可能な関数のようにどのようにエンティティが使用されるか、を示し得る)任意の関連する状態情報を取得してランタイム環境の他の構成要素に提供(又は、NULL又は変数が存在しないことを示す他の指標を返信)し得る。
[0053] 動作210において、コンパイラ150は、変数が存在しかつ状態情報に基づきスコープ内にある場合に、実行可能なプログラム(以下、適宜プログラム152Aとして参照される)を生成し得る。プログラム152Aは、コンパイラ150によって既にコンパイルされている他のプログラム(152B、...、N)とともにランタイム環境20に配置され得る。図3に関し、ランタイム環境について以下で詳細に説明する。
[0054] 動作212において、ランタイム環境20はプログラム152Bを実行し得る。例えば、プログラム152Bは、人間のユーザ、処理、及び他のユーザの少なくともいずれかによって、ランタイム環境20において実行されるように呼び出される。ランタイム環境20は、変数が存在するか、そして存在する場合に当該変数が参照のスコープ内であるかどうかを判定するために、プログラム152Bで用いるスコープにおいて変数を識別するSIS120に問い合わせ得る。例えば、ランタイム環境20は、ネットワーク102を介してSIS120へクエリを送信し得る。
[0055] 動作214において、SIS120は、動作206に関して説明したように、エンティティ状態情報データベース130に問い合わせ得る。
[0056] 動作216において、SIS120は、動作208に関して以前に説明したように、任意の関連する状態情報を取得しランタイム環境20へ提供し得る。ランタイム環境は、呼び出すコンパイル済コード(プログラム152B)のスコープ内に所定の変数が無い場合に、エラー(例えばランタイムフォルト(runtime fault))を生じさせ得る。そうでない場合、ランタイム環境20は、プログラム152Bの実行中における、参照されるエンティティ(例えばクラウドサービスプロバイダ160において動作する計算インスタンス)に関する任意の状態変化を把握するために、プログラム152Bにおける所定の変数の現在の状態を実行時に取得し得る。
[0057] ランタイム環境20におけるプログラムの例示的な動作において、ユーザは、エンティティを参照しエンティティを生成させる変数を含み得るプログラム152Aを、コンパイルして実行し得る。例えば、生成されたエンティティは、限定無しに、クラウドサービスプロバイダ160における計算インスタンスを含み得る。換言すれば、以下に示すドメイン固有言語を用いれば、変数のインスタンス化は、対応する計算インスタンスを参照して変数が生成されるようになされ得る。実施において、プログラム152Aのためのソースコードは、変数が参照するクラウドインスタンスを特定/定義し得る。或いは、設定可能なパラメータの設定によってクラウドインスタンスを定義し得る。コンパイルされた場合、SIS120は、変数、その参照、その状態、計算インスタンスがどのように用いられ得るか、及び/又は、他の状態情報を、エンティティ状態情報データベース130を用いて格納し得る。
[0058] プログラム152Bはまた変数を含む。プログラム152Bがコンパイルされた場合、説明動作はランタイム環境において実行されてよく(更なる詳細は後に説明される)、ランタイム環境は、変数がプログラム152Bのスコープ内であるかを判定するためにSIS120に問い合わせを行う。同様に、プログラム152Bが実行された場合、ランタイム環境20は、変数に関連する現在の状態情報を取得するためだけでなく、変数がスコープ内であるかを判定するためにSIS120に問い合わせ得る。
[0059] ある例では、プログラム152Bは変数を更新させ得る。例えば、プログラム152Bは、置換用計算インスタンスに、クラウドサービスプロバイダ160における既存の計算インスタンスを置き換えさせ、指定可能な識別子(例えばインターネットプロトコルアドレス)を、置換用計算インスタンスへの参照に変更させ得る。このような変更に応じて、ランタイム環境20は、SIS120に更新を提供して、エンティティ状態情報データベース130を変数の更新された情報で更新し得る。他の例では、(ユーザがクラウドコンピューティング環境インタフェースを手動で動作させるなど、)外部のアクタによって開始される、コンピューティングインフラストラクチャのインスタンス(例えば変数)への変更は、元の形式にリバートすることができ、理解されるように、置き換えられた形式は、ドメイン固有プログラミング言語を通じてユーザによって特定された計算インスタンスの元のインスタンスと一致しない。
[0060] プログラム152Nもまた変数を含む。プログラム152Nからの変数は、上述したようにコンパイル及びランタイムにおいて正当性が確認され得る。プログラム152Nは、実行されると変数に関連する現在の状態情報を取得し得る。例えば、(計算インスタンスが生成されるようにし得た)プログラム152Aによって生成された計算インスタンスへの参照の代わりに、プログラム152Bによって更新されたように、プログラム152Nに含まれる変数は、現在の計算インスタンスを参照し得る。このようにして、異なるプログラムは同じ変数を更新し得、これは変数に対する参照が同様に更新されるようにし得る。従って、以下に示すドメイン固有言語を用いることにより、異なる開発者は、(クラウドサービスプロバイダ160における計算インスタンスなどの)異なるエンティティを、コードの言語内でネイティブに参照し得る。
[0061] 図3は、本開示の例に従う、クラウドサービスインフラストラクチャのためのコンパイルされた、ドメイン固有プログラミング言語の例示的なランタイム環境について説明する。図3に説明されるように、カスタマ/クライアントコンピュータ300において、ユーザは、クラウドベースのコンピューティングサービス上で実施するためのコンピューティングインフラストラクチャを特定するドメイン固有プログラミング言語を用いて、コンピュータコードを記述することができる。
[0062] ひとたびユーザがコードを生成すると、コードはステップ304においてコンパイルされ、ユーザによって生成されたユーザフレンドリな構文から、インフラストラクチャオペレーティングシステムのコマンドラインインタフェースによって理解可能な(ステップ306に示される)中間表現に変換される。ステップ308において、インフラストラクチャオペレーティングシステムは、コードが表すものをビルドしトラッキングすることにより、コンパイル済コード306を実行することができる。
[0063] その後コードは、インタプリタ及びプラナーモジュール310に送信されてよく、インタプリタ及びプラナーモジュールは、コマンドラインインタフェース言語(すなわち中間表現306)をインフラストラクチャオペレーティングシステムによって実行可能な特定の命令の組に変換する。ある例では、インタプリタマネージャは、1つ以上のプランニングモジュールを用いて命令をビルドすることができる。インタプリタマネージャは、このことを、いくつかの例では、入力においてリソーステーブルを受け付けて、ユーザによって提供された構文内の任意の省略が埋められたリソーステーブルを生成する、一連のプランニングモジュールを用いることにより達成することができる。ある例では、プランニングモジュールは、コンピューティングインフラストラクチャーのプロパティを特定する、ビルドされるべきリソーステーブルを受信することができる。インタプリタマネージャは、(コンパイル済のドメイン固有コードの形式で)ユーザによって送信されたリソーステーブルを確認することができ、そして、どのインフラストラクチャが必要であるかについてのユーザの宣言に基づいて、当該リソーステーブルを一連のプランニングモジュールに送信する。
[0064] プランニングモジュールは、ユーザのリソーステーブルを変更して、インタプリタマネージャに返信する。この処理は、ステップ312においてリソーステーブルの最終的な正しいバージョンが完成するまで、他のプランニングモジュールとも繰り返される。その後インタプリタマネージャは、リソーステーブルを、クラウド上に構築されるべきコンピュータインフラストラクチャの低レベル宣言として参照され得る、機械命令ファイルへ変換する。この低レベル宣言はその後、ビルダ/ドライバ314へ送信される。ここで、リソーステーブルは、クラウドプロバイダ316のアプリケーションプログラムインタフェースと連動することができる言語に変換される。
[0065] この動作の一部として、インタプリタとプラナーモジュール310は、ドメイン固有コンピューティング言語においてユーザが生成したコンピューティングインフラストラクチャのユーザ宣言インスタンスを、宣言されたインスタンスのスコープと同様、入力することができる。インタプリタは、(上述した)外部状態情報サービスデータベースに問い合わせて、ユーザによって宣言されたコンピューティングインスタンスの型が存在するか、そして存在する場合には、状態情報サービスがインタプリタに関連する任意の状態情報を提供することができるかを判定することができる。
[0066] ひとたびコンピューティングインフラストラクチャがクラウドコンピューティング環境上に構築されると、実装されたインフラストラクチャは「永続化された(persisted)」ものになり得る。ここで、永続化は、実装されたインフラストラクチャが、ドメイン固有プログラミング言語で表された、初めにユーザが宣言したコンピューティングインフラストラクチャのインスタンスと比較することができることを意味する。何らかの相違が発見された場合、クラウドのインフラストラクチャの実装がユーザの望むインフラストラクチャと一致するように、コンピューティングインフラストラクチャの実装がインタプリタ310によって修正されてよい。
[0067] 図4は、本発明の実施に従う、クラウドサービスインフラストラクチャのためのドメイン固有プログラミング言語をコンパイルする処理400を示す。図4に図示される様々な処理の動作及び/又はデータフローは、以下により詳細に説明される。説明される動作は、上で詳細に説明したシステムの構成要素のいくつか又は全てを用いて達成され得、ある実施では、様々な動作が異なるシーケンスで実行され得、かつ、様々な動作が省略され得る。追加的な動作は、図示されたフローチャートに示される動作のいくつか又は全てと共に実行され得る。1つ以上の動作は、同時に実行され得る。従って、図示される(かつ以下でより詳細に説明される)動作は、そもそも例示であり、それ自体は限定するものとして見られるべきではない。
[0068] 動作402において、ドメイン固有プログラミング言語におけるソースコードが取得され得る。
[0069] 動作404において、変数が存在するか、そして存在する場合に当該変数が参照のスコープ内であるかどうかを判定するため、状態情報サービスは、言語で用いるスコープにおいて変数を識別するための問い合わせを受け得る。動作404は、ソースコードに現れる変数に対し、必要に応じて繰り返され得る。上述したように、状態情報サービスは、(以下で詳細に説明される)説明動作の間に問い合わせを受け得、この説明動作は、変数が存在するか、そして存在する場合にユーザ生成コードにおいて参照されるものがスコープ内であるかどうかを判定するために、ランタイム環境に配置されたインタプリタが状態情報サービスに問い合わせを行うことができるものである。
[0070] 動作406において、状態情報はクエリに基づいて取得され得る。
[0071] 動作408において、変数が存在するか、及び/又はスコープ内であるかの判定が判定され得る。
[0072] 動作410において、変数が存在するか、及びスコープ内であるかの判定に応じて、ソースコードがクラウドサービスにおける実装のためのランタイム環境に送信され得る。
[0073] 動作412において、変数が存在しない又はスコープ内でないとの判定に応じて、コンパイルエラーが発生して通信され得る。
[0074] 図5は、本開示の例示に従う、例示的な説明処理を示す。図5に示す説明動作において、ステップ502、504、506、508及び510は、図3の対応箇所(すなわち、それぞれステップ302、304、306、308及び310)と実質的に同一の方法で動作する。しかしながら、図3において説明された処理とは異なり、インタプリタで生成されたリソーステーブルを機械命令ファイルに変換するのではなく、代わりに、ステップ512において処理は、注釈付のリソーステーブルをインフラストラクチャオペレーティングシステムCLI508に返信する。
[0075] 上述したように、インタプリタは、動作の一部として、コンピューティングインフラストラクチャのユーザ宣言インスタンスを入力し、更にインスタンスが存在するかを判定するために状態情報サービスデータベースに問い合わせることができる。コンピューティングインフラストラクチャのインスタンスが存在しないと判定された場合、状態情報サービスはインタプリタに対して、宣言されたインスタンスが存在しないことを提示することができ、当該インスタンスの使用はステップ512において通知され得る。
[0076] また一方、全ての宣言された変数が存在する場合、ユーザは、ステップ514において、インフラストラクチャがどのように実装されるかについての計画を提示されてよい。ステップ514において、ユーザは、受け付けた実装計画を受け入れられるかを決定し、もし受け入れられる場合、処理はステップ516へ移動する。ここで、ステップ512において生成された注釈付きのコードは、クラウドコンピューティングサービスプロバイダのコマンドラインインタフェースと互換性のある機械コードに変換される。
[0077] 図6は、本発明の実施に従う、クラウドサービスインフラストラクチャのためのドメイン固有プログラミング言語を実行する処理600を示す。図6に図示される様々な処理の動作及び/又はデータフローは、以下により詳細に説明される。説明される動作は、上で詳細に説明したシステムの構成要素のいくつか又は全てを用いて達成され得、ある実施では、様々な動作が異なるシーケンスで実行され得、かつ、様々な動作が省略され得る。追加的な動作は、図示されたフローチャートに示される動作のいくつか又は全てと共に実行され得る。1つ以上の動作は、同時に実行され得る。従って、図示される(かつ以下でより詳細に説明される)動作は、そもそも例示であり、それ自体は限定するものとして見られるべきではない。
[0078] 動作602において、ドメイン固有プログラミング言語を用いたソースコードからコンパイルされたプログラムを実行するコマンドが受け付けられ得る。
[0079] 動作604において、変数が存在するか、そして存在する場合に当該変数が参照のスコープ内であるかどうかを判定するため、状態情報サービスは、言語で用いるスコープにおいて変数を識別するための問い合わせを受け得る。動作604は、ソースコードに現れる変数に対し、必要に応じて繰り返され得る。
[0080] 動作606において、状態情報はクエリに基づいて取得され得る。
[0081] 動作608において、変数が存在するか、及び/又はスコープ内であるかの判定が判定され得る。
[0082] 動作610において、変数が存在しない又はスコープ内でないとの判定に応じて、ランタイムエラーが発生して通信され得る。
[0083] 動作612において、変数が存在し且つスコープ内であるとの判定に応じて、プログラムが実行され得る。動作612は、全ての変数が処理されるまで繰り返され得る。ある実装では、コードの実行はクラウドサービスプロバイダにおける計算インスタンスがインスタンス化されるようにし得る。これらの実装では、状態情報(例えば、IPアドレス、バージョン、どのように用いるか等)は状態情報サービスを介して格納され得る。このようにして、同じ変数を用いる他のプログラムは、インスタンス化された計算インスタンスのために状態情報サービスにアクセスし得る。
[0084] 動作614において、変数に関連付けられたエンティティの状態情報への更新がプログラムの実行中に生じたかについての判定がなされ得る。例えば、計算インスタンスに対応する変数を使用するプログラムが、計算インスタンスに関連付けられたIPアドレスを変更してもよい。動作614は、全ての変数が処理されるまで繰り返され得る。
[0085] 更新が発生したことの判定に応じて、動作416では、状態情報が状態情報サービスを介して更新され得る。
[0086] 動作618において、コードの実行は(エラー状態を有することなく)正常に終了し得る。
[0087] 上述の説明は、説明の目的のために、特定の実施形態を参照して説明された。しかしながら、上記説明は包括的であること又は開示された正確な形式に限定することを意図するものではない。上記技術を考慮した多くの修正及び変形が可能である。実施形態は、技術の原理及び実用的な利用を最もよく説明するために選択され、説明されたものである。これにより、当業者は、意図された特定の用途に適したものとして本技術と様々な修正を伴う様々な修正を最も有効に利用することができる。
[0088] 従って、上記に従う本開示のいくつかの例は、クラウドコンピューティングシステムにインフラストラクチャを構築する方法であって、この方法は、ドメイン固有プログラミング言語でユーザによって記述されたソースコードを受け付けることであって、ソースコードが、クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャの1つ以上のインスタンスを定義する1つ以上の変数を含む、受け付けることと、コンピューティングインフラストラクチャの1つ以上のインスタンスが状態情報サービスに存在するかを識別し、1つ以上の変数がコンピューティングインフラストラクチャの識別された1つ以上のインスタンスに見合うスコープ内であるかを識別するために、状態情報サービスに問い合わせることと、コンピューティングインフラストラクチャの1つ以上のインスタンスが存在し且つコンピューティングインフラストラクチャの識別された1つ以上のインスタンスに見合うスコープ内であることが判明した場合に、受け付けたソースコードを、クラウドコンピューティング環境のコマンドラインインタフェースによって読み取り可能な1つ以上の命令に変換することと、を含む方法に対するものである。上述の1つ以上の例に追加して或いは代替して、いくつかの例では、ドメイン固有プログラミング言語で記述されたソースコードを受け付けることは、ソースコードを、クラウドインフラストラクチャオペレーティングシステムのコマンドラインインタフェースと互換性を有する中間表現に変換することを含む。上述の1つ以上の例に追加して或いは代替して、いくつかの例において当該方法は更に、1つ以上の変数の各変数が状態情報サービスに存在し、且つコンピューティングインフラストラクチャの識別された1つ以上のインスタンスに見合うスコープ内であることが判明した場合に、実装計画を生成することを含む。上述の1つ以上の例に追加して或いは代替して、いくつかの例において当該方法は更に、生成された実装計画を、承認のためにユーザに送信することを含む。上述の1つ以上の例に追加して或いは代替して、いくつかの例において当該方法は更に、ユーザが生成された実装計画を承認した場合、ドメイン固有プログラミング言語でユーザによって記述されたソースコードをクラウドコンピューティング環境において実装することを含む。上述の1つ以上の例に追加して或いは代替して、いくつかの例では、ソースコードを実装することは、ソースコードを、クラウドインフラストラクチャオペレーティングシステムのコマンドラインインタフェースと互換性を有する中間表現に変換することを含む。上述の1つ以上の例に追加して或いは代替して、いくつかの例では、ソースコードを実装することは、コンピューティングインフラストラクチャの実装された1つ以上のインスタンスがソースコードに対応するように、クラウドコンピューティング環境のコマンドラインインタフェースによって読み取り可能な1つ以上の命令を修正することを含む。上述の1つ以上の例に追加して或いは代替して、いくつかの例では、ソースコードは、クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャの1つ以上のインスタンスと関連付けられた1つ以上の変数を利用する、1つ以上の関数を含む。上述の1つ以上の例に追加して或いは代替して、いくつかの例では、1つ以上の変数は、クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャのユーザ定義インスタンスを含む。
[0089] 本開示のいくつかの例は、クラウドコンピューティングシステムにインフラストラクチャを構築する方法であって、この方法は、ドメイン固有プログラミング言語でユーザによって記述されたソースコードを受け付けることであって、ソースコードが、クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャの1つ以上のインスタンスを定義する1つ以上の変数を含む、受け付けることと、コンピューティングインフラストラクチャの1つ以上のインスタンスが状態情報サービスに存在するかを識別し、1つ以上の変数がコンピューティングインフラストラクチャの識別された1つ以上のインスタンスに見合うスコープ内であるかを識別するために、状態情報サービスに問い合わせることと、1つ以上の変数のいずれかが状態情報サービスに存在しない、又は1つ以上の変数のいずれかがコンピューティングインフラストラクチャの識別された1つ以上のインスタンスに見合うスコープ内にない場合に、ユーザに通知することと、を含む方法に対するものである。上述の1つ以上の例に追加して或いは代替して、いくつかの例では、ドメイン固有プログラミング言語で記述されたソースコードを受け付けることは、ソースコードを、クラウドインフラストラクチャオペレーティングシステムのコマンドラインインタフェースと互換性を有する中間表現に変換することを含む。
[0090] 本開示のいくつかの例は、1つ以上のプログラムを格納する非一時的コンピュータ可読媒体であって、1つ以上のプログラムは、クラウドコンピューティングシステムにインフラストラクチャを構築する命令を含み、携帯用電子デバイスで実行されると、このデバイスに、ドメイン固有プログラミング言語でユーザによって記述されたソースコードを受け付け、ソースコードが、クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャの1つ以上のインスタンスを定義する1つ以上の変数を含み、コンピューティングインフラストラクチャの1つ以上のインスタンスが状態情報サービスに存在するかを識別し、1つ以上の変数がコンピューティングインフラストラクチャの識別された1つ以上のインスタンスに見合うスコープ内であるかを識別するために、状態情報サービスに問い合わせ、コンピューティングインフラストラクチャの1つ以上のインスタンスが存在し且つコンピューティングインフラストラクチャの識別された1つ以上のインスタンスに見合うスコープ内であることが判明した場合に、受け付けたソースコードを、クラウドコンピューティング環境のコマンドラインインタフェースによって読み取り可能な1つ以上の命令に変換する、ようにさせる命令を含む非一時的コンピュータ可読媒体に対するものである。上述の1つ以上の例に追加して或いは代替して、ドメイン固有プログラミング言語で記述されたソースコードを受け付けることは、ソースコードを、クラウドインフラストラクチャオペレーティングシステムのコマンドラインインタフェースと互換性を有する中間表現に変換することを含む。上述の1つ以上の例に追加して或いは代替して、プロセッサは更に、1つ以上の変数の各変数が状態情報サービスに存在し、且つコンピューティングインフラストラクチャの識別された1つ以上のインスタンスに見合うスコープ内であることが判明した場合に、実装計画を生成するようにする。上述の1つ以上の例に追加して或いは代替して、プロセッサは更に、生成された実装計画を、承認のためにユーザに送信するようになされる。上述の1つ以上の例に追加して或いは代替して、プロセッサは更に、ユーザが生成された実装計画を承認した場合、ドメイン固有プログラミング言語でユーザによって記述されたソースコードをクラウドコンピューティング環境において実装するようになされる。上述の1つ以上の例に追加して或いは代替して、ソースコードを実装することは、ソースコードを、クラウドインフラストラクチャオペレーティングシステムのコマンドラインインタフェースと互換性を有する中間表現に変換することを含む。上述の1つ以上の例に追加して或いは代替して、ソースコードを実装することは、コンピューティングインフラストラクチャの実装された1つ以上のインスタンスがソースコードに対応するように、クラウドコンピューティング環境のコマンドラインインタフェースによって読み取り可能な1つ以上の命令を修正することを含む。上述の1つ以上の例に追加して或いは代替して、ソースコードは、クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャの1つ以上のインスタンスと関連付けられた1つ以上の変数を利用する、1つ以上の関数を含む。上述の1つ以上の例に追加して或いは代替して、1つ以上の変数は、クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャのユーザ定義インスタンスを含む。
[0091] 本開示のいくつかの例は、命令のセットを格納する非一時的コンピュータ可読媒体であって、命令のセットがコンピューティングデバイスによって実行されると、このコンピューティングデバイスに、ドメイン固有プログラミング言語でユーザによって記述されたソースコードを受け付け、ソースコードは、クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャの1つ以上のインスタンスを定義する1つ以上の変数を含む、コンピューティングインフラストラクチャの1つ以上のインスタンスが状態情報サービスに存在するかを識別し、1つ以上の変数がコンピューティングインフラストラクチャの識別された1つ以上のインスタンスに見合うスコープ内であるかを識別するために、状態情報サービスに問い合わせ、1つ以上の変数のいずれかが状態情報サービスに存在しない、又は1つ以上の変数のいずれかがコンピューティングインフラストラクチャの識別された1つ以上のインスタンスに見合うスコープ内にないことが判明した場合に、ユーザに通知する、ようにさせる非一時的コンピュータ可読媒体に対するものである。上述の1つ以上の例に追加して或いは代替して、ドメイン固有プログラミング言語で記述されたソースコードを受け付けることは、ソースコードを、クラウドインフラストラクチャオペレーティングシステムのコマンドラインインタフェースと互換性を有する中間表現に変換することを含む。
[0092] 本開示及び例は添付の図面を参照して十分に説明されたが、様々な変更及び修正が当業者にとって明らかであることに留意されるべきである。そのような変更及び修正は、本開始及び例の範囲内に含まれるものとして特許請求の範囲によって定義されるように理解されるべきである。
Claims (22)
- クラウドコンピューティングシステムにインフラストラクチャを構築する方法であって、前記方法は、
ドメイン固有プログラミング言語でユーザによって記述されたソースコードを受け付けることであって、前記ソースコードが、クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャの1つ以上のインスタンスを定義する1つ以上の変数を含む、受け付けることと、
コンピューティングインフラストラクチャの前記1つ以上のインスタンスが状態情報サービスに存在するかを識別し、前記1つ以上の変数がコンピューティングインフラストラクチャの前記識別された1つ以上のインスタンスに見合うスコープ内であるかを識別するために、前記状態情報サービスに問い合わせることと、
コンピューティングインフラストラクチャの前記1つ以上のインスタンスが存在し且つコンピューティングインフラストラクチャの前記識別された1つ以上のインスタンスに見合うスコープ内であることが判明した場合に、前記受け付けたソースコードを、前記クラウドコンピューティング環境のコマンドラインインタフェースによって読み取り可能な1つ以上の命令に変換すること、を含む方法。 - 請求項1に記載の方法において、ドメイン固有プログラミング言語で記述されたソースコードを受け付けることは、前記ソースコードを、クラウドインフラストラクチャオペレーティングシステムのコマンドラインインタフェースと互換性を有する中間表現に変換すること、を含む。
- 請求項1に記載の方法において、前記方法は更に、前記1つ以上の変数の各変数が、前記状態情報サービスに存在し且つコンピューティングインフラストラクチャの前記識別された1つ以上のインスタンスに見合うスコープ内であることが判明した場合に、実装計画を生成すること、を含む。
- 請求項3に記載の方法において、前記方法は更に、前記生成された実装計画を、承認のために前記ユーザに送信すること、を含む。
- 請求項4に記載の方法において、前記方法は更に、前記ユーザが前記生成された実装計画を承認した場合、前記ドメイン固有プログラミング言語で前記ユーザによって記述された前記ソースコードを前記クラウドコンピューティング環境において実装すること、を含む。
- 請求項5に記載の方法において、前記ソースコードを実装することは、前記ソースコードを、クラウドインフラストラクチャオペレーティングシステムのコマンドラインインタフェースと互換性を有する中間表現に変換すること、を含む。
- 請求項6に記載の方法において、前記ソースコードを実装することは、コンピューティングインフラストラクチャの実装された1つ以上のインスタンスが前記ソースコードに対応するように、前記クラウドコンピューティング環境のコマンドラインインタフェースによって読み取り可能な前記1つ以上の命令を修正すること、を含む。
- 請求項1に記載の方法において、前記ソースコードは、クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャの前記1つ以上のインスタンスと関連付けられた前記1つ以上の変数を利用する、1つ以上の関数を含む。
- 請求項1に記載の方法において、前記1つ以上の変数は、前記クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャのユーザ定義インスタンスを含む。
- クラウドコンピューティングシステムにインフラストラクチャを構築する方法であって、前記方法は、
ドメイン固有プログラミング言語でユーザによって記述されたソースコードを受け付けることであって、前記ソースコードが、クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャの1つ以上のインスタンスを定義する1つ以上の変数を含む、受け付けることと、
コンピューティングインフラストラクチャの前記1つ以上のインスタンスが状態情報サービスに存在するかを識別し、前記1つ以上の変数がコンピューティングインフラストラクチャの前記識別された1つ以上のインスタンスに見合うスコープ内であるかを識別するために、前記状態情報サービスに問い合わせることと、
前記1つ以上の変数のいずれかが前記状態情報サービスに存在せず、又は前記1つ以上の変数がコンピューティングインフラストラクチャの前記識別された1つ以上のインスタンスに見合うスコープ内でないことが判明した場合に、前記ユーザに通知することと、を含む。 - 請求項10に記載の方法において、ドメイン固有プログラミング言語で記述されたソースコードを受け付けることは、前記ソースコードを、クラウドインフラストラクチャオペレーティングシステムのコマンドラインインタフェースと互換性を有する中間表現に変換すること、を含む。
- 1つ以上のプログラムを格納する非一時的コンピュータ可読媒体であって、前記1つ以上のプログラムは、クラウドコンピューティングシステムにインフラストラクチャを構築する命令を含み、携帯用電子デバイスで実行されると、前記携帯用電子デバイスに、
ドメイン固有プログラミング言語でユーザによって記述されたソースコードを受け付け、前記ソースコードは、クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャの1つ以上のインスタンスを定義する1つ以上の変数を含み、
コンピューティングインフラストラクチャの前記1つ以上のインスタンスが状態情報サービスに存在するかを識別し、前記1つ以上の変数がコンピューティングインフラストラクチャの前記識別された1つ以上のインスタンスに見合うスコープ内であるかを識別するために、前記状態情報サービスに問い合わせ、
コンピューティングインフラストラクチャの前記1つ以上のインスタンスが存在し且つコンピューティングインフラストラクチャの前記識別された1つ以上のインスタンスに見合うスコープ内であることが判明した場合に、前記受け付けたソースコードを、前記クラウドコンピューティング環境のコマンドラインインタフェースによって読み取り可能な1つ以上の命令に変換する、ようにさせる命令を含む非一時的コンピュータ可読媒体。 - 請求項12に記載の非一時的コンピュータ可読媒体において、ドメイン固有プログラミング言語で記述されたソースコードを受け付けることは、前記ソースコードを、クラウドインフラストラクチャオペレーティングシステムのコマンドラインインタフェースと互換性を有する中間表現に変換すること、を含む。
- 請求項12に記載の非一時的コンピュータ可読媒体において、前記プロセッサは更に、前記1つ以上の変数の各変数が、前記状態情報サービスに存在し且つコンピューティングインフラストラクチャの前記識別された1つ以上のインスタンスに見合うスコープ内であることが判明した場合に、実装計画を生成するようになされる。
- 請求項14に記載の非一時的コンピュータ可読媒体において、前記プロセッサは更に、前記生成された実装計画を、承認のために前記ユーザに送信するようになされる。
- 請求項15に記載の非一時的コンピュータ可読媒体において、前記プロセッサは更に、前記ユーザが前記生成された実装計画を承認した場合、前記ドメイン固有プログラミング言語で前記ユーザによって記述された前記ソースコードを前記クラウドコンピューティング環境において実装するようになされる。
- 請求項16に記載の非一時的コンピュータ可読媒体において、前記ソースコードを実装することは、前記ソースコードを、クラウドインフラストラクチャオペレーティングシステムのコマンドラインインタフェースと互換性を有する中間表現に変換すること、を含む。
- 請求項17に記載の非一時的コンピュータ可読媒体において、前記ソースコードを実装することは、コンピューティングインフラストラクチャの実装された1つ以上のインスタンスが前記ソースコードに対応するように、前記クラウドコンピューティング環境のコマンドラインインタフェースによって読み取り可能な前記1つ以上の命令を修正すること、を含む。
- 請求項12に記載の非一時的コンピュータ可読媒体において、前記ソースコードは、クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャの前記1つ以上のインスタンスと関連付けられた前記1つ以上の変数を利用する、1つ以上の関数を含む。
- 請求項12に記載の非一時的コンピュータ可読媒体において、前記1つ以上の変数は、前記クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャのユーザ定義インスタンスを含む。
- 1つ以上のプログラムを格納する非一時的コンピュータ可読媒体であって、前記1つ以上のプログラムは、クラウドコンピューティングシステムにインフラストラクチャを構築する命令を含み、携帯用電子デバイスで実行されると、前記携帯用電子デバイスに、
ドメイン固有プログラミング言語でユーザによって記述されたソースコードを受け付け、前記ソースコードは、クラウドコンピューティング環境上に構築されるコンピューティングインフラストラクチャの1つ以上のインスタンスを定義する1つ以上の変数を含み、
コンピューティングインフラストラクチャの前記1つ以上のインスタンスが状態情報サービスに存在するかを識別し、前記1つ以上の変数がコンピューティングインフラストラクチャの前記識別された1つ以上のインスタンスに見合うスコープ内であるかを識別するために、前記状態情報サービスに問い合わせ、
前記1つ以上の変数のいずれかが前記状態情報サービスに存在せず、又は前記1つ以上の変数がコンピューティングインフラストラクチャの前記識別された1つ以上のインスタンスに見合うスコープ内でないことが判明した場合に、前記ユーザに通知する、ようにさせる非一時的コンピュータ可読媒体。 - 請求項21に記載の非一時的コンピュータ可読媒体において、ドメイン固有プログラミング言語で記述されたソースコードを受け付けることは、前記ソースコードを、クラウドインフラストラクチャオペレーティングシステムのコマンドラインインタフェースと互換性を有する中間表現に変換すること、を含む。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462079403P | 2014-11-13 | 2014-11-13 | |
US62/079,403 | 2014-11-13 | ||
PCT/US2015/060728 WO2016077785A1 (en) | 2014-11-13 | 2015-11-13 | System and method for providing and executing a domain-specific language for cloud services infrastructure |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017534996A true JP2017534996A (ja) | 2017-11-24 |
Family
ID=55955166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017525815A Pending JP2017534996A (ja) | 2014-11-13 | 2015-11-13 | クラウドサービスインフラストラクチャのためのドメイン固有言語を提供し実行するシステム及び方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US10310828B2 (ja) |
EP (1) | EP3218819A4 (ja) |
JP (1) | JP2017534996A (ja) |
KR (1) | KR20170086560A (ja) |
CN (1) | CN107111606A (ja) |
AU (1) | AU2015346074A1 (ja) |
CA (1) | CA2967640A1 (ja) |
IL (1) | IL252238A0 (ja) |
WO (1) | WO2016077785A1 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017534996A (ja) | 2014-11-13 | 2017-11-24 | フーガ インコーポレイテッド | クラウドサービスインフラストラクチャのためのドメイン固有言語を提供し実行するシステム及び方法 |
US9921859B2 (en) * | 2014-12-12 | 2018-03-20 | The Regents Of The University Of Michigan | Runtime compiler environment with dynamic co-located code execution |
CN106250104B (zh) | 2015-06-09 | 2019-08-20 | 阿里巴巴集团控股有限公司 | 一种针对服务器的远程操作系统、方法及装置 |
US10481882B2 (en) * | 2016-10-07 | 2019-11-19 | International Business Machines Corporation | Reducing waste areas inside strings |
US10261810B2 (en) * | 2017-02-10 | 2019-04-16 | Fugue, Inc. | System and method for providing cloud operating system validations for a domain-specific language for cloud services infrastructure |
US20190050213A1 (en) * | 2017-08-11 | 2019-02-14 | Fugue, Inc. | System and method for generating a domain-specific programming language program from a cloud-based computing system |
US20190050210A1 (en) * | 2017-08-11 | 2019-02-14 | Fugue, Inc. | System and method for providing cloud operating system verifications for a domain-specific language for cloud services infrastructure |
US20190087165A1 (en) * | 2017-09-20 | 2019-03-21 | Fugue, Inc. | System and method for implementing dynamic strategies of computing infrastructure using a domain-specific language for cloud services infrastructure |
CN107741851B (zh) * | 2017-10-12 | 2021-06-25 | 北京元心科技有限公司 | 编译系统的编译方法、装置及终端设备 |
US11140032B2 (en) * | 2018-05-04 | 2021-10-05 | Oracle International Corporation | System and method for building idempotent configuration management modules for a cloud Infrastructure Service |
US10990370B1 (en) | 2018-11-21 | 2021-04-27 | Candid Labs, Inc. | System, apparatus and method for deploying infrastructure to the cloud |
US10872029B1 (en) | 2018-11-21 | 2020-12-22 | Candid Partners, LLC | System, apparatus and method for deploying infrastructure to the cloud |
US10785128B1 (en) | 2018-11-21 | 2020-09-22 | Candid Partners, LLC | System, apparatus and method for deploying infrastructure to the cloud |
US11080029B2 (en) * | 2019-08-28 | 2021-08-03 | Red Hat, Inc. | Configuration management through information and code injection at compile time |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030056192A1 (en) | 2001-05-24 | 2003-03-20 | Burgess Allen G. | Source code analysis system and method |
CN1679034A (zh) * | 2002-04-08 | 2005-10-05 | 托普科德公司 | 用于对软件开发服务征求建议的系统以及方法 |
US20090089078A1 (en) | 2007-09-28 | 2009-04-02 | Great-Circle Technologies, Inc. | Bundling of automated work flow |
US8238256B2 (en) | 2008-09-08 | 2012-08-07 | Nugent Raymond M | System and method for cloud computing |
US8745397B2 (en) * | 2010-01-04 | 2014-06-03 | Microsoft Corporation | Monitoring federation for cloud based services and applications |
CN102375734B (zh) * | 2010-08-23 | 2014-05-07 | 中国移动通信集团公司 | 应用产品开发系统、方法、装置和运行系统、方法、装置 |
WO2012031165A2 (en) * | 2010-09-02 | 2012-03-08 | Zaretsky, Howard | System and method of cost oriented software profiling |
US9720715B2 (en) * | 2010-12-08 | 2017-08-01 | Nuance Communications, Inc. | Extending legacy scripting languages with graphical references |
CN102857535B (zh) * | 2011-07-01 | 2015-09-09 | 云联(北京)信息技术有限公司 | 一种计算机处理单元、计算机网关、交互式系统 |
CN102857533B (zh) * | 2011-07-01 | 2015-11-18 | 云联(北京)信息技术有限公司 | 一种基于云计算的远程交互式系统 |
US9106584B2 (en) | 2011-09-26 | 2015-08-11 | At&T Intellectual Property I, L.P. | Cloud infrastructure services |
CA2889387C (en) * | 2011-11-22 | 2020-03-24 | Solano Labs, Inc. | System of distributed software quality improvement |
US9256413B2 (en) * | 2012-04-17 | 2016-02-09 | Sap Se | Automatic identification of services |
US9256412B2 (en) * | 2012-07-04 | 2016-02-09 | Sap Se | Scheduled and quarantined software deployment based on dependency analysis |
US9117027B2 (en) * | 2012-09-03 | 2015-08-25 | Tata Consultancy Services Limited | Method and system for compliance testing in a cloud storage environment |
US9843624B1 (en) | 2013-06-13 | 2017-12-12 | Pouya Taaghol | Distributed software defined networking |
US9652211B2 (en) | 2014-06-26 | 2017-05-16 | Vmware, Inc. | Policy management of deployment plans |
US9825881B2 (en) * | 2014-09-30 | 2017-11-21 | Sony Interactive Entertainment America Llc | Methods and systems for portably deploying applications on one or more cloud systems |
US20170302531A1 (en) | 2014-09-30 | 2017-10-19 | Hewlett Packard Enterprise Development Lp | Topology based management with compliance policies |
JP2017534996A (ja) | 2014-11-13 | 2017-11-24 | フーガ インコーポレイテッド | クラウドサービスインフラストラクチャのためのドメイン固有言語を提供し実行するシステム及び方法 |
US9800465B2 (en) | 2014-11-14 | 2017-10-24 | International Business Machines Corporation | Application placement through multiple allocation domain agents and flexible cloud scheduler framework |
US10289973B2 (en) | 2015-04-10 | 2019-05-14 | Telefonaktiebolaget Lm Ericsson (Publ) | System and method for analytics-driven SLA management and insight generation in clouds |
US10616370B2 (en) | 2015-08-21 | 2020-04-07 | Hewlett Packard Enterprise Development Lp | Adjusting cloud-based execution environment by neural network |
US9838376B1 (en) | 2016-05-11 | 2017-12-05 | Oracle International Corporation | Microservices based multi-tenant identity and data security management cloud service |
US10261810B2 (en) * | 2017-02-10 | 2019-04-16 | Fugue, Inc. | System and method for providing cloud operating system validations for a domain-specific language for cloud services infrastructure |
-
2015
- 2015-11-13 JP JP2017525815A patent/JP2017534996A/ja active Pending
- 2015-11-13 US US14/941,345 patent/US10310828B2/en active Active
- 2015-11-13 WO PCT/US2015/060728 patent/WO2016077785A1/en active Application Filing
- 2015-11-13 EP EP15858485.4A patent/EP3218819A4/en not_active Withdrawn
- 2015-11-13 KR KR1020177016182A patent/KR20170086560A/ko unknown
- 2015-11-13 AU AU2015346074A patent/AU2015346074A1/en not_active Abandoned
- 2015-11-13 CA CA2967640A patent/CA2967640A1/en not_active Abandoned
- 2015-11-13 CN CN201580070159.3A patent/CN107111606A/zh active Pending
-
2017
- 2017-05-11 IL IL252238A patent/IL252238A0/en unknown
Also Published As
Publication number | Publication date |
---|---|
EP3218819A4 (en) | 2018-07-25 |
US20160139895A1 (en) | 2016-05-19 |
CN107111606A (zh) | 2017-08-29 |
AU2015346074A1 (en) | 2017-06-08 |
EP3218819A1 (en) | 2017-09-20 |
US10310828B2 (en) | 2019-06-04 |
CA2967640A1 (en) | 2016-05-19 |
WO2016077785A1 (en) | 2016-05-19 |
IL252238A0 (en) | 2017-07-31 |
KR20170086560A (ko) | 2017-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10310828B2 (en) | System and method for providing and executing a domain-specific language for cloud services infrastructure | |
CN110383238B (zh) | 用于基于模型的软件分析的系统和方法 | |
US10942922B2 (en) | Generation of data flow from syntax tree | |
US9690822B2 (en) | System and method for metadata level validation of custom setup objects | |
US9465589B2 (en) | Stateful component authoring and execution | |
US7506311B2 (en) | Test tool for application programming interfaces | |
US10261810B2 (en) | System and method for providing cloud operating system validations for a domain-specific language for cloud services infrastructure | |
US8615750B1 (en) | Optimizing application compiling | |
US7426503B2 (en) | System and method for an improved type inference | |
US20190050213A1 (en) | System and method for generating a domain-specific programming language program from a cloud-based computing system | |
US20090177634A1 (en) | Method and System for an Application Domain | |
Sellami et al. | Supporting multi data stores applications in cloud environments | |
US20190052542A1 (en) | System and method for providing visualizations of computing infrastructure using a domain-specific language for cloud services infrastructure | |
US20190272157A1 (en) | System and method for embedding domain-specific language code within a visualization of cloud-based computing infrastructure | |
US20200293541A1 (en) | Methods, systems, and computer readable media for data translation using a representational state transfer (rest) application programming interface (api) | |
US20190050210A1 (en) | System and method for providing cloud operating system verifications for a domain-specific language for cloud services infrastructure | |
US9342555B2 (en) | Reporting tools for object-relational databases | |
US20200192891A1 (en) | Core data service view template | |
US11016830B2 (en) | Entity-based service operation for object-based persistence | |
Dobrzański et al. | An approach to refactoring of executable UML models | |
US20190087165A1 (en) | System and method for implementing dynamic strategies of computing infrastructure using a domain-specific language for cloud services infrastructure | |
TWI707273B (zh) | 使用統一聚合查詢語言獲取資源的方法及系統 | |
US11468101B2 (en) | Context-rich key framework implementations for global concept management | |
US20120078923A1 (en) | Scripting using new ordering algorithm | |
US20100023923A1 (en) | Method for medeling objects in a hetrogenious computing environment |