KR20170086560A - 클라우드 서비스 인프라구조를 위한 도메인-특정 언어를 제공 및 실행하기 위한 시스템 및 방법 - Google Patents

클라우드 서비스 인프라구조를 위한 도메인-특정 언어를 제공 및 실행하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20170086560A
KR20170086560A KR1020177016182A KR20177016182A KR20170086560A KR 20170086560 A KR20170086560 A KR 20170086560A KR 1020177016182 A KR1020177016182 A KR 1020177016182A KR 20177016182 A KR20177016182 A KR 20177016182A KR 20170086560 A KR20170086560 A KR 20170086560A
Authority
KR
South Korea
Prior art keywords
instances
source code
infrastructure
variables
domain
Prior art date
Application number
KR1020177016182A
Other languages
English (en)
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 KR20170086560A publication Critical patent/KR20170086560A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

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

클라우드 서비스 인프라구조를 위한 도메인-특정 언어를 제공 및 실행하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR PROVIDING AND EXECUTING A DOMAIN-SPECIFIC LANGUAGE FOR CLOUD SERVICES INFRASTRUCTURE}
관련 출원들의 상호 참조
본 출원은, 2014년 11월 13일에 출원된 미국 특허 가출원 제 62/079,403호에 대해 우선권을 주장하며, 상기 가특허 출원은 그 전체가 참조로 본원에 통합된다.
본 개시내용의 분야
본 발명은 클라우드 서비스 인프라구조를 위한 도메인-특정 프로그래밍 언어를 제공 및 실행하기 위한 시스템 및 방법에 관한 것이다.
다수의 클라우드 서비스 제공자들은 자신들의 고객을 대신하여 컴퓨팅 인스턴스들을 실행하기 위해 다양한 클라우드 서비스들을 판매한다. 예를 들어, AMAZON은 자신의 AMAZON WEB SERVICES(AWS) 서비스를 판매하고, GOOGLE은 자신의 GOOGLE APP ENGINE 서비스를 판매하고, 다른 기업들은 유사한 서비스들을 판매한다. 유료 교환 시에, AMAZON, GOOGLE 및 다른 클라우드 서비스 제공자들은 제한된 시간 동안 클라우드 서비스 인스턴스의 형태로 고객들에게 자신들의 서버들 및 다른 인프라구조의 사용을 제공한다. 수수료는 클라우드 서비스 인스턴스가 실행될 시간/날짜, 클라우드 서비스 인스턴스의 성능(예를 들어, 처리율, 레이턴시 등), 제공된 클라우드 서비스 인스턴스가 스팟 인스턴스인지 또는 표준 인스턴스인지 여부 및/또는 다른 속성들에 따라 변할 수 있다.
클라우드 서비스들의 사용을 조직의 프로세스들에 통합하는 것은 어려울 수 있다. 종래에, 사용자들은 입력을 클라우드 서비스 커맨드 라인 인터페이스(CLI) 또는 그래픽 사용자 인터페이스(GUI)에 수동으로 입력할 수 있다. 클라우드 인스턴스들을 인스턴스화, 모니터링 및 업데이트하려 시도하는 종래의 프로그래밍 언어들에서 특수화된 프로그램들의 사용을 통해, 클라우드 인프라구조를 생성하는 프로세스를 더 사용자 친화적으로 만드는 것이 달성될 수 있다.
따라서, 하기 개시내용은, 사용자가 클라우드 컴퓨팅 서비스 제공자에 의해 판독가능한 코드로 변환될 수 있는 사용자-친화적인 신택스(syntax)를 사용하여 컴퓨팅 환경을 생성하도록 허용하는 클라우드 서비스 인프라구조에 대한 도메인 특정 언어에 관련된다. 일례에서, 사용자-생성 코드는 컴퓨팅 인프라구조의 선언들을 포함한다. 선언된 인프라구조가 클라우드 서비스 제공자에 존재하는지 여부, 선언된 인프라구조가 클라우드 서비스 제공자에 의해 제공되는 범위 내에 있는지 여부를 결정할 수 있는 상태 정보 서비스에 대해 선언들이 체크될 수 있다.
도 1은 본 발명의 구현에 따라, 클라우드 서비스 인프라구조에 대한 도메인-특정 프로그래밍 언어를 제공 및 실행하는 시스템을 도시한다.
도 2는 본 발명의 구현에 따라, 클라우드 서비스 인프라구조에 대한 도메인-특정 프로그래밍 언어를 제공 및 실행하기 위한 다양한 시스템 컴포넌트들의 프로세스 흐름도를 도시한다.
도 3은 본 개시내용의 예들에 따른 클라우드 서비스 인프라구조에 대한 컴파일된 도메인-특정 프로그래밍 언어의 예시적인 런타임 환경을 예시한다.
도 4는 본 발명의 구현에 따른 클라우드 서비스 인프라구조에 대한 도메인-특정 프로그래밍 언어를 컴파일하는 프로세스를 예시한다.
도 5는 본 개시내용의 예들에 따른 예시적인 설명 프로세스를 예시한다.
도 6은 본 발명의 구현에 따른 클라우드 서비스 인프라구조에 대한 도메인-특정 프로그래밍 언어를 실행하는 프로세스를 예시한다.
도 1은 본 발명의 구현에 따라, 클라우드 서비스 인프라구조에 대한 도메인-특정 프로그래밍 언어(이하, 편의를 위해 "도메인-특정 프로그래밍 언어")를 제공 및 실행하는 시스템(100)을 예시한다. 시스템은 클라우드 서비스 컴퓨팅 인스턴스들과 같은 외부 엔티티들에 대한 참조들을 도메인-특정 프로그래밍 언어에 직접 통합하여 개발자들이 도메인-특정 프로그래밍 언어를 사용하여 직접 클라우드 서비스들을 용이하게 통합하도록 허용한다.
제한이 아닌 예시를 위해, 외부 엔티티들은 본원에 설명된 도메인-특정 프로그래밍 언어 내에서 직접 참조될 수 있는 클라우드 컴퓨팅 인스턴스들(예를 들어, 클라우드 서비스 제공자에 의해 운영되는 컴퓨터에서 실행되는 컴퓨팅 인스턴스들)로서 설명될 것이다. 그러나, (예를 들어, 본원에 설명된 도메인-특정 프로그래밍 언어를 사용하는 코드를 실행하는 컴퓨터 디바이스의 주어진 메모리 외부의) 다른 외부 엔티티들이 또한 사용될 수 있다. 일례로, 외부 엔티티들은 DNS 엔트리들, 2진 오브젝트들, 공유 큐(queue)들, 데이터베이스 테이블들 등을 포함할 수 있다.
시스템은 작성, 구축 및 런타임 시를 포함하여, 언어 자체에서 외부 엔티티의 유형 및 상태에 대한 체크를 용이하게 하기 위해 사용될 수 있다. 또한, 시스템은 에러들 및 버그들을 발견하기 위해 테스트가 수행되도록 요구하는 것과는 반대로, 외부 엔티티들에 대해 프로그램들을 작성하는 동안 컴파일, 유형 체크 및 디버깅을 용이하게 할 수 있다.
인프라구조 또는 다른 외부 엔티티들에 대한 참조인 언어 프리미티브(primitive)들
통상적으로, 프로그래밍 언어에서, 변수는 런타임 시에 메모리의 어드레스로 분해될 수 있다. 예를 들어, my-thing = 123456을 정의하려 한다면, 123456이라는 값을 메모리의 일 위치에 넣을 것이다. 정의 이후, my-thing을 사용하는 임의의 코드는 그 메모리 주소에 대한 참조를 획득하거나 그 값의 카피를 수신할 것이다.
본원에서 설명되는 도메인-특정 프로그래밍 언어를 사용하면, 변수들로서 (메모리에 없는) 외부 엔티티들에 대한 참조들이 사용될 수 있다. 예를 들어, mything = this-instance를 정의함으로써, this-instance는 메모리의 어드레스와는 반대로, 실행중인 가상 컴퓨터의 URL 또는 다른 식별자로 분해될 것이다. 이것은, 작성, 구축 및 런타임 시를 포함하여, 언어 자체에서 외부 엔티티의 유형 및 상태에 대한 체크를 허용한다. 참조는 다른 프로그램, 수동 구성(예를 들어, 컴파일 시간에) 및/또는 다른 프로세스들에 의해 설정될 수 있다. 클라우드 서비스 인프라구조에 대한 참조들인 언어 프리미티브들을 사용함으로써, 시스템은 컴파일 및 디버그 시간에 참조의 정당성을 체크하는 것 및 런타임에 유효한 참조를 갖는 것을 용이하게 한다. 컴퓨팅 인프라구조는 물리적인 현장(on-site) 디바이스들을 사용할 필요 없이 클라우드 서비스에 의해 제공되고 있는 컴퓨팅 시스템 내의 컴포넌트들을 지칭할 수 있다. 예를 들어, 컴퓨팅 인프라구조는 가상 머신들, 로드 밸런서(load balancer)들, 가상 네트워크들, 데이터 저장 서비스들, 도메인 이름 서비스들, 디스크 이미저(imager)들, 컨테이너들, 클러스터들 및 람다 명령어들과 같은 컴퓨팅 디바이스들을 지칭할 수 있다. 이러한 예들은 제한적인 것으로 의도되지 않고, 오직 예들로서 제공된다. 도메인-특정 프로그래밍 언어는 에러들 및 버그들을 발견하기 위해 테스트가 수행되도록 요구하는 것과는 반대로, 외부 엔티티들에 대해 프로그램들을 작성하는 동안 컴파일, 유형 체크 및 디버깅을 추가로 용이하게 한다.
외부 엔티티들의 추상화에 맵핑되는 렉시컬 스코핑(lexical scoping)
통상적인 프로그래밍 언어들에서, 렉시컬 스코핑은, 이름들이 재사용될 수 있도록 코드 조각들을 구성하고 또한 프로그램의 엘리먼트들의 세그먼트화 및 캡슐화를 허용하는 방법이다. 예를 들어, 객체 지향형 언어의 비공개 필드는 정의된 클래스의 인스턴스 외부로부터 그 데이터에 대한 직접적 액세스를 방지한다.
본원에 설명된 도메인-특정 프로그래밍 언어를 사용하면, 렉시컬 스코핑은 언어의 네이티브 부분이 아닌 엔티티들의 집합들에 맵핑될 수 있다. 예를 들어, 위에서 설명된 외부 엔티티 방법, 즉, my-thing = this-instance에 대한 참조를 사용하여 컴퓨팅 인스턴스가 정의될 수 있고, 여기서, 이 인스턴스는 런타임 환경의 실제 엔티티에 대한 포인터이다.
외부 엔티티 렉시컬 스코핑을 사용하면, 시스템은 this-instance를 이 장소의 자(child)로 만들 수 있고, 여기서, 이 장소는 엔티티들의 임의의 집합을 포함할 수 있다. this-instance가 호출 코드의 범위에 대해 공용이 아닌 경우, 컴파일러는 직접 참조할 때 에러를 리턴한다. 이것은, 예를 들어, 변수의 범위가 엔티티들의 특정 세트로 제한된 경우 발생할 수 있다. 외부 엔티티는 단일 클라우드 서비스 제공자 또는 다른 클라우드 서비스 제공자와 연관될 수 있고, 이들의 식별은 주어진 변수 또는 참조와 연관될 수 있다.
언어 런타임 상태 정보를 서비스에 외부화하는 것
이러한 이점 및 다른 이점을 용이하게 하기 위해, 시스템은 프로그램 경계들을 넘어 모든 참조들 및 공유 변수들의 상태 정보를 유지할 수 있다. 시스템은 도메인-특정 프로그래밍 언어의 언어 특징들을 이해하는 상태 정보 서비스를 통해 상태 정보를 액세스가능하게 할 수 있다.
컴파일 시간에, 컴파일된 코드는 변수가 존재하는지 여부 및 존재한다면 참조할 범위 내에 있는지 여부를 결정하기 위해, 언어에서의 사용에 대한 범위에서의 변수를 식별하기 위해 상태 정보 서비스에 문의할 수 있는 (아래에서 상세히 설명되는) 런타임 환경의 해석기 모듈에 의해 프로세싱될 수 있다. 상태 정보 서비스는 또한 이용가능한 기능들 또는 동작들과 같이 엔티티가 어떻게 사용될 수 있는지에 대한 세부사항들을 전달할 수 있다.
상태 정보 서비스는 변수의 상태에 대한 상세화된 버전 정보를 유지할 수 있다. 예를 들어, 사용자 A가 프로그램을 컴파일 및 실행하는 것을 통해 엔티티를 생성하면, 대응하는 변수는 1로 설명된 일련 번호(또는 다른 버전 정보)와 함께 상태 정보 서비스에서 나타날 수 있다. 일부 예들에서, 대응하는 변수는 프로그램의 컴퓨팅 인프라구조의 인스턴스로부터 유도된 고유한 해시일 수 있다. 엔티티의 정상 동작들 동안, 그 상태는 (예를 들어, 다른 인터넷 프로토콜 어드레스로) 변경된다. 변경을 개시하는 제2 프로그램은 테이블을 새로운 IP 어드레스로 업데이트할 수 있고, 일련 번호를 2로 증분시킬 수 있다. 제3 프로그램이 엔티티를 참조하고, 상태의 버전 1 이해를 가지는 경우, 새로운 일련 번호가 2인 것을 확인하고, 최신 버전에 대해 상태 정보 서비스에 문의할 수 있다.
상태 정보는 조직이 이용가능하기를 원하는 모든 엔티티들에 걸쳐 일반적이 되고 스코핑될 수 있다. 이러한 방식으로, 조직의 많은 부분들에 걸친 다수의 사용자들은 다른 팀들의 그들의 동료들의 제품들과 동적으로 상호작용할 수 있다.
시스템(100)의 다른 사용들은 본원에서 설명되고, 또한 다른 것들이 본 기술분야의 통상의 기술자에게 자명할 것이다. 시스템 기능들 일부에 대한 고레벨 개요를 설명하였고, 이제 이러한 기능들 및 다른 기능들을 용이하게 하는 다양한 시스템 컴포넌트들에 주목할 것이다.
상기 인프라구조 프리미티브들 및 이들에 적용된 렉시컬 스코핑(lexical scoping)은 전술한 바와 같이, 이들 기능들에 입력된 특정 아규먼트들에 기초하여 인프라구조의 패턴들을 산출할 수 있는 기능들을 생성하기 위해 사용될 수 있다. 아래에 제공된 코드 예는 열거 유형의 예이다:
Figure pct00001
아래에 제공된 코드 예는 "icmp"의 특성들을 정의할 수 있는 데이터 구조 유형의 예이다. 아래의 예에서, icmp 유형은 특성 값들 "유형" 및 "코드"를 갖고, 이러한 특성들은 정수들로 표현된다.
Figure pct00002
아래의 코드 예는 도메인 특정 언어를 사용하는 예시적인 기능을 예시한다. 아래의 예시적인 코드는 인프라구조 설명을 취하고 icmp(머신 데이터)로 평가한다.
Figure pct00003
상기 기능들은 아래에서 더 상세히 설명되는 설명 기능에 의해 컴파일 시간에 평가될 수 있다.
예시적인 시스템 아키텍쳐
시스템(100)은 컴퓨터 시스템(110), 컴퓨터 시스템(140), 하나 이상의 클라우드 서비스 제공자들(150) 및/또는 다른 컴포넌트들을 포함할 수 있다.
컴퓨터 시스템(110)
컴퓨터 시스템(110)은 하나 이상의 프로세서들(112)(또한 본원에서 편의상 프로세서들(112), 프로세서(들)(112) 또는 프로세서(112)로 상호교환가능하게 지칭됨), 하나 이상의 저장 디바이스들(114)(상태 정보 서비스(120), 이하 편의상 SIS(120)를 저장할 수 있음), 하나 이상의 엔티티 상태 정보 데이터베이스들(130) 및/또는 다른 컴포넌트들을 포함할 수 있다. 프로세서들(112)은 하나 이상의 컴퓨터 프로그램 명령어들에 의해 프로그래밍될 수 있다. 예를 들어, 프로세서들(112)은 SIS(120) 및/또는 다른 명령어들에 의해 프로그래밍될 수 있다.
컴퓨터 시스템(140)
컴퓨터 시스템(들)(140) 각각은 하나 이상의 프로세서들(142)(또한 본원에서 편의상 프로세서들(142), 프로세서(들)(142) 또는 프로세서(142)로 상호교환가능하게 지칭됨), 하나 이상의 저장 디바이스들(144)(컴파일러(150A), 하나 이상의 프로그램들(152) 및/또는 다른 명령어들을 저장할 수 있음) 및/또는 다른 컴포넌트들을 포함할 수 있다. 프로세서들(142)은 하나 이상의 컴퓨터 프로그램 명령어들에 의해 프로그래밍될 수 있다. 예를 들어, 프로세서들(142)은 컴파일러(150), 프로그램들(152) 및/또는 다른 명령어들에 의해 프로그래밍될 수 있다.
클라우드 서비스 제공자들(160)
클라우드 서비스 제공자들(160)은 자신들의 고객을 대신하여 컴퓨팅 인스턴스들을 실행하기 위해 다양한 클라우드 서비스들을 판매하는 엔티티들을 포함할 수 있다. 예를 들어, AMAZON은 자신의 AMAZON WEB SERVICES(AWS) 서비스를 사용하여 클라우드 서비스 인스턴스들을 판매하고, GOOGLE은 자신의 GOOGLE APP ENGINE 서비스를 사용하여 클라우드 서비스 인스턴스들을 판매한다. 다른 예들에서, 클라우드 서비스 제공자들은 또한 컨텐츠 전달 네트워크들, 도메인 이름 서비스 등과 같은 넌-컴퓨팅 서비스들을 제공하는 다른 특수화된 제공자들을 포함할 수 있다.
클라우드 서비스 제공자들(160)은 또한 클라우드 서비스들에 대한 마켓들 또는 교환들을 제공하는 엔티티들을 포함할 수 있다. 예를 들어, 클라우드 서비스 제공자들(160)은 자신들의 인프라구조를 사용하여 클라우드 서비스 인스턴스들을 실제로 제공하는 다른 기업을 대신하여 셀 클라우드 서비스 인스턴스들을 판매하는 마켓들을 포함할 수 있다. 이러한 방식으로, 시스템(100)은 상이한 엔티티들로부터의 다양한 클라우드 서비스 인스턴스들을 판매할 수 있는 교환들을 레버리지할 수 있다.
도 1에는 단일 컴포넌트로서 예시되어 있지만, 컴퓨터 시스템(110) 및 컴퓨터 시스템(140) 각각은 본원에 설명된 기능들 중 적어도 일부로 각각 프로그래밍된 복수의 개별적인 컴포넌트들(예를 들어, 컴퓨터 디바이스들)을 포함할 수 있다. 이러한 방식으로, 컴퓨터 시스템(110) 및/또는 고객 컴퓨터 시스템(140)의 일부 컴포넌트들은 일부 기능들을 수행할 수 있는 한편, 인식될 바와 같이, 다른 컴포넌트들은 다른 기능들을 수행할 수 있다. 하나 이상의 프로세서들(112, 142) 각각은 컴퓨터 프로그램 명령어들에 의해 프로그래밍되는 하나 이상의 물리적 프로세서들을 포함할 수 있다. 본원에 설명되는 다양한 명령어들은 단지 예시적이다. 프로세서(들)(112, 142)가 본원에 설명된 기능들을 수행하도록 프로그래밍되는 한, 명령어들의 다른 구성들 및 개수가 사용될 수 있다.
또한, 도 1에는 다양한 명령어들이 단일 프로세싱 유닛 내에 함께 위치되는 것으로 예시되지만, 프로세서(들)(112, 142)가 다수의 프로세싱 유닛들을 포함하는 구현들에서, 하나 이상의 명령어들은 다른 명령어들로부터 원격으로 실행될 수 있음을 인식해야 한다. 또한, 프로세서(들)(112)에 대해 본원에 설명된 기능들 중 적어도 일부는 프로세서(들)(142)에 의해 수행될 수 있고, 그 반대도 마찬가지이다. 예를 들어, 프로세서(들)(112)는 컴파일러(150), 프로그램들(152)에 의해 프로그래밍될 수 있고 그리고/또는 프로그램들(152)에 대한 런타임 환경을 실행할 수 있다. 마찬가지로, 프로세서(들)(142)는 상태 정보 서비스(120)로 프로그래밍될 수 있다.
본원에 설명된 상이한 명령어들에 의해 제공되는 기능의 설명은 예시의 목적을 위한 것이며, 임의의 명령어들이 설명되는 것보다 많거나 적은 기능을 제공할 수 있기 때문에 제한적인 것으로 의도되지 않는다. 예를 들어, 명령어들 중 하나 이상이 제거될 수 있고, 그 기능의 일부 또는 전부는 명령어들 중 다른 명령어들에 의해 제공될 수 있다. 다른 예로, 프로세서(들)(112)는 본원에서 명령어들 중 하나에 기여한 기능의 일부 또는 전부를 수행할 수 있는 하나 이상의 추가적인 명령어들에 의해 프로그래밍될 수 있다.
본원에 설명된 다양한 명령어들은 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM) 및/또는 다른 메모리를 포함할 수 있는 저장 디바이스(114)에 저장될 수 있다. 저장 디바이스는 프로세서(112)에 의해 조작될 수 있는 데이터 뿐만 아니라 프로세서(112)에 의해 실행될 컴퓨터 프로그램 명령어들(예를 들어, 전술된 명령어들)을 저장할 수 있다. 저장 디바이스는 플로피 디스크들, 하드 디스크들, 광 디스크들, 테이프들, 또는 컴퓨터 실행가능 명령어들 및/또는 데이터를 저장하기 위한 다른 저장 매체를 포함할 수 있다.
도 1에 예시된 다양한 컴포넌트들은 예를 들어 인터넷, 인트라넷, PAN(Personal Area Network), LAN(Local Area Network), WAN(Wide Area Network), SAN(Storage Area Network), MAN(Metropolitan Area Network), 무선 네트워크, 셀룰러 통신 네트워크, 공중 교환 전화 네트워크 및/또는 다른 네트워크 중 임의의 하나 이상을 포함할 수 있는 네트워크(102)를 통해 적어도 하나의 다른 컴포넌트에 커플링될 수 있다. 도 1 및 다른 도면들에서, 도시된 것과 상이한 수의 엔티티들이 사용될 수 있다. 또한, 다양한 구현들에 따르면, 본원에 설명된 컴포넌트들은 하드웨어 및/또는 하드웨어를 구성하는 소프트웨어로 구현될 수 있다.
본원에 설명된 엔티티 상태 정보 데이터베이스(130)및/또는 임의의 다른 데이터베이스)는 예를 들어, Oracle Corporation에 의해 상업적으로 판매되는 Oracle™ 관계형 데이터베이스일 수 있거나, 이를 포함하거나, 이와 인터페이스할 수 있다. 상기 제공된 예시적인 데이터베이스는 제한적인 것으로 의도되지 않으며, 엔티티 상태 정보 데이터베이스(130)는 다른 데이터베이스들, 예를 들어, Informix™, DB2(데이터베이스 2), Amazon DynamoDB™을 포함하거나 이와 인터페이스될 수 있거나, 또는 파일-기반 또는 문의 포맷들, 플랫폼들 또는 리소스들, 예를 들어, OLAP(On Line Analytical Processing), SQL(Structured Query Language), SAN(storage area network), Microsoft Access™ 또는 다른 것들을 포함하는 다른 데이터 저장소가 또한 사용되거나, 통합되거나 액세스될 수 있다. 데이터베이스는 하나 이상의 물리적 디바이스들 및 하나 이상의 물리적 위치들에 상주하는 하나 이상의 이러한 데이터베이스들을 포함할 수 있다. 데이터베이스는 복수의 유형의 데이터 및/또는 파일들 및 연관된 데이터 또는 파일 설명들, 관리 정보 또는 임의의 다른 데이터를 저장할 수 있다.
예시적인 시스템 프로세싱 동작들
도 2는 본 발명의 구현에 따라, 클라우드 서비스 인프라구조에 대한 도메인-특정 프로그래밍 언어를 제공 및 실행하기 위한 다양한 시스템 컴포넌트들의 프로세스 흐름도(200)를 도시한다. 도 2에 도시된 다양한 프로세싱 동작들 및/또는 데이터 흐름들은 본원에서 더 상세히 설명된다. 설명된 동작들은 앞서 상세히 설명된 시스템 컴포넌트들의 일부 또는 전부를 사용하여 달성될 수 있고, 일부 구현들에서는 다양한 동작들이 상이한 순서로 수행될 수 있고 다양한 동작들이 생략될 수 있다. 추가적인 동작들은 도시된 흐름도들에 도시된 동작들의 일부 또는 전부와 함께 수행될 수 있다. 하나 이상의 동작들이 동시에 수행될 수 있다. 따라서, 예시된(및 아래에서 더 상세하게 설명되는) 동작들은 본질적으로 예시적인 것이며, 따라서 제한적으로 간주되어서는 안 된다.
동작(202)에서, 클라우드 서비스 인프라구조에 대한 도메인-특정 프로그래밍 언어의 소스 코드가 수신될 수 있다. 예를 들어, 개발자는 컴파일러(150)에 의해 수신 및 컴파일되도록 소스 코드를 드래프트(draft)할 수 있다.
컴파일러(150)에 의해 생성된 컴파일된 코드는 런타임 환경(20)으로 전송될 수 있고, 여기서 설명 동작이 개시될 수 있고(아래에서 추가로 설명됨), 변수가 존재하는지 여부 및 존재한다면 변수가 참조에 대한 범위 내에 있는지 여부를 결정하기 위해, 소스 코드에서의 사용에 대한 범위에서의 변수를 식별하기 위한 문의가 SIS(120)에 전송될 수 있다.
동작(206)에서, SIS(120)는 엔티티 상태 정보 데이터베이스(130)에 문의하여 변수 및/또는 참조에 대한 상태 정보를 획득할 수 있다.
SIS(120)는 임의의 관련 상태 정보(변수의 존재, 그것의 범위, 클라우드 서비스 제공자(150)에 의해 제공되는 컴퓨팅 인스턴스와 같은 외부 엔티티에 대한 참조, 엔티티의 이용가능한 기능들과 같은 엔티티가 사용될 수 있는 방법 등)를 획득하여 런타임 환경의 다른 컴포넌트들에 제공할 수 있다(또는 변수가 존재하지 않는다는 NULL 또는 다른 표시를 리턴할 수 있다).
동작(210)에서, 컴파일러(150)는, 변수가 존재하고 상태 정보에 기초한 범위 내에 있다면, 실행가능한 프로그램(이하 편의상 프로그램(152A)으로 지칭됨)을 생성할 수 있다. 프로그램(152A)은 컴파일러(150)에 의해 컴파일된 다른 프로그램들(152B, ..., N)과 함께 런타임 환경(20)에서 실행되도록 배치될 수 있다. 런타임 환경은 도 3에 대해 아래에서 상세히 논의된다.
동작(212)에서, 런타임 환경(20)은 프로그램(152B)을 실행할 수 있다. 예를 들어, 프로그램(152B)은 인간 사용자, 프로세스 및/또는 다른 사용자에 의해 런타임 환경(20)에서 실행되도록 호출될 수 있다. 런타임 환경(20)은, 변수가 존재하는지 여부 및 존재한다면 변수가 참조에 대한 범위 내에 있는지 여부를 결정하기 위해, SIS(120)에 문의하여 프로그램(152B)에서 사용에 대한 범위에서 변수를 식별할 수 있다. 예를 들어, 런타임 환경(20)은 문의를 네트워크(102)를 통해 SIS(120)에 송신할 수 있다.
동작(214)에서, SIS(120)는 동작(206)에 대해 설명된 바와 같이 엔티티 상태 정보 데이터베이스(130)에 문의할 수 있다.
동작(216)에서, SIS(120)는 동작(208)에 대해 이전에 설명된 바와 같이 임의의 관련 상태 정보를 획득하여 런타임 환경(20)에 제공할 수 있다. 런타임 환경은, 주어진 변수가 호출한 컴파일된 코드(프로그램(152B))에 대한 범위 내에 존재하지 않으면 에러(예를 들어, 런타임 오류)를 발생시킬 수 있다. 그렇지 않으면, 런타임 환경(20)은 실행 시에 프로그램(152B)에서 주어진 변수의 현재 상태를 획득할 수 있어서, 참조된 엔티티(예를 들어, 클라우드 서비스 제공자(160)에서 실행되는 컴퓨팅 인스턴스)와 관련된 임의의 상태 변경들은 프로그램(152B)의 실행 동안 처리될 수 있다.
런타임 환경(20)에서 프로그램의 예시적인 동작에서, 사용자는 엔티티를 참조하고 그 엔티티가 생성되게 하는 변수를 포함할 수 있는 프로그램(152A)을 컴파일 및 실행할 수 있다. 예를 들어, 생성된 엔티티는 제한없이, 클라우드 서비스 제공자(160)에서 컴퓨팅 인스턴스를 포함할 수 있다. 즉, 본원에 설명된 도메인-특정 언어를 사용하여, 변수의 인스턴스화가 대응하는 컴퓨팅 인스턴스를 참조할 수 있고 생성되게 할 수 있다. 구현에서, 프로그램(152A)에 대한 소스 코드는 변수가 참조되는 클라우드 인스턴스를 특정/정의할 수 있거나, 또는 클라우드 인스턴스가 구성가능한 파라미터 설정에 의해 정의될 수 있다. 컴파일 시에, SIS(120)는 엔티티 상태 정보 데이터베이스(130)를 사용하여 변수, 이의 참조, 이의 상태, 컴퓨팅 인스턴스가 어떻게 사용될 수 있는지 및/또는 다른 상태 정보를 저장할 수 있다.
프로그램(152B)은 또한 변수를 포함할 수 있다. 프로그램(152B)이 컴파일될 때, 변수가 프로그램(152B)에 대한 범위 내에 있는지 여부를 결정하기 위해 SIS(120)에 문의할 수 있는 런타임 환경(아래에서 더 상세히 설명됨)에서 설명 동작이 실행될 수 있다. 마찬가지로, 프로그램(152B)이 실행될 때, 런타임 환경(20)은, 변수가 범위 내에 있는지 여부를 결정할 뿐만 아니라 변수와 관련된 현재 상태 정보를 획득하기 위해 SIS(120)에 문의할 수 있다.
일부 인스턴스들에서, 프로그램(152B)은 변수가 업데이트되게 할 수 있다. 예를 들어, 프로그램(152B)은 대체 컴퓨팅 인스턴스가 클라우드 서비스 제공자(160)에서 기존의 컴퓨팅 인스턴스를 대체하게 하여, 어드레스가능한 식별자(예를 들어, 인터넷 프로토콜 어드레스)가 대체 컴퓨터 인스턴스를 참조하도록 변경되게 할 수 있다. 그러한 변경에 대한 응답으로, 런타임 환경(20)은 SIS(120)에 업데이트를 제공할 수 있고, 이는 변수에 대한 업데이트된 정보로 엔티티 상태 정보 데이터베이스(130)를 업데이트할 수 있다. 또 다른 예에서, 외부 액터(예를 들어, 클라우드 컴퓨팅 환경 인터페이스를 수동으로 조작하는 사용자) 에 의해 개시된 컴퓨팅 인프라구조(즉, 변수들)의 인스턴스들에 대한 변경들은 이의 원래의 형태로 다시 복귀될 수 있고, 변경된 형태는 도메인-특정 프로그래밍 언어를 통해 사용자에 의해 특정된 컴퓨팅 인스턴스의 원래의 인스턴스에 따르지 않음이 발견되었다.
프로그램(152N)은 또한 변수를 포함할 수 있다. 프로그램(152N)으로부터의 변수들은 앞서 설명된 바와 같이 컴파일 및 런타임 시에 유효화될 수 있다. 프로그램(152N)은 실행될 때, 변수와 관련된 현재 상태 정보를 획득할 수 있다. 예를 들어, (컴퓨팅 인스턴스가 생성되게 할 수 있는) 프로그램(152A)에 의해 생성된 컴퓨팅 인스턴스에 대한 참조 대신에, 프로그램(152N)에 포함된 변수는 프로그램(152B)에 의해 업데이트되는 바와 같이 현재 컴퓨팅 인스턴스를 참조할 수 있다. 이러한 방식으로, 상이한 프로그램들이 동일한 변수를 업데이트할 수 있고, 이는 그러한 변수들에 대한 참조들이 또한 업데이트되게 할 수 있다. 따라서 본원에 설명된 도메인-특정 언어를 사용하면, 상이한 개발자들이 코드의 언어 내에서 다른 엔티티들(예를 들어, 클라우드 서비스 제공자들의 컴퓨팅 인스턴스들(160))을 본질적으로 참조할 수 있다.
도 3은 본 개시내용의 예들에 따른 클라우드 서비스 인프라구조에 대한 컴파일된 도메인-특정 프로그래밍 언어의 예시적인 런타임 환경을 예시한다. 도 3에 예시된 바와 같이, 고객/클라이언트 컴퓨터(300)에서, 사용자는 클라우드-기반 컴퓨팅 서비스 상에서 구현할 컴퓨팅 인프라구조를 특정하는 도메인-특정 프로그래밍 언어를 사용하여 컴퓨터 코드를 구성할 수 있다.
사용자가 코드를 생성하면, 코드는 단계(304)에서 컴파일되고, 여기서, 코드는 사용자에 의해 생성된 사용자 친화적인 신택스로부터, 인프라구조 운영 시스템의 커맨드 라인 인터페이스에 의해 이해될 수 있는 중간적 표현으로 변환된다(단계(306)에 예시됨). 단계(308)에서, 인프라구조 운영 시스템은 코드가 선언한 것을 구축 및 추적함으로써 컴파일된 코드(306)를 실행할 수 있다.
그 다음, 코드는, 커맨드 라인 인터페이스 언어(즉, 중간적 표현(306))를, 인프라구조 운영 시스템에 의해 실행될 수 있는 일련의 특정 명령어들로 변환하는 해석기 및 플래너 모듈(310)에 전송될 수 있다. 일례에서, 해석기 관리자는 명령어들을 구축하기 위해 하나 이상의 계획 모듈들을 사용할 수 있다. 해석기 관리자는, 일부 예들에서, 입력에서 리소스 테이블들을 수용하고, 사용자에 의해 제공된 신택스의 임의의 누락들이 채워지는 리소스 테이블들을 생성하는 일련의 계획 모듈들을 이용함으로써, 이를 달성할 수 있다. 일례에서, 계획 모듈들은 구축할 컴퓨팅 인프라구조의 특성들을 특정하는 리소스 테이블을 수신할 수 있다. 해석기 관리자는 사용자에 의해 (컴파일된 도메인-특정 코드 형태로) 전송된 리소스 테이블을 검토할 수 있고, 사용자에 의해 어떤 인프라구조 요구들이 선언되었는지에 기초하여 이를 일련의 계획 모듈들에 전송할 수 있다.
계획 모듈들은 사용자의 리소스 테이블을 변경하고, 이를 해석기 관리자에 리턴한다. 이러한 프로세스는 리소스 테이블의 최종적인 정확한 버전이 단계(312)에서 완료될 때까지 다른 계획 모듈들에 의해 반복될 수 있다. 그 다음, 해석기 관리자는 리소스 테이블을 클라우드 상에서 구축될 컴퓨터 인프라구조의 저레벨 선언으로 지칭될 수 있는 머신 명령어 파일로 변환한다. 그 다음, 저레벨 선언은 구축기/드라이버(314)로 전송되고, 여기서 리소스 테이블은, 클라우드 제공자(316)의 애플리케이션 프로그램 인터페이스와 인터페이스될 수 있는 언어로 변환된다.
이 동작의 일부로서, 해석기 및 플래너 모듈들(310)은 도메인-특정 컴퓨팅 언어로 사용자에 의해 생성된, 이러한 선언된 인스턴스들의 범위 뿐만 아니라 컴퓨팅 인프라구조의 사용자 선언 인스턴스들을 입력할 수 있다. 해석기는, 사용자에 의해 선언된 컴퓨팅 인스턴스의 유형이 존재하는지 여부를 결정하기 위해 외부 상태 정보 서비스 데이터베이스(앞서 논의됨)에 문의할 수 있고, 존재한다면, 상태 정보 서비스는 임의의 관련 상태 정보를 해석기에 제공할 수 있다.
컴퓨팅 인프라구조가 클라우드 컴퓨팅 환경 상에서 구축되면, 구현된 인프라구조는 "지속"될 수 있는데, 이는, 구현된 인프라구조가 도메인-특정 프로그래밍 언어로 표현된 바와 같이 컴퓨팅 인프라구조의 사용자가 원래 선언한 인스턴스에 대해 비교될 수 있음을 의미한다. 임의의 차이들이 발견되면, 클라우드 상의 인프라구조의 구현이 사용자의 원하는 인프라구조에 매칭하도록 컴퓨팅 인프라구조의 구현은 해석기(310)에 의해 수정될 수 있다.
도 4는 본 발명의 구현에 따른 클라우드 서비스 인프라구조에 대한 도메인-특정 프로그래밍 언어를 컴파일하는 프로세스(400)를 예시한다. 도 4에 도시된 다양한 프로세싱 동작들 및/또는 데이터 흐름들은 본원에서 더 상세히 설명된다. 설명된 동작들은 앞서 상세히 설명된 시스템 컴포넌트들의 일부 또는 전부를 사용하여 달성될 수 있고, 일부 구현들에서는 다양한 동작들이 상이한 순서로 수행될 수 있고 다양한 동작들이 생략될 수 있다. 추가적인 동작들은 도시된 흐름도들에 도시된 동작들의 일부 또는 전부와 함께 수행될 수 있다. 하나 이상의 동작들이 동시에 수행될 수 있다. 따라서, 예시된(및 아래에서 더 상세하게 설명되는) 동작들은 본질적으로 예시적인 것이며, 따라서 제한적으로 간주되어서는 안 된다.
동작(402)에서, 도메인-특정 프로그래밍 언어의 소스 코드가 획득될 수 있다.
동작(404)에서, 변수가 존재하는지 여부 및 존재한다면 참조할 범위 내에 있는지 여부를 결정하기 위해, 언어에서의 사용에 대한 범위에서의 변수를 식별하기 위해 상태 정보 서비스에 문의될 수 있다. 동작(404)은 필요에 따라, 소스 코드에 나타난 변수들에 대해 반복될 수 있다. 앞서 논의된 바와 같이, 상태 정보 서비스는, 변수가 존재하는지 여부 및 존재한다면 사용자 생성 코드에서 참조되는 범위 내에 있는지 여부를 결정하기 위해, 런타임 환경에 위치된 해석기가 상태 정보 서비스에 문의할 수 있는 설명 동작(아래에서 상세히 설명됨) 동안 문의될 수 있다.
동작(406)에서, 상태 정보는 문의에 기초하여 획득될 수 있다.
동작(408)에서, 변수가 존재하는지 및/또는 범위 내에 있는지 여부의 결정이 결정될 수 있다.
동작(410)에서, 변수가 존재하고 범위 내에 있다는 결정에 대한 응답으로, 소스 코드는 클라우드 서비스 상에서의 구현을 위해 런타임 환경에 송신될 수 있다.
동작(412)에서, 변수가 존재하지 않거나 범위 내에 있지 않다는 결정에 대한 응답으로, 컴파일 에러가 발생할 수 있고 통신될 수 있다.
도 5는 본 개시내용의 예들에 따른 예시적인 설명 프로세스를 예시한다. 도 5에 예시된 설명 동작에서, 단계들(502, 504, 506, 508 및 510)은 도 3의 이들의 대응부들(즉, 각각 단계들(302, 304, 306, 308 및 310))과 실질적으로 동일한 방식으로 동작한다. 그러나, 도 3에 예시된 프로세스와 반대로, 해석기에 의해 생성된 리소스 테이블을 머신 명령어 파일로 변환하기 보다는, 그 대신, 단계 512에서, 프로세스는 주석된 리소스 테이블을 인프라구조 운영 시스템 CLI(508)로 리턴한다.
앞서 논의된 바와 같이, 이 동작의 일부로, 해석기는 컴퓨팅 인프라구조의 사용자 선언 인스턴스들을 입력할 수 있고, 이들이 존재하는지 여부를 결정하기 위해 상태 정보 서비스 데이터베이스에 문의할 수 있다. 컴퓨팅 인프라구조의 인스턴스가 존재하지 않는다고 결정되면, 상태 정보 서비스는, 선언된 인스턴스가 존재하지 않음을 해석기에 표시할 수 있고, 사용은 단계(512)에서 통지될 수 있다.
그러나, 선언된 모든 변수들이 존재하는 경우, 단계(514)에서 인프라구조가 어떻게 구현될지에 대한 계획이 사용자에게 제시될 수 있다. 단계(514)에서, 사용자는 수신된 구현 계획이 수용가능한지 여부를 결정할 수 있고, 수용가능하면, 프로세스는 단계(516)로 이동할 수 있고, 여기서, 단계(512)에서 생성된 주석된 코드가 클라우드 컴퓨팅 서비스 제공자의 커맨드 라인 인터페이스와 호환가능한 머신 코드로 변환된다.
도 6은 본 발명의 구현에 따른 클라우드 서비스 인프라구조에 대한 도메인-특정 프로그래밍 언어를 실행하는 프로세스(600)를 예시한다. 도 6에 도시된 다양한 프로세싱 동작들 및/또는 데이터 흐름들은 본원에서 더 상세히 설명된다. 설명된 동작들은 앞서 상세히 설명된 시스템 컴포넌트들의 일부 또는 전부를 사용하여 달성될 수 있고, 일부 구현들에서는 다양한 동작들이 상이한 순서로 수행될 수 있고 다양한 동작들이 생략될 수 있다. 추가적인 동작들은 도시된 흐름도들에 도시된 동작들의 일부 또는 전부와 함께 수행될 수 있다. 하나 이상의 동작들이 동시에 수행될 수 있다. 따라서, 예시된(및 아래에서 더 상세하게 설명되는) 동작들은 본질적으로 예시적인 것이며, 따라서 제한적으로 간주되어서는 안 된다.
동작(602)에서, 도메인-특정 프로그래밍 언어를 사용하여 소스 코드로부터 컴파일된 프로그램을 실행하기 위한 커맨드가 수신될 수 있다.
동작(604)에서, 변수가 존재하는지 여부 및 존재한다면 참조할 범위 내에 있는지 여부를 결정하기 위해, 언어에서의 사용에 대한 범위에서의 변수를 식별하기 위해 상태 정보 서비스에 문의될 수 있다. 동작(604)은 필요에 따라, 소스 코드에 나타난 변수들에 대해 반복될 수 있다.
동작(606)에서, 상태 정보는 문의에 기초하여 획득될 수 있다.
동작(608)에서, 변수가 존재하는지 및/또는 범위 내에 있는지 여부의 결정이 결정될 수 있다.
동작(610)에서, 변수가 존재하지 않거나 범위 내에 있지 않다는 결정에 대한 응답으로, 런타임 에러가 발생할 수 있고 통신될 수 있다.
동작(612)에서, 변수가 존재하고 범위 내에 있다는 결정에 대한 응답으로, 프로그램이 실행될 수 있다. 동작(612)은 모든 변수들이 프로세싱될 때까지 반복될 수 있다. 일부 구현들에서, 코드의 실행은 클라우드 서비스 제공자에서의 컴퓨팅 인스턴스가 인스턴스화되게 할 수 있다. 이러한 구현들에서, 상태 정보(예를 들어, IP 어드레스, 버전, 어떻게 사용되는지 등)가 상태 정보 서비스를 통해 저장될 수 있다. 이러한 방식으로, 동일한 변수를 사용하는 다른 프로그램들이 인스턴스화된 컴퓨팅 인스턴스에 대한 상태 정보에 액세스할 수 있다.
동작(614)에서, 프로그램의 실행 동안 변수와 연관된 엔티티의 상태 정보에 대한 업데이트가 발생했는지 여부에 대한 결정이 행해 수 있다. 예를 들어, 컴퓨팅 인스턴스에 대응하는 변수를 사용하는 프로그램은 컴퓨팅 인스턴스와 연관된 IP 어드레스를 변경했을 수 있다. 동작(614)은 모든 변수들이 프로세싱될 때까지 반복될 수 있다.
업데이트가 발생했다는 결정에 대한 응답으로, 동작(416) 에서, 상태 정보는 상태 정보 서비스를 통해 업데이트될 수 있다.
동작(618)에서, 코드 실행은 정상적으로(예를 들어, 에러 조건들 없이) 종료될 수 있다.
상기 설명은 설명의 목적을 위해 특정 실시예들을 참조하여 설명되었다. 그러나, 상기 예시적인 논의들은, 포괄적인 것으로, 또는 본 발명을 개시된 바로 그 형태들로 제한하는 것으로 의도되지 않는다. 상기 교시들의 관점에서 많은 변형들 및 변화들이 가능하다. 실시예들은 기술들의 원리들 및 이들의 실용적 애플리케이션들을 가장 잘 설명하기 위해 선택되고 서술되었다. 본 기술분야의 통상의 기술자는 이에 따라, 숙고된 특정 용도에 적합한 다양한 수정들에 의해 기술들 및 다양한 실시예들을 가장 잘 활용하는 것이 가능하다.
따라서, 상기 내용에 따라, 본 개시내용의 일부 예들은, 클라우드 컴퓨팅 시스템 상에서 인프라구조를 구축하기 위한 방법에 관한 것이고, 방법은, 도메인-특정 프로그래밍 언어로 사용자에 의해 작성된 소스 코드를 수신하는 단계 -소스 코드는 클라우드 컴퓨팅 환경에서 구축될 컴퓨팅 인프라구조의 하나 이상의 인스턴스들을 정의하는 하나 이상의 변수들을 포함함-, 컴퓨팅 인프라구조의 하나 이상의 인스턴스들이 상태 정보 서비스에 존재하는지 여부를 식별하고, 하나 이상의 변수들이 컴퓨팅 인프라구조의 식별된 하나 이상의 인스턴스들의 범위 내에 있는지 여부를 식별하기 위해, 상태 정보 서비스에 문의하는 단계, 및 컴퓨팅 인프라구조의 하나 이상의 인스턴스들이 존재하는 것으로 발견되고, 컴퓨팅 인프라구조의 식별된 하나 이상의 인스턴스들의 범위 내에 있으면, 수신된 소스 코드를 클라우드 컴퓨팅 환경의 커맨드 라인 인터페이스에 의해 판독가능한 하나 이상의 명령어들로 변환하는 단계를 포함한다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 일부 예들에서, 도메인-특정 프로그래밍 언어로 작성된 소스 코드를 수신하는 단계는 소스 코드를, 클라우드 인프라구조 운영 시스템의 커맨드 라인 인터페이스와 호환가능한 중간적 표현으로 변환하는 단계를 포함한다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 일부 예들에서, 방법은 하나 이상의 변수들의 각각의 변수가 상태 정보 서비스에 존재하고, 컴퓨팅 인프라구조의 식별된 하나 이상의 인스턴스들의 범위 내에 있는 것으로 발견되면, 구현 계획을 생성하는 단계를 더 포함한다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 일부 예들에서, 방법은 생성된 구현 계획을 승인을 위해 사용자에게 송신하는 단계를 더 포함한다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 일부 예들에서, 방법은 사용자가 생성된 구현 계획을 승인하면, 도메인-특정 프로그래밍 언어로 사용자에 의해 작성된 소스 코드를 클라우드 컴퓨팅 환경 상에서 구현하는 단계를 더 포함한다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 일부 예들에서, 소스 코드를 구현하는 단계는, 소스 코드를 클라우드 인프라구조 운영 시스템의 커맨드 라인 인터페이스와 호환가능한 중간적 표현으로 변환하는 단계를 포함한다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 일부 예들에서, 소스 코드를 구현하는 단계는, 컴퓨팅 인프라구조의 구현된 하나 이상의 인스턴스들이 소스 코드에 대응하도록, 클라우드 컴퓨팅 환경의 커맨드 라인 인터페이스에 의해 판독가능한 하나 이상의 명령어들을 수정하는 단계를 포함한다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 일부 예들에서, 소스 코드는, 클라우드 컴퓨팅 환경 상에서 구축될 컴퓨팅 인프라구조의 하나 이상의 인스턴스들과 연관된 하나 이상의 변수들을 활용하는 하나 이상의 기능들을 포함한다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 일부 예들에서, 하나 이상의 변수들은 클라우드 컴퓨팅 환경 상에서 구축될 컴퓨팅 인프라구조의 사용자 정의된 인스턴스들을 포함한다.
본 개시내용의 일부 예들은 클라우드 컴퓨팅 시스템 상에서 인프라구조를 구축하기 위한 방법에 관한 것이고, 방법은, 도메인-특정 프로그래밍 언어로 사용자에 의해 작성된 소스 코드를 수신하는 단계 -소스 코드는 클라우드 컴퓨팅 환경 상에서 구축될 컴퓨팅 인프라구조의 하나 이상의 인스턴스들을 정의하는 하나 이상의 변수들을 포함함-; 컴퓨팅 인프라구조의 하나 이상의 인스턴스들이 상태 정보 서비스에 존재하는지 여부를 식별하고, 하나 이상의 변수들이 컴퓨팅 인프라구조의 식별된 하나 이상의 인스턴스들의 범위 내에 있는지 여부를 식별하기 위해, 상태 정보 서비스에 문의하는 단계, 및 하나 이상의 변수들 중 임의의 변수가 상태 정보 서비스에 존재하지 않으면, 또는 하나 이상의 변수들 중 임의의 변수가 컴퓨팅 인프라구조의 식별된 하나 이상의 인스턴스들의 범위 내에 없는 것으로 발견되면, 사용자에게 통지하는 단계를 포함한다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 일부 예들에서, 도메인-특정 프로그래밍 언어로 작성된 소스 코드를 수신하는 단계는 소스 코드를, 클라우드 인프라구조 운영 시스템의 커맨드 라인 인터페이스와 호환가능한 중간적 표현으로 변환하는 단계를 포함한다.
본 개시내용의 일부 예들은 하나 이상의 프로그램들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체에 관한 것이고, 하나 이상의 프로그램들은 클라우드 컴퓨팅 시스템 상에서 인프라구조를 구축하는 명령어들을 포함하고, 명령어들은 휴대용 전자 디바이스에 의해 실행될 때 디바이스로 하여금, 도메인-특정 프로그래밍 언어로 사용자에 의해 작성된 소스 코드를 수신하게 하고 -소스 코드는 클라우드 컴퓨팅 환경에서 구축될 컴퓨팅 인프라구조의 하나 이상의 인스턴스들을 정의하는 하나 이상의 변수들을 포함함-, 컴퓨팅 인프라구조의 하나 이상의 인스턴스들이 상태 정보 서비스에 존재하는지 여부를 식별하고, 하나 이상의 변수들이 컴퓨팅 인프라구조의 식별된 하나 이상의 인스턴스들의 범위 내에 있는지 여부를 식별하기 위해, 상태 정보 서비스에 문의하게 하고, 컴퓨팅 인프라구조의 하나 이상의 인스턴스들이 존재하는 것으로 발견되고, 컴퓨팅 인프라구조의 식별된 하나 이상의 인스턴스들의 범위 내에 있으면, 수신된 소스 코드를 클라우드 컴퓨팅 환경의 커맨드 라인 인터페이스에 의해 판독가능한 하나 이상의 명령어들로 변환하게 한다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 도메인-특정 프로그래밍 언어로 작성된 소스 코드를 수신하는 것은 소스 코드를, 클라우드 인프라구조 운영 시스템의 커맨드 라인 인터페이스와 호환가능한 중간적 표현으로 변환하는 것을 포함한다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 프로세서는 추가로, 하나 이상의 변수들의 각각의 변수가 상태 정보 서비스에 존재하고, 컴퓨팅 인프라구조의 상기 식별된 하나 이상의 인스턴스들의 범위 내에 있는 것으로 발견되면, 구현 계획을 생성하게 된다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 프로세서는 추가로, 생성된 구현 계획을 승인을 위해 사용자에게 송신하게 된다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 프로세서는 추가로, 사용자가 생성된 구현 계획을 승인하면, 도메인-특정 프로그래밍 언어로 사용자에 의해 작성된 소스 코드를 클라우드 컴퓨팅 환경 상에서 구현하게 된다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 소스 코드를 구현하는 것은, 소스 코드를 클라우드 인프라구조 운영 시스템의 커맨드 라인 인터페이스와 호환가능한 중간적 표현으로 변환하는 것을 포함한다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 소스 코드를 구현하는 것은, 컴퓨팅 인프라구조의 구현된 하나 이상의 인스턴스들이 소스 코드에 대응하도록, 클라우드 컴퓨팅 환경의 커맨드 라인 인터페이스에 의해 판독가능한 하나 이상의 명령어들을 수정하는 것을 포함한다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 소스 코드는, 클라우드 컴퓨팅 환경 상에서 구축될 컴퓨팅 인프라구조의 하나 이상의 인스턴스들과 연관된 하나 이상의 변수들을 활용하는 하나 이상의 기능들을 포함한다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 하나 이상의 변수들은 클라우드 컴퓨팅 환경 상에서 구축될 컴퓨팅 인프라구조의 사용자 정의된 인스턴스들을 포함한다.
본 개시내용의 일부 예들은 명령어들의 세트가 저장된 비일시적 컴퓨터 판독가능 저장 매체에 관한 것이고, 명령어들은 컴퓨팅 디바이스에 의해 실행될 때, 컴퓨팅 디바이스로 하여금, 도메인-특정 프로그래밍 언어로 사용자에 의해 작성된 소스 코드를 수신하게 하고 -소스 코드는 클라우드 컴퓨팅 환경 상에서 구축될 컴퓨팅 인프라구조의 하나 이상의 인스턴스들을 정의하는 하나 이상의 변수들을 포함함-; 컴퓨팅 인프라구조의 하나 이상의 인스턴스들이 상태 정보 서비스에 존재하는지 여부를 식별하고, 하나 이상의 변수들이 컴퓨팅 인프라구조의 식별된 하나 이상의 인스턴스들의 범위 내에 있는지 여부를 식별하기 위해, 상태 정보 서비스에 문의하게 하고, 하나 이상의 변수들 중 임의의 변수가 상태 정보 서비스에 존재하지 않으면, 또는 하나 이상의 변수들 중 임의의 변수가 컴퓨팅 인프라구조의 식별된 하나 이상의 인스턴스들의 범위 내에 없는 것으로 발견되면, 사용자에게 통지하게 한다. 앞서 개시된 예들 중 하나 이상에 대해 추가적으로 또는 대안적으로, 도메인-특정 프로그래밍 언어로 작성된 소스 코드를 수신하는 것은 소스 코드를, 클라우드 인프라구조 운영 시스템의 커맨드 라인 인터페이스와 호환가능한 중간적 표현으로 변환하는 것을 포함한다.
본 개시내용 및 예들이 첨부된 도면들을 참조하여 완전히 설명되었지만, 다양한 변경들 및 수정들은 본 기술분야의 통상의 기술자들에게 자명할 것임을 주목해야 한다. 이러한 변경들 및 수정들은 본 개시내용의 범위 및 청구항들에 의해 정의되는 예들 내에 속하는 것으로 이해되어야 한다.

