KR20210129584A - 동적으로 할당된 클라우드 작업자 관리 시스템 및 그의 방법 - Google Patents

동적으로 할당된 클라우드 작업자 관리 시스템 및 그의 방법 Download PDF

Info

Publication number
KR20210129584A
KR20210129584A KR1020210030238A KR20210030238A KR20210129584A KR 20210129584 A KR20210129584 A KR 20210129584A KR 1020210030238 A KR1020210030238 A KR 1020210030238A KR 20210030238 A KR20210030238 A KR 20210030238A KR 20210129584 A KR20210129584 A KR 20210129584A
Authority
KR
South Korea
Prior art keywords
cloud
job
worker
management system
request
Prior art date
Application number
KR1020210030238A
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 KR20210129584A publication Critical patent/KR20210129584A/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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)
  • General Factory Administration (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)

Abstract

클라우드 작업자 관리 시스템은 작업자 관리 유닛을 가진다. 작업자 관리 유닛은 복수의 클라우드 작업자를 관리한다. 작업자 관리 유닛은 다수의 서버에 클라우드 작업자의 배치를 동적으로 할당하고 관리한다. 요청 처리 유닛은 작업자 관리 유닛과 통신한다. 요청 처리 유닛은 작업 요청을 수신하고, 작업 요청에 대한 작업 데이터 구조 개체를 만들며 사용 가능한 클라우드 작업자에게 작업 데이터 구조 개체와 함께 작업 요청을 전달한다. 유저 인터페이스를 통해 시스템의 사용자는 작업 상태를 보고 편집하고; 작업을 추적하고; 각 클라우드 작업자의 상태, 로드 및 운영 파라미터를 모니터링하고; 클라우드 작업자 및 서버 배치에 대한 규칙을 설정 및 변경하고, 작업 결과의 분석을 수행할 수 있다.

Description

