KR20230160047A - 멀티 클라우드 관리 방법 및 전자 장치 - Google Patents

멀티 클라우드 관리 방법 및 전자 장치 Download PDF

Info

Publication number
KR20230160047A
KR20230160047A KR1020220059609A KR20220059609A KR20230160047A KR 20230160047 A KR20230160047 A KR 20230160047A KR 1020220059609 A KR1020220059609 A KR 1020220059609A KR 20220059609 A KR20220059609 A KR 20220059609A KR 20230160047 A KR20230160047 A KR 20230160047A
Authority
KR
South Korea
Prior art keywords
file
electronic device
cloud
data
processor
Prior art date
Application number
KR1020220059609A
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 주식회사 에이프리카
Priority to KR1020220059609A priority Critical patent/KR20230160047A/ko
Publication of KR20230160047A publication Critical patent/KR20230160047A/ko

Links

Images

Classifications

    • 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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/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
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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/451Execution arrangements for user interfaces
    • 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/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • 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/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • 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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Human Computer Interaction (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

다양한 실시예들에 따른 전자 장치는 프로세서 및 메모리를 포함하며, 프로세서는 메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 데이터를 변환하기 위한 파일이 존재함을 확인하고, 파일이 존재하지 않는 경우, 직렬화 모듈을 이용하여 파일을 생성하고, 생성된 파일을 통해 변환된 데이터를 이용하여 프로그램을 실행하며, 파일이 존재하는 경우, 직렬화 모듈을 이용하여 상파일을 통해 변환된 데이터를 이용하여 프로그램을 실행하며, 직렬화 모듈은 프로그래밍 언어의 실행 환경에 기반하여 데이터를 메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 변환하고, 사용자 입력에 관계없이 변환된 데이터를 이용하여 프로그램을 실행할 수 있다.

Description

멀티 클라우드 관리 방법 및 전자 장치{METHOD FOR MANAGING MULTI CLOUD AND ELECTRONIC DEVICE}
본 문서는 멀티 클라우드 관리 방법 및 전자 장치에 관한 것이다.
멀티 클라우드(multi cloud)는 복수의 클라우드 서비스 제공자에 의해 제공되는 클라우드로 구성된다. 멀티 클라우드는 퍼블릭 클라우드(public cloud) 및 프라이빗 클라우드(private cloud)를 포함할 수 있다.
멀티 클라우드는 각 클라우드 서비스 제공자에 의해 제공되는 클라우드 서비스의 장점을 취합하여 구성할 수 있는 장점이 있다.
그러나, 사용자가 멀티 클라우드를 기반으로 애플리케이션을 개발하거나 클라우드를 운영하기 위해서는 각각의 클라우드 기술 또는 프로그래밍 언어를 별도 학습해야 하는 문제가 있다. 또는, 사용자가 멀티 클라우드를 기반으로 애플리케이션을 개발하거나 클라우드를 운영하기 위해서는 아키텍쳐가 복잡해지고, 개발 시간이 지체되는 문제가 있다.
클라우드를 기반으로 동작하는 기능들은 소프트웨어를 기반으로 세분화되어서 운영이 되기 때문에, 운영 관리가 복잡하여 운영 비용이 증가하거나 관리의 효율성이 떨어지는 문제가 있다.
하나의 워크플로우를 갖는 프로그램은 다양한 프로그래밍 언어로 작성된 복수의 함수로 구성될 수 있다. 각각의 프로그래밍 언어는 각 언어별 데이터의 구성 방식이 상이하므로 이종 언어로 작성된 함수간 데이터 전달이 어려울 수 있다. 일반적으로 파일 또는 데이터베이스 등의 외부 저장 매체를 이용하여 이종 함수간 데이터 전달을 수행할 수 있으나 외부 저장 매체의 사용은 프로그램의 성능 저하를 일으킬 수 있어서 각 언어에서 개발된 함수를 연결하는 별도의 응용프로그램 개발이 필요할 수 있다.
본 개시의 멀티 클라우드 관리 방법 및 전자 장치는 멀티 클라우드와 같은 이종 환경에서 전자 장치로 구성된 운영 환경을 효과적으로 통제하는데 목적이 있다.
다양한 실시예들에 따른 전자 장치는 프로세서 및 메모리를 포함하며, 프로세서는 메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 데이터를 변환하기 위한 파일이 존재함을 확인하고, 파일이 존재하지 않는 경우, 직렬화 모듈을 이용하여 파일을 생성하고, 생성된 파일을 통해 변환된 데이터를 이용하여 프로그램을 실행하며, 파일이 존재하는 경우, 직렬화 모듈을 이용하여 상파일을 통해 변환된 데이터를 이용하여 프로그램을 실행하며, 직렬화 모듈은 프로그래밍 언어의 실행 환경에 기반하여 데이터를 메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 변환하고, 사용자 입력에 관계없이 변환된 데이터를 이용하여 프로그램을 실행할 수 있다.
다양한 실시예들에 따른 전자 장치의 멀티 클라우드 관리 방법은 메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 변환된 파일이 존재함을 확인함에 대응하여 상기 변환된 파일을 이용하여 프로그램을 실행하는 동작, 메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 변환된 파일이 존재하지 않음을 확인함에 대응하여 직렬화 모듈을 이용하여 데이터를 메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 변환하는 동작 및 데이터가 변환됨에 대응하여 변환된 데이터를 이용하여 프로그램을 실행하는 동작을 포함할 수 있다.
본 문서에 따른 멀티 클라우드 관리 방법 및 전자 장치는 서비스 운영에 필요한 소프트웨어 및 패키지를 리스트로 제공하고, 리스트를 기반으로 서비스를 워크 플로우 형태로 생성 가능한 사용자 인터페이스를 제공할 수 있다.
본 문서의 멀티 클라우드 관리 방법 및 전자 장치는 다양한 실행 환경(예를 들어, 실행 언어, 실행 운영 체계 등)을 일관되게 적용할 수 있도록 실행 환경에 대한 제어 기능을 제공할 수 있다.
도 1은 다양한 실시예들에 따른, 전자 장치의 구성을 나타낸 도면이다.
도 2는, 본 문서에 개시된 다양한 실시예에 따른 전자 장치가 워크플로우의 순서도 작성 UI를 제공하는 방법을 설명하기 위한 도면이다.
도 3은 전자 장치가 단일 프로그램을 이용하여 이종 개발 언어의 실행을 지원하는 방법을 설명하기 위한 도면이다.
도 4는 전자 장치가 프로토콜 버퍼의 실행 기능을 자동화하는 방법을 설명하기 위한 도면이다.
도 5는 전자 장치가 워크플로우 실행 환경에서 실행에 필요한 프로그램 실행 정보를 관리하는 방법을 설명하기 위한 도면이다.
도 6은 전자 장치가 워크플로우 실행 환경에서 개별 노드를 실행할 머신을 지정하여 워크플로우를 실행하는 방법을 설명하기 위한 도면이다.
도 7은 전자 장치가 다른 기종의 클라우드 자원과 소프트웨어 실행 모듈을 통합하여 관리하는 방법을 설명하기 위한 도면이다.
도 8은 전자 장치가 서로 다른 종류(이종)의 클라우드 환경을 제어하는 방법을 설명하기 위한 도면이다.
도 9는 전자 장치가 클라우드에서 동작하는 카탈로그의 라이프사이클을 관리하는 방법을 설명하기 위한 도면이다.
도 10은 전자 장치가 소프트웨어를 트랜잭션(transaction) 단위로 관리하는 방법을 설명하기 위한 도면이다.
도 1은 다양한 실시예들에 따른, 전자 장치(100)의 구성을 나타낸 도면이다.
본 문서에서, 전자 장치(100)는 네트워크 환경에 연결된 서버(server)를 포함할 수 있다. 서버는 프로세서(110) 및 메모리(130)와 같은 컴퓨팅 장치를 포함할 수 있다. 본 문서에 개시된 발명은 서버에 구성된 프로그램(program)을 통해 멀티 클라우드를 관리하는 서비스와 관련된 것일 수 있다. 이하에서, 설명되는 각 동작들은 그 동작의 주체에 대한 별도의 설명이 없는 경우, 전자 장치(100)에 포함된 프로세서(110)에 의해 연산 및 처리되는 것으로 이해될 수 있다. 예를 들어, 프로세서(110)는 메모리(130)에 저장된 프로그램을 인스트럭션(instruction) 단위로 읽어 그 인스트럭션에 따라 기능들을 수행할 수 있다.
전자 장치(100)는 멀티 클라우드 관리 모듈(101), 프로세서(110) 및 메모리(130)를 포함할 수 있다. 전자 장치(100)는 프로세서(110)를 이용하여 멀티 클라우드 관리 모듈(101)을 제어할 수 있다.
멀티 클라우드 관리 모듈(101)는 서비스에 필요한 클라우드(102)를 관리할 수 있다. 서비스는, 예를 들어, 애플리케이션 또는 네트워크 상에 제공되는 프로그램일 수 있다. 멀티 클라우드 관리 모듈(101)은 클라우드(102)에 포함된 리소스(resource)에 접근할 수 있다.
멀티 클라우드 관리 모듈(101)은 클라우드(102)에 포함된 복수의 클라우드(1211, 1212, 1221, 1222)에서 운영되는 리소스를 제어하고 관리할 수 있다.
멀티 클라우드 관리 모듈(101)은 클라우드(102)에 포함된 복수의 클라우드(1211, 1212, 1221, 1222)를 제어하기 하기 위해 클라우드 리소스에 대한 인터페이스를 포함할 수 있다.
클라우드 리소스는 컴퓨팅 자원(computing resource), 스토리지 자원(storage resource), 또는 네트워크 자원(network resource) 중 적어도 하나 이상을 포함할 수 있다.
멀티 클라우드 관리 모듈(101)은 클라우드(102)에 포함된 복수의 클라우드(1211, 1212, 1221, 1222)의 리소스에 대한 표준화된 속성과 비표준화된 속성의 특성을 분류하여 관리할 수 있다.
멀티 클라우드 관리 모듈(101)은 클라우드(102)에 포함된 복수의 클라우드(1211, 1212, 1221, 1222)의 리소스를 제어하기 위한 개별 리소스 유형에 따른 API 형식으로 리소스를 제어할 수 있다. API 형식은 예를 들어, RESTful, CLI, Library 형식을 포함할 수 있다.
멀티 클라우드 관리 모듈(101)은 클라우드(102)에 포함된 복수의 클라우드(1211, 1212, 1221, 1222)의 리소스에 대해 생성, 삭제 또는 변경 중 적어도 하나 이상에 따른 상태 변경 완료에 따른 알림을 제공할 수 있다.
멀티 클라우드 관리 모듈(101)은 클라우드(102)에 포함된 리소스와 소프트웨어 실행 모듈을 통합하여 관리할 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스가 클라우드(102)에서 동작하게 할 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스가 클라우드(102)에서 실행하게 하는 실행 메커니즘을 포함할 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스가 클라우드(102)에서 동작하게 할 수 있도록 클라우드 리소스를 생성하기 위한 리소스 명세(specification)를 포함할 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스가 클라우드(102)에서 동작하게 할 수 있도록 소프트웨어 또는 서비스 설정을 포함할 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스가 클라우드(102)에서 동작하게 할 수 있도록 소프트웨어 또는 서비스 설정을 위한 명세를 포함할 수 있다.
멀티 클라우드 관리 모듈(101)은 클라우드 리소스 명세를 계층화하여 관리할 수 있다. 예를 들어, 멀티 클라우드 관리 모듈(101)은 클라우드 리소스 명세를 JSON, YAML, 또는 데이터베이스 테이블 구조 중 적어도 하나 이상으로 계층화 할 수 있다.
멀티 클라우드 관리 모듈(101)은 표준 사양 정보와 표준 사양에 따른 클라우드 별 특성에 따른 속성 정보를 기반으로 클라우드 리소스 명세를 관리할 수 있다.
멀티 클라우드 관리 모듈(101)은 클라우드 리소스 명세에 기반하여 클라우드 리소스 생성과 관리를 수행할 수 있다. 멀티 클라우드 관리 모듈(101)은 클라우드 리소스 명세에 기반하여 클라우드 리소스 생성과 관리에 따른 리소스 상태 변경을 사용자에게 알림으로 제공할 수 있다.
멀티 클라우드 관리 모듈(101)은 클라우드 리소스 명세에 접근할 수 있는 인터페이스를 사용자에게 제공할 수 있다. 예를 들어, 인터페이스는 웹 콘솔(web console), 모니터링(monitoring) 또는 파일 관리자(file manager) 중 적어도 하나 이상일 수 있다.
멀티 클라우드 관리 모듈(101)은 가상 머신(virtual machine) 및/또는 컨테이너(container)에서 동작하는 운영체제(OS)에 관계없이 컴퓨팅 자원에 존재하는 파일에 대한 관리를 위해서 파일 관리자를 포함할 수 있다. 사용자는 파일 관리자를 통해 서비스에 필요한 정보를 업로드하거나 다운로드할 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스에 포함된 실행 스크립트에 설정된 라벨(label)과 클라우드 리소스에 설정된 라벨 정보를 비교하여 실행 스크립트에 설정된 라벨에 대응하는 리소스를 실행할 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스가 위치하는 리소스 유형에 따라서 소프트웨어 또는 서비스에 포함된 실행 스크립트에 라벨을 자동으로 설정할 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스를 위한 제어를 클라우드 리소스의 상태 정보에 설정된 워크 플로우(work flow)에 기반하여 실행될 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스 운영에 필요한 애플리케이션 및/또는 패키지를 리스트화하여 관리할 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스 운영에 필요한 애플리케이션 및/또는 패키지를 오픈 소스 및 상용 소프트웨어의 구분 없이 스크립트 및 API를 활용하여 관리할 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스 운영에 필요한 애플리케이션 및/또는 패키지에 대한 버전 관리를 통해 이력을 관리할 수 있다.
소프트웨어 또는 서비스 운영에 필요한 애플리케이션 및/또는 패키지를 스크립트 및 API를 활용하여 관리할 때, 멀티 클라우드 관리 모듈(101)은 스크립트에서 활용할 수 있는 변수 및 사용자 정의 변수를 지원할 수 있다.
소프트웨어 또는 서비스 운영에 필요한 애플리케이션 및/또는 패키지를 스크립트 및 API를 활용하여 관리할 때, 멀티 클라우드 관리 모듈(101)은 파이프 라인 기능을 통해 스크립트 간 연계 기능을 지원할 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스 운영에 필요한 파일에 대해 패키지로 관리할 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스 운영에 필요한 사용자 로컬 파일 및/또는 원격 파일을 지정할 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스 운영에 필요한 패키지 파일에 대해 접근할 수 있는 사용자 인터페이스를 제공할 수 있다.
멀티 클라우드 관리 모듈(101)은 클라우드 리소스 명세 관리 기능 및 소프트웨어 또는 서비스 실행 관리 기능을 제공할 수 있다.
멀티 클라우드 관리 모듈(101)은 클라우드 리소스 명세 관리 및/또는 소프트웨어 또는 서비스 실행 관리를 위한 서비스 카탈로그를 포함할 수 있다.
서비스 카탈로그는 클라우드 기반으로 소프트웨어 또는 서비스를 제공하기 위한 클라우드 리소스와 소프트웨어(또는 서비스) 실행을 위한 프로그램의 묶음일 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스 환경에 필요한 서비스 카탈로그를 검색 및 공유하는 기능을 포함할 수 있다.
멀티 클라우드 관리 모듈(101)은 서비스 카탈로그에 대한 버전 관리 기능을 제공할 수 있다.
멀티 클라우드 관리 모듈(101)은 각각의 서비스 카탈로그의 실행에 따른 카탈로그 인스턴스(instance)를 관리할 수 있다. 멀티 클라우드 관리 모듈(101)은 각각에 카탈로그 인스턴스에 대한 상세 정보를 관리할 수 있다. 멀티 클라우드 관리 모듈(101)은 생성된 카탈로그 인스턴스에 대한 토폴로지(topology)를 관리할 수 있다.
카탈로그 인스턴스는 서비스 카탈로그를 통해서 클라우드(102)에 생성된 서비스의 이름일 수 있다.
멀티 클라우드 관리 모듈(101)은 서비스 카탈로그의 실행에 따라 클라우드 리소스를 생성되도록 제어하며, 생성되는 클라우드 리소스의 상태 변경에 따라서 설정된 워크 플로우를 실행할 수 있다.
멀티 클라우드 관리 모듈(101)은 서비스 카탈로그를 통해서 서비스 카탈로그 및/또는 서비스 카탈로그 템플릿 단위로 상태 정보를 정의할 수 있다.
서비스 카탈로그 템플릿은 서비스 카탈로그를 구성하는 클라우드 리소스와 소프트웨어(또는 서비스) 실행을 위한 프로그램의 묶음의 단위일 수 있다.
멀티 클라우드 관리 모듈(101)은 정의된 상태 정보에 기반하여 실행할 워크 플로우 및/또는 소프트웨어(또는 서비스)의 스크립트를 실행할 수 있다. 상태 정보는 사용자 정의 또는 시스템에 의해 제공될 수 있다. 멀티 클라우드 관리 모듈(101)은 상태 정보가 사용자 정의에 의해 제공되는지 시스템에 의해 제공되는지 여부를 구분하고 제공할 수 있다. 멀티 클라우드 관리 모듈(101)은 상태 정보에 기반하여 클라우드 리소스 및/또는 소프트웨어(또는 서비스)의 상태를 관리할 수 있다.
멀티 클라우드 관리 모듈(101)은 클라우드(102)에 포함된 복수의 클라우드(1211, 1212, 1221, 1222)에 기반하여 서비스를 제공하기 위해서 각각의 클라우드 기술 또는 프로그래밍 언어를 실행할 수 있는 스크립트 엔진(script engine)을 포함할 수 있다.
멀티 클라우드 관리 모듈(101)은 각각의 개별적인 프로그래밍 언어에 대한 스크립트 엔진을 포함하며, 각각의 프로그래밍 언어를 실행할 때 필요한 스크립트 엔진을 호출할 수 있다.
각각의 프로그래밍 언어가 실행될 때, 멀티 클라우드 관리 모듈(101)은 멀티 클라우드 관리 모듈(101)에서 관리하는 정보를 각각의 프로그래밍 언어에 맞도록 제공함으로써 서비스의 일관성을 유지할 수 있다.
멀티 클라우드 관리 모듈(101)은 각각의 프로그래밍 언어의 실행에 따른 결과와 멀티 클라우드 관리 모듈(101)에서 관리하는 정보를 해석하여 서비스의 일관성을 유지할 수 있다. 멀티 클라우드 관리 모듈(101)은 각각의 프로그래밍 언어의 실행에 따른 결과와 멀티 클라우드 관리 모듈(101)에서 관리하는 정보를 후속하여 호출되는 프로그래밍 언어의 실행 환경에 제공할 수 있다.
다양한 실시예에서, 멀티 클라우드 관리 모듈(101)에 포함된 스크립트 엔진은 하나의 프로그래밍 언어뿐만 아니라, 복수의 프로그래밍 언어로 작성된 서비스에 대해서 실행할 수 있는 프로그램 또는 인터프리터(interpreter)일 수 있다.
멀티 클라우드 관리 모듈(101)은 워크 플로우 관리 기능을 포함할 수 있다. 멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스에 기초하여 워크 플로우를 설계할 수 있는 웹 기반의 사용자 인터페이스를 제공할 수 있다.
멀티 클라우드 관리 모듈(101)은 서비스 카탈로그 및/또는 서비스 카탈로그 인스턴스에 기초하여 워크 플로우 자동 실행 환경을 제공할 수 있다.
본 개시의 워크 플로우는 사용자가 지정한 실행 단위를 지정한 머신에서 실행하기 위해서 사용자가 정의하는 프로그램일 수 있다.
워크 플로우는 복수의 실행 노드를 포함하며, 실행 노드는 워크 플로우를 구성하며 실행하는 기본 단위이며, 지정된 머신에서 실행될 수 있다.
머신은 실행 노드에서 생성 또는 작성된 실행 언어가 실행되는 장치로서, 예를 들어, 가상 머신 및/또는 컨테이너를 포함할 수 있다.
각각의 실행 노드에서 실행되는 객체는 해당 실행 노드에 지정된 라벨 정보에 기반하여 지정될 수 있다. 실행되는 객체는 클라우드 객체일 수 있다.
멀티 클라우드 관리 모듈(101)은 각각의 실행 노드에서 실행되는 객체를 해당 실행 노드에 지정된 라벨 정보에 기반하여 지정할 수 있다.
멀티 클라우드 관리 모듈(101)은 실행 노드에 지정된 라벨 정보를 포함하는 머신에 대해서 실행 단계에서 정보 조회를 통해 실행 대상 머신을 특정할 수 있다.
멀티 클라우드 관리 모듈(101)은 특정된 머신에서 제공하는 원격 접속 정보를 통해서 원격으로 접속하고 머신을 실행할 수 있다. 원격 접속은 예를 들어, 아이디/패스워드 방식, 키 페어 방식 또는 로컬 머신 방식 중 적어도 하나 이상일 수 있다. 원격 접속 정보는 아이디/패스워드, 키 페어 또는 로컬 머신에 관한 정보 중 적어도 하나 이상을 포함할 수 있다.
라벨 정보를 포함하는 머신이 복수 개 존재하는 경우, 멀티 클라우드 관리 모듈(101)은 순차적 및/또는 병렬적으로 실행 노드를 실행할 수 있다.
멀티 클라우드 관리 모듈(101)은 각각의 머신에서 실행된 결과를 워크 플로우, 실행 노드, 실행 머신의 순서로 계층적으로 저장되게 할 수 있다. 멀티 클라우드 관리 모듈(101)은 저장된 머신의 실행 결과를 저장 및 검색하는 것을 지원할 수 있다.
멀티 클라우드 관리 모듈(101)은 사용자 입력에 의해서 생성된 워크 플로우에서 복수의 실행 노드를 확인할 수 있다.
멀티 클라우드 관리 모듈(101)은 스크립트 엔진에 기반하여 실행 정보를 각각의 실행 노드에 전달할 수 있다. 실행 정보는 워크 플로우가 목적하는 기능을 달성하기 위해서 워크 플로우가 실행되면 실행 노드 간에 실행에 필요한 정보일 수 있다.
멀티 클라우드 관리 모듈(101)은 실행 정보에 대해서 등록, 수정 또는 삭제 중 적어도 하나 이상을 수행할 수 있는 관리 기능을 제공할 수 있다.
멀티 클라우드 관리 모듈(101)은 스크립트 엔진이 지원하는 프로그래밍 언어의 변수 전달 메커니즘에 기반하여 각각의 실행 노드에 실행 정보를 전달할 수 있다.
멀티 클라우드 관리 모듈(101)은 스크립트 엔진이 지원하는 프로그래밍 언어의 변수 관리 체계를 통해서 실행 정보에 대해서 등록, 수정 또는 삭제 중 적어도 하나 이상을 수행할 수 있는 관리 기능을 제공할 수 있다.
멀티 클라우드 관리 모듈(101)은 관리 기능을 통해서 변경된 실행 정보를 워크 플로우의 데이터 베이스로 저장하고 관리할 수 있다.
멀티 클라우드 관리 모듈(101)은 실행 정보를 확인할 수 있도록 사용자 검색 기능을 제공할 수 있다.
멀티 클라우드 관리 모듈(101)은 소프트웨어 또는 서비스의 실행 시에, 실행되는 워크 플로우 및/또는 실행 스크립트를 실행 단위로 관리할 수 있다.
멀티 클라우드 관리 모듈(101)은 실행되는 워크 플로우 및/또는 실행 스크립트의 실행 노드를 워크 플로우의 실행 결과로 저장하여 관리할 수 있다.
멀티 클라우드 관리 모듈(101)은 워크 플로우의 실행 결과에 따라서 전체 트랜잭션(transaction)의 처리 결과를 성공 또는 실패로 판단하여 처리할 수 있다.
멀티 클라우드 관리 모듈(101)은 트랜잭션(transaction)에 따른 입력과 출력 정보를 관리하고 실행 결과 정보를 조회할 수 있다.
멀티 클라우드 관리 모듈(101)은 트랜잭션(transaction)에 따른 부속된 처리 파일들을 트랜잭션(transaction)이 완료되면 일괄적으로 삭제할 수 있다.
클라우드 서비스(102)는 퍼블릭 클라우드(public cloud, 121) 및 프라이빗 클라우드(private cloud, 122)를 포함할 수 있다.
퍼블릭 클라우드(121)는 복수의 퍼블릭 클라우드(1211, 1212)를 포함할 수 있다. 퍼블릭 클라우드(121)는 서비스 제공업체가 공주의 인터넷 망을 통해 불특정 다수의 기업이나 개인에게 서버, 스토리지 등의 컴퓨팅 자원을 빌려주는 형태의 클라우드 서비스를 제공할 수 있다. 퍼블릭 클라우드(121)는 클라우드 서버 프로바이더(cloud server provider)와 계약으로 제공되는 클라우드 서비스일 수 있다. 예를 들어, 제 1 퍼블릭 클라우드(1211)는 아마존 웹 서비스(AWSTM)이고, 제 2 퍼블릭 클라우드(1212)는 마이크로소프트 애저(Microsoft AzureTM)일 수 있다. 퍼블릭 클라우드(121)는 제 1 퍼블릭 클라우드(1211) 및 제 2 퍼블릭 클라우드(1212) 뿐만 아니라 다양한 퍼블릭 클라우드를 더 포함할 수 있다.
프라이빗 클라우드(122)는 인터넷 또는 개인 내부 네트워크를 통해 일반 사용자가 아닌 특정 사용자에게만 제공되는 클라우드 서비스일 수 있다. 프라이빗 클라우드(122)는 퍼블릭 클라우드(121)와 달리 온디맨드 클라우드 모델로서 독자 표준의 리소스를 사용하기 때문에 사용자가 클라우드의 관리, 유지, 보수, 운영을 총괄할 수 있다. 예를 들어, 제 1 프라이빗 클라우드(1221)는 오픈스택(openstackTM)이고, 제 2 프라이빗 클라이우드(1221)는 브이엠웨어(VMWARETM) 일 수 있다.
도 2는, 본 문서에 개시된 다양한 실시예에 따른 전자 장치(예: 도 1의 전자 장치(100))가 워크플로우의 순서도 작성 사용자 인터페이스(user interface, UI)를 제공하는 방법을 설명하기 위한 도면이다.
클라우드 서버를 통해 다양한 워크플로우가 수행될 수 있다. 워크플로우는 특정 기능을 수행하는 프로그램 또는 프로그램들의 집합으로 이해될 수 있다. 또한, 워크플로우는 사용자가 지정한 실행 단위를 지정된 머신(예: 클라우드 서버)에서 실행하기 위해 정의된 프로그램 또는 프로그램 집합으로 이해될 수 있다. 예를 들어, 사용자가 제공하는 서비스(예: 은행 서비스, 검색 서비스, 번역 서비스 등)와 관련된 워크플로우는 클라우드 서버의 자원(예: 컴퓨팅 자원, 스토리지 자원, 네트워크 자원)을 통해 실행될 수 있다. 사용자가 제공하는 서비스는 단일한 워크플로우 또는 복수의 워크플로우를 통해 구현될 수 있다.
전자 장치(100)는 애플리케이션 및/또는 스크립트 리스트(210), 워크 플로우 편집 툴(220), 워크 플로우 배치 툴(230)을 포함하는 사용자 인터페이스(user interface)를 제공할 수 있다. 애플리케이션 및/또는 스크립트 리스트(210)는 워크 플로우의 실행 노드에 적용될 수 있는 적어도 하나 이상의 애플리케이션에 관한 리스트 및/또는 적어도 하나 이상의 스크립트에 관한 리스트를 표시할 수 있다. 사용자는 애플리케이션 및/또는 스크립트 리스트(210)에 포함된 적어도 하나 이상의 애플리케이션 및/또는 적어도 하나 이상의 스크립트에 기반하여 워크 플로우 및/또는 실행 노드를 생성할 수 있다.
워크 플로우 편집 툴(220)은 소프트웨어 또는 서비스 실행 및 분기 처리를 위한 워크 플로우 개체 편집 도구를 포함할 수 있다.
워크 플로우 배치 툴(230)은 애플리케이션 및/또는 스크립트 리스트(210)에 포함된 적어도 하나 이상의 애플리케이션 및/또는 적어도 하나 이상의 스크립트가 배치되며 상세한 실행 정보를 편집할 수 있다.
애플리케이션 및/또는 스크립트 리스트(210)에 포함된 적어도 하나 이상의 애플리케이션 및/또는 적어도 하나 이상의 스크립트가 워크 플로우 배치 툴(230)에 배치될 때 드래그 & 드롭으로 배치될 수 있다.
본 문서에 개시된 다양한 실시예에서, 전자 장치(100)는 사용자가 워크플로우를 쉽게 작성할 수 있도록 워크플로우의 순서도(flowchart) 작성 사용자 인터페이스(user interface ,UI)를 제공할 수 있다. 일 실시예에서, 워크플로우는 단일 또는 복수의 노드(node)로 구성될 수 있다. 노드는 워크플로우를 구성하는 기본 단위를 의미할 수 있으며, 워크플로우는 지정된 실행 단위를 지정된 머신(예: 클라우드 컴퓨터)에서 실행하기 위해 사용자가 정의하는 프로그램을 의미할 수 있다. 노드에는 단일 프로그램(또는 함수) 혹은 복수의 프로그램이 포함될 수 있다. 경우에 따라서, 워크플로우는 계층적으로 구성될 수 있다. 예를 들어, 상위 워크플로우에 포함된 노드는 하위 워크플로우들을 적어도 일부 포함할 수 있다.
본 문서에 개시된 다양한 실시예에 따른 멀티 클라우드 관리 방법은, 웹 기반 또는 OS에서 실행 가능한 응용 프로그램 형태로 제공될 수 있다. 워크플로우 순서도 작성 UI는 멀티 클라우드 관리 방법의 제공 방법에 따라 다양한 형식으로 제공될 수 있다. 예를 들어, 웹 기반으로 제공되는 경우 웹 브라우저 응용 프로그램(예: 크롬, 파이어폭스, 익스플로러, 사파리)을 통해 멀티 클라우드 관리 방법이 제공될 수 있다. 이 경우, 워크플로우 순서도 작성 UI는, 멀티 클라우드 관리 방법이 제공되는 웹 페이지에서 시각적으로 제공될 수 있다. 워크플로우 순서도 작성 UI는, 편집 UI와 상태 UI를 포함할 수 있다. 편집 UI는 노드의 추가, 제거 및 연결 관계를 편집할 수 있는 사용자 입력을 수신할 수 있는 편집 아이콘을 포함하는 영역일 수 있다. 상태 UI는, 현재 작성된 워크플로우 순서도를 시각적으로 확인할 수 있는 영역일 수 있다. 도 2을 참조하면, 상태 UI에는 노드들이 선(line)으로 연결되어 시각적으로 표시될 수 있다.
전자 장치(100)는, 노드를 추가할 수 있는 UI를 제공할 수 있다. 제공된 노드 추가 UI를 통해 노드가 추가될 수 있다. 예를 들어, 전자 장치(100)는 편집 UI에 표시된 노드 아이콘이 선택되어 상태 UI로 드래그 앤 드롭(drag and drop)되는 입력에 기반하여, 선택된 노드 아이콘에 대응하는 노드를 상태 UI에 추가하여 표시할 수 있다. 추가된 노드는 상태 UI에 표시된 기존 노드와 자동적으로 연결될 수 있다. 예를 들어, 노드가 추가되는 동시에 추가된 노드는 직전 추가된 노드와 선(line)으로 연결될 수 있다.
경우에 따라서는, 사용자가 노드 사이에 다른 노드를 추가할 수 있다. 사용자는 제공되는 노드 연결 UI를 통해 노드의 연결 관계를 직접 편집할 수 있다. 예를 들어, 전자 장치(100)는 편집 UI에 표시된 노드 연결 UI를 선택하는 입력에 기반하여 노드 연결 편집 모드에 진입할 수 있다. 노드 연결 편집 모드에서, 전자 장치(100)는 제1 노드의 출력 지점과 제2 노드의 입력 지점을 연결하는 입력에 기반하여 제1 노드와 제2 노드를 선으로 연결하여 표시할 수 있다.
일 실시예에서, 전자 장치(100)는 노드를 템플릿(template) 형태로 제공할 수 있다. 템플릿 형태로 제공되는 노드는 자주 사용되는 함수 또는 프로그램의 모음이거나, 사용자가 작성한 노드 중 일부를 저장한 것일 수 있다. 사용자는 노드를 추가할 때, 템플릿으로 저장된 노드를 가져와 추가할 수 있다. 템플릿 형태로 제공되는 다양한 노드들은 편집 UI에 아이콘 형태로 표시될 수 있다. 전자 장치(100)는, 노드들의 기능을 확인할 수 있도록 노드의 라벨을 노드 아이콘에 함께 표시할 수 있다. 노드의 라벨은 사용자가 직접 작성한 것일 수 있고, 노드에 포함된 함수 또는 프로그램의 명칭에 따라 자동적으로 작성된 것일 수 있다.
일 실시예에서, 어떤 노드는 입력 지점과 출력 지점이 복수일 수 있다. 예를 들어, 도 2에 도시된 것과 같이, 분기 노드는 출력 지점이 복수일 수 있다. 분기 노드에 포함된 함수 또는 프로그램의 처리에 따라 제1 출력 지점에 연결된 노드 또는 제2 출력 지점에 연결된 노드로 분기 노드의 처리 결과(예: 변수)가 전달될 수 있다.
일 실시예에서, 전자 장치(100)는 편집 UI에 표시된 노드 삭제 아이콘이 선택된 것에 기반하여 노드 삭제 모드에 진입할 수 있다. 이 모드에서 전자 장치(100)는, 상태 UI에 표시된 노드를 선택하는 것에 기반하여, 선택된 노드를 삭제할 수 있다. 노드 삭제시 사용자의 잘못된 선택을 방지하기 위하여 선택된 노드의 삭제를 확인하는 팝업(pop-up)을 표시할 수 있다.
일 실시예에서 편집 UI에는 되돌리기 아이콘이 표시될 수 있다. 전자 장치(100)는, 되돌리기 아이콘의 선택에 기반하여 노드의 편집(예: 노드의 추가, 노드의 연결 관계 변경, 노드의 삭제)이 수행되기 전으로 상태 UI에 표시된 워크플로우 순서도를 되돌릴 수 있다.
일 실시예에서, 노드는 계층적으로 구성될 수 있다. 전자 장치(100)는, 상태 UI에 표시된 노드를 선택하는 입력에 기반하여, 해당 노드에 포함된 워크플로우를 상태 UI에 표시할 수 있다. 이 때, 선택된 노드를 포함하는 워크플로우의 순서도를 표시하는 제1 상태 UI에서 선택된 노드에 포함된 워크플로우의 순서도를 표시하는 제2 상태 UI로 화면이 새로고침되어 표시될 수 있다. 경우에 따라서는, 제1 상태 UI와 제2 상태 UI가 하나의 화면에 분할되어 표시될 수 있다.
일 실시예에 따르면, 전자 장치(100)는 프로세서(110)의 제어 하에 적어도 하나의 노드(node)로 구성된 워크플로우의 순서도(flowchart) 작성을 위한 사용자 인터페이스(user interface)를 제공하며, 사용자 입력에 대응하여 사용자 인터페이스(user interface) 상에 적어도 하나의 노드에 대해 추가, 제거 또는 연결 중 적어도 어느 하나의 동작을 수행할 수 있다. 적어도 하나의 노드는 적어도 하나의 프로그램 또는 함수 중 적어도 어느 하나를 포함할 수 있다.
일 실시예에 따르면, 프로세서(110)는 제 1 영역 상에 표시된 노드 아이콘이 선택되어 제 2 영역으로 드래그 앤 드롭(drag and drop)되는 입력에 기반하여, 선택된 노드 아이콘에 대응하는 노드를 제 2 영역 상에 추가하여 표시하며, 추가된 노드를 제 2 영역에 표시된 기존 노드와 자동적으로 연결시킬 수 있다.
일 실시예에 따르면, 프로세서(110)는 노드의 템플릿(template)을 표시하며, 노드의 템플릿은 사용자에 의해 자주 사용되는 함수 또는 프로그램을 포함하는 노드 및 사용자가 저장한 노드 중 적어도 하나를 포함할 수 있다.
도 3은 전자 장치가 단일 프로그램을 이용하여 이종 개발 언어의 실행을 지원하는 방법을 설명하기 위한 도면이다.
워크플로우에 포함된 프로그램들은 다양한 개발 언어(프로그래밍 언어)로 작성될 수 있다. 워크플로우에 포함된 프로그램은 단일한 개발 언어로 작성될 수도 있지만, 서로 다른 개발 언어로 작성될 수 있다. 이 경우, 서로 다른 언어로 작성된 프로그램들 사이에 호환성 문제가 발생할 수 있다. 경우에 따라서는, 워크플로우에 포함된 프로그램들을 개별적으로 컴파일(compile) 하거나 인터프리팅(interpreting)하는 과정을 수행해야 할 수 있다.
본 문서의 다양한 실시예들에 따른 전자 장치(예: 도 1의 전자 장치(100))는, 워크플로우에 포함된 서로 다른 개발 언어로 작성된 프로그램(또는 특정 기능을 수행하는 함수)들을 단일 프로그램에서 실행할 수 있는 스크립트 엔진(script engine)을 포함할 수 있다. 전자 장치(100)는, 별도의 응용 프로그램 또는 데이터 셋 변환 장치 없이도 한 번의 태스크(task)에 서로 다른 언어로 작성된 프로그램을 모두 실행할 수 있다. 전자 장치(100)는 프로세서(110)를 이용하여 워크플로우에 포함된 프로그램을 저장하고 관리할 수 있다.
일 실시예에 따르면, 전자 장치(100)는, 프로세서(110)의 제어 하에, 제 1 함수 및 제 2 함수를 포함하는 워크플로우가 실행될 때, 제 1 함수의 출력 데이터를 변환하여 제 2 함수의 입력 데이터로 전달할 수 있다. 제 1 함수는 제 1 프로그래밍 언어로 작성될 수 있으며, 제 2 함수는 제 2 프로그래밍 언어로 작성될 수 있다. 프로그래밍 언어는 각각의 언어 별로 별도의 데이터 셋 구성 방식을 포함할 수 있다. 예를 들어 스파크(Spark)는 RDD 또는 스파크 데이터 프레임(Spark Data frame)을 이용하여 데이터 셋을 구성하고, 파이썬(Python)은 판다스(Pandas) 또는 넘파이(NumPy)등을 이용하여 데이터 셋을 구성할 수 있다. 이 과정에서 이종 언어 함수 간 데이터 전달을 위해서는 데이터 셋을 변환하는 과정이 필요할 수 있다.
동작 310에서, 전자 장치(100)는, 프로세서(110)의 제어 하에, 제 1 함수의 출력 데이터(예: 변수)를 제 2 프로그래밍 언어에서 사용 가능한 데이터 셋으로 변환시킬 수 있다.
동작 320에서, 전자 장치(100)는 프로세서(110)의 제어 하에, 변환된 데이터 셋을 제 2 함수의 입력 데이터로 전송할 수 있다.
동작 330에서, 전자 장치(100)는 프로세서(110)의 제어 하에, 입력 데이터를 제 2 함수에 포함된 명령어에 따라 처리할 수 있다.
전자 장치(100)는 프로세서(110)의 제어 하에, 제 1 함수의 출력 데이터를 제 2 함수의 프로그래밍 언어에서 처리될 수 있는 형식으로 제공할 수 있다.
본 문서에 개시된 다양한 실시예에 따른 전자 장치(100)는 프로세서(110)의 제어 하에, 서로 다른 언어로 작성된 프로그램들이 호환 가능하도록 연결시켜 그 프로그램들을 포함하는 워크플로우가 수행될 수 있도록 할 수 있다. 따라서, 사용자는 서로 다른 프로그래밍 언어로 작성된 프로그램을 연계시키기 위해 프로그래밍 언어를 습득할 필요가 없고, 복수의 사용자들이 서로 다른 프로그래밍 언어로 프로그램을 작성하더라도 협업하여 하나의 워크플로우를 구성할 수 있다. 여기서는 2개의 함수 및 2개의 프로그래밍 언어를 가정하여 설명하지만, 함수 및 프로그래밍 언어의 수는 이것으로 한정되는 것은 아니다.
일 실시예에 따르면, 전자 장치(100)는 스크립트 엔진(script engine)을 이용하여 이종의 언어를 하나의 프로그램 상에서 실행하는 환경을 사용자에게 제공할 수 있다. 스크립트 엔진(script engine)은 워크플로우 노드 상에서 작성된 언어를 실행하는 프로그램을 의미할 수 있다.
전자 장치(100)는 프로세서(110)의 제어 하에, 각각의 개발 언어(예: 제 1 프로그래밍 언어 및 제 2 프로그래밍 언어) 실행 시 각각의 개발 언어에 대응하는 스크립트 엔진을 제공할 수 있다. 전자 장치(100)는 개별 언어 실행 시 개별 언어 실행 환경에 맞도록 각각의 개발 언어에 대응하는 스크립트 엔진을 제공하여 실행되는 프로그램이 이종 언어로 인해 오류가 발생하는 것을 방지할 수 있다.
일 실시예에서, 전자 장치(100)는 프로세서(110)의 제어 하에, 워크 플로우의 프로그램 또는 노드 사이에서 전달되는 데이터를 출력할 수 있다. 사용자는 전달되는 데이터를 확인하여 디버깅 작업을 수행하거나, 전체 시스템을 개선하는데 활용할 수 있다. 데이터는 GUI(graphic user interface) 기반으로 출력될 수 있다. 예를 들어, 본 문서에 개시된 다양한 실시예에 따른 멀티 클라우드 관리 방법은, 웹 기반 또는 OS에서 실행 가능한 응용 프로그램 형태로 제공될 수 있다. 프로그램 또는 노드 사이에서 전달되는 데이터(예: 변수)는 멀티 클라우드 관리 방법에서 제공되는 형태(웹 기반 또는 응용 프로그램)에서 시각적으로 확인할 수 있는 방법으로 출력될 수 있다.
일 실시예에서, 프로세서(110)는 제 1 프로그래밍 언어로 작성된 제 1 함수 및 제 2 프로그래밍 언어로 작성된 제 2 함수를 포함하는 워크플로우가 실행됨에 대응하여 제 1 함수의 출력 데이터를 상기 제 2 프로그래밍 언어에서 사용 가능한 데이터 셋으로 변환시키고, 변환된 데이터 셋을 상기 제 2 함수의 입력 데이터로 전송하며, 제 1 함수의 출력 데이터 및 제 2 함수의 입력 데이터를 GUI(graphic user interface)를 형태로 표시할 수 있다.
일 실시예에서, 프로세서(110)는 스크립트 엔진을 이용하여 실행되는 프로그램 언어를 실행 시킬 수 있다. 프로세서(110)는 프로그램 언어의 실행에 필요한 정보를 전달할 수 있다. 프로그램 언어의 실행에 필요한 정보는 문자열, 숫자, 파일 및 JSON/XML과 같은 구조화된 정보를 포함할 수 있다.
프로세서(110)는 스크립트 엔진을 이용하여 사용자에게 동일한 인터페이스를 제공할 수 있다. 프로세서(110)는 이종 언어의 실행 환경에서 발생하는 출력 또는 에러를 일관되게 처리할 수 있도록 동일한 인터페이스를 제공할 수 있다.
도 4는 본 개시의 일 실시예에 따른 전자 장치(예: 도 1의 전자 장치(100))가 프로세서(110)를 이용하여 자동으로 데이터를 직렬화하는 방법을 나타내는 순서도이다.
데이터 직렬화는, 데이터를 메모리(130) 또는 네트워크 통신에 사용할 수 있는 형식으로 변환하는 동작일 수 있다. . 사용할 수 있는 데이터 형식이란, 직접 접근이 가능한 형태의 데이터로 이해될 수 있다. 예를 들어, 문자 데이터를 바이트(byte) 형태로 변환하는 것을 데이터 직렬화의 일종이라 할 수 있다. 데이터 직렬화의 예로 프로토콜 버퍼(protocol buffer)를 들 수 있다.
프로토콜 버퍼(protocol buffer)는 구조화된 데이터를 직렬화하는 프로그램을 의미할 수 있다. 프로토콜 버퍼(protocol buffer)는 속성 값(예: username)을 하나의 태그(예: 숫자)로 변경하여 데이터를 작은 크기로 보관할 수 있다. 이 때 직렬화는 속성 값(예: username)을 하나의 태그(예: 숫자)로 변경하는 과정을 의미할 수 있다. 프로토콜 버퍼(protocol buffer)는 다른 idl(interface definition language)과 비교하여 상대적으로 더 적은 용량으로 데이터를 저장할 수 있어 압축률이 좋고 처리 속도가 빠를 수 있다.
프로토콜 버퍼(protocol buffer)는 복수의 프로그래밍 언어를 지원하여 여러 프로그래밍 언어로 작성된 데이터를 압축할 수 있다. 프로토콜 버퍼는 다양한 프로그래밍 언어를 지원할 수 있도록 특정 프로그래밍 언어에 대한 종속성이 없는 형태로 데이터 타입을 정의할 수 있다. 프로토콜 버퍼(protocol buffer)는 데이터 타입을 개별적인 프로그래밍 언어의 실행 환경에 맞춰 각각 컴파일(compile)을 실행하고, 사용자 응답에 대응하여 컴파일 된 각각의 파일을 실행시킬 수 있다. 컴파일(compile)은 어떤 프로그래밍 언어의 코드를 다른 프로그래밍 언어로 바꿔주거나 기계어로 변환하는 동작을 의미할 수 있다. 이 과정에서 개별적인 실행 환경에 맞춰 사용자가 컴파일된 파일을 개별적으로 실행하고, 이후 실행된 파일들을 통합하는 과정이 필요할 수 있다.
본 문서에 따른 전자 장치(100)는 사용자의 개입 없이도 자동으로 개별적인 프로그래밍 언어의 실행 환경에 맞춰 데이터 타입에 대한 컴파일(compile)을 실행하고, 컴파일된 파일을 이용하여 프로그램을 실행시킬 수 있다. 또한, 전자 장치(100)는 컴파일을 실행하기 전에 이미 컴파일된 파일이 존재함을 확인하여 컴파일된 파일을 이용하여 프로그램을 실행시킬 수 있다. 워크플로우 실행 시, 데이터 타입에 대한 컴파일을 자동적으로 수행하거나, 컴파일된 파일을 이용하는 기능은 직렬화 모듈에 의해 이루어질 수 있다.
본 문서에 개시된 전자 장치(100)는, 워크플로우에 직렬화 모듈을 포함할 수 있다. 예를 들어, 워크플로우에 포함된 노드 중 적어도 하나는 직렬화 모듈을 포함할 수 있다. 워크플로우 실행 시, 워크플로우에 저장된 직렬화 모듈의 유무를 확인하고, 직렬화 모듈이 존재하는 경우 데이터 타입을 컴파일하여 워크플로우 실행 시 이를 활용하거나, 이미 컴파일된 데이터 타입을 워크플로우 실행 시 활용할 수 있다.
예를 들어, 전자 장치(100)는 프로토(proto)타입의 파일을 자바(java)형식으로 컴파일하고, 컴파일 된 파일을 이용하여 클래스(class)파일을 생성할 수 있다. 클래스(class)는 프로그래밍에서 특정 객체(object)를 생성하기 위해 변수 및 방법을 정의하는 방식을 의미할 수 있다. 클래스 파일은 자바(java)형식으로 된 파일을 컴파일하여 생성될 수 있다.
전자 장치는, 일반적으로, 프로토 파일을 자바 형식으로 컴파일 하고, 자바 형식으로 된 파일을 다시 컴파일하여 클래스 파일을 생성할 수 있다. 이 과정에서 컴파일을 진행할 때 마다 과정이 중단되고, 사용자에 의해 다시 컴파일을 진행시킬 것이 요구되므로 사용자는 불편함을 느낄 수 있고, 전체적인 파일의 처리 과정도 느려지는 단점이 있다.
한편, 본 문서의 다양한 실시예들에 따른 전자 장치(100)는 컴파일 후 컴파일 된 파일을 이용하는 과정을 자동화시켜 컴파일로 인해 프로그램 실행 과정에서 중단이 되지 않고 빠르게 프로그램을 실행시킬 수 있다.
어떤 실시예에서는, 스크립트 엔진(도 2의 설명 참조)에서 직렬화 모듈을 인식하여 데이터 직렬화를 위한 동작들이 수행될 수 있다.
일 실시예에 따르면, 동작 410에서, 전자 장치(100)는, 프로세서(110)의 제어 하에, 메모리(130) 또는 네트워크 통신에 사용할 수 있는 형식으로 데이터를 변환하기 위한 파일이 존재함을 확인하고, 변환된 파일을 이용하여 프로그램을 실행할 수 있다.
동작 420에서, 전자 장치(100)는, 프로세서(110)의 제어 하에, 직렬화 모듈을 이용하여 데이터 또는 파일을 메모리나 네트워크 통신에 사용할 수 있는 형식으로 변환할 수도 있다.
동작 430에서, 전자 장치(100)는, 프로세서(110)의 제어 하에, 데이터가 변환됨에 대응하여 변환된 데이터를 이용하여 프로그램을 실행할 수 있다.
여기서 직렬화 모듈은 프로그래밍 언어의 실행 환경에 기반하여 데이터를 메모리(130) 또는 네트워크 통신에 사용할 수 있는 형식으로 변환하고, 사용자 입력에 관계없이 변환된 데이터를 이용하여 프로그램을 실행시킬 수 있다.
도 5는 본 개시의 일 실시예에 따른 전자 장치(예: 도 1의 전자 장치(100))가 워크플로우 실행 환경에서 실행에 필요한 프로그램 실행 정보를 관리하는 방법을 나타내는 순서도이다.
워크플로우는 일정한 실행 단위를 특정한 머신(machine)에서 실행하기 위해 사용자가 정의한 프로그램을 의미할 수 있다. 워크플로우는 단일 기능을 제공하기 위해서 복수의 노드로 구성될 수 있다. 노드는 적어도 하나의 프로그램(또는 함수)를 포함할 수 있다. 복수의 노드는 워크플로우를 이용하여 사용자가 목적하는 기능을 달성하기 위해 복수의 노드 간에 실행에 필요한 정보를 공유할 수 있다. 이하에서는, 노드 간의 실행에 필요한 정보를 공유하는 관리 체계를 프로그램 실행 정보라 정의하도록 한다. 전자 장치(100)는 프로그램 실행 정보를 관리하여 정보 공유 체계를 유지하고, 머신의 실행에 필요한 정보를 전송할 수 있다. 머신의 실행에 필요한 정보는 예를 들어, 선행 노드의 실행 결과에 따른 변수 및 후행 노드의 실행을 위한 변수를 포함할 수 있다.
일 실시예에 따르면, 동작 510에서, 전자 장치(100)는, 프로세서(110)의 제어 하에, 스크립트 엔진이 지원하는 프로그래밍 언어의 변수 전달 메커니즘에 기반하여 각각의 노드에 프로그램 실행 정보를 전달할 수 있다. 변수 전달 메커니즘은 프로그래밍 언어의 전달 방식을 의미할 수 있으며, 프로그래밍 언어에 따라 달라질 수 있다. 예를 들어, 변수 전달 메커니즘은 서로 다른 프로그래밍 언어로 작성된 프로그램들 사이에서의 변수 전달을 고려하여 구현될 수 있다.
전자 장치(100)는 프로세서(110)의 제어 하에, 프로그램 실행 정보에 대해서 등록, 수정 또는 삭제 중 적어도 하나 이상을 수행할 수 있는 관리 기능을 제공할 수 있다. 전자 장치(100)는 동작 520에서, 프로세서(110)의 제어 하에, 프로그램 실행 정보가 변경됨에 대응하여 변경된 실행 정보를 워크플로우 상의 데이터베이스(DB)로 저장할 수 있다. 워크플로우 상의 데이터베이스(DB)는 파일, 데이터 또는 메모리(130) 중 적어도 어느 하나를 기반으로 하는 정보 관리 체계를 의미할 수 있다.
일 실시예에 따르면, 전자 장치(100)는 프로세서(110)의 제어 하에, 동작 530에서, 워크플로우 상의 데이터베이스(DB)로 저장된 실행 정보에 대해 사용자 검색 기능을 제공할 수 있다. 예를 들어, 사용자가 특정 데이터를 검색하면 프로세서(110)는, 그 데이터가 어떤 노드에서 처리된 데이터인지 혹은 어떤 노드에서 그 데이터를 이용하는지 표시할 수 있다.
프로그램 실행 정보를 관리함으로써, 사용자는 워크플로우 실행 과정에서 오류가 발생할 때, 오류가 발생한 원인을 빠르게 찾아낼 수 있다. 또한 사용자는 노드를 확장하거나 분기시키는 방식으로 노드를 추가할 때, 프로그램 실행 정보를 참조할 수 있다.
일 실시예에 따르면 전자 장치(100)는 프로세서(110)의 제어 하에, 제 1 프로그래밍 언어로 작성된 제 1 함수를 포함하는 제 1 노드 및 제 2 프로그래밍 언어로 작성된 제 2 함수를 포함하는 제 2 노드를 포함하는 워크플로우가 실행됨에 대응하여 제 1 노드 및 제 2 노드 사이에서 워크플로우의 실행에 필요한 정보를 공유하도록 제어할 수 있다.
전자 장치(100)는 프로세서(110)의 제어 하에, 제 1 노드의 태그과 대응되는 태그를 포함하는 머신에서 제 1 노드의 실행을 처리하고, 제 2 노드의 태그와 대응되는 태그를 포함하는 머신에서 제 2 노드의 실행을 처리하도록 제어할 수 있다.
일 실시예에 따르면, 제 1 노드의 태그와 대응되는 태그를 포함하는 머신이 복수인 경우, 전자 장치(100)는 프로세서(110)의 제어 하에, 제 1 노드의 태그와 대응되는 태그를 포함하는 복수의 머신들의 상태 정보에 기반하여 제 1 노드의 실행을 처리할 머신을 선택할 수 있다. 여기서 상태 정보는, 머신의 사양 정보, 점유율 정보를 포함할 수 있다.
일 실시예에 따르면, 제 1 노드의 태그와 대응되는 태그를 포함하는 머신이 복수인 경우, 전자 장치(100)는 프로세서(110)의 제어 하에, 제 1 노드에 포함된 제 1 함수의 가중치(weight)에 기반하여 제 1 노드의 실행을 처리할 머신을 선택할 수 있다. 가중치는 제 1 함수에 포함된 명령어 처리에 필요한 컴퓨팅 자원을 수치화한 데이터를 의미할 수 있다.
일 실시예에서, 전자 장치(100)는 프로세서(110)의 제어 하에, 워크플로우의 실행에 필요한 정보를 데이터베이스(DB)로 저장하고, 데이터베이스(DB)에 대해 사용자 검색 기능을 제공할 수 있다. 데이터베이스는 파일, 데이터 또는 메모리(130) 중 적어도 어느 하나에 기반하여 저장 및 제공될 수 있다.
도 6은 본 개시의 일 실시예에 따른 전자 장치(예: 도 1의 전자 장치(100))가 워크플로우 실행 환경에서 개별 노드를 실행할 머신을 지정하여 워크플로우를 실행하는 방법을 나타내는 순서도이다.
일 실시예에 따르면, 각각의 머신은 사전에 설정된 라벨 정보를 포함할 수 있다.
일 실시예에서, 전자 장치(100)는, 프로세서(110)의 제어 하에, 동작 610에서, 이러한 라벨 정보에 기반하여 각각의 노드에 대응하는 머신을 결정할 수 있다. 머신은 워크플로우 노드에 작성된 언어를 실행하는 장치를 의미할 수 있다. 머신은 예를 들어, 클라우드 서비스에 포함된 클라우드 컴퓨터일 수 있다.
일 실시예에 따르면, 전자 장치(100)는 프로세서(110)의 제어 하에, 동작 620에서, 머신을 지정하여 워크플로우를 실행하고, 워크플로우에 포함된 인스트럭션들을 지정된 머신에 업로드하고 업로드 결과를 수신할 수 있다.
워크플로우는 사용자에 의해 지정된 특정한 실행 단위(예: 노드)를 사용자에 의해 지정된 머신에서 실행할 수 있도록 사용자에 의해 정의된 프로그램을 의미할 수 있다. 워크플로우는 복수의 노드(node)들로 구성될 수 있다. 각각의 노드는 특정 머신을 통해 실행될 수 있다.
각각의 노드에서 실행할 언어는 각각의 노드에 지정된 라벨 정보를 기반으로 결정될 수 있다. 라벨 정보는 노드와 실행 언어 간 태깅(tagging) 정보를 의미할 수 있다. 전자 장치(100)는 프로세서(110)의 제어 하에, 라벨 정보를 이용하여 각각의 노드에 태그(tag)된 실행 언어를 확인하고, 지정된 머신을 이용하여 실행시킬 수 있다.
일 실시예에서, 전자 장치(100)는 프로세서(110)의 제어 하에, 노드의 태그에 대응하는 머신을 선택할 때, 머신의 자원을 확인하여 노드가 실행될 머신을 적응적으로 선택할 수 있다. 여기서 머신의 자원은 컴퓨팅 자원(예: 메모리(130), CPU), 스토리지 자원 및 네트워크 자원을 포함할 수 있다. 예를 들어, 노드의 태그에 대응하는 머신이 복수인 경우, 전자 장치(100)는 프로세서(110)의 제어 하에, 해당 노드에 포함된 프로그램 또는 함수의 가중치(weight)를 확인할 수 있다. 가중치는 노드에 포함된 프로그램 또는 함수를 실행할 때 필요한 자원의 총량일 수 있다. 예를 들어, 가중치가 높은 노드는 가중치가 낮은 노드에 비해 상대적으로 높은 컴퓨팅 자원 또는 네트워크 자원을 요구할 수 있다. 전자 장치(100)는, 노드의 가중치를 고려하여 머신을 선택할 수 있다. 예를 들어, 가중치가 높은 노드를 원활하게 실행할 수 있도록 상대적으로 자원의 여유가 있는 머신을 선택할 수 있다.
일 실시예에 따르면, 전자 장치(100)는 프로세서(110)의 제어 하에,노드의 태그에 대응하는 머신을 선택할 때, 머신의 점유율을 고려하여 노드가 실행될 머신을 적응적으로 선택할 수 있다. 머신의 점유율은 머신 내에서 사용되는 메모리(130)의 양을 의미할 수 있다. 전자 장치(100)는 점유율이 상대적으로 높은 머신과 비교하여 점유율이 상대적으로 낮은 머신을 우선적으로 지정하여 노드를 실행시킬 수 있다.
일 실시예에 따르면, 전자 장치(100)는 프로세서(110)의 제어 하에, 원격 접속 정보를 기반으로 결정된 머신을 원격으로 접속하여 실행시킬 수 있다. 원격 접속 정보는 예를 들어, 아이디(ID)/ 비밀번호(password), 키 페어(key pair) 또는 로컬 머신에 관한 정보 중 적어도 어느 하나를 포함할 수 있다. 여기서 키 페어(key pair)를 사용하는 방식은 key pair 파일을 갖고 있는 사용자가 아이디(ID)와 비밀번호(password) 없이 보안이 유지되는 환경에서 네트워크에 접속할 수 있는 방식을 의미할 수 있다.
전자 장치(100)는 프로세서(110)의 제어 하에, 동일한 라벨 정보를 포함하는 복수의 머신들이 확인됨에 대응하여 순차적으로 노드를 실행하거나 또는 병렬적으로 노드를 실행시킬 수 있다. 병렬적인 노드 실행은 복수의 머신에서 노드를 각각 처리하는 것을 의미할 수 있다.
전자 장치(100)는 프로세서(110)의 제어 하에, 동작 630에서, 각각의 머신에서 워크플로우 노드에 작성된 언어를 실행시키고, 워크플로우, 워크플로우 노드 및 머신에 실행 정보를 저장할 수 있다. 전자 장치(100)는 프로세서(110)의 제어 하에, 동작 640에서, 저장된 실행 정보에 대한 검색 기능을 제공할 수 있다.
도 7은 본 개시의 일 실시예에 따른 전자 장치(예: 도 1의 전자 장치(100))가 다른 기종의 클라우드 자원과 소프트웨어 실행 모듈을 통합하여 관리하는 방법을 설명하기 위한 도면이다.
전자 장치는 일반적으로 서로 다른 기종의 클라우드 상에서 서비스를 제공하기 위해 서로 다른 기종의 클라우드 상에서 만들어진 자원이 필요할 수 있다. 또한, 전자 장치는 일반적으로 서로 다른 기종의 클라우드 상에서 서비스를 제공하기 위해 서로 다른 기종의 클라우드 상에 설치된 소프트웨어가 필요할 수 있다.
본 문서에 따른 전자 장치(100)는 서비스를 실행시키기 위한 자원을 생성하기 위한 메커니즘(mechanism) 및 서비스를 실행시키기 위한 소프트웨어를 설치하기 위한 메커니즘(mechanism)을 갖는 실행 매커니즘(mechanism)을 포함할 수 있다. 전자 장치(100)는 프로세서(110)의 제어 하에, 실행 매커니즘(mechanism)을 이용하여 카탈로그(템플릿) 방식으로 클라우드 생성을 지원할 수 있다. 카탈로그는 클라우드를 기반으로 서비스를 제공하기 위해 필요한 자원 및 소프트웨어의 묶음을 의미할 수 있다. 카탈로그 템플릿은 카탈로그를 구성하는 자원 및 소프트웨어 묶음의 구성 단위를 의미할 수 있다.
일 실시예에 따르면, 전자 장치(100)는 프로세서(110)의 제어 하에,클라우드 자원을 관리할 수 있다. 클라우드 자원은 예를 들어, 컴퓨팅 자원(예: 메모리(130), CPU), 스토리지 자원 및 네트워크 자원을 포함할 수 있다. 전자 장치(100)는 클라우드에서 생성될 자원에 대해 다양한 구조(예: JSON, YAML, 데이터 베이스 테이블 구조)를 이용해 계층적으로 관리할 수 있다.
각각의 클라우드 상에서 사용되는 자원에 대한 정보는 자원의 명세(specification)을 정의하는 표준 사양 정보 및 사용할 클라우드별로 다르게 정의되는 차별화된 속성 정보를 포함할 수 있다.
일 실시예에서, 전자 장치(100)는 프로세서(110)의 제어 하에, 사용자가 클라우드를 생성할 때, 클라우드 자원 정보를 입력 받을 수 있는 UI를 제공할 수 있다. 사용자가 입력한 클라우드 자원 정보는 앞서 설명한 다양한 구조(예: JSON, YAML, 데이터 베이스 테이블 구조)로 저장되어 관리될 수 있다. 이 때, 전자 장치(100)는 프로세서(110)의 제어 하에, 사용자가 선택한 클라우드 종류(예: 클라우드 프로바이더 종류)에 따라 클라우드 자원 정보를 입력 받을 수 있는 UI를 다르게 제공할 수 있다. 앞서 설명한 것과 같이, 클라우드 자원은 클라우드 별로 다르게 정의되는 차별화된 속성 정보를 포함할 수 있다. 이 자원 정보는 사용자가 선택한 클라우드 종류에 따라 다를 수 있다. 전자 장치(100)는 프로세서(110)의 제어 하에, 동작 710에서, 선택된 클라우드의 차별화된 속성 정보를 입력 받을 수 있도록 클라우드 자원 정보를 입력 받을 수 있는 UI를 표시할 수 있다. 어떤 실시예에서는, 차별화된 속성 정보를 입력 받을 수 있는 UI를 일반적인 클라우드 자원 정보를 입력 받을 수 있는 UI와 시각적으로 구분될 수 있도록 표시할 수 있다. 예를 들어, 색상, 글꼴, 형태(이탤릭, 굵음 표시) 등을 변경하여 표시할 수 있다.
일 실시예에 따르면, 전자 장치(100)는 소프트웨어의 설치 및 실행을 관리할 수 있다. 전자 장치(100)는 프로세서(110)의 제어 하에,동작 720에서, 소프트웨어에 설정된 라벨과 자원에 설정된 라벨을 비교하여 실행 스크립트에 설정된 라벨을 포함하는 자원이 노드 상에서 실행될 수 있도록 제어할 수 있다. 소프트웨어의 라벨은 소프트웨어가 위치하는 자원의 유형에 기반하여 설정될 수 있다.
전자 장치(100)는 프로세서(110)의 제어 하에,동작 730에서, 자원의 상태 정보에 기반하여 워크플로우를 이용해 소프트웨어를 실행시킬 수 있다.
전자 장치(100)는 프로세서(110)의 제어 하에,동작 740에서, 각각의 클라우드 상에서 사용되는 자원에 대한 정보를 기반으로 클라우드의 자원 상태가 변경되는 것에 대응하여 사용자에게 알림을 제공할 수 있다.
일 실시예에 따르면, 전자 장치(100)는 프로세서(110)의 제어 하에,클라우드 자원 및 소프트웨어를 통해서 관리되는 카탈로그 정보(예: 클라우드 서비스)를 실행할 수 있다. 전자 장치(100)는 카탈로그 정보의 실행에 대응하여 생성되는 자원의 변화를 측정하고, 생성되는 자원에 대응하여 실행되는 워크플로우를 변경할 수 있다. 예를 들어, 전자 장치(100)는 클라우드 시작 중에는 제1워크플로우를 실행하고, 제1워크플로우를 실행함에 대응하여 사용되는 자원이 변화를 측정하고, 사용되는 자원의 양이 기 설정된 제1 수준으로 변경됨에 대응하여 제2워크플로우를 실행할 수 있다. 전자 장치(100)는 도 7과 같이순차적으로 또는 동시에 복수의 워크플로우들을 실행 및 관리할 수 있다.
일 실시예에서, 전자 장치(100)는 프로세서(110)의 제어 하에, 클라우드 서비스 생성을 위한 유저 인터페이스(user interface)를 제공할 수 있다. 여기서 유저 인터페이스는, 클라우드 자원 정보를 입력 받기 위한 입력 인터페이스 및 적어도 하나의 프로그램 또는 함수를 포함할 수 있다. 또한 유저 인터페이스는, 클라우드 서비스 상에서 실행되는 워크플로우(workflow)의 라이프사이클 정보를 입력 받기 위한 라이프사이클 인터페이스를 포함할 수 있다.
전자 장치(100)는 프로세서(110)의 제어 하에, 라이프사이클 정보와 대응되는 입력이 수신됨에 대응하여, 라이프사이클 정보를 포함하는 워크플로우가 실행되도록 제어할 수 있다.
일 실시예에서, 전자 장치(100)는 프로세서(110)의 제어 하에,입력 인터페이스를 통해 입력된 클라우드 자원 정보를 JSON, YAML 또는 데이터 베이스 테이블 구조 중 적어도 어느 하나를 이용하여 저장할 수 있다. 입력 인터페이스는, 복수의 클라우드 서비스의 종류를 선택할 수 있는 인터페이스를 포함할 수 있다. 전자 장치(100)는 프로세서(110)의 제어 하에,클라우드 서비스의 종류 선택에 기반하여 선택된 클라우드 서비스에서 요구하는 클라우드 자원 정보를 입력 받을 수 있도록 선택된 클라우드 서비스 종류마다 다른 입력 인터페이스를 제공할 수 있다.
일 실시예에서, 전자 장치(100)는 프로세서(110)의 제어 하에, 선택된 클라우드 서비스에서 다른 클라우드 서비스에서 요구하지 않는 특정한 클라우드 자원 정보가 존재하는 경우, 특정한 클라우드 자원 정보가 다른 클라우드 자원 정보와 시각적으로 다르게 표시되도록 입력 인터페이스를 제공할 수 있다.
일 실시예에서, 전자 장치(100)는 프로세서(110)의 제어 하에, 라이프사이클 정보의 변경에 기반하여, 변경된 라이프사이클 정보를 포함하는 워크플로우가 실행되도록 제어할 수 있다.
도 8은 본 개시의 전자 장치(예: 도 1의 전자 장치(100))가 서로 다른 종류(이종)의 클라우드 환경을 제어하는 방법을 나타내는 순서도이다.
전자 장치(100)는 프로세서(110)의 제어 하에, 이종 클라우드의 제어를 위한 클라우드 자원에 대한 표준화 방식을 포함할 수 있다. 전자 장치(100)는 클라우드 자원에 대해 표준화된 속성과 비표준화된 속성으로 분류하여 관리할 수 있다.
일 실시예에 따르면, 전자 장치(100)는 프로세서(110)의 제어 하에,동작 810에서, 클라우드 자원의 유형에 따라 애플리케이션 프로그래밍 인터페이스(API: application programming interface) 형식을 이용하여 자원을 제어할 수 있다. 애플리케이션 프로그래밍 인터페이스(API)는 애플리케이션(예: 클라우드 서비스, 프로그램)을 구동하는 서버 또는 애플리케이션이 연결된 서버에 어떠한 방식으로 정보를 요청할 지, 그러한 요청을 보냈을 때 어떠한 형식으로 데이터를 전달받을 수 있는지 정리한 규격을 의미할 수 있다.
전자 장치(100)는 프로세서(110)의 제어 하에,동작 820에서, 애플리케이션 프로그래밍 인터페이스에 따라 클라우드 자원의 상태(예: 생성, 삭제 또는 변경 중 적어도 어느 하나)를 변경할 수 있다. 전자 장치(100)는 프로세서(110)의 제어 하에, 동작 830에서, 사용자에게 클라우드 자원의 상태가 변경되었음을 지시하는 정보를 제공할 수 있다.
도 9는 본 개시의 일 실시예에 따른 전자 장치(예: 도 1의 전자 장치(100))가 클라우드에서 동작하는 카탈로그의 라이프사이클을 관리하는 방법을 나타내는 순서도이다.
카탈로그는 클라우드를 기반으로 서비스를 제공하기 위해 필요한 자원 및 소프트웨어의 묶음을 의미할 수 있다. 라이프사이클은 카탈로그 인스턴스 및 카탈로그 인스턴스를 구성하는 카탈로그 인스턴스 템플릿의 상태를 관리하는 기능을 의미할 수 있다. 카탈로그 인스턴스는 카탈로그를 통해서 클라우드에 생성된 서비스의 이름을 의미할 수 있다. 카탈로그 인스턴스 템플릿은 카탈로그 인스턴스에 포함된 카탈로그의 자원 및 소프트웨어의 묶음을 의미할 수 있다.
일 실시예에서, 카탈로그는 상태 정보를 포함할 수 있다. 상태 정보는 카탈로그 생성시 입력될 수 있고, 카탈로그가 생성된 후 추후에 추가될 수 있다.
일 실시예에 따르면, 전자 장치(100)는 프로세서(110)의 제어 하에,동작 910에서, 카탈로그의 상태 정보를 확인할 수 있다. 전자 장치(100)는 프로세서(110)의 제어 하에, 동작 920에서, 카탈로그의 상태에 기반하여 실행시킬 워크플로우 및 소프트웨어를 설정할 수 있다. 예를 들어, 전자 장치(100)는 프로세서(110)의 제어 하에, 카탈로그 템플릿 단위로 카탈로그의 상태 정보를 확인할 수 있다. 전자 장치(100)는 프로세서(110)의 제어 하에, 카탈로그의 상태 정보와 대응하는 워크플로우 및/또는 소프트웨어를 실행할 수 있다.
어떤 실시예에서, 전자 장치(100)는 프로세서(110)의 제어 하에,카탈로그의 상태 정보가 변경됨에 따라, 그 상태 정보와 대응하는 워크플로우 및/또는 소프트웨어를 실행할 수 있다.
상태 정보는 사용자 정의 방식 또는 시스템 제공 방식으로 나눠서 제공될 수 있다. 전자 장치(100)는 프로세서~ 동작 930에서, 카탈로그의 상태를 포함하는 상태 정보를 이용하여 클라우드 자원 및 소프트웨어를 관리할 수 있다.
도 10은 전자 장치(예: 도 1의 전자 장치(100))가 소프트웨어를 트랜잭션(transaction) 단위로 관리하는 방법을 설명하기 위한 도면이다.
전자 장치(100)는 프로세서(110)의 제어 하에,소프트웨어 실행 시 소프트웨어를 트랜잭션(transaction) 단위로 관리할 수 있다. 트랜잭션(transaction)은 데이터베이스의 상태(예: 삭제, 업데이트, 삽입, 선택 등)를 변경시키기 위해 수행하는 작업의 단위를 의미할 수 있다.
전자 장치(100)는 프로세서(110)의 제어 하에, 동작 1010에서, 실행되는 워크플로우 또는 소프트웨어의 개별 노드를 저장할 수 있다. 전자 장치(100)는 프로세서(110)의 제어 하에,, 동작 1020에서, 실행되는 워크플로우 또는 소프트웨어의 처리 결과에 기반하여 전체적인 트랜잭션(transaction)의 결과를 판단할 수 있다. 예를 들어, 전자 장치(100)는 실행되는 워크플로우 또는 소프트웨어의 처리 결과에 기반하여 트랜잭션(transaction)의 결과를 성공 또는 실패로 결정할 수 있다.이후 전자 장치(100)는 프로세서(110)의 제어 하에, 동작 1030에서, 사용자에게 트랜잭션 결과를 지시하는 정보 또는 알림을 제공할 수 있다.
일 실시예에 따르면, 전자 장치(100)는 프로세서(110)의 제어 하에, 동작 1040에서, 트랜잭션(transaction)이 완료됨에 대응하여 트랜잭션(transaction)의 실행에 사용된 파일들을 삭제할 수 있다.
일 실시예에 따르면, 전자 장치(100)는 프로세서(110)의 제어 하에,적어도 하나의 프로그램 및 함수를 포함하는 워크플로우를 실행하고, 워크플로우 실행의 과정 및 결과를 트랜잭션(transaction) 단위로 저장하고, 워크플로우 실행 결과에 따라 트랜잭션의 실패 또는 성공을 판단하고, 트랜잭션의 성공에 기반하여, 트랜잭션 실행에 부속하는 파일들을 일괄 삭제할 수 있다.
일 실시예에 따르면, 워크플로우는, 적어도 하나의 프로그램 또는 함수로 구성된 적어도 하나의 노드를 포함할 수 있다. 트랜잭션은, 노드의 실행 순서 및 노드의 실행에 따른 데이터 정보를 포함할 수 있다.
일 실시예에 따르면, 전자 장치(100)는 프로세서(110)의 제어 하에, 트랜잭션이 실패로 판단됨에 따라, 문제가 발생한 노드를 출력할 수 있다.
일 실시예에 따르면, 전자 장치(100)는 프로세서(110)의 제어 하에, 디스플레이(미도시) 상에 트랜잭션의 처리 결과를 시각적으로 확인할 수 있는 인터페이스를 제공할 수 있다.
일 실시예에 따르면, 프로세서(110)는, 트랜잭션의 처리 결과를 누적하여 데이터베이스로 메모리(예: 도 1의 메모리(130))에 저장하도록 제어 할 수 있다.

Claims (10)

  1. 전자 장치에 있어서,
    프로세서; 및
    메모리를 포함하며,
    상기 프로세서는
    메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 데이터를 변환하기 위한 파일이 존재함을 확인하고,
    상기 파일이 존재하지 않는 경우, 직렬화 모듈을 이용하여 상기 파일을 생성하고, 상기 생성된 파일을 통해 변환된 데이터를 이용하여 프로그램을 실행하며,
    상기 파일이 존재하는 경우, 직렬화 모듈을 이용하여 상기 파일을 통해 변환된 데이터를 이용하여 프로그램을 실행하며,
    상기 직렬화 모듈은
    프로그래밍 언어의 실행 환경에 기반하여 데이터를 메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 변환하고, 사용자 입력에 관계없이 변환된 데이터를 이용하여 프로그램을 실행시키는 전자 장치.
  2. 제 1항에 있어서,
    상기 프로세서는
    상기 직렬화 모듈을 이용하여
    데이터의 속성값을 하나의 태그 또는 숫자 중 적어도 어느 하나로 변경하는 전자 장치.
  3. 제 1항에 있어서,
    상기 프로세서는
    상기 직렬화 모듈을 이용하여
    제 1 프로그래밍 언어로 작성된 데이터를 기계어로 변환하여 제 1 파일을 생성하고,
    제 2 프로그래밍 언어로 작성된 데이터를 상기 기계어로 변환하여 제 2 파일을 생성하는 전자 장치.
  4. 제 3항에 있어서,
    상기 프로세서는
    상기 제 1 파일 및 상기 제 2 파일을 통합하여 하나의 태스크(task)를 통해 실행시키는 전자 장치.
  5. 제 1항에 있어서,
    상기 프로세서는
    상기 직렬화 모듈의 사용 여부를 지시하는 정보를 포함하는 사용자 인터페이스(user interface)를 웹 기반 또는 운영체제(operation system, OS)에서 실행 가능한 응용 프로그램 형태로 제공하는 전자 장치.
  6. 전자 장치의 멀티 클라우드 관리 방법에 있어서,
    메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 변환된 파일이 존재함을 확인함에 대응하여 상기 변환된 파일을 이용하여 프로그램을 실행하는 동작;
    메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 변환된 파일이 존재하지 않음을 확인함에 대응하여 직렬화 모듈을 이용하여 데이터를 메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 변환하는 동작;
    데이터가 변환됨에 대응하여 변환된 데이터를 이용하여 프로그램을 실행하는 동작을 포함하며,
    상기 직렬화 모듈은
    프로그래밍 언어의 실행 환경에 기반하여 데이터를 메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 변환하고, 사용자 입력에 관계없이 변환된 데이터를 이용하여 프로그램을 실행시키는 방법.
  7. 제 6항에 있어서,
    메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 변환된 파일이 존재하지 않음을 확인함에 대응하여 직렬화 모듈을 이용하여 데이터를 메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 변환하는 동작은
    상기 직렬화 모듈을 이용하여
    데이터의 속성값을 하나의 태그 또는 숫자 중 적어도 어느 하나로 변경하는 동작을 더 포함하는 방법.
  8. 제 6항에 있어서,
    메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 변환된 파일이 존재하지 않음을 확인함에 대응하여 직렬화 모듈을 이용하여 데이터를 메모리 또는 네트워크 통신에 사용할 수 있는 형식으로 변환하는 동작은
    상기 직렬화 모듈을 이용하여
    제 1 프로그래밍 언어로 작성된 데이터를 기계어로 변환하여 제 1 파일을 생성하는 동작;및
    제 2 프로그래밍 언어로 작성된 데이터를 상기 기계어로 변환하여 제 2 파일을 생성하는 동작을 더 포함하는 방법.
  9. 제 8항에 있어서,
    상기 제 1 파일 및 상기 제 2 파일을 통합하여 하나의 태스크(task)를 통해 실행시키는 동작을 더 포함하는 방법.
  10. 제 6항에 있어서,
    상기 직렬화 모듈의 사용 여부를 지시하는 정보를 포함하는 사용자 인터페이스(user interface)를 웹 기반 또는 운영체제(operation system, OS)에서 실행 가능한 응용 프로그램 형태로 제공하는 동작을 더 포함하는 방법.





KR1020220059609A 2022-05-16 2022-05-16 멀티 클라우드 관리 방법 및 전자 장치 KR20230160047A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220059609A KR20230160047A (ko) 2022-05-16 2022-05-16 멀티 클라우드 관리 방법 및 전자 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220059609A KR20230160047A (ko) 2022-05-16 2022-05-16 멀티 클라우드 관리 방법 및 전자 장치

Publications (1)

Publication Number Publication Date
KR20230160047A true KR20230160047A (ko) 2023-11-23

Family

ID=88974545

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220059609A KR20230160047A (ko) 2022-05-16 2022-05-16 멀티 클라우드 관리 방법 및 전자 장치

Country Status (1)

Country Link
KR (1) KR20230160047A (ko)

Similar Documents

Publication Publication Date Title
US10419546B2 (en) Migration assessment for cloud computing platforms
US20210034336A1 (en) Executing a process-based software application in a first computing environment and a second computing environment
KR101862235B1 (ko) 사용자 인터페이스 요소 지정
US8954859B2 (en) Visually analyzing, clustering, transforming and consolidating real and virtual machine images in a computing environment
US8839107B2 (en) Context based script generation
US11947443B2 (en) Robotic process automation (RPA) debugging systems and methods
EP3030969A1 (en) Automated application test system
JP2000132521A (ja) 異なるソ―ス間でのデ―タ項目移動および階層オブジェクト指向表現のための方法および装置
US11468229B2 (en) Describing changes in a workflow based on changes in structured documents containing workflow metadata
US11736556B1 (en) Systems and methods for using a browser to carry out robotic process automation (RPA)
US20230143922A1 (en) Systems and Methods for Dynamically Binding Robotic Process Automation (RPA) Robots to Resources
JP2023107749A (ja) ブラウザベースのロボティックプロセスオートメーション(rpa)ロボット設計インターフェース
CN113448678A (zh) 应用信息生成方法、部署方法及装置、系统、存储介质
US20220067272A1 (en) Robotic Process Automation Systems and Methods Using A Helper Spreadsheet
EP4124946A1 (en) Optimized software delivery to airgapped robotic process automation (rpa) hosts
KR20230160047A (ko) 멀티 클라우드 관리 방법 및 전자 장치
KR20230160055A (ko) 멀티 클라우드 관리 방법 및 전자 장치
KR20230160056A (ko) 멀티 클라우드 관리 방법 및 전자 장치
KR20230160048A (ko) 멀티 클라우드 관리 방법 및 전자 장치
KR20230160046A (ko) 멀티 클라우드 관리 방법 및 전자 장치
KR20230160057A (ko) 멀티 클라우드 관리 방법 및 전자 장치
CN111221610A (zh) 一种页面元素采集方法和装置
US11762676B2 (en) Optimized software delivery to airgapped robotic process automation (RPA) hosts
US20170068523A1 (en) Modular Computer Application Development and Usage
US11971866B2 (en) Determining differences between web elements of different versions of a web application

Legal Events

Date Code Title Description
E902 Notification of reason for refusal