Claims (22)

  1. 클라우드 컴퓨팅 시스템 상에서 인프라구조를 구축하기 위한 방법으로서,
    도메인-특정 프로그래밍 언어로 사용자에 의해 작성된 소스 코드를 수신하는 단계 -상기 소스 코드는 클라우드 컴퓨팅 환경에서 구축될 컴퓨팅 인프라구조의 하나 이상의 인스턴스들을 정의하는 하나 이상의 변수들을 포함함-;
    컴퓨팅 인프라구조의 하나 이상의 인스턴스들이 상태 정보 서비스에 존재하는지 여부를 식별하고, 상기 하나 이상의 변수들이 컴퓨팅 인프라구조의 식별된 하나 이상의 인스턴스들의 범위 내에 있는지 여부를 식별하기 위해, 상기 상태 정보 서비스에 문의하는 단계; 및
    컴퓨팅 인프라구조의 상기 하나 이상의 인스턴스들이 존재하는 것으로 발견되고, 컴퓨팅 인프라구조의 상기 식별된 하나 이상의 인스턴스들의 범위 내에 있으면, 수신된 소스 코드를 상기 클라우드 컴퓨팅 환경의 커맨드 라인 인터페이스에 의해 판독가능한 하나 이상의 명령어들로 변환하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 도메인-특정 프로그래밍 언어로 작성된 소스 코드를 수신하는 단계는 상기 소스 코드를, 클라우드 인프라구조 운영 시스템의 커맨드 라인 인터페이스와 호환가능한 중간적 표현으로 변환하는 단계를 포함하는, 방법.
  3. 제1항에 있어서,
    상기 하나 이상의 변수들의 각각의 변수가 상기 상태 정보 서비스에 존재하고, 컴퓨팅 인프라구조의 상기 식별된 하나 이상의 인스턴스들의 범위 내에 있는 것으로 발견되면, 구현 계획을 생성하는 단계를 더 포함하는, 방법.
  4. 제3항에 있어서,
    생성된 상기 구현 계획을 승인을 위해 사용자에게 송신하는 단계를 더 포함하는, 방법.
  5. 제4항에 있어서,
    사용자가 상기 생성된 구현 계획을 승인하면, 상기 도메인-특정 프로그래밍 언어로 사용자에 의해 작성된 소스 코드를 상기 클라우드 컴퓨팅 환경 상에서 구현하는 단계를 더 포함하는, 방법.
  6. 제5항에 있어서,
    상기 소스 코드를 구현하는 단계는, 상기 소스 코드를 클라우드 인프라구조 운영 시스템의 커맨드 라인 인터페이스와 호환가능한 중간적 표현으로 변환하는 단계를 포함하는, 방법.
  7. 제6항에 있어서,
    상기 소스 코드를 구현하는 단계는, 컴퓨팅 인프라구조의 구현된 하나 이상의 인스턴스들이 상기 소스 코드에 대응하도록, 상기 클라우드 컴퓨팅 환경의 커맨드 라인 인터페이스에 의해 판독가능한 하나 이상의 명령어들을 수정하는 단계를 포함하는, 방법.
  8. 제1항에 있어서,
    상기 소스 코드는, 클라우드 컴퓨팅 환경 상에서 구축될 컴퓨팅 인프라구조의 하나 이상의 인스턴스들과 연관된 하나 이상의 변수들을 활용하는 하나 이상의 기능들을 포함하는, 방법.
  9. 제1항에 있어서,
    상기 하나 이상의 변수들은 상기 클라우드 컴퓨팅 환경 상에서 구축될 컴퓨팅 인프라구조의 사용자 정의된 인스턴스들을 포함하는, 방법.
  10. 클라우드 컴퓨팅 시스템 상에서 인프라구조를 구축하기 위한 방법으로서,
    도메인-특정 프로그래밍 언어로 사용자에 의해 작성된 소스 코드를 수신하는 단계 -상기 소스 코드는 클라우드 컴퓨팅 환경 상에서 구축될 컴퓨팅 인프라구조의 하나 이상의 인스턴스들을 정의하는 하나 이상의 변수들을 포함함-;
    컴퓨팅 인프라구조의 하나 이상의 인스턴스들이 상태 정보 서비스에 존재하는지 여부를 식별하고, 상기 하나 이상의 변수들이 컴퓨팅 인프라구조의 식별된 하나 이상의 인스턴스들의 범위 내에 있는지 여부를 식별하기 위해, 상기 상태 정보 서비스에 문의하는 단계; 및
    하나 이상의 변수들 중 임의의 변수가 상기 상태 정보 서비스에 존재하지 않으면, 또는 상기 하나 이상의 변수들 중 임의의 변수가 컴퓨팅 인프라구조의 식별된 하나 이상의 인스턴스들의 범위 내에 없는 것으로 발견되면, 사용자에게 통지하는 단계
    를 포함하는, 방법.
  11. 제10항에 있어서,
    상기 도메인-특정 프로그래밍 언어로 작성된 소스 코드를 수신하는 단계는 상기 소스 코드를, 클라우드 인프라구조 운영 시스템의 커맨드 라인 인터페이스와 호환가능한 중간적 표현으로 변환하는 단계를 포함하는, 방법.
  12. 하나 이상의 프로그램들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 하나 이상의 프로그램들은 클라우드 컴퓨팅 시스템 상에서 인프라구조를 구축하는 명령어들을 포함하고,
    상기 명령어들은 휴대용 전자 디바이스에 의해 실행될 때 상기 디바이스로 하여금,
    도메인-특정 프로그래밍 언어로 사용자에 의해 작성된 소스 코드를 수신하게 하고 -상기 소스 코드는 클라우드 컴퓨팅 환경에서 구축될 컴퓨팅 인프라구조의 하나 이상의 인스턴스들을 정의하는 하나 이상의 변수들을 포함함-;
    컴퓨팅 인프라구조의 하나 이상의 인스턴스들이 상태 정보 서비스에 존재하는지 여부를 식별하고, 상기 하나 이상의 변수들이 컴퓨팅 인프라구조의 식별된 하나 이상의 인스턴스들의 범위 내에 있는지 여부를 식별하기 위해, 상기 상태 정보 서비스에 문의하게 하고;
    컴퓨팅 인프라구조의 상기 하나 이상의 인스턴스들이 존재하는 것으로 발견되고, 컴퓨팅 인프라구조의 상기 식별된 하나 이상의 인스턴스들의 범위 내에 있으면, 수신된 소스 코드를 상기 클라우드 컴퓨팅 환경의 커맨드 라인 인터페이스에 의해 판독가능한 하나 이상의 명령어들로 변환하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  13. 제12항에 있어서,
    상기 도메인-특정 프로그래밍 언어로 작성된 소스 코드를 수신하는 것은 상기 소스 코드를, 클라우드 인프라구조 운영 시스템의 커맨드 라인 인터페이스와 호환가능한 중간적 표현으로 변환하는 것을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  14. 제12항에 있어서,
    상기 프로세서는 추가로, 상기 하나 이상의 변수들의 각각의 변수가 상기 상태 정보 서비스에 존재하고, 컴퓨팅 인프라구조의 상기 식별된 하나 이상의 인스턴스들의 범위 내에 있는 것으로 발견되면, 구현 계획을 생성하게 되는, 비일시적 컴퓨터 판독가능 저장 매체.
  15. 제14항에 있어서,
    상기 프로세서는 추가로, 생성된 상기 구현 계획을 승인을 위해 사용자에게 송신하게 되는, 비일시적 컴퓨터 판독가능 저장 매체.
  16. 제15항에 있어서,
    상기 프로세서는 추가로, 사용자가 상기 생성된 구현 계획을 승인하면, 상기 도메인-특정 프로그래밍 언어로 사용자에 의해 작성된 소스 코드를 상기 클라우드 컴퓨팅 환경 상에서 구현하게 되는, 비일시적 컴퓨터 판독가능 저장 매체.
  17. 제16항에 있어서,
    상기 소스 코드를 구현하는 것은, 상기 소스 코드를 클라우드 인프라구조 운영 시스템의 커맨드 라인 인터페이스와 호환가능한 중간적 표현으로 변환하는 것을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  18. 제17항에 있어서,
    상기 소스 코드를 구현하는 것은, 컴퓨팅 인프라구조의 구현된 하나 이상의 인스턴스들이 상기 소스 코드에 대응하도록, 상기 클라우드 컴퓨팅 환경의 커맨드 라인 인터페이스에 의해 판독가능한 하나 이상의 명령어들을 수정하는 것을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  19. 제12항에 있어서,
    상기 소스 코드는, 클라우드 컴퓨팅 환경 상에서 구축될 컴퓨팅 인프라구조의 하나 이상의 인스턴스들과 연관된 하나 이상의 변수들을 활용하는 하나 이상의 기능들을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  20. 제12항에 있어서,
    상기 하나 이상의 변수들은 상기 클라우드 컴퓨팅 환경 상에서 구축될 컴퓨팅 인프라구조의 사용자 정의된 인스턴스들을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  21. 하나 이상의 프로그램들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 하나 이상의 프로그램들은 클라우드 컴퓨팅 시스템 상에서 인프라구조를 구축하는 명령어들을 포함하고,
    상기 명령어들은 휴대용 전자 디바이스에 의해 실행될 때 상기 디바이스로 하여금,
    도메인-특정 프로그래밍 언어로 사용자에 의해 작성된 소스 코드를 수신하게 하고 -상기 소스 코드는 클라우드 컴퓨팅 환경 상에서 구축될 컴퓨팅 인프라구조의 하나 이상의 인스턴스들을 정의하는 하나 이상의 변수들을 포함함-;
    컴퓨팅 인프라구조의 하나 이상의 인스턴스들이 상태 정보 서비스에 존재하는지 여부를 식별하고, 상기 하나 이상의 변수들이 컴퓨팅 인프라구조의 식별된 하나 이상의 인스턴스들의 범위 내에 있는지 여부를 식별하기 위해, 상기 상태 정보 서비스에 문의하게 하고;
    하나 이상의 변수들 중 임의의 변수가 상기 상태 정보 서비스에 존재하지 않으면, 또는 상기 하나 이상의 변수들 중 임의의 변수가 컴퓨팅 인프라구조의 식별된 하나 이상의 인스턴스들의 범위 내에 없는 것으로 발견되면, 사용자에게 통지하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  22. 제21항에 있어서,
    상기 도메인-특정 프로그래밍 언어로 작성된 소스 코드를 수신하는 것은 상기 소스 코드를, 클라우드 인프라구조 운영 시스템의 커맨드 라인 인터페이스와 호환가능한 중간적 표현으로 변환하는 것을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020177016182A 2014-11-13 2015-11-13 클라우드 서비스 인프라구조를 위한 도메인-특정 언어를 제공 및 실행하기 위한 시스템 및 방법 KR20170086560A (ko)

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
KR20170086560A true KR20170086560A (ko) 2017-07-26