동적으로 할당된 클라우드 작업자 관리 시스템 및 그의 방법{DYNAMICALLY ALLOCATED CLOUD WORKER MANAGEMENT SYSTEM AND METHOD THEREFOR}
본 출원은 전체적으로 클라우드 컴퓨팅에 관한 것으로, 보다 구체적으로는 요구되는 서버를 유지하고 필요할 때만 활성화할 수 있는 클라우드 작업자를 위한 동적 할당 및 리소스 관리 시스템에 관한 것으로, 사용자가 업무 외 시간 동안 서버 대여 비용을 절약할 수 있다.
클라우드 컴퓨팅은 사용자에 의한 직접적이고 능동적인 관리없는 컴퓨터 시스템 리소스, 특히 데이터 저장 및 컴퓨터 파워의 주문형 가용성이다. 이 용어는 일반적으로 인터넷을 통해 많은 사용자가 사용할 수 있는 데이터 센터를 설명하기 위하여 사용된다. 오늘날 지배적인 대형 클라우드는 종종 중앙 서버로부터 여러 위치에 분산된 기능을 가진다. 클라우드는 단일 조직(엔터프라이즈 클라우드)으로 제한되거나, 여러 조직(퍼블릭 클라우드)에서 사용할 수 있다.
클라우드 컴퓨팅은 일관성과 규모의 경제를 달성하기 위해 리소스의 공유에 의존한다. 클라우드 컴퓨팅을 통해 기업은 초기 IT 인프라 비용을 피하거나 최소화할 수 있다. 클라우드 컴퓨팅을 통해 기업은 향상된 관리 효율성과 적은 유지 관리로 그들의 애플리케이션을 더 빠르게 시작하고 구동할 수 있으며, IT 팀은 변동적이고 예측할 수 없는 수요를 충족하기 위해 리소스를 더 빠르게 조정할 수 있다.
문서 데이터 추출, 이미지 처리, 압축, 비디오 렌더링, 음성-텍스트 변환, 머신 러닝 예측 등과 같은 많은 비즈니스 및 운영 프로세스는 구획화되거나 컨테이너화된 소프트웨어 프로그램으로 패키징될 수 있다. 이들 프로그램(이하 클라우드 작업자라고 함)은 전용 또는 공유 머신에서 호스팅되는 서버에 배포되거나, Amazon Web Services, Microsoft Azure, Google Cloud Platform, Packet, Vultr 등과 같은 서버 관리 시스템을 통해 배포될 수 있다.
클라우드 작업자는 요청시 또는 대기열로부터 특정 태스크(task)를 수행하도록 설계될 수 있다. 기업은 공급자로부터 서버를 임대하여 클라우드 작업자를 호스팅하고, 서버가 배포된 기간에 대한 비용을 지불할 수 있다. 트래픽(태스크를 수행하기 위한 요청의 수)을 처리하기 위하여, 기업은 여러 서버 및/또는 클라우드 작업자의 여러 인스턴스를 배치할 수 있다. 많은 경우, 기업은 업무 외 시간에 과도한 트래픽을 처리할 필요가 없지만 서버 대여 비용은 계속 지불한다.
클라우드 작업자에 의해 수행되는 태스크는 빠르고 수 밀리 초가 걸리거나 많은 계산 리소스가 필요하며 몇 분에서 며칠이 걸릴 수 있다. 따라서, 요청 입력, 출력, 소스, 시간 및 처리 요구 사항에 대한 지식을 통해, 기업은 사용에 대한 소중한 통찰력을 수집하고 높은 수준의 비즈니스 결정을 내릴 수 있다. 현재, 이러한 유형의 정보를 제공하는 시스템은 없다.
따라서, 상기 문제점을 극복하는 시스템 및 방법을 제공하는 것이 바람직할 것이다.
본 발명은 요청 입력, 출력, 소스, 시간 및 처리 요구 사항에 대한 지식을 통해, 기업이 사용에 대한 소중한 통찰력을 수집하고 높은 수준의 비즈니스 결정을 내릴 수 있도록 돕는 동적으로 할당된 클라우드 작업자 관리 시스템 및 그의 방법을 제공함에 목적이 있다.
일 실시예에 따르면, 클라우드 작업자 관리 시스템이 개시된다. 클라우드 작업자 관리 시스템은 작업자 관리 유닛을 가진다. 작업자 관리 유닛은 복수의 클라우드 작업자를 관리한다. 작업자 관리 유닛은 다수의 서버로의 클라우드 작업자의 배치를 동적으로 할당하고 관리한다. 요청 처리 유닛은 작업자 관리 유닛과 통신한다. 요청 처리 유닛은 작업 요청을 수신하고, 작업 요청에 대한 작업 데이터 구조 객체를 만들며 작업 데이터 구조 ?┚셈? 이용하여 작업 요청을 사용 가능한 클라우드 작업자에게 전달한다. 사용자 인터페이스를 통해 시스템의 사용자는 작업 상태를 보고 편집하고; 작업을 추적하고; 각 클라우드 작업자의 상태, 로드 및 운영 파라미터를 모니터링하고; 클라우드 작업자 및 서버 배치에 대한 규칙을 설정 및 변경하고, 작업 결과의 분석을 수행할 수 있다.
본 발명의 동적으로 할당된 클라우드 작업자 관리 시스템 및 그의 방법은, 요청 입력, 출력, 소스, 시간 및 처리 요구 사항에 대한 지식을 통해, 기업이 사용에 대한 소중한 통찰력을 수집하고 높은 수준의 비즈니스 결정을 내릴 수 있도록 돕는 효과가 있다.
본 출원은 다음 도면과 관련하여 더욱 상세하게 설명된다. 이들 도면은 본 출원의 범위를 제한하려는 것이 아니라 그 특정 속성을 예시하는 것이다. 동일하거나 유사한 부품을 지칭하기 위하여 도면 전체에 걸쳐 동일한 참조 번호가 사용된다.
도 1은 본 출원의 일 형태에 따른 동적 할당 및 리소스 관리 시스템에 접속할 수 있도록 하는 네트워크 시스템의 예시적인 실시예의 블럭도이다.
도 2는 본 발명의 일 실시예에 따른 도 1의 네트워크 시스템에서 사용되는 컴퓨팅 장치의 예시적인 실시예의 사시도이다.
도 3은 본 출원의 일 형태에 따른 도 1의 동적 할당 및 리소스 관리 시스템의 예시적인 실시 예이다.
도 4는 본 출원의 일 형태에 따른 도 3의 동적 할당 및 리소스 관리 시스템에서 사용되는 디스패치 API의 예시적인 실시예이다.
도 5는 본 출원의 일 형태에 따른 도 3의 동적 할당 및 리소스 관리 시스템에서 사용되는 작업 요청 API의 예시적인 실시예이다.
도 6은 본 출원의 일 형태에 따른 도 3의 동적 할당 및 리소스 관리 시스템에서 사용되는 클라우드 작업자 생성을 위한 예시적인 워크플로우이다.
첨부된 도면과 관련하여 아래에 개진된 설명은 본 개시 내용의 현재 바람직한 실시예의 설명으로서 의도되고 본 개시 내용이 구성 및/또는 이용될 수 있는 유일한 형태를 나타내는 것으로 의도되지는 않는다. 설명은 예시된 실시예와 관련하여 개시 내용을 구성하고 운영하기 위한 기능 및 단계의 순서를 설명한다. 그러나, 동일하거나 동등한 기능 및 순서가 또한 본 개시 내용의 사상 및 범위 내에 포함되도록 역시 의도된 상이한 실시예에 의해 달성될 수 있다는 것이 이해되어야 한다.
클라우드 작업자(cloud workers)를위한 예시적인 동적 할당 및 리소스 관리 시스템(이하 시스템)의 실시예는 필요한 서버를 유지하고 일반적으로 필요할 때만 활성화할 수 있어, 사용자는 업무 외 시간 동안 서버 대여 비용을 절약할 수 있다. 시스템은 고객의 서버 사용 내역에 대한 동적 스케줄링, 머신 러닝, 인공 지능, 및 예측 모델링을 사용하여 서버 실행 시간을 최적화할 수 있다. 시스템은 실시간으로 현재/활성 트래픽 데이터를 사용하여 서버 리소스를 관리하고 클라우드 작업자에게 할당할 수 있다. 시스템은 예측된 사용량과 현재 요청 볼륨/트래픽에 따라 동적으로 서버를 켜고, 끄고, 생성하고, 배치하고, 삭제하고, 예약할 수 있다.
시스템은 고객이 그들의 각 클라우드 작업자에 대한 요청 볼륨, 리소스, 입력 및 출력을 추적하고, 분석하며, 연구할 수 있는 사용자 인터페이스를 제공할 수 있다. 또한 사용자 인터페이스는 고정 서버 켜기/끄기 시간(예를 들어, 업무 시간 일치를 위한), 인텔리전스 최적화 파라미터(지연, 최소 작업자 등), 그리고 최적의 성능에 도움이 되는 다른 선택과 관련된 규칙을 설정하기 위하여 사용될 수 있다. 시스템은 충분한 수의 요청과 데이터 수집을 통해 - 전체 작업자가 잠재적으로 고성능 인공 지능 소프트웨어에 의해 대체될 수 있는 방식으로 작업자 입력 및 출력을 추적할 수 있다. 인공 지능 소프트웨어는 이미지 처리 태스크, 데이터 추출 태스크 및 시스템에 배포될 수 있는 가능한 모든 태스크를 수행할 수 있다. 고성능 인공 지능 및 딥 러닝 알고리즘은 기존의 논리적 알고리즘과 달리 계산하는 데 훨씬 더 적은 시간을 필요로 할 수 있다. 예를 들어, 512 X 512 픽셀 이미지 플러드 필(512 X 512 pixel image flood fill)은 기존의 시드 필 알고리즘(seed fill algorithms)을 사용하여 최대 1 초가 소요될 수 있지만, 딥 러닝을 사용하면 10 밀리 초 미만으로 수행될 수 있다. 더 적은 계산 리소스를 가진 더 빠른 계산은 총 서버 대여 비용을 더욱 낮출 수 있다.
이제 도 1을 참조하면, 시스템(10)이 보여질 수 있다. 시스템(10)은 동적 할당 및 리소스 관리 시스템(28)에 접속할 수 있도록 허용할 수 있다. 동적 할당 및 리소스 관리 시스템(28)은 클라우드 작업자를 위해 사용될 수 있으며 필요한 서버를 유지하고 필요할 때만 활성화할 수 있어, 사용자는 업무 외 시간 동안 서버 대여 비용을 절약할 수 있으며, 더하여 다른 특징이 아래에 설명될 수 있다.
시스템(10)은 서버(14)를 가질 수 있다. 서버(14)는 플랫폼(12)을 호스팅하기 위하여 사용될 수 있다. 플랫폼(12)은 본 발명의 동적 할당 및 리소스 관리 시스템(28)에 접속하도록 허용할 수 있다. 개인(16)은 서버(14)에서 호스팅될 수 있는 플랫폼(12)에 접속하기 위하여 하나 이상의 컴퓨팅 장치(18)를 사용할 수 있다. 컴퓨팅 장치(18)는 개인용 컴퓨터 시스템, 태블릿 장치, 핸드헬드 또는 랩탑 장치, 모바일 전화 장치, 서버 컴퓨터 시스템, 멀티 프로세서 시스템, 마이크로 프로세서 기반 시스템, 셋톱 박스, 프로그래밍 가능한 가전 제품, 네트워크 PC, 그리고 상기 시스템 또는 장치를 포함하는 분산 클라우드 컴퓨팅 환경일 수 있다. 컴퓨팅 장치(18)는 아래에서 설명될 수 있는 바와 같이 컴퓨터 시스템에 의해 실행되는, 프로그램 모듈과 같은, 컴퓨터 시스템 실행 가능 명령의 일반적인 맥락에서 설명될 수 있다.
컴퓨팅 장치(18)에는 운영 체제가 로드될 수 있다. 컴퓨팅 장치(18)의 운영 체제는 컴퓨팅 장치(18)의 하드웨어 및 소프트웨어 리소스를 관리하고 컴퓨팅 장치(18)에서 실행되는 컴퓨터 프로그램을 위한 공통 서비스를 제공할 수 있다. 컴퓨팅 장치(18)는 브라우저(20)와 함께 로드될 수 있다. 브라우저(20)는 컴퓨팅 장치가 LAN(Local Area Network), WAN(Wide Area Network) 또는 유사한 유형의 네트워크와 같은 네트워크(22)에 접속하도록 허용할 수 있다. 브라우저(20)는 상업적으로 이용 가능한 웹 브라우저 Microsoft® Internet Explorer, Google® Chrome, Mozilla® Firefox, Apple® Safari, 유사한 브라우징 애플리케이션, 원격 네트워크 접속 소프트웨어, 또는 네트워크에 연결하기위한 유사한 유형의 소프트웨어일 수 있다. 네트워크(22)에 연결함으로써, 컴퓨팅 장치(18)는 서버(14)에서 호스팅되는 플랫폼(12)과 관련된 웹 페이지(24)에 접속할 수 있으며, 이에 따라 동적 할당 및 리소스 관리 시스템(28)을 사용하기 위한 접속을 얻을 수 있다.
선택적으로 또는 추가적으로, 컴퓨팅 장치(18)는 모바일 애플리케이션(26)을 다운로드할 수 있다. 모바일 애플리케이션(26)은 서버(14)에서 호스팅되는 플랫폼(12)에 접속하고 통신할 수 있다. 네트워크(22)에 연결하는 것에 의해, 컴퓨팅 장치(18)가 모바일 애플리케이션(26)을 통해 서버(14)에서 호스팅되는 플랫폼(12)에 접속하고 통신할 수 있으므로 동적 할당 및 리소스 관리 시스템(28)에 대한 접속을 얻을 수 있다.
이제 도 2를 참조하면, 서버(14) 및/또는 컴퓨팅 장치(18)(이하 컴퓨팅 장치(18))는 여기에 개시된 시스템 및 방법에 기능을 제공하는 기계 요소의 관점에서 더 자세히 설명될 수 있다. 컴퓨팅 장치(18)의 구성 요소는 하나 이상의 프로세서 또는 프로세싱 유닛(30), 시스템 메모리(32), 및 시스템 메모리(32)를 포함하는 다양한 시스템 구성 요소를 프로세서(30)에 연결하는 시스템 버스(34)를 포함할 수 있지만 이에 제한되지는 않는다. 컴퓨팅 장치(18)는 일반적으로 다양한 컴퓨터 시스템 판독 가능 매체를 포함할 수 있다. 이러한 매체는 비 일시적, 휘발성 및 비 휘발성 매체, 이동식 및 비 이동식 매체를 포함하여, 컴퓨팅 장치(18)에 의해 접속 가능한 임의의 이용 가능한 매체로부터 선택될 수 있다. 시스템 메모리(32)는 랜덤 액세스 메모리(RAM)(36) 및/또는 캐시 메모리(38)와 같은, 휘발성 메모리 형태의 하나 이상의 컴퓨터 시스템 판독 가능 매체를 포함할 수 있다. 단지 예로서, 저장 시스템(40)이 일반적으로 "하드 드라이브"로 불리는 제거 불가능한 비 휘발성 자기 매체 장치에서 읽고 쓰기 위해 제공된다.
시스템 메모리(32)는 본 발명의 실시예의 기능을 수행하도록 구성될 수 있는 프로그램 모듈(44)의 세트(예를 들어, 적어도 하나)를 가지는 적어도 하나의 프로그램 제품/유틸리티(42)를 포함할 수 있다. 프로그램 모듈(44)은 운영 체제, 하나 이상의 애플리케이션 프로그램, 다른 프로그램 모듈 및 프로그램 데이터를 포함할 수 있지만, 이에 제한되지는 않는다. 각각의 운영 체제, 하나 이상의 애플리케이션 프로그램, 다른 프로그램 모듈 및 프로그램 데이터 또는 이들의 일부 조합은 네트워킹 환경의 구현을 포함할 수 있다. 프로그램 모듈(44)은 일반적으로 여기에 설명된 본 발명의 실시예의 기능 및/또는 방법을 수행한다. 예를 들어, 프로그램 모듈(44)은 이벤트 생성을 시작하기 위한 단계, 생성된 이벤트에 초대받은 사람들 사이의 개인 및 그룹 통신, 개인의 과거 이벤트의 시각적 및/또는 텍스트 요약 및 아래에 설명되는 다른 기능을 수행할 수 있다.
컴퓨팅 장치(18)는 키보드, 포인팅 장치, 디스플레이(48), 및/또는 컴퓨팅 장치(18)가 서버(14)(도 1)와 통신할 수 있게 하는 어떤 유사한 장치와 같은 하나 이상의 외부 장치(46)와 통신할 수 있다. 이러한 통신은 입력/출력(I/O) 인터페이스(50)를 통해 일어날 수 있다. 선택적으로, 컴퓨팅 장치(18)는 네트워크 어댑터(52)를 통해 LAN(Local Area Network), 일반적인 WAN(Wide Area Network) 및/또는 공용 네트워크(예를 들어, 도 1에 도시된 네트워크 (24))와 같은 하나 이상의 네트워크와 통신할 수 있다. 도시된 바와 같이, 네트워크 어댑터(52)는 버스(36)를 통해 컴퓨팅 장치(18)의 다른 구성 요소와 통신할 수 있다.
당업자에 의해 이해되는 바와 같이, 개시된 발명의 형태는 시스템, 방법 또는 프로세스, 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 개시된 발명의 형태는 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로 코드 등을 포함함) 또는 여기서 "회로", "모듈", 또는 "시스템"으로 모두 일반적으로 언급될 수 있는 소프트웨어 및 하드웨어 형태를 결합한 실시예의 형태를 취할 수 있다. 또한, 개시된 발명의 형태는 그것에 대해 실시된 컴퓨터 판독 가능 프로그램 코드를 가지는 하나 이상의 컴퓨터 판독 가능 매체에 실시된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 이상의 컴퓨터 판독 가능 매체(예를 들어, 저장 시스템(40))의 임의의 조합이 이용될 수 있다. 본 개시 내용의 맥락에서, 컴퓨터 판독 가능 저장 매체는 명령 실행 시스템, 기기 또는 장치에 의해 또는 이와 관련하여 사용하기위한 프로그램(예를 들어, 프로그램 제품(42))을 포함하거나 저장할 수 있는 임의의 유형 또는 비 일시적 매체일 수 있다. 컴퓨터 판독 가능 저장 매체는, 예를 들어, 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템, 기기, 또는 장치, 또는 이들의 임의의 적절한 조합일 수 있으나 이에 제한되지는 않는다.
도 3을 참조하면, 클라우드 작업자를 위한 동적 할당 및 리소스 관리 시스템(28)(이하 관리 시스템(28))의 기능적 블록 다이어그램이 보여질 수 있다. 관리 시스템(28)은 별도의 블록으로 보일 수 있지만, 관리 시스템(28)의 구성 요소는 플랫폼(12)의 일부일 수 있다.
도 3에 도시된 바와 같이, 관리 시스템(28)은 작업자 최적화를 사용하는 작업자 관리 유닛(60), 요청 처리 유닛(62) 및 사용자 인터페이스(64)로 구성될 수 있다. 작업자 관리 유닛(60)은 클라우드 작업자(68)의 작업자 풀(68A) 및 슈퍼바이저(70)로 구성될 수 있다. 작업자 풀(68A)은 배포된 클라우드 작업자(68)의 동적 크기 그룹일 수 있다. 작업자 풀(68A)의 클라우드 작업자(68)는 작업을 처리할 수 있는 경우 유휴 상태이거나, 현재 다른 작업을 처리하는 경우 사용 중일 수 있다. 사용 가능한 작업자는 슈퍼바이저(70)에 의해 작업이 할당될 수 있다.
클라우드 작업자(68)는 특정 태스크를 수행할 수 있는 구획화되거나 컨테이너화된 소프트웨어 프로그램일 수 있다. 이들 태스크는 문서 데이터 추출, 이미지 처리, 압축, 비디오 렌더링, 음성-텍스트 변환, 머신 러닝 예측, 그리고 유사한 프로세스일 수 있다. 클라우드 작업자(68)는 데이터 전송을 보호하고 관리 시스템(28)이 민감하고 중요한 데이터 및 애플리케이션에 사용될 수 있도록 단일 또는 다중 VPN에 연결하기 위해 VPN(Virtual Private Network) 구성을 가질 수 있다. 클라우드 작업자(68)는 일반적으로 VM(Virtual Machines)을 통해 서버(78A)에 배치될 수 있다. 이러한 배치는 서버가 구입되거나 대여되는 것을 필요로 한다. 이로 인해 클라우드 작업자가 유휴 상태일 수 있는 시간에 서버 비용이 발생할 수 있다. 관리 시스템(28)은 서버(78A)가 활성화될 때 최적화할 수 있다. 관리 시스템(28)은 서버(78A)를 다수의 클라우드 작업자(68)에 분산시켜 네트 서버(Net Server) 활용 및 효율성을 최적화할 수 있다. 클라우드 작업자(68)는 컨테이너화된 명령 라인 실행 파일이거나, Python, JavaScript, Node.JS 등과 같은 지원되는 공통 언어의 엔트리 포인트가 있는 미리 정의된 템플릿을 사용하는 프로그램일 수 있다.
클라우드 작업자(68)는 작업을 대기열에서 또는 요청 시 태스크를 가져오도록 설계될 수 있다. 각각의 클라우드 작업자(68)는 요청 처리 유닛(62)과 적절하고 안전하게 통신하기 위해 필요한 백엔드 기능으로 컴파일/증강될 수 있다. 요청 처리 유닛(62)은 클라우드 작업자 상태, 및 작업 세부 사항을 가지는 데이터베이스(72), 그리고 "디스패치" 모델 아키텍처의 작업자 디스패치 API(74), 및/또는 아래에 개시되는 "발런티어" 모델 아키텍처의 작업 대기열(76)로 구성될 수 있다.
사용자 인터페이스(64)는 사용자가 작업 규정(job statutes)을 보고 편집하고, 작업을 추적하고, 각 클라우드 작업자(68)의 상태 및 로드에 더하여 다른 운영 파라미터를 모니터링하고, 클라우드 작업자(68) 및 서버 분배에 대한 규칙을 설정 및 변경하고, 작업 결과에 대한 분석을 수행하도록 할 수 있다. 사용자 인터페이스(64)는 사용자가 클라우드 작업자(68)의 가동 시간 및 가동 중지 시간과 현재 및 과거에 할당된 리소스의 양을 보도록 할 수 있다. 사용자 인터페이스(64)는 사용자가 작업자 최적화 통계를 보도록 할 수 있다. 사용자(16)가 클라우드 작업자(68)의 표준화된 콜백을 통해 최적화를 위한 추가 체크 포인트 데이터를 제공하면, 인공 지능은 학습하는 동안 이의 정보를 추가 지원으로 사용할 수 있다. 사용자 인터페이스(64)는 사용자가 격리된 환경에서 클라우드 작업자(68)를 테스트하고 실시간으로 처리와 생산 전에 출력을 보도록 할 수 있다.
관리 시스템(28)은 추적 및 최적화에 필요한 정보를 포함하도록 작업 데이터 구조를 표준화할 수 있다. 표준화된 작업 데이터 구조는 작업자 옵티마이저(worker optimizer)가 작업자 태스크에 관계없이 입력 및 출력에 대해 트레이닝될 수 있도록 한다. 표준화 작업 데이터 구조는 XML(Extensible Markup Language), JSON(JavaScript Object Notation), BSON(Binary JSON), 원시 텍스트 파일, 또는 데이터 전송 프로토콜과 같은 다양한 다른 포맷으로 전달될 수 있다. 표준화 작업 구조는 다음의 변수와 함께, 아래 제공된 사양을 사용할 수 있다.
* UUID(Universally Unique Identifier) - 작업을 추적하기 위하여 사용되는 작업 식별자.
* 클라우드 작업자 식별자 - 작업을 처리하기 위하여 사용되는 클라우드 작업자(유형)를 선택하는데 사용되는 고유 식별자.
* 입력 데이터 - 직렬화 가능한 객체로서, 숫자 값, 문자열, 문자열-인코딩 이진 데이터, 배열, 목록, 사전 및 유사한 정보를 포함할 수 있는 작업 입력.
* 작업 결과/오류 메시지 - 작업이 성공적으로 완료된 경우 입력 데이터와 유사한 요구 사항 및 포맷 사양과 함께, 직렬화 가능한 객체로서 완료된 작업의 결과. 이 객체는 작업이 실패한 경우 오류 메시지를 포함한다.
* 작업 상태 - 계층(Stratum)에 의해 작업 상태를 식별하는 변수 - 대기, 작업, 오류, 성공, 종료 또는 유사한 작업 상태 정보 중 하나를 나타내는 변수일 수 있음.
* 진행 - 진행을 식별하는 숫자 부동 소수점 값(0-100 %, 0-1.0 또는 유사한 진행값).
* 로그 데이터 - 추적 및 디버깅을 위해 클라우드 작업자에 의해 전달된 문자열 메시지와 관련된 타임 스탬프 목록.
* 수동 종료 요청 - 사용자 또는 고객 애플리케이션이 작업 종료를 수동으로 요청했는지 여부를 나타내는 부울(True/False) 변수(Boolean (True/False) variable).
* 요청된 타임 스탬프 - API 요청에 의해 작업이 요청된 날짜 및 시간.
* 시작 타임 스탬프 - 클라우드 작업자에 의해 작업이 시작된 날짜 및 시간.
* 종료 타임 스탬프 - 작업이 종료, 완료, 시간 초과 또는 실패된 날짜 및 시간.
* 작업자 인스턴스 식별자 - 이 태스크를 수행하는 클라우드 작업자의 특정 인스턴스와 관련된 고유 식별자.
* 선택적 후크 파라미터 - 작업이 완료되거나 작업이 실패할 때 API 요청을 작성하기 위한 선택적 엔드 포인트. 예를 들어, 이것은 작업이 완료되면 작업 결과와 함께 알림을 받을 고객의 API에 대한 웹-훅 URL(web-hook URL)이거나, 작업이 실패하거나 시간 초과된 경우 오류가 기록될 수 있다.
작업은 인증된 고객 애플리케이션에 의해 만들어진 API 요청에 의해 시작될 수 있다. 관리 시스템(28)은 "디스패치" 모델 아키텍처에 즉시 클라우드 작업자(68)를 디스패치하거나, "발런티어" 모델 아키텍처의 대기열에 작업을 추가한다. 디스패치 API(74)는 사용자가 작업 상태를 추적하고 완료 시 결과를 검색할 수 있도록 하는 UUID(Universally Unique IDentifier)로 응답할 수 있다.
클라우드 작업자(68)는 작업 환경을 격리하고 다른 하드웨어 구성을 가지는 상이한 서버(78A)에서 예측 가능하게 태스크를 수행하기 위해 컨테이너화될 수 있다. 클라우드 작업자(68)는 관리 시스템(28)의 구성 요소와 안전한 상호 작용을 허용하기 위해 표준 소프트웨어로 증강/컴파일될 수 있다.
관리 시스템(28)은 서버 인프라(78)를 사용할 수 있다. 서버 인프라(78)는 전용 또는 공유 머신에 배치되거나, 일일, 월간, 또는 연간 대여가 아닌 서버 가동 시간에 따라 과금되는 서버 제공자를 통해 배치되는 하나 이상의 서버(78A)로 구성될 수 있다. 작업자 풀(68A)은 서버(78A)를 통해 분산될 수 있다.
컨테이너 오케스트레이션 플랫폼(80)(container orchestration platform)은 서버(78A) 상에 계층화될 수 있다. 컨테이너 오케스트레이션 플랫폼(80)은 서버 리소스를 동적으로 관리할 수 있다. 컨테이너 오케스트레이션 플랫폼(80)은 슈퍼바이저(70)와 작업자 풀(68A) 사이의 인터페이스를 제공할 수 있다. 슈퍼바이저(70)는 서버 운영을 수행하기 위해 컨테이너 오케스트레이션 플랫폼의 API를 사용할 수 있다. 작업 관리자(82)로 증강된 복수의 클라우드 작업자(68)를 가지는 풀 작업자(68A)는 작업을 수행하기 위해 컨테이너 오케스트레이션 플랫폼(80)의 상부에서 실행된다.
슈퍼바이저(70)는 최적의 성능을 보장하고 비용 절감을 극대화하기 위해 서버 배치 및 운영을 동적으로 할당하고 관리할 수 있다. 슈퍼바이저(70)는 사용자 절감을 극대화하기 위해 과거 트렌드, 현재 수요, 그리고 사용자 선호도/규칙에 따라 리소스를 동적으로 생성, 삭제, 이동, 켜고 끔에 의해 작업자 풀(68A)을 관리할 수 있다. 슈퍼바이저(70)는 다양한 서버 리소스 운영을 명령하기 위해 컨테이너 오케스트레이션 플랫폼(80)에 디스패치 API(74)를 사용할 수 있다. 슈퍼바이저(70)는 주어진 시점에서 대기중인 서버(78A)의 총 수를 최소화하고, 서버 활용 및 효율성을 최대화하기 위해 다수의 고객을 위한 대기 클라우드 작업자(68)를 단일 또는 소수의 서버(78A)로 그룹화할 수 있다. 슈퍼바이저(70)는 과거 트렌드 및 현재 수요를 추출하기 위해 봇 상태 데이터베이스(bot status database) 및 작업 대기열 데이터베이스(job queue database)와 통신할 수 있다.
도 4를 참조하면, 디스패치 모듈(84A)의 일 실시예가 보여질 수 있다. 디스패치 모듈(84A)에서, 디스패치 API(74)는 요청 처리 유닛(62)의 스테이트리스 디스패치 API(74A)(stateless dispatch API)일 수 있다. 스테이트리스 디스패치 API(74A)는 사용자 애플리케이션이 작업을 요청/대기화하고, 그들의 상태를 추적하며, 완료된 작업에 대한 결과를 검색하거나 실패한 작업에 대한 오류 로그를 검색하도록 하는 API(Application Programming Interface)일 수 있다.
디스패치 모듈(84A)에서, 클라우드 작업자(68)는 슈퍼바이저(70)에 의해 작업자 풀(68A)에 동적으로 배치되고 관리될 수 있다. 스테이트리스 디스패치 API(74A)는 사용자 애플리케이션과 작업자 풀(68A) 사이의 중앙 집중식 브로커(centralized broker)로서 사용될 수 있다. 디스패치 모듈(84A) 하에서 동작할 때, 스테이트리스 디스패치 API(74A)는 고객의 애플리케이션(16A)으로부터 인증된 수신 요청을 수락할 수 있다. 스테이트리스 디스패치 API(74A)는 작업 대기열(76)에 제공된 입력을 사용하여 작업 데이터 구조 객체를 생성할 수 있고, 사용 가능한 클라우드 작업자(68)에 대해 봇 상태 데이터베이스(72A)에 질의한다. 봇 상태 데이터베이스(72A)는 작업 요청, 진행 상황, 상태, 입력, 결과 및 시간을 추적하는 테이블 또는 문서 모음일 수 있다. 고유한 작업 식별자(unique job identifier)는 고객 애플리케이션(16A)에 반환될 수 있다. 클라우드 작업자(68)가 이용 가능한 경우, 스테이트리스 디스패치 API(74A)는 작업 요청을 사용 가능한 클라우드 작업자(68)로 전달할 수 있다.
클라우드 작업자(68)를 사용할 수 없는 경우, 스테이트리스 디스패치 API(72A)는 작업을 작업 대기열(76)에 추가할 수 있다. 작업 대기열(76)의 작업 수가 한계점보다 높으면 작업 대기열(76)은 새로운 클라우드 작업자를 보내도록 슈퍼바이저(70)에 신호를 보낼 수 있다. 한계점은 평균 작업 처리 시간, 사용자 선호도 및 현재 수요에 기초하여 계산될 수 있다. 따라서, 작업 요청은 클라우드 작업자(68)가 이전 작업에서 해방될 때, 또는 슈퍼바이저(70)가 추가 클라우드 작업자(68)를 배치할 때까지 대기될 수 있다.
도 5를 참조하면, 디스패치 모듈(84B)이 보여질 수 있다. 디스패치 모듈(84B)은 발런티어 모델 아키텍처(volunteer model architecture)로서 동작할 수 있다. 이 구현에서 디스패치 API(74)는 스테이트리스 작업 요청 처리API(74B)(stateless job request handling API)일 수 있다. 스테이트리스 작업 요청 처리 API(74B) 메인 태스크는 애플리케이션과 작업 대기열(76) 사이의 인터페이스를 제공하는 것이다. 클라우드 작업자(68)는 디스패치 모델 아키텍처를 사용하여 구현될 때와 유사하게 슈퍼바이저(70)에 의해 작업자 풀(68B)에 동적으로 배포되고 관리될 수 있다. .
발런티어 모델 아키텍처를 사용하여 동작할 때, 스테이트리스 작업 요청 처리 API(74B)는 고객 애플리케이션(16A)과 작업 대기열(76) 사이의 인터페이스에 사용될 수 있다. 스테이트리스 작업 요청 처리 API(74B)는 사용자 애플리케이션(16A)이 임의의 수단(HTTP/HTTPS GET/POST 요청, 특정 언어에 대한 라이브러리/패키지 등)을 통해 API 요청을 보낼 수 있는 요청 처리 유닛으로 사용될 수 있다.
고객 애플리케이션(16A)이 인증된 API 요청을 할 때, 제공된 입력을 가진 작업 데이터 구조 객체가 작업 대기열(76)에 생성될 수 있다. 스테이트리스 작업 요청 처리 API(74B)는 작업을 작업 대기열(76)에 스케줄링할 수 있다. 스테이트리스 작업 요청 처리 API(74)는 작업 UUID를 사용자 애플리케이션(16A)에 반환할 수 있으며, 사용자 애플리케이션(16A)은 작업 결과를 추적하고 검색하는 데 사용할 수 있다. 스테이트리스 작업 요청 처리 API(74B)는 사용자 애플리케이션(16A)이 작업을 요청/대기화하고, 그들의 상태를 추적하며, 완료된 작업에 대한 결과를 검색하거나 실패한 작업 또는 타임아웃에 대한 오류 로그를 검색하도록 하는 API(Application Programming Interface)일 수 있다.
상기 실시예에서, 작업 대기열(76)은 메시지 브로커, 테이블 형식 데이터베이스(tabular databases)에 대한 테이블 엔트리로서 각 작업 요청을 추적하는 데이터베이스, 또는 문서 기반 데이터베이스에 대한 컬렉션의 문서일 수 있다. 작업 대기열(76)은 사용자에 의해 요청 된 새로운 작업을 추가하기 위해 사용될 수 있다. 작업 대기열(76)은 클라우드 작업자(68)에 대해 이용 가능한 작업을 검색하기 위해 발런티어 모델에서 클라우드 작업자(68)에 의해 폴링(poll)될 수 있다. 작업 대기열(76)은 상태/진행 업데이트, 오류 로그 및 작업 완료 시 결과와 함께 클라우드 작업자(68)에 의해 업데이트될 수 있다. 작업 대기열(76)은 작업 및 운영 통계를 추적하기 위해 완료 후에도 작업 항목을 유지한다. 작업 대기열(76)은 데이터베이스 서버에 대한 저장 비용을 절약하기 위해 보관을 위한 입력/출력 및 시간 데이터만을 포함하도록 최소화될 수 있다. 작업 데이터는 또한 저비용 보관 데이터베이스를 분리하기 위해 활성 작업 대기열(76)로부터 내보내질 수 있다.
고객이 관리 시스템(28)에서 그리고 다양한 언어로 기능할 수 있는 클라우드 작업자(68)를 개발할 수 있도록 하기 위해, 클라우드 작업자(68)는 Docker®와 같이 컨테이너화된 환경에서 실행될 수 있어야 한다. 컨테이너화는 일반적으로 클라우드 작업자(68)를 다른 컴퓨팅 환경에서 효율적이고 버그없는 방식으로 실행하는 데 필요한 관련된 구성 파일, 라이브러리 및 종속성(dependencies) 모두와 함께 번들링(bundling)하는 것을 포함한다.
컨테이너는 그들 양측이 여러 유형의 소프트웨어가 컨테인된 환경(contained environments)에서 실행되도록 하기 때문에, 가상 머신(VMs)과 비교될 수 있다. 컨테이너는 애플리케이션 계층의 추상적 개념일 수 있다(각 컨테이너가 서로 다른 소프트웨어 애플리케이션을 시뮬레이션 함을 의미함). 각 컨테이너는 격리된 프로세스를 실행할 수 있지만, 여러 컨테이너가 공통 운영 체제를 공유할 수 있다. 컨테이너를 사용하면, 격리된 환경이 Microsoft Windows, Mac OS X, Linux 및 기타 운영 체제를 포함한 다양한 운영 체제를 위해 에뮬레이션될(emulated) 수 있다.
컨테이너 실행 파일은 명령 라인 인수(command line argument)를 문자열 변수(string variable)로 받아들일 수 있다. 작업 데이터 구조를 위해 JSON(JavaScript Object Notation)이 사용되는 경우, 전체 입력 변수가 원시 또는 인코딩된 문자열로 직렬화되고, 실행 파일로 전달될 수 있다. 실행 파일(executable)은 결과를 프로세스 파이프(process pipe)에 프린트하는 것에 의해 작업 추적 데이터베이스(72) 또는 대기열(76)과 통신해야 한다. 프린트 출력은 다음 중 하나일 수 있다.
* 성공 시 작업 결과
* 작업 상태 업데이트
* 실패 시 작업 오류
머리글 및/또는 바닥 글이 출력 유형을 구분하기 위해 사용될 수 있다.
컨테이너 실행 파일은 이미지, 비디오, 숫자 데이터, 텍스트 데이터 등과 같은 더 큰 데이터 객체를 전달하기 위해 컨테이너화된 환경 파일 시스템에 출력 파일을 생성할 수도 있다.
증강 작업 관리자(82)는 설정된 타임아웃, 그리고 제공된 입력 데이터 구조를 갖는 오류 처리를 가지는 모니터링된 서브 프로세스로서 컨테이너 실행 파일을 호출할 수 있다. 증강 작업 관리자(82)는 컨테이너 실행 파일에 의해 서브 프로세스 파이프에 프린트된 문자열 상태 업데이트를 읽고 작업 데이터베이스(72)에 업데이트를 포스트할 수 있다. 증강 작업 관리자(82)는 성공적인 완료 시 작업 결과를 읽거나 실패하는 경우 오류 메시지를 읽고, 우 작업 데이터베이스(72)를 업데이트할 수 있다.
클라우드 작업자(68)가 관리 시스템(28)과 통신하기 위해, 특정 공통 언어에 대해, 프로젝트 템플릿이 제공될 수 있다. 템플릿은 클라우드 작업자(68)가 표준화된 작업 관리 인터페이스와 통신하도록 할 수 있다. 프로젝트 템플릿은 다음 파일을 포함할 수 있다:
* 엔트리 포인트(110) - 특정 클라우드 작업자의 작업 관리자(82)에 의해 실행되는 기능 또는 서브루틴(subroutine)을 포함하는 메인 파일. 이 파일은 프로젝트 디렉토리 내의 다른 사용자 소스 파일, 또는 프로젝트에 사용될 수 있는 다른 제3자의 라이브러리를 포함하거나 가져올 수 있다.
* 환경 정의 파일(112) - 사용되기 위한 격리되고 컨테이너화된 환경에 대한 특정 디테일을 포함하는 파일(예를 들어, Dockerfile 파일). 이 파일은 클라우드 작업자를 실행하기 위해 필요한 환경, 운영 체제, 이미지 및/또는 종속성 설치 스크립트를 설명한다.
* 환경 변수 파일(114) - 초기화되기 위한 기본 환경 변수의 세트를 포함하는 파일. 환경 변수는 프로젝트 관리 저장소에 의해 추적되지 않는, IP 주소, 보안 접속 키 등과 같은 민감한 정보를 포함할 수 있다.
* VPN(Virtual Private Network) 구성 파일(116) - 민감한 정보의 보안 전송을 허용하기 위해 클라우드 작업자(68)를 특정 VPN에 연결하는 파일.
클라우드 작업자(68)의 엔트리 파일은 기능적 입력 인수(functional input argument)로서 직렬화 가능한 작업 입력을 포함하고, 반환 변수(return variable)로서 직렬화 가능한(serializable) 작업 결과 또는 오류 메시지를 포함하는 메인 기능(main function) 또는 서브루틴 템플릿(subroutine template)을 포함할 수 있다. 메인 기능 또는 서브루틴 템플릿은 클라우드 작업자(68) 내에서 다음 기능을 허용하는 동기 또는 비동기 콜백 기능(synchronous or asynchronous callback function)에 대한 입력 인수도 가져야한다:
* 모든 작업의 날짜와 시간을 자동으로 기록한다.
* 주어진 시간에 클라우드 작업자(68)를 일시 중지 및/또는 종료한다.
* 작업 관리 시스템에 대한 상태 및 진행 상황을 업데이트한다.
* 관리 시스템(28)의 고객 또는 운영자가 나중에 사용할 수 있도록 오류 또는 내부 상태를 기록한다.
* 인공 지능 및 머신 러닝 최적화를 위한 매트릭스, 손실 계수 또는 최적화 변수로 사용되기 위한 어떤 주어진 시간에서, 클라우드 작업자 상태 또는 파라미터의 수집 가능하고 직렬화 가능한 데이터를 기록하거나 전송한다.
관리 시스템(28)에서, 리소스 할당이 미래에 사용하기 위해 지속적으로 모니터링되어 더 많거나 적은 리소스가 필요할 수 있는 때를 예측할 수 있다. 슈퍼바이저(70)는 실시간 조정의 필요성을 피하기 위한 시도로 미래의 수요를 예상하여 클라우드 작업자(68)를 배치하고 중지할 수 있다. 비정상적으로 높거나 낮은 클라우드 작업자 트래픽이 발생할 수 있는 경우, 슈퍼바이저(70)는 효율적으로 실시간에 수요를 충족시키기 위하여 작업자 풀(68A)의 크기를 조정할 수 있다.
클라우드 작업자(68)를 위한 슈퍼바이저(70)가 충분히 오랫동안 활동한 경우, 인공 지능, 그리고 예측 모델링 방법이 슈퍼바이저의 미래 예측력의 정확도를 높이기 위해 슈퍼바이저(70)에 의해 사용될 수 있다. 관리 시스템(28)이 처음이고 아직 충분한 데이터가 수집되지 않은 고객의 경우, 사전 정의된 설정, 결합된 모든 고객의 평균 사용량에 기반한 예측, 또는 사용량 데이터를 수집하도록 특별히 설계된 스케줄이 충분한 데이터가 확보될 때까지 사용될 수 있다.
슈퍼바이저(70)는 배치된 클라우드 작업자(68)로부터의 과거 데이터를 사용하여 미래에 그들 클라우드 작업자(68)를 위한 리소스를 확장하는 방법을 결정할 수 있는 AI 모듈을 가질 수 있다. 일 실시예에 따르면, 슈퍼바이저(70)의 AI 모듈은 다음과 같이 작동할 수 있다. 사용자(16)는 일반적인 스케일링 알고리즘에 의존하여 시작하는 태스크를 생성할 수 있다. 사용자(16)는 예약된 서버의 최소 수, 추정된 평균 실행 시간 및 기타 태스크 규칙과 같은 태스크를 위한 규칙을 설정할 수 있다. 규칙의 설정은 유저 인터페이스(64)를 사용하여 입력될 수 있다. 사용자(16)는 서버(78A)의 수, 운영 시간, 운영 일, 평일 대 주말 및 기타 유사한 파라미터와 같은 운영 파라미터를 설정할 수 있다. 운영 파라미터는 유저 인터페이스(64)를 사용하여 입력될 수 있다. 슈퍼바이저(70)의 AI 모듈은 실제 실행 시간, 요청 볼륨 등에 기초하여 그 태스크에 대한 작업자 활용을 추적할 수 있다. 작업자 활용을 기반으로, AI 모듈은 요일, 하루 중 시간, 특별 이벤트 날의 발생 및 기타 사용 패턴을 포함하는 사용 패턴을 식별할 수 있다.
AI 모듈은 추적된 작업자 활용을 사용하여 작업자 활용의 미래 변화를 예측하기 위해 AI 모델을 생성할 수 있다. 사용자(16)는 이들 모델이 예측하는 것을 보고 디폴트 알고리즘이 표시/예측할 수 있는 것과 그들을 비교할 수 있다. 슈퍼바이저(70)는 서버 업 및 다운 시간, 그리고 스케일링을 최적화하기 위하여 AI 모델을 사용할 수 있다. 일 실시예에 따르면, 슈퍼바이저(70)는 사용자(16)에 의해 승인된 경우 AI 모델을 사용할 수 있다.
특정 태스크를 위한 표준화된 입력은 높은 컴퓨팅 파워를 필요로 하는 태스크에 대한 출력을 예측하도록 네트워크를 훈련시켜, 처리 시간과 리소스를 극적으로 줄일 수 있다. 입력 데이터 유형은 이미지 및 동영상과 함께 텍스트, 숫자, 또는 부울 키-값 쌍(Boolean key-value pair)을 포함할 수 있다.
충분한 수의 작업이 처리된 후, 사용자(16)는 AI 모듈의 AI 작업자 최적화를 활성화하여 수만 개의 작업 입력 및 출력을 기반으로 학습하는 머신 러닝 방법을 가질 수 있다. 이들 AI 작업자 최적화 도구는 매우 빠른 속도로 작업자 태스크를 정확하게 수행할 수 있다.
일 실시예에 따르면, 사용자(16)는 태스크를 생성하고 그 태스크의 스케일링을 자동화하기 위해 관리 시스템(28)을 사용하기 시작할 수 있다. 태스크는 표준화된 입력 및 출력의 세트(문자열(strings), 플로트(floats), 정수, 배열(이미지) 등)이 포함할 수 있다. 관리 시스템은 사용자(16)에 의해 실행되는 많은 작업에 걸쳐 이러한 입력 및 출력을 사용하여 사용자가 정의한 태스크에 대한 출력을 예측하기 위한 적절한 AI 모델을 생성할 수 있다. 관리 시스템(28)은 태스크 출력과 일치하도록 숫자 또는 분류 정확도와 같은 파라미터에 대한 AI 모델을 최적화할 수 있다. 관리 시스템(28)은 새로운 작업이 수동 태스크에 의해 완료되었을 때 AI 모델을 자동으로 훈련시킬 수 있다. 한계점 일치 정확도가 달성될 수 있을 때, 사용자(16)는 훨씬 더 오래 걸릴 수 있는 원래 태스크에 비해 수 초 내에 실행될 것으로 예상되는 AI 모델을 사용하도록 선택할 수 있다.
관리 시스템(28)은 슈퍼바이저(70)가 특정 방식으로 작동하도록 강제할 수 있는 파라미터 또는 규칙을 사용자가 지정하도록 하거나, 운영 시간, 작업자 수 또는 유사한 운영 파라미터를 선택하기 위하여 슈퍼바이저(70)에게 안내를 제공하도록 할 수 있다. 이들은 다음을 포함할 수 있지만 이에 국한되지는 않는다:
* 요청 처리를 위해 대기할 활성 클라우드 작업자의 최소 수.
* 주어진 시간 또는 시간 범위에서 활성 클라우드 작업자의 최대 수.
* 작업을 실패/중단으로 보고하기 위한 클라우드 작업자의 타임아웃.
* 작업이 처리되기 전에 대기열에서 대기할 수 있는 최대 시간.
* 머신 러닝 및 인공 지능을 사용하여 작업자를 최적화할 때 작업자 풀을 관리하기 위하여 사용되는 예측 기능의 정도 조정.
도 6을 참조하면, 클라우드 작업자 생성, 테스트, 그리고 배치를 위한 워크플로우(90)가 보여질 수 있다. 워크플로우(90)에서, 사용자(16)는 9에 도시된 바와 같이 클라우드 작업자(68)를 생성할 수 있다. 사용자(16)는 프로젝트 루트 폴더(project root folder)의 압축 된 아카이브/디렉토리(compressed archive/directory)를 업로드하거나, 94에 도시된 바와 같이 프로젝트가 호스팅되는 온라인 저장소 URL을 클라우드 작업자 생성 유틸리티/마법사에 전달할 수 있다. 클라우드 작업자 생성 유틸리티/마법사는 웹 기반 애플리케이션, 운영 체제에서 실행되는 로컬 GUI(Graphical User Interface) 애플리케이션, 또는 명령 라인, 터미널, 또는 명령 프롬프트에서 실행되기 위한 명령의 세트일 수 있다.
컨테이너화된 실행 파일의 경우, 사용자(16)는 격리된 런타임 환경, 그리고 모든 종속성을 설치/준비하는 컨테이너 시스템용 구성 파일(예를 들어, Docker 컨테이너용 Dockerfile 파일)을 생성한다.
고객이 관리 시스템(28)에 의해 제공되는 많은 공통 언어 중 하나에 대해 클라우드 작업자 템플릿을 사용하는 경우, 사용자(16)는 템플릿의 주변에 그들의 클라우드 작업자(68)를 구축할 수 있다. 템플릿은 명령 라인 인수에 의해 초기화되거나 파일 호스팅 서비스로부터 다운로드될 수 있다. 고객 또는 그 계열사는 클라우드 작업자 기능을 이 템플릿에 프로그래밍한다. 사용자(16)는 96에 도시된 바와 같이 템플릿 주위에 구축된 프로젝트를 관리 시스템(28)에 업로드할 수 있다.
사용자(16)는 언제든지 클라우드 작업자(68)를 편집할 수 있다. 워크플로우(90)에 도시된 바와 같이, 사용자(16)는 98에 도시된 바와 같이 관리 시스템(28)로부터 클라우드 작업자(68)를 끌어올 수 있다. 사용자(16)는 100에 보여지듯이 클라우드 작업자를 편집하고 변경할 수 있다. 일단 변경이 이루어지면, 클라우드 작업자(68)는 102에 보여지듯이 관리 시스템(68)으로 되돌려 보내질 수 있다.
클라이언트에 의해 개발된 클라우드 작업자(68)는 표준화된 입력 및 출력을 가져야한다. 입력 및 출력은 다음 포맷일 수 있다.
* 텍스트(문자열)
* 숫자(정수, 플로트(floats), double 및 예를 들어 8 비트 부호 없는 정수, 32 비트 부호 있는 정수 등의 특수 유형 숫자 값)
* 이미지(숫자의 N 차원 매트릭스)
* 데이터 유형의 리스트
* 데이터 유형의 사전/객체
* 또는 직렬화 가능한 객체 데이터 유형.
클라이언트에 의해 생성되면, 106에 보여지듯이 개발된 클라우드 작업자(68)의 테스트를 위한 격리된 테스트 환경이 배치될 수 있다. 테스트는 개발 운영(DevOps) 사이클 - 예를 들어, 회귀 테스트(regression testing)에서 사용되는 특정 테스트를 실행하는 제한된 기간 동안 고객에 의해 배치될 수 있다. 프로덕션/라이브 환경(production/live environment)은 108에 도시된 바와 같이 개발된 클라우드 작업자(68)의 성능을 테스트하기 위해 사용될 수도 있다.
유저 인터페이스(64)는 사용자(16)가 주어진 일정에 따라, 또는 클라우드 작업자 업데이트에 따라 주기적으로 테스트를 실행하기 위해 미리 정의된 입력 및 출력의 세트를 제공하도록 할 수 있다. 유저 인터페이스(64)는 사용자(16)가 사용자 정의 입력 변수(custom input variables)를 설정하거나, 데이터 파일을 드래그 앤 드롭하여 클라우드 작업자(68)에 전송함으로써 테스트 목적을 위해 주문형 작업을 수행하도록 할 수 있다. 유저 인터페이스(64)는 또한 사용자(16)가 데이터의 범위를 입력하거나, 벌크 데이터 파일을 업로드하도록 할 수 있다.
관리 시스템(28)의 구성 요소는 전체 태스트를 수행하고 서버 런타임을 최적화하기 위하여 함께 작동할 수 있다. 관리 시스템(28)을 사용하는 고객과 관련된 다양한 워크플로우는 다음을 포함 할 수 있지만, 이에 제한되지는 않는다:
* 고객은 유저 인터페이스(64)를 사용하여 클라우드 작업자(68)를 생성할 수 있다.
* 고객은 미리 정의된 입력 및 비교 출력의 세트를 사용하여 클라우드 작업자(68)를 테스트 할 수 있다.
* 고객은 유저 인터페이스(64)를 사용하여 사전 설정된 규칙으로 클라우드 작업자(68)를 서버(78A)에 배치할 수 있다.
* 다른 애플리케이션은 클라우드 작업자(68)에게 작업 요청을 보내기 위하여 HTTP/HTTPS GET/POST 요청 또는 기타 API 메소드(API methods)를 사용할 수 있다. 그 다음 애플리케이션은 작업 진행/상태를 추적하고, 결과 또는 오류 로그를 검색할 수 있다.
* 인공 지능은 클라우드 작업자(68) 성능을 최적화하기 위하여 사용될 수 있다.
클라우드 작업자(68)가 작업자 풀(68A)에 배치되도록 요청이 있을 때, 필요에 따라 클라우드 작업자(68)를 파견하기 위한 신호가 슈퍼바이저(70)에게 전송된다. 입력 및 출력 포맷이 업데이트 사이에 일관성이 있는 경우 클라우드 작업자(68)가 과거 데이터를 유지하는 동안 업데이트될 수 있다.
일단 클라우드 작업자(68)가 배치되면, 사용자(16)는 디스패치 API(74)를 통해 작업 요청을 전송할 수 있다. 작업 요청은 발런티어 모델의 스테이트리스 작업 요청 API(74B)를 통해, 또는 디스패치 모델의 스테이트리스 작업 디스패치 API(74A)를 통해 전송될 수 있다. API 요청은 고유한 클라우드 작업자 식별자 및 클라우드 작업자(68)에에 전달되기 위한 입력 데이터 구조 객체를 포함해야 한다. 다른 운영 파라미터 또한 클라우드 작업자(68)에게 전달될 수 있다.
API(74)는 작업 대기열(76)과 통신하고 클라우드 작업자(68) 가용성 데이터, 및 작업 상태와 함께 UUID(unique job identifier)를 사용자(16)에게 제공할 것이다. 클라우드 작업자(68)로 증가된 작업 관리자(82)는 작업 대기열(76)로부터 작업을 수락하고, 작업을 실행하기 위해, 엔트리 파일 내의 메인 기능 또는 서브루틴, 또는 제공된 입력 인수를 가진 실행 파일을 호출한다. 작업 상태 및 진행 업데이트는 작업 대기열(76)에서 업데이트되며, 이는 고객 애플리케이션에 의해 요청되거나 유저 인터페이스를 통해 보여질 수 있다. 작업이 성공적으로 완료되면, 결과가 작업 대기열(76)에 포스트된다. 사용자는 모델에 따라 스테이트리스 작업 요청 처리 API(74B) 또는 스테이트리스 디스패치 API(74A)를 통해 작업 결과를 검색할 수 있다.
클라우드 작업자(68)의 오류, 예상치 못한 상황, 잘못된 입력 등으로 인해 작업 실패 또는 타임아웃이 발생한 경우, 클라우드 작업자(68)는 작업을 종료하고 새로운 작업을 수락하도록 리셋할 수 있다. 그 다음 오류 로그가 작업 대기열(76)에 포스트될 수 있다. 고객 애플리케이션이 업데이트 또는 작업 결과를 요청할 때, 오류 로그가 제공되어야 한다. 오류 로그는 또한 디버깅, 그리고 클라우드 작업자(68)의 개선을 돕기 위해 사용되고 추적될 수 있다.
사용자(16)는 유저 인터페이스(64)를 통해, 또는 작업 요청 또는 디스패치 API(74)를 통해 그들의 활성, 완료된, 그리고 보류중인 작업을 쉽게 추적하고 관리할 수 있다.
작업은 언제든지 일시 중지, 재개, 대기열 해제, 또는 종료될 수 있다.
클라우드 작업자 콜백으로부터 수신된 정보의 분석이 열람될 수 있다.
상기 기준의 임의의 서브 세트와 일치하는 작업을 찾기 위한 간단한 정렬 및 검색 기능.
전술한 설명은 본 출원의 특정 실시예를 예시하는 것이지만, 그것에 대한 제한을 의미하지는 않는다. 그것의 모든 등가물을 포함하여, 다음의 청구 범위는 애플리케이션의 범위를 정의하기 위한 것이다.

Claims (25)

  1. 복수의 클라우드 작업자를 관리하되, 복수의 서버에 상기 클라우드 작업자의 배치를 동적으로 할당 및 관리하는 작업자 관리 유닛;
    상기 작업자 관리 유닛과 통신하되, 작업 요청을 수신하고, 상기 작업 요청을 위한 표준화된 작업 데이터 구조 객체(standardized job data structure object)를 생성하며 상기 표준화된 작업 데이터 구조 객체를 이용하여 상기 작업 요청을 가용 클라우드 작업자에게 전달하는 요청 처리 유닛; 및
    시스템의 사용자가 작업 상태를 보고 편집하고; 작업을 추적하고; 각각의 클라우드 작업자의 상태, 로드 및 운영 파라미터를 모니터링하고; 상기 클라우드 작업자 및 서버 배치에 대한 규칙을 설정 및 변경하고, 작업 결과에 대한 분석을 수행할 수 있는 유저 인터페이스
    를 포함하는 클라우드 작업자 관리 시스템.
  2. 제 1항에 있어서,
    상기 유저 인터페이스는 사용자가 상기 클라우드 작업자 및 클라우드 작업자 최적화 통계에 대한 가동 시간 및 가동 중지 시간을 볼 수 있도록 하는 클라우드 작업자 관리 시스템.
  3. 제 1항에 있어서,
    상기 유저 인터페이스는 사용자가 격리된 환경에서 상기 클라우드 작업자를 테스트하고, 실시간으로 프로세싱(processing)을 보며 생산 전에 출력을 볼 수 있도록 하는 클라우드 작업자 관리 시스템.
  4. 제 1항에 있어서,
    상기 표준화된 작업 데이터 구조 객체는 XML(Extensible Markup Language), JSON(JavaScript Object Notation), BSON(Binary JSON), 원시 텍스트 파일(raw text file), 또는 표준화된 데이터 전송 프로토콜 중 하나의 포맷인 클라우드 작업자 관리 시스템.
  5. 제 1항에 있어서,
    상기 표준화된 작업 데이터 구조는 작업을 추적하는 UUID(Universally Unique Identifier), 클라우드 작업자 식별자(cloud worker identifier), 작업 입력 데이터, 작업 결과/오류 메시지, 작업 상태, 그리고 진행 상황을 포함하는 클라우드 작업자 관리 시스템.
  6. 제 5항에 있어서,
    상기 표준화된 작업 데이터 구조는 추적하고 디버깅하기 위해 클라우드 작업자에 의해 전달된 문자열 메시지와 관련된 타임 스탬프의 리스트를 가지는 로그 데이터, 수동 종료 요청(manual kill request), 상기 작업이 요청될 때 요청 타임 스탬프, 그리고 상기 작업이 시작될 때 시작 타임 스탬프를 포함하는 클라우드 작업자 관리 시스템.
  7. 제 1항에 있어서,
    상기 작업자 관리 유닛은:
    복수의 클라우드 작업자; 및
    복수의 상기 클라우드 작업자를 관리하는 슈퍼바이저
    를 포함하고,
    상기 작업자 관리 유닛은 복수의 상기 서버에 상기 클라우드 작업자의 배치를 동적으로 할당 및 관리하는 클라우드 작업자 관리 시스템.
  8. 제 1항에 있어서,
    상기 요청 처리 유닛은:
    데이터베이스; 및
    애플리케이션 프로그래밍 인터페이스(API)
    를 포함하는 클라우드 작업자 관리 시스템.
  9. 제 1항에 있어서,
    상기 데이터베이스는 클라우드 작업자 상태 및 작업 디테일을 저장하는 클라우드 작업자 관리 시스템.
  10. 제 5항에 있어서,
    상기 요청 처리 유닛은 상기 작업 상태를 추적할 수 있도록 UUID로 상기 작업 요청에 응답하는 클라우드 작업자 관리 시스템.
  11. 제 1항에 있어서,
    상기 요청 처리 유닛은 디스패치 모드에서 동작하고, 상기 요청 처리 유닛은:
    상기 작업 요청을 위한 상기 표준화된 작업 데이터 구조 객체를 생성하고 상기 표준화된 작업 데이터 구조 객체를 이용하여 상기 작업 요청을 가용 클라우드 작업자에게 전달하는 스테이트리스 디스패치(stateless dispatch) 애플리케이션 프로그래밍 인터페이스(API); 및
    작업 요청 데이터 및 작업 진행 데이터를 저장하는 봇 상태 데이터베이스(bot status database);
    를 포함하며,
    상기 스테이트리스 디스패치 API는 가용 상기 클라우드 작업자에 대해 상기 봇 상태 데이터베이스를 쿼리(query)하고, 가용 상기 클라우드 작업자에게 상기 작업 요청을 전달하며, 상기 스테이트리스 디스패치 API가 가용 클라우드 작업자가 없는 경우 작업 대기열에 상기 작업 요청을 추가하는 클라우드 작업자 관리 시스템.
  12. 제 11항에 있어서,
    상기 슈퍼바이저는 상기 작업 대기열의 상기 작업 요청 수가 한계점보다 높을 때 새로운 클라우드 작업자를 파견하는 클라우드 작업자 관리 시스템.
  13. 제 1항에 있어서,
    상기 요청 처리 유닛은 발런티어 모드(volunteer mode)에서 운용되고, 상기 요청 처리 유닛은:
    상기 작업 요청을 위한 상기 표준화된 작업 데이터 구조 객체를 생성하고, 하기 작업 대기열에 상기 작업 요청을 스케줄링하며, 상기 작업 요청을 전송하는 사용자 애플리케이션에 작업 UUID(Universally Unique Identifier)를 전송하는 스테이트리스 작업 요청 처리 애플리케이션 프로그래밍 인터페이스(API); 및
    상기 작업 요청을 저장하고, 이용 가능한 작업을 검색하기 위해 복수의 클라우드 작업자에 의해 폴링(poll)되는 작업 대기열
    을 포함하는 클라우드 작업자 관리 시스템.
  14. 제 13항에 있어서,
    상기 작업 대기열은 작업 완료 시에 상태/진행 업데이트, 오류 로그, 그리고 결과로 복수의 상기 클라우드 작업자(68)에 의해 업데이트되는 클라우드 작업자 관리 시스템.
  15. 제 13항에 있어서,
    상기 작업 대기열은 작업 및 운영 통계를 추적하기 위해 완료 후에도 작업 엔트리를 유지하는 클라우드 작업자 관리 시스템.
  16. 제 1항에 있어서,
    상기 요청 처리 유닛과 통신하는 서버 기반 구조(server infrastructure)를 포함하는 클라우드 작업자 관리 시스템.
  17. 제 16항에 있어서,
    상기 서버 기반 구조는 상기 슈퍼바이저와 통신하고 상기 복수의 서버를 동적으로 관리하는 컨테이너 오케스트레이션 플랫폼(container orchestration platform)을 포함하는 클라우드 작업자 관리 시스템.
  18. 제 1항에 있어서,
    복수의 상기 클라우드 작업자 각각은 컨테이너화되는 클라우드 작업자 관리 시스템.
  19. 제 1항에 있어서,
    복수의 상기 클라우드 작업자 각각은 특정 클라우드 작업자의 작업 관리자에 의해 실행되는 기능/서브루틴을 포함하는 엔트리 포인트 파일(entry point file), 사용되기 위해 격리되고 컨테이너화된 환경에 대한 특정 디테일을 포함하는 환경 정의 파일, 그리고 초기화되기 위해 사용할 기본 환경 변수의 세트를 포함하는 환경 변수 파일을 포함하는 클라우드 작업자 관리 시스템.
  20. 제 19항에 있어서,
    복수의 상기 클라우드 작업자 각각은 민감한 정보의 보안 전송을 허용하기 위해 지정된 클라우드 작업자를 특정 VPN에 연결하는 VPN(Virtual Private Network) 구성 파일을 포함하는 클라우드 작업자 관리 시스템.
  21. 제 1항에 있어서,
    상기 슈퍼바이저는 AI 모델을 생성하기 위해 사용 패턴 및 서버 이용을 추적하는 클라우드 작업자 관리 시스템.
  22. 제 21항에 있어서,
    상기 슈퍼바이저는 복수의 상기 서버에 상기 클라우드 작업자의 배치를 할당하고 관리하기 위하여 상기 AI 모델을 사용하는 클라우드 작업자 관리 시스템.
  23. 제 21항에 있어서,
    상기 슈퍼바이저는 기본 스케일링 알고리즘으로부터 상기 작업 요청의 운용을 생성된 상기 AI 모델과 비교하는 클라우드 작업자 관리 시스템.
  24. 제 1항에 있어서,
    상기 슈퍼바이저는 AI 모델을 생성하기 위해 미리 정의된 수의 작업 요청을 통해 상기 표준화된 작업 데이터 구조를 추적하는 클라우드 작업자 관리 시스템.
  25. 제 24항에 있어서,
    상기 시스템은 상기 작업 요청 출력과 일치하도록 상기 AI 모델을 최적화하는 클라우드 작업자 관리 시스템.