Family

ID=55955166

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177016182A KR20170086560A (ko) 2014-11-13 2015-11-13 클라우드 서비스 인프라구조를 위한 도메인-특정 언어를 제공 및 실행하기 위한 시스템 및 방법

Country Status (9)

Country Link
US (1) US10310828B2 (ko)
EP (1) EP3218819A4 (ko)
JP (1) JP2017534996A (ko)
KR (1) KR20170086560A (ko)
CN (1) CN107111606A (ko)
AU (1) AU2015346074A1 (ko)
CA (1) CA2967640A1 (ko)
IL (1) IL252238A0 (ko)
WO (1) WO2016077785A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170086560A (ko) 2014-11-13 2017-07-26 푸구, 인크. 클라우드 서비스 인프라구조를 위한 도메인-특정 언어를 제공 및 실행하기 위한 시스템 및 방법
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
WO2018148588A1 (en) * 2017-02-10 2018-08-16 Fugue, Inc. System and method for providing cloud operating system validations for a domain-specific language for cloud services infrastructure
WO2019033019A1 (en) * 2017-08-11 2019-02-14 Fugue, Inc. SYSTEM AND METHOD FOR PROVIDING CLOUD OPERATING SYSTEM VALIDATIONS FOR A DOMAIN-SPECIFIC LANGUAGE FOR CLOUD SERVICES INFRASTRUCTURE
WO2019033018A1 (en) * 2017-08-11 2019-02-14 Fugue, Inc. SYSTEM AND METHOD FOR GENERATING A PROGRAM PROGRAMMING LANGUAGE SPECIFIC TO A DOMAIN FROM A CLOUD COMPUTING SYSTEM
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
US10872029B1 (en) 2018-11-21 2020-12-22 Candid Partners, LLC System, apparatus and method for deploying infrastructure to the cloud
US10990370B1 (en) 2018-11-21 2021-04-27 Candid Labs, Inc. 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)