KR1020210030238A 2020-04-20 2021-03-08 동적으로 할당된 클라우드 작업자 관리 시스템 및 그의 방법 KR20210129584A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/853,371 US11231967B2 (en) 2020-04-20 2020-04-20 Dynamically allocating and managing cloud workers
US16/853,371 2020-04-20

Publications (1)

Publication Number Publication Date
KR20210129584A true KR20210129584A (ko) 2021-10-28

Family

ID=74561806

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210030238A KR20210129584A (ko) 2020-04-20 2021-03-08 동적으로 할당된 클라우드 작업자 관리 시스템 및 그의 방법

Country Status (7)

Country Link
US (1) US11231967B2 (ko)
EP (1) EP3901773A1 (ko)
KR (1) KR20210129584A (ko)
AU (1) AU2021200064A1 (ko)
BR (1) BR102021002596A2 (ko)
CL (1) CL2021000295A1 (ko)
CO (1) CO2021001234A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11507907B2 (en) * 2020-12-09 2022-11-22 Bank Of America Corporation Multi-computer processing system with machine learning engine for optimized forecasting
US11989839B2 (en) * 2021-01-13 2024-05-21 The Boeing Company Method for automatic creation of real-time rendering content
US20230185631A1 (en) * 2021-12-14 2023-06-15 Sap Se Embedded capacity-computer module for microservice load balancing and distribution
US12061533B1 (en) * 2022-07-29 2024-08-13 Splunk Inc. Ingest health monitoring
CN115564273A (zh) * 2022-10-20 2023-01-03 深圳市众云网有限公司 一种基于云计算工作调度管理系统
US12026036B2 (en) * 2022-11-30 2024-07-02 Sap Se Distributed tracing in a microservices-based system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9344401B2 (en) * 2009-02-04 2016-05-17 Citrix Systems, Inc. Methods and systems for providing translations of data retrieved from a storage system in a cloud computing environment
US9471384B2 (en) * 2012-03-16 2016-10-18 Rackspace Us, Inc. Method and system for utilizing spare cloud resources
US9563480B2 (en) * 2012-08-21 2017-02-07 Rackspace Us, Inc. Multi-level cloud computing system
US9916188B2 (en) * 2014-03-14 2018-03-13 Cask Data, Inc. Provisioner for cluster management system
US9407944B1 (en) * 2015-05-08 2016-08-02 Istreamplanet Co. Resource allocation optimization for cloud-based video processing
US10284636B2 (en) * 2016-09-20 2019-05-07 International Business Machines Corporation Dynamic shared server resource allocation
SG10202104185UA (en) * 2016-10-21 2021-06-29 Datarobot Inc Systems for predictive data analytics, and related methods and apparatus
US10268513B2 (en) * 2016-12-23 2019-04-23 Nice Ltd. Computing resource allocation optimization
US10423455B2 (en) * 2017-02-03 2019-09-24 Microsoft Technology Licensing, Llc Method for deploying virtual machines in cloud computing systems based on predicted lifetime
KR101826498B1 (ko) * 2017-05-02 2018-02-07 나무기술 주식회사 클라우드 플랫폼 시스템
US10691514B2 (en) * 2017-05-08 2020-06-23 Datapipe, Inc. System and method for integration, testing, deployment, orchestration, and management of applications
US10855531B2 (en) * 2018-08-30 2020-12-01 Juniper Networks, Inc. Multiple networks for virtual execution elements