* Cited by examiner, † Cited by third party
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
CN102857533B (zh) * 2011-07-01 2015-11-18 云联(北京)信息技术有限公司 一种基于云计算的远程交互式系统
CN102857535B (zh) * 2011-07-01 2015-09-09 云联(北京)信息技术有限公司 一种计算机处理单元、计算机网关、交互式系统
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
US20170302531A1 (en) 2014-09-30 2017-10-19 Hewlett Packard Enterprise Development Lp Topology based management with compliance policies
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
KR20170086560A (ko) 2014-11-13 2017-07-26 푸구, 인크. 클라우드 서비스 인프라구조를 위한 도메인-특정 언어를 제공 및 실행하기 위한 시스템 및 방법
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
WO2018148588A1 (en) * 2017-02-10 2018-08-16 Fugue, Inc. System and method for providing cloud operating system validations for a domain-specific language for cloud services infrastructure

Also Published As

Publication number Publication date
CN107111606A (zh) 2017-08-29
CA2967640A1 (en) 2016-05-19
EP3218819A4 (en) 2018-07-25
US10310828B2 (en) 2019-06-04
AU2015346074A1 (en) 2017-06-08
JP2017534996A (ja) 2017-11-24
EP3218819A1 (en) 2017-09-20
IL252238A0 (en) 2017-07-31
WO2016077785A1 (en) 2016-05-19
US20160139895A1 (en) 2016-05-19