Also Published As

Publication number Publication date
US11231967B2 (en) 2022-01-25
CO2021001234A1 (es) 2021-03-19
BR102021002596A2 (pt) 2021-11-03
AU2021200064A1 (en) 2021-11-04
US20210326184A1 (en) 2021-10-21
EP3901773A1 (en) 2021-10-27
CL2021000295A1 (es) 2021-10-08

Similar Documents

Publication Publication Date Title
US11231967B2 (en) Dynamically allocating and managing cloud workers
US11327749B2 (en) System and method for generating documentation for microservice based applications
CN107690623B (zh) 自动异常检测和解决系统
US10884807B2 (en) Serverless computing and task scheduling
US20200090052A1 (en) Decision tables and enterprise rules for object linking within an application platform as a service environment
US9184988B2 (en) Providing configurable workflow capabilities
Baresi et al. Microservices: The evolution and extinction of web services?
US20190079780A1 (en) Plug-in management wrappers
CN109885624A (zh) 数据处理方法、装置、计算机设备和存储介质
CN111580926A (zh) 模型发布方法、模型部署方法、装置、设备及存储介质
CA2857897C (en) Business rules batch processor
US11656932B2 (en) Predictive batch job failure detection and remediation
CN113168356A (zh) 用于联络中心的统一支持框架
Rogers et al. Bundle and pool architecture for multi-language, robust, scalable workflow executions
CN110011827A (zh) 面向医联体的多用户大数据分析服务系统和方法
US20220129931A1 (en) Quantifying usage of robotic process automation related resources
Mfula et al. Seamless kubernetes cluster management in multi-cloud and edge 5G applications
US10116512B2 (en) Service discovery and/or effort estimation in networked computing environments
Kyryk et al. Infrastructure as Code and Microservices for Intent-Based Cloud Networking
US9542171B2 (en) Managing an application modification process
CN114527962B (zh) 流程自动化处理装置、方法及计算设备
CN114896049A (zh) 电力人工智能平台作业任务调度方法、系统、设备及介质
US20240241758A1 (en) Flexible computing resource cluster allocation
US11985051B1 (en) Dynamically visualizing service mesh topologies with event-based messaging
US20230185472A1 (en) Dynamic system workload placement in cloud infrastructures