Similar Documents

Publication Publication Date Title
KR20170086560A (ko) 클라우드 서비스 인프라구조를 위한 도메인-특정 언어를 제공 및 실행하기 위한 시스템 및 방법
US11360976B2 (en) Deployment of javascript and typescript stored procedures and user-defined functions into database management systems
US10649986B2 (en) Systems, methods, and apparatuses for implementing a BY ORGID command term within a multi-tenant aware structured query language
AU2015247639B2 (en) Processing data from multiple sources
CN112654977B (zh) 用于自动生成可执行应用程序的方法和系统
US7580946B2 (en) Smart integration engine and metadata-oriented architecture for automatic EII and business integration
US10261810B2 (en) System and method for providing cloud operating system validations for a domain-specific language for cloud services infrastructure
US20180218031A1 (en) Systems, methods, and apparatuses for implementing dynamic macros within a multi-tenant aware structured query language
US20180218044A1 (en) Systems, methods, and apparatuses for implementing a by partition command term within a multi-tenant aware structured query language
US10503707B2 (en) Field types defined via custom metadata types
US20190050213A1 (en) System and method for generating a domain-specific programming language program from a cloud-based computing system
US20200311095A1 (en) System and method for automated source code generation for database conversion
US20190272157A1 (en) System and method for embedding domain-specific language code within a visualization of cloud-based computing infrastructure
US20190050210A1 (en) System and method for providing cloud operating system verifications for a domain-specific language for cloud services infrastructure
CN101727475B (zh) 一种获取数据库访问过程的方法、装置及系统
US9720960B2 (en) Reporting tools for object-relational databases
US20130167110A1 (en) Modeled user interface controllers
KR20170112889A (ko) 클라우드 서비스 호환성 검증 장치 및 그 방법
Bourgeois et al. Extending executability of applications on varied target platforms
US20190087165A1 (en) System and method for implementing dynamic strategies of computing infrastructure using a domain-specific language for cloud services infrastructure
CN101145953B (zh) 网络设备管理软件动态调试的方法和系统
US11468101B2 (en) Context-rich key framework implementations for global concept management
US9378468B2 (en) Generic boxed components for multi-client systems
US20240126541A1 (en) Inversion process for rules framework
US20100023923A1 (en) Method for medeling objects in a hetrogenious computing environment