KR20220088333A - 로봇 프로세스 자동화(rpa) 로봇들의 동적 클라우드 배치 - Google Patents

로봇 프로세스 자동화(rpa) 로봇들의 동적 클라우드 배치 Download PDF

Info

Publication number
KR20220088333A
KR20220088333A KR1020210179681A KR20210179681A KR20220088333A KR 20220088333 A KR20220088333 A KR 20220088333A KR 1020210179681 A KR1020210179681 A KR 1020210179681A KR 20210179681 A KR20210179681 A KR 20210179681A KR 20220088333 A KR20220088333 A KR 20220088333A
Authority
KR
South Korea
Prior art keywords
rpa
robot
met
robots
provisioning
Prior art date
Application number
KR1020210179681A
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 KR20220088333A publication Critical patent/KR20220088333A/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/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
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/50Machine tool, machine tool null till machine tool work handling
    • G05B2219/50391Robot
    • 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/45562Creating, deleting, cloning virtual machine instances
    • 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/45566Nested virtual machines
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Automation & Control Theory (AREA)

Abstract

일부 실시예들에서, 자동화 최적화기는 예를 들어 작업 큐의 현재 길이에 따라, 또는 복수의 소프트웨어 로봇을 실행하는 선택된 RPA 호스트 플랫폼의 현재 작업부하에 따라, 프로비저닝 조건이 충족되는지를 결정하도록 구성된다. 프로비저닝 조건이 충족될 때, 일부 실시예들은 각각의 RPA 호스트 플랫폼 상에 추가 VM들을 자동으로 프로비저닝하고, 자동화 요구가 낮을 때 VM들을 자동으로 제거한다. 예시적인 RPA 호스트들은 많은 가운데 특히 클라우드 컴퓨팅 플랫폼들 및 구내 서버들을 포함한다.

Description

로봇 프로세스 자동화(RPA) 로봇들의 동적 클라우드 배치{DYNAMIC CLOUD DEPLOYMENT OF ROBOTIC PROCESS AUTOMATION (RPA) ROBOTS}
본 발명은 로봇 프로세스 자동화(RPA)에 관한 것으로, 특히 클라우드 컴퓨팅 플랫폼들 상에서 RPA 활동들을 수행하는 것에 관한 것이다.
RPA는 반복적인 컴퓨팅 태스크들을 자동화하여 인간 오퍼레이터들이 자유롭게 더 지능적으로 정교하고/하거나 창의적인 활동들을 수행하게 함으로써 생산성을 개선하는 것을 목표로 하는 새로운 정보 기술 분야이다. 자동화의 타겟인 중요 태스크들은 많은 가운데 특히 문서들로부터 구조화된 데이터를 추출하는 것, 송장들 및 다른 비즈니스 문서들을 생성하는 것, 및 예를 들어 서식들을 채우기 위해 사용자 인터페이스들과 상호작용하는 것을 포함한다.
클라우드 컴퓨팅의 신속한 개발에 의해 자극된 하나의 특정 영역 관심은 클라우드에서, 즉 IaaS(infrastructure as a service) 및/또는 SaaS(software as a service) 비즈니스 모델들을 구현하는 원격 액세스가능한 컴퓨팅 플랫폼들 상에서 RPA 활동들을 수행하는 것을 포함한다. 그러나, 이러한 개발들은 특정한 기술적 장애물들에 직면한다. 예를 들어, 클라우드에서 RPA를 성공적으로 수행하는 것은 많은 가운데 특히, RPA 툴들, 클라우드 관리, 및 가상화의 동시 지식을 통상적으로 요구하며, 이것은 평균 RPA 개발자의 능력을 초과할 것으로 예상된다. 따라서, 클라우드에서 실행되도록 설계된 소프트웨어 로봇들의 프로그래밍 및 배치를 용이하게 하는 것에 강한 관심이 있으며, 궁극적인 목표는 RPA 기술의 도달범위를 진보된 프로그래밍 기술 또는 훈련이 부족한 사용자들로 확장시키는 것이다.
개요
일 양태에 따르면, 로봇 프로세스 자동화(RPA) 방법은 컴퓨터 시스템의 적어도 하나의 하드웨어 프로세서를 이용하여 RPA 작업들의 큐(queue)에 따라 그리고 또한 선택된 RPA 호스트 플랫폼 상에 현재 인스턴스화된 RPA 로봇들의 풀(pool)에 따라 프로비저닝 조건이 충족되는지를 결정하는 단계를 포함한다. 방법은 그에 응답하여, 프로비저닝 조건이 충족될 때, 큐의 RPA 작업에 따라 템플릿 저장소로부터 선택된 가상 머신(VM) 템플릿에 따라, 선택된 RPA 호스트 플랫폼 상의 VM의 자동 프로비저닝을 개시하는 단계를 추가로 포함하고, VM 템플릿을 실행하는 것은 VM이 RPA 작업을 실행하기 위해 RPA 로봇을 인스턴스화하게 한다. 방법은 VM의 프로비저닝에 응답하여, RPA 작업들의 큐를 RPA 로봇들의 풀에 할당하도록 구성된 RPA 오케스트레이터에 RPA 로봇을 접속하는 단계를 추가로 포함한다. 방법은 머신 종료 조건이 충족되는지를 결정하는 단계; 및 그에 응답하여, 충족될 때, VM의 자동 종료를 개시하는 단계를 추가로 포함한다.
본 발명의 전술한 양태들 및 이점들은 이하의 상세한 설명을 읽고 도면들을 참조하여 더 잘 이해될 것이다.
도 1은 본 발명의 일부 실시예들에 따른 예시적인 로봇 프로세스 자동화(RPA) 환경을 도시한다.
도 2는 본 발명의 일부 실시예들에 따른 RPA 로봇 및 오케스트레이터의 예시적인 컴포넌트들 및 동작을 예시한다.
도 3은 본 발명의 일부 실시예들에 따른 다양한 RPA 호스트 시스템들을 도시한다.
도 4a는 본 발명의 일부 실시예들에 따른 RPA 호스트 상에서 실행되는 예시적인 RPA 컴포넌트들을 도시한다.
도 4b는 하드웨어 가상화를 사용하는 실시예에서 RPA 호스트 상에서 실행되는 예시적인 RPA 컴포넌트들을 도시한다.
도 5는 본 발명의 일부 실시예들에 따른 복수의 RPA 호스트 플랫폼에 로봇들을 배치하는 예시적인 RPA 오케스트레이터를 도시한다.
도 6은 본 발명의 일부 실시예들에 따른 예시적인 자동화 최적화기의 동작을 예시한다.
도 7a는 본 발명의 일부 실시예들에 따른 자동화 최적화기에 의해 수행되는 단계들의 예시적인 시퀀스를 도시한다.
도 7b는 본 발명의 일부 실시예들에 따른 자동화 최적화기에 의해 수행되는 단계들의 다른 예시적인 시퀀스를 도시한다.
도 8은 본 명세서에 설명된 방법들 중 일부를 실행하도록 프로그래밍된 컴퓨팅 기기의 예시적인 하드웨어 구성을 도시한다.
이하의 설명에서, 구조들 사이의 모든 언급된 접속들은 직접적인 동작 접속들 또는 중간 구조들을 통한 간접적인 동작 접속들일 수 있다는 것이 이해된다. 요소들의 세트는 하나 이상의 요소들을 포함한다. 요소의 임의의 언급은 적어도 하나의 요소를 지칭하는 것으로 이해된다. 복수의 요소들은 적어도 2개의 요소들을 포함한다. '또는'의 임의의 사용은 배타적 논리합으로서 의도된다. 달리 요구되지 않는 한, 임의의 설명된 방법 단계들은 특정한 예시된 순서로 반드시 수행될 필요는 없다. 제2 요소부터 유도되는 제1 요소(예를 들어, 데이터)는 제2 요소와 동일한 제1 요소뿐만 아니라, 제2 요소 및 선택적으로 다른 데이터를 처리함으로써 생성되는 제1 요소를 포함한다. 파라미터에 따라 결정 또는 의사결정을 하는 것은 파라미터에 따라 그리고 선택적으로 다른 데이터에 따라 결정 또는 의사결정을 하는 것을 포함한다. 달리 특정되지 않는 한, 일부 양/데이터의 표시자는 양/데이터 자체, 또는 양/데이터 자체와 상이한 표시자일 수 있다. 컴퓨터 프로그램은 태스크를 수행하는 프로세서 명령어들의 시퀀스이다. 본 발명의 일부 실시예들에서 설명되는 컴퓨터 프로그램들은 다른 컴퓨터 프로그램들의 독립형 소프트웨어 엔티티들 또는 서브엔티티들(예를 들어, 서브루틴들, 라이브러리들)일 수 있다. '데이터베이스'라는 용어는 본 명세서에서 데이터의 임의의 조직화된 검색가능 집합을 나타내기 위해 사용된다. 컴퓨터 판독가능 매체는 자기, 광학, 및 반도체 저장 매체들(예를 들어, 하드 드라이브들, 광 디스크들, 플래시 메모리, DRAM)과 같은 비일시적 매체들뿐만 아니라, 도전성 케이블들 및 광섬유 링크들과 같은 통신 링크들을 포함한다. 일부 실시예들에 따르면, 본 발명은, 특히, 본 명세서에서 설명되는 방법들을 수행하도록 프로그래밍되는 하드웨어(예를 들어, 하나 이상의 프로세서들)를 포함하는 컴퓨터 시스템들뿐만 아니라, 본 명세서에서 설명되는 방법들을 수행하기 위한 명령어들을 인코딩하는 컴퓨터 판독가능 매체들을 제공한다.
아래의 설명은 본 발명의 실시예들을 예로서 설명하며, 반드시 한정은 아니다.
도 1은 본 발명의 일부 실시예들에 따른 예시적인 로봇 프로세스 자동화(RPA) 환경(10)을 도시한다. 환경(10)은 특정 태스크의 자동화를 달성하기 위해 협력하는 다양한 소프트웨어 컴포넌트들을 포함한다. 예시적인 RPA 시나리오에서, 회사의 직원은 비즈니스 애플리케이션(예를 들어, 워드 프로세서, 스프레드시트 편집기, 브라우저, 이메일 애플리케이션)을 사용하여 반복적인 태스크를 수행하며, 예를 들어 다양한 클라이언트들에게 송장들을 발행한다. 각각의 태스크를 실제로 수행하기 위해, 직원은 본 명세서에서 프로세스로 간주되는 동작들/액션들의 시퀀스를 수행한다. 송장 발행 프로세스의 일부를 형성하는 예시적인 동작들은 마이크로소프트 Excel® 스프레드시트를 여는 것, 클라이언트의 회사 세부 사항들을 탐색하는 것, 각각의 세부 사항들을 송장 템플릿에 복사하는 것, 구매된 항목들을 나타내는 송장 필드들을 채우는 것, 이메일 애플리케이션으로 전환하는 것, 각각의 클라이언트에 대한 이메일 메시지를 작성하는 것, 새로 생성된 송장을 각각의 이메일 메시지에 첨부하는 것, 및 '송신' 버튼을 클릭하는 것을 포함할 수 있다. RPA 환경(10)의 다양한 요소들은 각각의 태스크를 수행하는 과정에서 각각의 인간 오퍼레이터에 의해 수행되는 동작들의 세트를 모방함으로써 각각의 프로세스를 자동화할 수 있다.
인간의 동작/액션을 모방하는 것은 본 명세서에서, 인간 오퍼레이터가 컴퓨터 상에서 각각의 동작/액션을 수행할 때 발생하는 컴퓨팅 이벤트들의 시퀀스를 재생하는 것뿐만 아니라, 인간 오퍼레이터가 컴퓨터 상에서 각각의 동작을 수행한 결과를 재생하는 것을 포함하는 것으로 이해된다. 예를 들어, 그래픽 사용자 인터페이스의 버튼을 클릭하는 액션을 모방하는 것은 운영 체제가 마우스 포인터를 각각의 버튼 상으로 이동시키게 하고 마우스 클릭 이벤트를 생성하는 것을 포함할 수 있거나, 대안적으로 각각의 GUI 버튼 자체를 클릭된 상태로 토글링하는 것을 포함할 수 있다.
통상적으로 이러한 자동화의 타겟인 프로세스들은 많은 가운데 특히, 지불 처리, 송장 발행, 비즈니스 클라이언트와의 통신(예를 들어, 뉴스레터 및/또는 제품 제의의 배포), 내부 통신(예를 들어, 메모, 회의 및/또는 태스크의 스케줄링), 감사, 및 페이롤 처리를 포함한다. 일부 실시예들에서, 전용 RPA 설계 애플리케이션(30)(도 2)은 인간 개발자가 소프트웨어 로봇을 설계하여 타겟 프로세스를 효과적으로 자동화하는 작업흐름을 구현할 수 있게 한다. 작업흐름은 통상적으로, 본 명세서에서 활동이라고 간주되는 맞춤형 자동화 단계들의 시퀀스를 포함한다. 각각의 활동은 버튼 클릭, 파일 판독, 스프레드시트 셀 기입 등과 같이 로봇에 의해 수행되는 액션을 포함할 수 있다. 활동들은 네스팅 및/또는 임베딩될 수 있다. 일부 실시예들에서, RPA 설계 애플리케이션(30)은 개발자에게 작업흐름의 활동들 사이의 관계 및 실행 순서의 제어를 제공하는 사용자 인터페이스 및 툴 세트를 노출한다. RPA 설계 애플리케이션(30)의 실시예의 하나의 상업적 예는 UiPath StudioXTM이다.
일부 유형들의 작업흐름들은 시퀀스들, 흐름도들, 유한 상태 머신들(FSM들), 및/또는 글로벌 예외 핸들러들을 포함할 수 있지만 이에 한정되지 않는다. 시퀀스들은 선형 프로세스들에 특히 적합하여, 작업흐름을 어수선하게 하지 않고 하나의 활동으로부터 다른 활동으로의 흐름을 가능하게 할 수 있다. 흐름도들은 더 복잡한 비즈니스 로직에 특히 적합하여, 다수의 분기 로직 오퍼레이터들을 통해 더 다양한 방식으로 의사결정들의 통합 및 활동들의 접속을 가능하게 할 수 있다. FSM들은 큰 작업흐름들에 특히 적합할 수 있다. FSM들은 조건(즉, 전이) 또는 활동에 의해 트리거되는 그들의 실행에서의 유한 수의 상태들을 사용할 수 있다. 글로벌 예외 핸들러들은 실행 에러에 직면할 때 작업흐름 거동을 결정하고 프로세스들을 디버깅하는 데 특히 적합할 수 있다.
작업흐름이 개발되면, 그것은 RPA 스크립트들(40)(도 2)의 세트로서 컴퓨터 판독 가능 형태로 인코딩될 수 있다. RPA 스크립트들(40)은 이 분야에 공지된 임의의 데이터 사양에 따라, 예를 들어, XML(extensible markup language), JSON(Javascript Object Notation), 또는 C#, Visual Basic, Java 등과 같은 프로그래밍 언어의 버전으로 작성될 수 있다. 대안적으로, RPA 스크립트들(40)은 바이트코드의 RPA 특정 버전으로, 또는 심지어 영어, 스페인어, 일본어 등과 같은 자연어로 작성된 명령어들의 시퀀스로서 작성될 수 있다. 일부 실시예들에서, 스크립트들(40)은 네이티브 프로세서 명령어들(예를 들어, 머신 코드)의 세트로 미리 컴파일된다.
통상의 기술자는 RPA 설계 애플리케이션(30)이 별개의 물리적 머신들 상에서 실행될 수 있는 복수의 컴포넌트/모듈을 포함할 수 있다는 것을 알 것이다. 본 발명의 클라우드 컴퓨팅 실시예를 예시하는 하나의 그러한 예에서, RPA 설계 애플리케이션(30)은 클라이언트-서버 구성에서 실행될 수 있고, 여기서 애플리케이션(30)의 한 컴포넌트는 로봇 설계 인터페이스를 클라이언트 컴퓨터의 사용자에게 노출할 수 있고, 서버 컴퓨터 상에서 실행되는 애플리케이션(30)의 다른 컴포넌트는 로봇 작업흐름을 조립하고 RPA 스크립트(40)를 작성/출력할 수 있다. 예를 들어, 개발자는 클라이언트 컴퓨터 상에서 실행되는 웹 브라우저를 통해 로봇 설계 인터페이스에 액세스할 수 있는 반면, 클라이언트 컴퓨터에서 수신된 사용자 입력을 처리하는 소프트웨어는 서버 컴퓨터 상에서 실제로 실행된다.
작성된 스크립트들(40)은 오케스트레이터(14)에 의해 추가로 제어되고 조정될 수 있는 로봇들(12a-c)(도 1)의 세트에 의해 실행될 수 있다. 로봇들(12a-c) 및 오케스트레이터(14)는 각각, 동일한 물리적 머신 상에서 실행될 수 있거나 실행되지 않을 수 있는 복수의 컴퓨터 프로그램들을 포함할 수 있다. 로봇들(12a-c) 및 오케스트레이터(14)의 예시적인 상업적 실시예들은 각각 UiPath RobotsTM 및 UiPath OrchestratorTM를 포함한다. 로봇들(12a-c)의 유형들은 유인 로봇들, 무인 로봇들, 개발 로봇들(무인 로봇들과 유사하지만, 개발 및 테스팅 목적들을 위해 사용됨), 및 비생산 로봇들(유인 로봇들과 유사하지만, 개발 및 테스팅 목적들을 위해 사용됨)을 포함하지만, 이에 한정되지 않는다.
유인 로봇들은 사용자 이벤트들 및/또는 커맨드들에 의해 트리거되고, 동일한 컴퓨팅 시스템 상에서 인간 오퍼레이터와 함께 동작한다. 일부 실시예들에서, 유인 로봇들은 단지 로봇 트레이로부터 또는 커맨드 프롬프트로부터 시작될 수 있고, 따라서 오케스트레이터(14)로부터 제어될 수 없고, 예를 들어 스크린이 잠긴 상태에서는 실행될 수 없다. 무인 로봇들은 원격 가상 환경들에서 사람 없이 실행될 수 있고, 원격 실행, 모니터링, 스케줄링, 및 작업 큐들에 대한 지원 제공을 담당할 수 있다.
오케스트레이터(14)는 로봇들(12a-c)에 대한 프로비저닝, 배치, 구성, 큐잉, 모니터링, 로깅 및/또는 상호접속성 제공을 포함하지만 이에 한정되지 않는 다양한 능력들을 가질 수 있다. 프로비저닝은 로봇들(12a-c)과 오케스트레이터(14) 사이의 접속들의 생성 및 유지를 포함할 수 있다. 배치는 실행을 위해 로봇들(12a-c)로의 소프트웨어(예로서, RPA 스크립트들(40))의 올바른 전달을 보증하는 것을 포함할 수 있다. 구성은 로봇 환경들 및 작업 흐름 구성들의 유지 및 전달을 포함할 수 있다. 큐잉은 작업 큐들 및 큐 아이템들의 관리를 제공하는 것을 포함할 수 있다. 모니터링은 로봇 상태의 추적 및 사용자 허가들의 유지를 포함할 수 있다. 로깅은 데이터베이스 및/또는 다른 저장 메커니즘(예로서, SQL, ElasticSearchTM, RedisTM)에 대한 로그들의 저장 및 인덱싱을 포함할 수 있다. 오케스트레이터(14)는 또한 제삼자 솔루션들 및/또는 애플리케이션들에 대한 통신의 중앙화된 포인트로서 작용할 수 있다.
도 2는 본 발명의 일부 실시예들에 따른 로봇(12) 및 오케스트레이터(14)의 예시적인 컴포넌트들을 도시한다. 예시적인 RPA 로봇은 마이크로소프트사로부터의 WindowsTM 작업흐름 파운데이션 애플리케이션 프로그래밍 인터페이스를 사용하여 구성된다. 로봇(12)은 실행기들(22)의 세트 및 RPA 에이전트(24)를 포함할 수 있다. 로봇 실행기들(22)은 비즈니스 프로세스를 수행하는 인간 오퍼레이터의 액션들을 모방하는 활동들의 시퀀스를 표시하는 RPA 스크립트(40)를 수신하고, 각각의 클라이언트 머신 상에서 활동들의 각각의 시퀀스를 실제로 수행하도록 구성된다. 일부 실시예들에서, 로봇 실행기(들)(22)는 RPA 스크립트(40)를 각각의 스크립트에 설명된 동작들을 수행하기 위한 프로세서 명령어들을 포함하는 런타임 패키지로 변환하도록 구성되는 인터프리터(예를 들어, 저스트-인-타임 인터프리터 또는 컴파일러)를 포함한다. 따라서, 스크립트(40)를 실행하는 것은 실행기(들)(22)가 RPA 스크립트(40)를 변환하고, 각각의 호스트 머신의 프로세서에게 결과적인 런타임 패키지를 메모리에 로딩하고 런타임 패키지를 실행으로 런칭하도록 명령하는 것을 포함할 수 있다.
RPA 에이전트(24)는 로봇 실행기(들)(22)의 동작을 관리할 수 있다. 예를 들어, RPA 에이전트(24)는 인간 오퍼레이터로부터의 입력에 따라 그리고/또는 스케줄에 따라 로봇 실행기(들)(22)에 의한 실행을 위한 태스크들/스크립트들을 선택할 수 있다. 에이전트(24)는 작업들을 시작 및 중지하고 실행기(들)(22)의 다양한 동작 파라미터들을 구성할 수 있다. 로봇(12)이 다수의 실행기(22)를 포함할 때, 에이전트(24)는 그들의 활동들 및/또는 프로세스 간 통신을 조정할 수 있다. RPA 에이전트(24)는 RPA 로봇(12)과 오케스트레이터(14) 및/또는 다른 엔티티들 사이의 통신을 추가로 관리할 수 있다.
WindowsTM 환경에서 실행되는 일부 실시예들에서, 로봇(12)은 디폴트로 마이크로소프트 WindowsTM 서비스 제어 관리자(SCM)-관리 서비스를 설치한다. 그 결과, 그러한 로봇들은 로컬 시스템 계정 하에서 상호작용 WindowsTM 세션들을 열 수 있고, WindowsTM 서비스의 프로세서 특권을 가질 수 있다. 예를 들어, 콘솔 애플리케이션은 SCM-관리 로봇에 의해 런칭될 수 있다. 일부 실시예들에서, 로봇(12)은 프로세서 특권의 사용자 레벨(사용자 모드, 링 3)에 설치될 수 있다. 그러한 로봇은 각각의 로봇이 설치된 사용자와 동일한 권한을 갖는다. 예를 들어, 그러한 로봇은 각각의 사용자가 할 수 있는 임의의 애플리케이션을 런칭할 수 있다. 동시에 실행되는 다수의 상호작용 세션을 지원하는 컴퓨팅 시스템들(예를 들어, WindowsTM 서버(2012)) 상에서, 다수의 로봇은 동시에, 각각 개별 WindowsTM 세션에서, 상이한 사용자 이름들을 사용하여 실행될 수 있다.
일부 실시예들에서, 로봇(12) 및 오케스트레이터(14)는 클라이언트-서버 구성으로 실행될 수 있다. 클라이언트 측, 서버 측, 또는 둘 다는 본 발명의 범위를 벗어나지 않고 임의의 원하는 수의 컴퓨팅 시스템들(예를 들어, 물리 또는 가상 머신들)을 포함할 수 있다는 점에 유의해야 한다. 그러한 구성들에서, 실행기(들)(22) 및 RPA 에이전트(24)를 포함하는 로봇(12)은 클라이언트 측 상에서 실행될 수 있다. 로봇(12)은 여러 작업들/작업흐름들을 동시에 실행할 수 있다. RPA 에이전트(24)(예를 들어, WindowsTM 서비스)는 실행기들(22)의 접촉의 단일 클라이언트 측 포인트로서 작용할 수 있다. 에이전트(24)는 로봇(12)과 오케스트레이터(14) 사이의 통신을 추가로 관리할 수 있다. 일부 실시예들에서, 통신은 오케스트레이터(14)에 대한 웹소켓 채널을 개방할 수 있는 에이전트(24)에 의해 개시된다. 에이전트(24)는 후속하여 채널을 사용하여 각각의 실행기(22)의 상태에 관한 통지들을 오케스트레이터(M)에, 예를 들어 하트비트 신호로서 송신할 수 있다. 결국, 오케스트레이터(14)는 채널을 사용하여 확인응답들, 작업 요청들, 및 RPA 스크립트들(40)과 같은 다른 데이터를 로봇(12)에 송신할 수 있다.
오케스트레이터(14)는 서버 측에서, 아마도 다수의 물리 및/또는 가상 머신에 걸쳐 분산되어 실행될 수 있다. 하나의 그러한 실시예에서, 오케스트레이터(14)는 웹 애플리케이션일 수 있는 오케스트레이터 사용자 인터페이스(UI)(17), 및 서비스 모듈들(19)의 세트를 포함할 수 있다. 서비스 모듈들(19)은 한 세트의 개방 데이터 프로토콜(OData) 표현 상태 송신(REST) 애플리케이션 프로그래밍 인터페이스(API) 엔드포인트들, 및 한 세트의 서비스 API들/비즈니스 로직을 추가로 포함할 수 있다. 사용자는 오케스트레이터 UI(17)를 통해(예를 들어, 브라우저 상의 전용 오케스트레이터 인터페이스를 개방함으로써) 오케스트레이터(14)와 상호작용하여, 예를 들어 로봇(12) 상에서 작업들을 시작하는 것, 로봇 그룹들/풀들을 생성하는 것, 로봇들에 작업흐름들을 할당하는 것, 큐들에/큐들로부터 데이터를 추가/제거하는 것, 사람 없이 실행될 작업들을 스케줄링하는 것, 로봇 또는 작업흐름마다 로그들을 분석하는 것 등을 포함할 수 있는 다양한 액션들을 수행하도록 오케스트레이터(14)에 명령할 수 있다. 오케스트레이터 UI(17)는 하이퍼텍스트 마크업 언어(HTML), 자바스크립트(JS), 또는 이 분야에 공지된 임의의 다른 데이터 포맷을 사용할 수 있다.
오케스트레이터(14)는 서비스 API들/비즈니스 논리를 선택적으로 호출함으로써 사용자에 의해 요청된 액션들을 수행할 수 있다. 게다가, 오케스트레이터(14)는 로봇(12)과 통신하기 위해 REST API 엔드포인트들을 사용할 수 있다. REST API는 구성, 로깅, 모니터링 및 큐잉 기능을 포함할 수 있다. 구성 엔드포인트들은 애플리케이션 사용자들, 허가들, 로봇들, 자산들, 릴리스들 등을 정의 및 구성하는 데 사용될 수 있다. 로깅 REST 엔드포인트들은 예를 들어 에러들, 로봇들에 의해 송신된 명시적 메시지들 및 다른 환경 특정 정보와 같은 상이한 정보를 로깅하는 데 사용될 수 있다. 전개 REST 엔드포인트들은 실행될 RPA 스크립트(40)의 버전을 조회하기 위해 로봇들에 의해 사용될 수 있다. 큐잉 REST 엔드포인트들은 큐에 데이터를 추가하는 것, 큐로부터 트랜잭션을 획득하는 것, 트랜잭션의 상태를 설정하는 것 등과 같은 큐들 및 큐 아이템 관리를 담당할 수 있다. 모니터링 REST 엔드포인트들은 오케스트레이터(14) 및 RPA 에이전트(24)의 웹 애플리케이션 컴포넌트를 모니터링할 수 있다.
일부 실시예들에서, RPA 환경(10)(도 1)은 RPA 데이터베이스(18)에 접속된 데이터베이스 서버(16)를 추가로 포함한다. 서버(16)가 클라우드 컴퓨팅 플랫폼 상에 프로비저닝되는 실시예에서, 서버(16)는 데이터베이스 서비스로서, 예를 들어, 데이터베이스 커넥터들의 세트를 갖는 클라이언트로서 구현될 수 있다. 데이터베이스 서버(16)는 RPA 환경(10)과 관련된 데이터를 데이터베이스(18)에/그로부터 선택적으로 저장 및/또는 검색하도록 구성된다. 그러한 데이터는 다양한 로봇들(12a-c)의 구성 파라미터들, 로봇 풀들뿐만 아니라, 다양한 로봇들에 의해 실행되는 작업흐름들을 특성화하는 데이터, 및 사용자들, 역할들, 스케줄들, 큐들 등을 특성화하는 데이터를 포함할 수 있다. 데이터베이스 서버(16)에 의해 저장 및/또는 검색되는 데이터의 다른 예시적인 카테고리는 각각의 실행 로봇의 현재 상태를 특성화하는 데이터를 포함한다. 데이터의 또 다른 예시적인 카테고리는 실행 동안 다양한 로봇들에 의해 로깅된 메시지들을 포함한다. 데이터베이스 서버(16) 및 데이터베이스(18)는 많은 가운데 특히, 구조화된 조회 언어(SQL), ElasticSearchTM, 및 RedisTM와 같은, 이 분야에 공지된 임의의 데이터 저장 프로토콜 및 포맷을 이용할 수 있다. 일부 실시예들에서, 데이터는 예를 들어 로깅 REST 엔드포인트들을 통해 오케스트레이터(14)에 의해 수집 및 관리된다. 오케스트레이터(14)는 구조화된 조회들을 데이터베이스 서버(16)에 추가로 발행할 수 있다.
일부 실시예들에서, RPA 환경(10)(도 1)은 환경(10)의 다양한 멤버들을 상호접속하는 통신 채널들/링크들(15a-e)을 추가로 포함한다. 그러한 링크들은 이 분야에 공지된 임의의 방법에 따라, 예를 들어 가상 네트워크 링크들, 가상 비공개 네트워크들(VPN) 또는 종단 대 종단 터널들로서 구현될 수 있다. 일부 실시예들은 또한 링크들(15a-e)의 일부 또는 전부에 걸쳐 순환하는 데이터를 암호화한다.
통상의 기술자는 RPA 환경(10)의 다양한 컴포넌트들이 별개의 호스트 컴퓨터 시스템들(물리적 기기들 및/또는 가상 머신들) 상에서 구현될 수 있고/있거나 실행될 수 있다는 것을 이해할 것이다. 도 3은 본 발명의 일부 실시예들에 따른 다양한 그러한 RPA 호스트 시스템들(20a-e)을 도시한다. 각각의 호스트 시스템(20a-e)은 적어도 하드웨어 프로세서, 메모리 유닛, 및 각각의 RPA 호스트가 컴퓨터 네트워크(13) 및/또는 다른 컴퓨팅 디바이스들에 접속할 수 있게 하는 네트워크 어댑터를 갖는 컴퓨팅 시스템(예를 들어, 개별 컴퓨팅 기기, 또는 상호접속된 컴퓨터들의 세트)을 나타낸다. 예시적인 RPA 호스트들(20a-c)은 많은 가운데 특히 개인용 컴퓨터들, 랩톱 및 태블릿 컴퓨터들, 모바일 통신 디바이스들(예를 들어, 스마트폰들), 및 회사 메인프레임 컴퓨터들을 포함한다. 호스트들(20d-e)로서 예시된 다른 예시적인 호스트들은 AmazonTM AWS 및 MicrosoftTM AzureTM에 의해 운영되는 서버 팜들과 같은 클라우드 컴퓨팅 플랫폼들을 포함한다. 클라우드 컴퓨팅 플랫폼은 플랫폼-특정 프로토콜에 따라 중앙 관리되는 복수의 상호접속된 서버 컴퓨터 시스템들을 포함한다. 클라이언트들은 플랫폼-특정 인터페이스들/소프트웨어 계층들/라이브러리들(예를 들어, 소프트웨어 개발 키트들 - SDK들, 플러그인들 등) 및/또는 커맨드들의 플랫폼-특정 신택스를 사용하여 그러한 클라우드 컴퓨팅 플랫폼들과 상호작용할 수 있다. 예시적인 플랫폼-특정 인터페이스들은 많은 가운데 특히 AzureTM SDK 및 AWSTM SDK를 포함한다.
또 다른 예시적인 RPA 호스트는 구내 컴퓨터(예를 들어, 서버)를 포함한다. 용어 "구내"는 본 명세서에서, 예를 들어 사람/조직과 별개인 엔티티에 의해 소유되는 클라우드 플랫폼과 달리, 각각의 RPA 소프트웨어를 사용하고/하거나 각각의 하드웨어 상에서 실행되는 RPA 작업들을 소유하는 상기 사람/조직에 의해 소유되는 하드웨어를 나타내기 위해 사용된다.
도 4a-b는 다양한 구성들에서 RPA 호스트 플랫폼(20) 상에서 실행되는 예시적인 소프트웨어를 도시한다. 예시된 RPA 호스트 플랫폼(20)은 도 3의 RPA 호스트들(20a-e) 중 임의의 것, 예를 들어 독립형 개인용 컴퓨터, 구내 서버, 클라우드 컴퓨팅 플랫폼 등을 나타낼 수 있다. 도 4a에 예시된 하나의 그러한 실시예에서, 플랫폼(20)은 운영 체제(OS)(30) 및 RPA 타겟 애플리케이션(32)의 인스턴스, 즉 로봇(12)에 의한 자동화의 타겟인 소프트웨어 애플리케이션, 예를 들어 Microsoft ExcelTM 또는 웹 브라우저의 인스턴스를 실행한다. OS(30)는 애플리케이션(32)과 호스트 플랫폼(20)의 하드웨어 사이에서 인터페이스하는 소프트웨어 계층을 포함하는 많은 가운데 특히 Microsoft WindowsTM, MacOSTM, LinuxTM, iOSTM 또는 AndroidTM와 같은 임의의 널리 이용 가능한 운영 체제를 포함할 수 있다. RPA 타겟 애플리케이션(32)은 일반적으로 태스크를 수행하기 위해 인간 오퍼레이터에 의해 사용되는 임의의 컴퓨터 프로그램을 나타낸다. 예시적인 애플리케이션들(32)은 많은 가운데 특히 워드 프로세서, 스프레드시트 애플리케이션, 그래픽 애플리케이션, 브라우저, 소셜 미디어 애플리케이션 및 전자 통신 애플리케이션을 포함한다.
많은 가운데 특히 클라우드 컴퓨팅과 같은 하드웨어 가상화 기술들을 이용하는 일부 실시예들에서, RPA 환경(10)의 일부 컴포넌트들은 도 4b에 도시된 바와 같이 가상 머신(VM) 내에서 실행될 수 있다. 가상 머신들은 운영 체제 및 다른 애플리케이션들을 실행할 수 있는 실제 물리적 머신들/컴퓨터 시스템들의 소프트웨어 에뮬레이션들로서 이 분야에 알려져 있다. 일부 클라우드 컴퓨팅 플랫폼들은 VM들(28a-b)의 세트를 노출하기 위해 하이퍼바이저(26)를 이용한다. 하이퍼바이저(26)는 통상적으로 프로세서 특권의 최고 레벨(즉, 때때로 루트 또는 링-1로 알려진 최고 특권 레벨)에서 실행되는 소프트웨어 계층을 포함한다. 본 명세서에서 VM을 노출하는 것은 가상 프로세서 및 가상 제어기들과 같은 복수의 가상화된 디바이스를 생성 또는 인에이블하고, 그러한 가상화된 디바이스들을 호스트 플랫폼(20)의 실제 물리적 디바이스들 대신에 소프트웨어에 제시하는 것을 포함한다. 각각의 가상화된 디바이스(예를 들어, 프로세서, 입력, 출력, 저장소 등)는 호스트 플랫폼(20)의 각각의 물리적 디바이스의 기능 중 적어도 일부를 에뮬레이션한다. 예를 들어, 가상화된 프로세서 상에서 실행되는 소프트웨어는 가상화된 네트워크 어댑터를 통해 네트워크 트래픽을 송신 및/또는 수신할 수 있다. 하이퍼바이저(26)는 다수의 VM(28a-b)에 의한 RPA 호스트(20)의 하드웨어 자원들의 다중화(공유)를 추가로 가능하게 할 수 있다. 일부 실시예들에서, 그러한 공유는 각각의 VM(28a-b)이 독립적으로 동작하고, 호스트 플랫폼(20) 상에서 동시에 실행되는 다른 VM들을 알지 못하도록 구성된다.
일부 실시예들에서, RPA 호스트 플랫폼(20)은 각각의 RPA 호스트의 현재 작업부하의 다양한 척도들, 예를 들어, 각각의 호스트 플랫폼 상에 현재 인스턴스화된 VM들의 카운트, 현재 실행 중이고/이거나 유휴 상태인 RPA 로봇(12)의 인스턴스들의 카운트, 각각의 호스트 플랫폼에 의해 현재 소비되는 하드웨어 자원(예를 들어, 프로세서 사이클들, 메모리, 데이터 트래픽)의 양 등을 결정하도록 구성된 사용량 계량 모듈(29)을 추가로 실행할 수 있다. 계량 모듈(29)은 예시된 바와 같이 하이퍼바이저(26)의 일부를 형성할 수 있지만, 이 구성은 제한적인 것으로 의도되지 않는다. 계량 모듈(29)은, 예를 들어, 메모리 자기 검사를 통해 또는 개별 VM들(28a-b)에 삽입된 계량 에이전트들의 세트와 협력함으로써, 작업부하 척도들을 결정하기 위해 하드웨어 가상화의 분야에 공지된 임의의 방법을 사용할 수 있다.
도 5는 본 발명의 일부 실시예들에 따른, 다수의 RPA 호스트 플랫폼들에 걸쳐 RPA 활동들을 관리하는 예시적인 오케스트레이터(14)를 예시한다. 도 5는 3개의 RPA 호스트 플랫폼만을 도시하지만, 기술자는 본 설명이 사실상 임의의 수의 RPA 호스트들로 동일하게 확장된다는 것을 이해할 것이다. 각각의 예시된 RPA 호스트 플랫폼(20f-g-h)은 별개의 컴퓨팅 시스템, 예를 들어 개별 컴퓨터, 구내 서버 및/또는 클라우드 컴퓨팅 플랫폼을 나타낼 수 있다. 각각의 호스트 플랫폼은 별개의 프로토콜에 따라 동작하고/하거나 별개의 엔티티에 의해 소유되는 클라우드 컴퓨팅 플랫폼을 나타낼 수 있다. 예를 들어, 플랫폼(20f)은 아마존 AWSTM 서버를 포함할 수 있는 반면, 플랫폼(20g)은 마이크로소프트 AzureTM 서버를 나타낼 수 있다. 결국, 오케스트레이터(14)의 일부 또는 모든 컴포넌트들은 또 다른 RPA 호스트(20h)(예를 들어, 구글사로부터의 GoogleTM 클라우드 플랫폼 서버) 상에서 실행될 수 있다. 오케스트레이터(14)는 인터넷을 포함할 수 있는 통신 네트워크(13)를 통해 RPA 호스트들(20f-g)과 통신할 수 있다.
각각의 RPA 호스트 플랫폼(20f-g)은 복수의 가상 머신(예시적인 가상 머신들은 도 5에서 VM들(28c-d-e)로서 예시됨)을 실행할 수 있다. 각각의 VM은 고유 식별자, 예를 들어 VM ID에 의해 식별될 수 있어서, 선택적으로 시작, 중지, 검사, 구성 등이 될 수 있다. 일부 실시예들에서, 호스트 상에 현재 노출/인스턴스화된 VM들은 도 5에 도시된 머신 풀(38)과 같은 풀들로 그룹화될 수 있다. 이러한 그룹화는 공통 소유권, 공통 하드웨어 또는 소프트웨어 구성, 및/또는 공통 태스크에 대한 할당을 반영할 수 있다. 예를 들어, 하나의 머신 풀에 속하는 머신들은 고객 A에 의해 소유 및/또는 운영될 수 있는 반면, 다른 머신 풀에 속하는 머신들은 고객 B에 의해 소유 및/또는 운영될 수 있다. 다른 예에서, 하나의 머신 풀에 속하는 VM들은 하나의 유형의 RPA 작업에 예약/할당될 수 있는 반면, 다른 머신 풀에 속하는 VM들은 다른 유형의 RPA 작업에 예약/할당될 수 있다.
각각의 RPA 호스트 플랫폼(20f-g)은 복수의 RPA 로봇을 추가로 실행할 수 있으며, 이들 중 일부는 가상 머신들 내에서 실행될 수 있다. 각각의 RPA 로봇은 고유 로봇 ID에 의해 식별될 수 있고, 따라서 선택적으로 시작, 중지, 검사, 구성, 작업 할당 등이 될 수 있다. 일부 RPA 로봇들은 또한 풀들로 그룹화될 수 있다(예를 들어, 도 5에 예시된 로봇 풀들(48a-b) 참조). 그러한 그룹화는 공통 소유권, 공통 로봇 유형, 공통 태스크에 대한 할당 등을 반영할 수 있다. 동일한 RPA 호스트 상에서 또는 동일한 VM 내에서 실행되는 로봇들은 반드시 동일한 로봇 풀의 일부는 아니다. 도 5의 예에서, RPA 로봇들(12d-e-f)은 로봇 풀(48a)에 속하는 반면, 로봇(12g)은 그렇지 않다.
일부 실시예들에서, 오케스트레이터(14)는 현재 실행 중인 RPA 작업들과 각각의 작업들을 실행하는 RPA 호스트들, VM(들) 및/또는 RPA 로봇(들) 사이의 매핑을 유지한다. 오케스트레이터(14)는 로봇들을 그들이 실행되고 있는 VM들에, 개별 VM들을 그들 각각의 머신 풀들에, 그리고/또는 개별 RPA 로봇들을 그들 각각의 로봇 풀들에 추가로 매핑할 수 있다. 그러한 매핑들은 RPA 데이터베이스(18)의 일부로서 인코딩되고 저장될 수 있다.
일부 실시예들에서, 자동화 최적화기(50)는 아래에 상세히 도시되는 바와 같이 다수의 고객을 대신하여 RPA 호스트 플랫폼들(20f-g) 상의 RPA 활동들을 동적으로 스케일링하도록 구성된다. 도 5는 최적화기(50)를 오케스트레이터(14)의 일부로서 도시하지만, 이러한 구성은 제한적인 것으로 의도되지 않는다. 대안 실시예들에서, 자동화 최적화기(50)는 오케스트레이터(14)에 대한 개별 엔티티로서 실행되고, 심지어 별개의 RPA 호스트 플랫폼 상에서 실행될 수 있다. 그러한 실시예들에서, 최적화기(50)는 전용 애플리케이션 프로그래밍 인터페이스(API)를 통해 오케스트레이터(14)와 통신할 수 있다.
자동화 최적화기(50)는 고객 데이터베이스(52) 및 VM 템플릿 저장소(54)와 인터페이스할 수 있다. 이러한 인터페이스들은 데이터베이스 서버로서 구현될 수 있다. 일부 실시예들에서, 고객 데이터베이스(52)는 복수의 별개의 RPA 고객 각각을 특성화하는 다양한 파라미터 값들을 나타내는 고객 레코드들의 세트를 포함할 수 있다. 예시적인 고객 레코드는, 예를 들어, 각각의 고객에게 RPA 서비스들을 제공하기 위한 유형, 지속기간 및/또는 시간 윈도우 등과 같은, 각각의 RPA 고객과 자동화 최적화기(50)의 오퍼레이터 사이의 서비스-레벨 협약(SLA)의 다양한 양태들을 특정할 수 있다. 고객 레코드는 각각의 고객이 RPA 목적들을 위해 사용하는 RPA 호스트 플랫폼(예를 들어, Amazon AWSTM과 같은 클라우드 컴퓨팅 플랫폼)을 추가로 나타낼 수 있다. 예를 들어, 각각의 고객 레코드는 각각의 고객의 구내 서버, RPA 활동들을 위해 사용되는 구내 서버의 위치 표시자(예를 들어, URL, 네트워크 어드레스)를 포함할 수 있다. 고객 레코드는 각각의 RPA 호스트 플랫폼 또는 각각의 RPA 호스트 플랫폼의 구성 인터페이스에 액세스하기 위한 고객 크리덴셜들(예를 들어, 사용자 이름, 패스워드 등)의 세트를 추가로 포함할 수 있다.
고객 데이터베이스(52)에 저장된 고객 레코드는 자동화 최적화기(50)가 각각의 고객을 대신하여 가상 머신들을 인스턴스화 및/또는 종료하도록 허용되는지의 표시자를 추가로 포함할 수 있다. 고객 레코드에 인코딩된 다른 정보는 가상 머신의 그리고/또는 각각의 고객에 의해 RPA 활동들에 현재 할당된 VM들의 풀의 식별자를 포함할 수 있다. 그러한 실시예들에서, 오케스트레이터(14)는 RPA 작업들을 각각의 표시된 타겟 VM에 배타적으로, 또는 표시된 머신 풀로부터 선택된 VM들에 배타적으로 할당할 수 있다. 유사하게, 고객 레코드는 RPA 로봇의 식별자 및/또는 로봇 풀의 식별자를 포함할 수 있다. 그러한 실시예들에서, 오케스트레이터(14)는 작업들을 표시된 로봇에 배타적으로 또는 표시된 로봇 풀의 멤버들에 할당할 수 있다.
고객 레코드는 각각의 고객을 대신하여 선택된 RPA 호스트 플랫폼 상에서 동시에 인스턴스화될 수 있는 선택된 유형의 가상 머신들 및/또는 RPA 로봇들의 최대 및/또는 최소 수, 선택된 RPA 호스트 플랫폼 상에서 RPA 활동들을 수행하기 위한 바람직한 시간 슬롯 등과 같은 다양한 RPA 작업부하 파라미터 값들을 추가로 포함할 수 있다.
고객 레코드는 템플릿 저장소(54)에 저장된 식별자 또는 VM 템플릿을 추가로 포함할 수 있고, 각각의 템플릿은 각각의 고객을 대신하여 VM들을 인스턴스화하는 데 사용된다. 고객 레코드는 각각의 고객에 대해 수행될 RPA 작업의 유형을 추가로 나타낼 수 있다.
일부 실시예들에서, RPA 활동들을 동적으로 스케일링 업 및/또는 다운하는 것은 최적화기(50)가 새로운 VM들을 인스턴스화하고/하거나 선택된 RPA 호스트 플랫폼들 상에서 기존의 VM 인스턴스들을 종료하는 것을 포함한다. 대안적으로, RPA 활동들을 동적으로 스케일링하는 것은 선택된 RPA 호스트 플랫폼들 상에서 VM들을 시작 및/또는 중단하는 것을 포함할 수 있다. VM을 인스턴스화하는 것은 각각의 VM을 구성하는 가상 하드웨어 디바이스들의 세트(예를 들어, 가상 프로세서, 가상 네트워크 디바이스 등)를 노출하는 것 및/또는 각각의 VM 내에서 실행되는 소프트웨어 컴포넌트(예를 들어, RPA 로봇들)의 새로운 인스턴스들을 생성하는 것을 포함할 수 있다. VM의 가상 프로세서 상에서 실행되는 소프트웨어는 본 명세서에서 각각의 VM 내에서 실행된다고 말해진다. 도 4b에 도시된 예에서, OS(30) 및 로봇(12)은 VM(28a) 내에서 실행된다. 대조적으로, 하이퍼바이저(26)는 VM(28a-b) 외부에서 실행된다.
RPA 목적들을 위해 인스턴스화된 VM들은 RPA 로봇들(12)의 세트 및/또는 RPA 타겟 애플리케이션(32)의 인스턴스와 같은 RPA 특정 소프트웨어를 부여받을 수 있다. 로봇들(12) 및/또는 타겟 애플리케이션(32)은 RPA 작업의 유형에 따라 달라질 수 있다. 예를 들어, 스프레드시트 데이터의 로봇 조작들을 수행하기 위해 인스턴스화된 VM은 Microsoft ExcelTM의 인스턴스를 포함할 수 있는 반면, 웹 데이터의 로봇 스크래핑을 위해 인스턴스화된 다른 VM은 그렇지 않을 수 있다.
일부 실시예들은 RPA 목적들을 위한 인스턴스화를 위해 현재 이용가능한 VM의 각각의 유형을 특성화하기 위해 VM 템플릿들을 사용한다. 예시적인 VM 템플릿은 각각의 VM을 집합적으로 특성화하는 파라미터 값들의 세트를 포함한다. 예를 들어, VM 템플릿은 많은 가운데 특히 프로세서의 유형, 각각의 VM에 대해 예약된 가상 메모리의 양, 또는 각각의 VM의 예약된 대역폭/최대 통신 스루풋과 같은 하드웨어 파라미터 값들의 세트를 포함할 수 있다. VM 템플릿은 각각의 VM 상에서 인스턴스화될 운영 체제의 유형 및 버전과 같은 특정 소프트웨어 파라미터들의 값들을 추가로 포함할 수 있다. VM 템플릿은 RPA 로봇(들)(12) 및/또는 RPA 타겟 애플리케이션(32) 등과 같은, 각각의 VM 상에서 인스턴스화될 소프트웨어 컴포넌트들의 메모리 이미지들(예를 들어, 스냅샷들)을 추가로 포함할 수 있다. 본 명세서에서 소프트웨어 엔티티의 이미지는 컴퓨터 시스템의 메모리에 로딩될 때 각각의 컴퓨터 시스템이 각각의 소프트웨어 엔티티를 실행하게 하는 데이터 구조를 나타낸다.
일부 VM 템플릿들은 각각의 VM이 인스턴스화될 타겟 RPA 호스트 플랫폼의 표시자(예를 들어, URL 또는 네트워크 어드레스)를 포함할 수 있다. 템플릿들은 각각의 VM을 타겟 호스트 플랫폼 상에 인스턴스화하기 위한 커맨드들 및/또는 스크립트들의 세트를 추가로 포함할 수 있다. 이러한 VM 템플릿들은 호스트-특정적일 수 있는데, 즉 각각의 템플릿은 특정 유형의 RPA 호스트 상에 각각의 VM을 인스턴스화하기 위해 사용되도록 형성되고 구성될 수 있다. 예를 들어, MicrosoftTM AzureTM와 같은 클라우드 컴퓨팅 플랫폼과 대비하여 로컬(구내) 머신 상에 웹-스크래핑 로봇을 프로비저닝하기 위한 별개의 VM 템플릿들이 존재할 수 있다. 템플릿들은 고객 사양들 및/또는 소망들에 따라 엔지니어들의 팀에 의해 개발, 테스트 및 유지될 수 있거나, 고객들 자신에 의해 제공될 수 있다. 템플릿들은 인덱싱되고, 템플릿 저장소(54)에 저장되고, 그로부터 선택적으로 검색될 수 있으며, 템플릿 저장소(54)는 이 분야에 알려진 임의의 프로토콜 및 데이터 포맷을 사용하는 데이터베이스(예를 들어, 관계형 데이터베이스, RedisTM 저장소 등)를 포함할 수 있다. 템플릿 저장소(54)는 각각의 VM 템플릿의 인스턴스화를 요구하는 RPA 작업의 유형과 각각의 VM 템플릿 사이의 연관성의 표시자를 추가로 저장할 수 있다.
도 6은 본 발명의 일부 실시예들에 따른 자동화 최적화기(50)의 예시적인 동작을 예시한다. 최적화기(56)는 오케스트레이터(14)에 의해 유지되는 RPA 작업 큐(56)의 콘텐츠를 수신 또는 검색한다. 일부 실시예들에서, 큐(56)는 현재 실행을 기다리고 있는 RPA 작업들을 나타내는 작업 표시자들의 세트를 포함한다. 본 명세서에서 용어 '작업'은 RPA 작업흐름을 실행하는 인스턴스를 나타낸다. 각각의 작업흐름은 RPA 스크립트(예를 들어, 도 2의 스크립트(40) 참조)로서 컴퓨터 판독가능 형태로 인코딩될 수 있다. 작업들은 예를 들어 오케스트레이터 UI(17)(도 2)를 통해 사용자들에 의해 큐(56)에 직접 추가될 수 있거나, 스케줄링 등의 일부로서 오케스트레이터(14)에 의해 자동으로 추가될 수 있다. 작업들은 완료 시에 큐(56)로부터 제거될 수 있다.
일부 실시예들에서, 큐(56) 내의 각각의 작업은 작업 표시자에 의해 표현되고, 또한 작업 표시자는 각각의 작업이 대신하여 실행되고 있는 고객의 표시자, 및 각각의 작업이 실행되어야 하는 타겟 머신(예를 들어, 도 5의 VM(28c))의 식별자를 포함할 수 있다. 대안으로서, 작업 표시자는 각각의 작업을 실행할 수 있거나 실행하기 위해 예약된 머신들을 포함하는 머신 풀(예를 들어, 도 5의 머신 풀(38))의 식별자, 및/또는 각각의 작업을 실행하기 위한 RPA 로봇들을 포함하는 로봇 풀(예를 들어, 도 5의 로봇 풀(48b))의 식별자를 포함할 수 있다. 일부 실시예들에서, 작업 표시자는 각각의 RPA 작업을 실행하기 위해 미리 구성된 머신을 나타내는 VM 템플릿을 (예를 들어, 템플릿 저장소(54)로의 포인터를 통해) 추가로 표시할 수 있다. 작업 표시자는 많은 가운데 특히 각각의 RPA 작업을 실행하기 위한 원하는 시간 윈도우, 및 각각의 작업의 우선순위를 추가로 표시할 수 있다.
자동화 최적화기(50)는 현재 실행 중이거나 다양한 로봇들/머신들에 실행을 위해 이미 할당된 RPA 작업들을 특성화하는 현재 RPA 원장(58)을 추가로 수신하거나 그에 액세스할 수 있다. 예시적인 원장(58)은 복수의 작업 엔트리들 - 각각의 작업 엔트리는 각각의 작업의 현재 상태(예를 들어, 실행 중, 완료, 일시정지, 정체, 만료, 실행 동안 발생한 에러의 유형을 특성화하는 에러 코드 등)를 나타냄 -, 및 각각의 작업이 현재 할당되는 RPA 로봇(12)의 머신 및/또는 인스턴스의 식별자를 포함할 수 있다.
일부 실시예들에서, 최적화기(50)는 RPA 호스트 플랫폼(20j)(도 6)으로부터 작업부하 표시자(64)를 수신할 수 있고, 표시자(64)는 각각의 RPA 호스트 플랫폼 상에 인스턴스화된 선택된 머신 및/또는 로봇의 현재 상태 및/또는 작업부하를 나타낸다. 예시적인 작업부하 표시자(64)는 선택된 고객을 대신하여 현재 실행 중인 VM들의 카운트, 선택된 고객을 대신하여 실행 중인 로봇 인스턴스들의 카운트, 선택된 머신 풀에 현재 속하는 VM들의 카운트, 및 선택된 로봇 풀(예를 들어, 도 6의 로봇 풀(48c))에 현재 속하는 RPA 로봇들의 카운트를 포함할 수 있다. 다른 예시적인 작업부하 표시자(64)는 선택된 고객을 대신하여 RPA 활동들에서 소비되는 하드웨어 자원들(예를 들어, 메모리, 프로세서 사이클들, 데이터 트래픽)의 현재 양을 나타낼 수 있다. 작업부하 표시자(64)는 요구 시에 또는 자동으로, 예를 들어 하트비트 모델을 사용하여 생성될 수 있다. RPA 로봇들이 클라우드 컴퓨팅 플랫폼 상에서 호스팅될 때, 작업부하 표시자(64)는 자동화 최적화기(50)에 의해 송신된 조회에 응답하여 클라우드 관리 인터페이스에 의해 생성될 수 있다. 일부 실시예들에서, 작업부하 표시자(64)는 각각의 RPA 호스트 상에서 실행 중인 소프트웨어 모듈, 예를 들어 도 4b의 사용량 계량 모듈(29)에 의해 생성될 수 있다.
RPA 활동들의 동적 스케일링의 일부로서, 최적화기(50)는 도 6의 플랫폼(20j)과 같은 선택된 RPA 호스트 플랫폼에 송신된 프로비저닝 요청(62)을 통해 프로비저닝 절차를 개시할 수 있다. 요청(62)은 프로그래밍/스크립팅 언어로 작성된 스크립트 및/또는 커맨드들의 세트를 포함할 수 있다. 예시적인 프로비저닝 요청(62)은 RPA 호스트 플랫폼(20j) 상에 VM을 인스턴스화하기 위한 커맨드가 뒤따르는 인증 교환을 포함할 수 있다. 다른 예시적인 요청(62)은 인스턴스화될 가상 머신의 이미지, 및/또는 실행될 작업흐름을 나타내는 RPA 스크립트(40)를 포함할 수 있다. 또 다른 예시적인 프로비저닝 요청(62)은 최근에 프로비저닝된 RPA 로봇과 오케스트레이터(14) 사이에 가상 네트워크 접속(예를 들어, VPN 링크)을 확립하기 위한 커맨드들의 세트를 포함한다. 또 다른 예시적인 프로비저닝 요청(62)은 RPA 호스트(20j) 상에 현재 노출된 선택된 VM을 종료하기 위한 커맨드들의 세트를 포함한다.
요청(62)을 수신하는 것에 응답하여, RPA 호스트 플랫폼(20j)은 프로비저닝 응답(63)을 자동화 최적화기(50)에 다시 송신할 수 있으며, 응답(63)은 예를 들어 프로비저닝 요청의 수신에 대한 확인응답, 요청이 성공적으로 실행되었는지 또는 각각의 요청에서 특정된 동작들을 수행하는 것이 실패했는지를 표시하는 수신된 요청의 상태, 수신된 요청에서 특정된 절차를 수행하는 데 실패한 이유를 표시하는 에러 코드들의 세트 등을 포함한다. 프로비저닝 응답(63)은 프로비저닝된 자원(예를 들어, VM, 로봇) 및/또는 각각의 프로비저닝된 자원의 어드레스(예를 들어, 네트워크 어드레스, URL(uniform resource locator), FQDN(fully qualified domain name))에 액세스하기 위한 크리덴셜들의 세트를 추가로 포함할 수 있다.
예를 들어, RPA 호스트(20j)가 클라우드 컴퓨팅 플랫폼인 일부 실시예들에서, 최적화기(50)는 선택된 VM 또는 로봇을 호스팅하는 실제 물리적 머신이 아니라, 각각의 VM/로봇(들)을 수신 및/또는 실행하기 위해 각각의 물리적 머신을 후속하여 선택 및 구성할 수 있는 클라우드 관리 서버/인터페이스와 아이템들(62-63)을 교환할 수 있다.
도 7a-b는 본 발명의 일부 실시예들에 따른 자동화 최적화기(50)에 의해 수행되는 단계들의 예시적인 시퀀스를 도시한다. 단계들(202-204)의 시퀀스는 RPA 작업 큐(56)가 미해결 작업들을 포함할 때까지 대기할 수 있다. 그러할 때, 단계(206)는 큐(56)로부터 작업을 선택할 수 있다. 단계(208)에서, 최적화기(208)는 선택된 작업과 연관된 고객을 식별하고, 데이터베이스(52)에서 각각의 고객의 고객 레코드를 탐색할 수 있다. 일부 실시예들에서, 선택된 작업에 대한 큐 엔트리는 각각의 고객을 표시할 수 있다. 다음으로, 단계(210)는 작업 표시자에 따라 그리고/또는 고객 레코드에 따라, 각각의 작업을 실행하기 위한 RPA 호스트 플랫폼을 식별하고, 각각의 호스트 플랫폼에 액세스하기 위한 크리덴셜들(예를 들어, 사용자 이름, 패스워드)의 세트를 검색할 수 있다. 따라서, 최적화기(50)는 각각의 RPA 호스트 플랫폼이 독립형 머신, 구내 서버, 클라우드 컴퓨팅 플랫폼 등인지를 결정할 수 있고, 각각의 RPA 호스트의 위치(예를 들어, 네트워크 어드레스)를 추가로 결정할 수 있다. 일부 실시예들에서, 선택된 작업의 고객 레코드 및/또는 큐 엔트리/작업 표시자는 각각의 작업을 실행하기 위한 타겟 머신/머신 풀, 또는 타겟 RPA 로봇/로봇 풀의 식별자를 추가로 포함한다. 머신 또는 로봇 풀이 표시될 때, 자동화 최적화기(50)는 아래에 더 도시된 바와 같이, 각각의 풀로부터 타겟 머신 및/또는 로봇을 선택할 수 있다.
일부 실시예들은 다음으로 현재 작업을 기존 머신/로봇에 할당할지, 또는 태스크를 위해 새로운 머신/로봇을 프로비저닝할지를 결정할 수 있다. 결정하기 위해, 단계(212)는 프로비저닝 조건이 충족되는지를 결정할 수 있다. 일부 실시예들에서, 단계(212)는 고객 데이터베이스(52)에 저장된 고객 레코드에 따라 최적화기(50)가 현재 작업의 각각의 고객 또는 소유자를 대신하여 새로운 머신들 및/또는 로봇들을 인스턴스화하도록 허용되는지를 결정하는 단계를 포함한다. 하나의 사용 사례 시나리오에서, 고객은 클라우드 컴퓨팅 플랫폼(예를 들어, Amazon AWSTM) 상의 머신 풀을 관리할 수 있고, 풀의 VM들은 일간 스케줄에 따라 RPA 활동들에 예약 및/또는 할당된다. 그러나, 고객은 각각의 머신들을 자신이 호스팅, 관리 및 유지하고, 최적화기(50)가 새로운 머신들/로봇들을 인스턴스화하거나, 각각의 풀의 기존 머신들/로봇들을 종료하는 것을 허용하지 않는다. 이러한 상황에서, 최적화기(50)는 아래에 더 상세히 설명되는 바와 같이, 현재 작업을 각각의 머신/로봇 풀의 기존 머신/로봇에만 할당할 수 있다.
다른 사용 사례 시나리오에서, 현재 작업의 RPA 고객/소유자는 최적화기(50)가 각각의 고객과 연관된 고객 레코드에 표시된 바와 같이, 요구에 따라 컴퓨팅 자원들을 동적으로 스케일링 없 및 다운할 수 있게 한다. 이러한 상황에서, 프로비저닝 조건이 충족되는지를 결정하는 것(도 7a의 단계(212))은 식별된 RPA 호스트 플랫폼 상에 이미 인스턴스화된 컴퓨팅 자원들이 현재 작업을 처리하기에 충분한지의 여부를 결정하는 것을 포함할 수 있다. 이 결정은, 각각의 RPA 호스트 플랫폼으로부터 수신된 작업부하 표시자(64) 및/또는 RPA 원장(58)의 콘텐츠에 따라 진행할 수 있다. 일부 실시예들에서, 작업부하 표시자(64)는, 예를 들어, 각각의 RPA 호스트 플랫폼 상에서 현재 RPA 작업들을 실행하는 VM들 및/또는 RPA 로봇들의 카운트를 표시할 수 있다. 한편, RPA 원장(S8)은 각각의 RPA 작업의 현재 상태(예를 들어, 실행, 정체, 완료 등)를 표시할 수 있다. 일부 실시예들은, 각각의 고객과의 라이센스 또는 서비스 레벨 협약(SLA)에 표시된 바와 같이 그리고/또는 각각의 고객과 연관되고 고객 데이터베이스(52)에 저장된 고객 레코드에 표시된 바와 같이, 머신들 및/또는 로봇 인스턴스들의 최대 허용가능 카운트에 따라 추가로 프로비저닝 조건이 충족되는지를 결정할 수 있다. 하나의 이러한 예에서, 최적화기(50)는, 선택된 풀의 모든 RPA 로봇들이 현재 바쁠 때, 그리고 선택된 풀 내의 RPA 로봇들의 현재 카운트가 최대 허용 로봇 카운트 아래일 때, 프로비저닝 조건이 충족된다고 결정할 수 있다.
일부 실시예들에서, 프로비저닝 조건이 충족되는지를 결정하는 것은 RPA 작업 큐(56)의 현재 콘텐츠에 따라 추가로 진행될 수 있다. 예를 들어, 일부 실시예들은 큐(S6)의 현재 길이(예를 들어, 미해결 작업들의 카운트, 다양한 유형들의 작업들의 카운트)에 따라, RPA 큐(56) 내의 현재 작업 및/또는 다른 미해결 작업들의 실행의 추정된 지속기간에 따라, 그리고/또는 큐 내의 현재 작업 또는 다른 작업들의 우선순위에 따라 프로비저닝 조건이 충족되는지를 결정할 수 있다. 프로비저닝 조건이 충족되는지를 결정하기 위한 다른 기준은 작업 레이턴시, 예를 들어, 작업 큐(56) 내의 선택된 작업(또는 선택된 작업 유형의 작업들)에 의해 소비되는 평균 시간량을 포함한다. 프로비저닝 조건이 충족되는지를 결정하기 위한 추가 기준들은 타겟 머신 풀이 현재 작업을 실행하기 위한 적절한 하드웨어 및/또는 소프트웨어 구성을 갖는 머신을 현재 포함하는지를 포함할 수 있다. 예를 들어, 최적화기(50)는 타겟 머신 풀 내의 임의의 머신이 특정 VM 템플릿에 따라 인스턴스화되었는지, 및/또는 임의의 머신이 RPA 타겟 애플리케이션(32)의 특정 유형 및/또는 버전을 갖는지 등을 결정할 수 있다. 하나의 그러한 예에서, 최적화기(50)는 현재 RPA 작업을 수행할 수 있고/있거나 수행하도록 구성되는 타겟 풀 내의 머신들이 현재 없을 때 프로비저닝 조건이 충족된다고 결정할 수 있다.
프로비저닝 조건이 충족되는지를 결정하기 위한 또 다른 기준들은 현재 시간 및/또는 캘린더 날짜를 포함할 수 있다. 하나의 그러한 예에서, 최적화기(50)는 단지 특정 시간 윈도우 내에서(예를 들어, 야간 동안), 특정 캘린더 날짜들(예를 들어, 달의 첫날, 각 달의 마지막 업무일)에 그리고/또는 특정 주중 동안(예를 들어, 주말 동안)에 RPA 호스트 플랫폼의 계산 자원들을 동적으로 스케일링하도록 허용될 수 있다. 그러한 시간 선호도들 및 제한들은 비용 제어를 위해 사용될 수 있고, 각각의 고객과 연관된 고객 데이터베이스 레코드에서 그리고/또는 현재 작업과 연관된 RPA 큐 엔트리에서 특정될 수 있다.
프로비저닝 조건이 충족되지 않을 때(단계 214가 아니오를 반환함), 일부 실시예들은 도 7b에 예시되고 아래에 상술되는 단계들의 시퀀스로 진행할 수 있다. 한편, 최적화기(14)는 현재 작업을 기존 VM 및/또는 RPA 로봇 인스턴스에 할당할 수 있다. 각각의 VM 및/또는 로봇은 다양한 기준들에 따라, 예로서 각각의 머신의 하드웨어 및/또는 소프트웨어 구성에 따라, 각각의 머신의 현재 작업 부하에 따라, 각각의 머신 상에서 실행되는 로봇 인스턴스들의 카운트 등에 따라, 선택된 머신/로봇 풀로부터 선택될 수 있다. 예를 들어, 오케스트레이터(14)는 현재 최소로 로딩된 VM 및/또는 로봇을 선택할 수 있다. 각각의 VM/로봇을 시작, 중지, 모니터링 및 통신하는 태스크들은 로봇 프로세스 자동화 분야에 공지된 임의의 방법에 따라 수행될 수 있고, 본 설명의 범위를 벗어난다.
프로비저닝 조건이 충족될 때(단계(214)가 예를 반환함), 일부 실시예들은 각각의 RPA 호스트 플랫폼 상에 새로운 머신을 프로비저닝할 수 있으며, 이는 또한 RPA 로봇 인스턴스들의 세트를 인스턴스화하는 단계를 포함한다. 단계(216)는 현재 작업에 따라 그리고/또는 현재 이용가능성, 고객 선호 등과 같은 다른 기준들에 따라 템플릿 저장소(54)로부터 VM 템플릿을 선택할 수 있다. 추가 단계(218)에서, 최적화기(50)는 선택된 템플릿 및 추가 작업 파라미터들에 따라 VM 프로비저닝 절차를 개시할 수 있다. 단계(218)는 선택된 RPA 호스트 플랫폼에 프로비저닝 요청(62)을 송신하고, 그로부터(또는 각각의 RPA 호스트 플랫폼의 클라우드 구성 인터페이스로부터) 응답(63)을 수신하는 것을 포함할 수 있다. 프로비저닝 요청(62)은 각각의 RPA 호스트 플랫폼이 특정된 파라미터들로 그리고/또는 특정된 VM 템플릿을 사용하여 새로운 VM을 인스턴스화하게 하는 커맨드들/명령어들의 세트를 포함할 수 있다. 커맨드들/명령어들의 세트는 플랫폼-특정 프로토콜을 준수한다는 점에서 플랫폼-특정적일 수 있고, 플랫폼-특정 API(예를 들어, AzureTM SDK 대 AWSTM SDK)에 따라 작성될 수 있다.
새로운 VM의 성공적인 프로비저닝을 표시하는 프로비저닝 응답(63)을 수신하는 것에 응답하여, 단계(220)는 새로 인스턴스화된 로봇 인스턴스들을 RPA 오케스트레이터(14)에 접속/등록할 수 있다. 각각의 로봇을 오케스트레이터(14)에 접속하는 것은 각각의 RPA 로봇에 대한 고유 식별자를 생성하고, 각각의 로봇에 오케스트레이터(14)의 위치 표시자(예를 들어, URL, 네트워크 어드레스 등)를 제공하는 것을 포함할 수 있다. 일부 실시예들에서, 접속하는 것은 각각의 로봇과 오케스트레이터(14) 사이에 가상 네트워크(예를 들어, VPN) 또는 피어-투-피어 접속을 셋업하는 것을 추가로 포함할 수 있다. 그러한 동작들은 오케스트레이터(14)로부터 작업 할당들을 수신하도록 각각의 로봇을 효과적으로 준비한다.
단계(222)는, 예를 들어, 개별 머신들을 머신 풀들 및/또는 고객들과 연관시키는 데이터베이스 엔트리를 업데이트함으로써, 새롭게 인스턴스화된 VM 및/또는 로봇 인스턴스들을 기존의 머신/로봇 풀에 추가할 수 있다. 이러한 풀이 각각의 RPA 호스트 플랫폼 상에 현재 정의되어 있지 않을 때, 단계(222)는 새롭게 인스턴스화된 VM 및/또는 RPA 로봇(들)을 포함하도록 새로운 풀을 초기화할 수 있다. 추가 단계(224)에서, 일부 실시예들은 새로운 VM 및/또는 로봇 인스턴스(들)의 추가를 반영하도록 RPA 원장(58)을 업데이트한다. RPA 원장(58)은 새롭게 인스턴스화된 RPA 로봇에 대한 새로운 RPA 작업의 할당을 반영하도록 오케스트레이터(14)에 의해 추가로 업데이트될 수 있다.
도 7b는 자동화 최적화기(50)의 일부 실시예들에 의해 수행되는 단계들의 다른 시퀀스를 도시하며, 시퀀스는 예를 들어 유휴 VM들을 종료함으로써 계산 자원들을 스케일링 다운하는 것을 예시한다. 단계들(232-234)의 시퀀스는 RPA 원장(58)을 탐색하고, 종료 조건이 충족되는지를 결정할 수 있고, 충족될 때, 최적화기(50)는 적어도 하나의 VM을 종료하고 그것을 각각의 머신 풀로부터 제거할 수 있다.
일부 실시예들은 원장(58)의 현재 콘텐츠, 고객을 대신하여 RPA 작업들을 실행하는 머신들/로봇들의 현재 작업부하에 따라, 그리고 아마도 추가로 고객 선호들에 따라 종료 조건이 충족되는지를 결정한다. 한 예에서, 단계(234)는 RPA 원장(58) 내의 정보 및 적어도 하나의 작업부하 표시자(64)의 콘텐츠를 이용하여 현재 유휴 상태인, 즉 임의의 RPA 작업에 현재 할당되어 있지 않은 머신들 및/또는 로봇 인스턴스들을 식별할 수 있다. 그 다음, 최적화기(50)는 각각의 머신/로봇에 따라 또는 각각의 머신/로봇이 속하는 머신/로봇 풀에 따라 고객을 식별하고, 고객 데이터베이스(52)를 탐색하여 각각의 고객과 연관된 선호들의 세트를 결정할 수 있다. 예시적인 최적화기는 선택된 머신 또는 로봇 인스턴스가 미리 결정된 임계값을 초과하는 기간 동안 유휴 상태였을 때 종료 조건이 충족된다고 결정할 수 있다.
일부 실시예들은 또한 선택된 VM 또는 RPA 로봇이 현재 정체중인지 또는 고장(예를 들어, 하드웨어 또는 소프트웨어 예외, RPA 스크립트(40) 내의 버그 등), 통신 장애 등과 같은 기술적 어려움들을 겪고 있는지에 따라 종료 조건이 충족되는지를 결정할 수 있다. 하나의 그러한 예시적인 최적화기(50)는 선택된 머신 또는 로봇 인스턴스가 미리 결정된 임계값을 초과하는 기간 동안 오케스트레이터(14)와 통신하지 않았을 때(예를 들어, 오케스트레이터(14)가 각각의 VM/로봇으로부터 미리 결정된 수의 연속적인 하트비트 신호들을 수신하지 않았을 때) 종료 조건이 충족된다고 결정할 수 있다.
종료 조건이 충족되는지를 결정하기 위한 다른 기준들은 RPA 작업 큐(56)의 현재 콘텐츠, 평균 작업 레이턴시, 각각의 RPA 호스트 플랫폼 상에 인스턴스화된 VM들 및/또는 RPA 로봇들의 현재 카운트, 및/또는 각각의 고객과 연관된 머신 또는 로봇 풀 내의 VM들 및/또는 로봇들의 현재 카운트를 포함한다. 하나의 예시적인 최적화기(50)는 큐(56)가 동일한 고객에 속하거나 동일한 풀로부터의 머신들 또는 로봇들에 할당될 가능성이 있는 RPA 작업들을 포함할 때 현재 유휴 상태인 머신 또는 로봇 인스턴스를 종료하지 않기로 결정할 수 있다.
선택된 머신에 대해 종료 조건이 충족되는지를 결정하기 위한 다른 예시적인 기준들 많은 가운데 특히, 최적화기(50)가 각각의 고객을 대신하여 계산 자원들을 스케일링하도록 허용되는지, 및 현재 시간 및/또는 캘린더 날짜를 포함할 수 있다.
선택된 머신에 대해 종료 조건이 충족될 때, 단계(238)는 예를 들어 각각의 RPA 호스트 플랫폼에 프로비저닝 요청(62)을 송신함으로써 각각의 머신의 종료를 개시할 수 있고, 요청(62)은 선택된 머신을 식별하고, 각각의 호스트 플랫폼이 각각의 머신을 종료하게 하도록 작성된다. 성공적인 종료를 나타내는 프로비저닝 응답(63)을 수신하는 것에 응답하여, 단계(240)는 종료된 VM 상에서 이전에 실행중인 RPA 로봇들을 오케스트레이터(14)로부터 접속해제할 수 있다.
그 다음, 단계들(242-244)의 시퀀스는 종료된 VM 및/또는 로봇(들)을 그들 각각의 풀들로부터 제거하고, 각각의 머신 및/또는 로봇 인스턴스들의 종료를 반영하도록 RPA 원장(58)을 업데이트할 수 있다. 그 다음, 실행은 도 7a와 관련하여 전술한 단계(202)로 진행할 수 있다.
도 8은 본 명세서에서 설명되는 방법들 중 일부를 실행하도록 프로그래밍된 컴퓨터 시스템(70)의 예시적인 하드웨어 구성을 도시한다. 컴퓨터 시스템(70)은 예를 들어 도 3의 RPA 호스트 플랫폼들(20a-e) 중 임의의 것은 물론, 실행 자동화 최적화기(50)를 나타낼 수 있다. 예시된 기기는 개인용 컴퓨터이고; 서버들, 이동 전화들, 태블릿 컴퓨터들 및 웨어러블들과 같은 다른 디바이스들은 약간 상이한 구성들을 가질 수 있다. 프로세서(들)(72)는 신호들 및/또는 데이터의 세트를 이용하여 계산 및/또는 논리 연산들을 실행하도록 구성된 물리 디바이스(예로서, 마이크로프로세서, 반도체 기판 상에 형성된 멀티코어 집적 회로)를 포함한다. 그러한 신호들 또는 데이터는 인코딩되어 프로세서 명령어들, 예로서 머신 코드의 형태로 프로세서(들)(72)로 전달될 수 있다. 프로세서(들)(72)는 중앙 처리 유닛(CPU) 및/또는 그래픽 처리 유닛들(GPU)의 어레이를 포함할 수 있다.
메모리 유닛(73)은 동작들을 수행하는 과정에서 프로세서(들)(72)에 의해 액세스 또는 생성되는 데이터/신호들/명령어 인코딩들을 저장하는 휘발성 컴퓨터 판독 가능 매체들(예로서, 동적 랜덤 액세스 메모리(DRAM))을 포함할 수 있다. 입력 디바이스들(74)은 사용자가 데이터 및/또는 명령어들을 컴퓨터 시스템(70) 내에 삽입할 수 있게 하는 각각의 하드웨어 인터페이스들 및/또는 어댑터들을 포함하는, 많은 가운데 특히 컴퓨터 키보드들, 마우스들 및 마이크로폰들을 포함할 수 있다. 출력 디바이스들(75)은 많은 가운데 특히 모니터들 및 스피커들과 같은 디스플레이 디바이스들은 물론, 각각의 컴퓨팅 시스템이 데이터를 사용자에게 통신할 수 있게 하는 그래픽 카드들과 같은 하드웨어 인터페이스들/어댑터들을 포함할 수 있다. 일부 실시예들에서, 입력 및 출력 디바이스들(74-75)은 공통 하드웨어(예로서, 터치 스크린)을 공유한다. 저장 디바이스들(76)은 소프트웨어 명령어들 및/또는 데이터의 비휘발성 저장, 판독 및 기입을 가능하게 하는 컴퓨터 판독 가능 매체들을 포함한다. 예시적인 저장 디바이스들은 자기 및 광 디스크들 및 플래시 메모리 디바이스들은 물론, CD 및/또는 DVD 디스크들 및 드라이브들과 같은 이동식 매체들을 포함한다. 네트워크 어댑터(들)(77)는 컴퓨팅 시스템(70)이 전자 통신 네트워크(예로서, 도 3의 네트워크(13))에 그리고/또는 다른 디바이스들/컴퓨터 시스템들에 접속할 수 있게 한다.
제어기 허브(78)는 일반적으로 복수의 시스템, 주변기기, 및/또는 칩셋 버스들, 및/또는 프로세서(들)(72)와 컴퓨터 시스템(70)의 나머지 하드웨어 컴포넌트들 사이의 통신을 가능하게 하는 모든 다른 회로를 나타낸다. 예를 들어, 제어기 허브(78)는 메모리 제어기, 입출력(I/O) 제어기, 및 인터럽트 제어기를 포함할 수 있다. 하드웨어 제조자에 따라, 일부 그러한 제어기들은 단일 집적 회로 내에 통합될 수 있고/있거나, 프로세서(들)(72)와 통합될 수 있다. 다른 예에서, 제어기 허브(78)는 프로세서(72)를 메모리(73)에 접속하는 노스브리지, 및/또는 프로세서(72)를 디바이스들(74, 75, 76, 및 77)에 접속하는 사우스브리지를 포함할 수 있다.
전술한 예시적인 시스템들 및 방법들은 다수의 RPA 고객을 대신하여 그리고 멀티-테넌트 컴퓨팅 플랫폼들 상에서(예를 들어, 클라우드에서 또는 클라우드를 구내 컴퓨팅과 결합하는 하이브리드 구성들에서) 다수의 RPA 작업을 수행하는 것과 같은 복잡한 RPA 동작들의 사용자-친화적 관리를 가능하게 한다.
그러한 복잡한 컴퓨팅 환경들에서 RPA를 성공적으로 수행하는 것은 적어도 2개의 별개의 활동 카테고리에 의존한다. 제1 활동 카테고리는 각각의 RPA 고객의 특정 요구들 및 선호들을 충족시키기 위해 다양한 컴퓨팅 환경들에 다양한 플릿(fleet) 또는 소프트웨어 로봇들을 구성 및 배치하는 것을 포함한다. 제2 활동 카테고리는 (아마도 복잡한 스케줄들 및/또는 비용 절감 전략들에 따라) 로봇들의 플릿에 RPA 작업들을 효율적으로 할당하는 것, 다수의 로봇의 실행을 모니터링 그리고 아마도 조정하는 것을 포함한다. 제1 활동은 많은 가운데 특히 클라우드 컴퓨팅 및 하드웨어 가상화에서 전문 지식을 요구할 수 있다. 한편, 제2 활동은 확실한 지식 또는 RPA 기술 및 소프트웨어를 요구할 수 있다. 양 카테고리들을 브리징하는 데 필요한 전문 지식의 순수 폭으로 인해, 종래의 RPA에서는, 제1 활동 카테고리가 통상적으로 제2 활동 카테고리로부터 분리된다. 예를 들어, 제1 및 제2 활동 카테고리들은 통상적으로 팀의 별개의 멤버들에 의해, 또는 별개의 서비스 제공자들/계약자들에 의해 수행된다.
그러한 종래의 RPA 관행들과는 대조적으로, 본 발명의 일부 실시예들은 로봇 프로비저닝 및 유지 활동들을 자동화하고, 이들을 용이하게 스케일링 가능하면서 효율 및 비용 절감을 강조하는 방식으로 RPA 작업 관리 활동들과 원활하게 통합한다. 일부 실시예들에서, 자동화 최적화기는 RPA 작업들에 대한 요구의 변동들에 응답하여 로봇 플릿을 자동으로 스케일링 업 및 다운하도록 구성된다. 자동화 최적화기는 또한, RPA 작업들을 개별 로봇들에 할당하고 각각의 로봇의 실행을 관리하는 RPA 오케스트레이터와 인터페이스할 수 있다.
플릿 또는 로봇들이 정적인, 즉 요구의 변동들을 수용하도록 자동으로 진화되지 않는 종래의 RPA 시스템들과는 대조적으로, 일부 실시예들에서, RPA 태스크들에 이용가능한 로봇들의 수는 요구가 높을 때 추가적인 로봇 인스턴스들을 실행하고, 요구가 낮을 때 VM들을 제거할 수 있는 추가적인 가상 머신들을 자동으로 프로비저닝함으로써 동적으로 조정될 수 있다. 일부 실시예들은 많은 가운데 특히 현재 미해결 작업들의 카운트(작업 큐의 길이), 예를 들어 특정 고객에 대한 RPA 작업들을 실행하는 VM들의 현재 카운트에 따라 결정된 현재 부하, 큐에 작업들을 갖는 특정 고객의 라이센스 또는 서비스 레벨 협약(SLA), 및 현재 시각과 같은 다양한 기준들에 따라 프로비저닝 조건이 충족되는지를 결정한다. 프로비저닝 조건이 충족될 때, 일부 실시예들은 선택된 RPA 호스트 플랫폼 상에 세트 또는 로봇 인스턴스들로 미리 로딩된 새로운 VM을 자동으로 프로비저닝한다. 일부 실시예들은 또한, 작업들을 로봇들의 플릿에 분배하고 다수의 로봇들에 걸쳐 RPA 활동들을 모니터링하고 조정하도록 구성된 오케스트레이터에 새로 프로비저닝된 로봇들을 자동으로 접속한다. 프로비저닝된 VM의 유형은 이용가능한 미리 구성된 템플릿들의 라이브러리로부터 요구되는 특성들을 갖는 VM 템플릿을 선택적으로 배치함으로써, 고객에 따라 그리고/또는 작업 큐 내의 현재 작업들의 유형에 따라 변경될 수 있다.
자동화 최적화기의 일부 실시예들은 상업용 클라우드 컴퓨팅 플랫폼들(예를 들어, Amazon AWSTM, Microsoft AzureTM 등), 구내 서버들, 독립형 컴퓨터들, 및 클라우드와 구내 자원들을 혼합하는 하이브리드 구성들과 같은 다양한 RPA 호스트 플랫폼들에 VM들을 프로비저닝할 수 있다. 각각의 고객은 호스트 플랫폼의 자신의 선택을 특정하고, 각각의 호스트 플랫폼에 액세스하기 위한 크리덴셜들을 자동화 최적화기에 제공할 수 있다. 일부 실시예들은 또한 고객들이 다양한 RPA 활동들을 위한 전용 머신 및/또는 로봇 풀들을 셋업하는 것을 가능하게 한다.
설명된 시스템들 및 방법들은 또한 원활하고 사용자 친화적인 방식으로 로봇 플릿을 업그레이드하는 것을 가능하게 한다. 오래된 버전의 로봇들은 자동화 최적화기에 의한 VM 종료에 응답하여 자동으로 폐기된다. 새로 프로비저닝된 머신들에는 업그레이드된 버전의 RPA 로봇들이 사전 로딩될 수 있고, 따라서 플릿을 갱신할 수 있다. 이러한 갱신/업그레이드는 스케줄에 따라, 작업들에 대한 현재 요구에 따라, 주문에 따라, 기타 등등에 따라 점차적으로 또는 대량으로(예를 들어, 전체 로봇 풀을 업그레이드함) 진행될 수 있다.
일부 실시예들은 RPA 개발자들의 어깨들로부터 로봇 배치 및 유지의 부담을 제거함으로써 RPA 동작들을 용이하게 한다. 다양한 컴퓨팅 플랫폼들 상에서 가상 머신들을 인스턴스화하는 것, 로봇들을 각각의 플랫폼들에 배치하는 것, 로봇들을 RPA 오케스트레이터들에 접속하는 것, 다양한 RPA 컴포넌트들 사이의 통신들을 보호하는 것 등과 같은 고도의 기술적 태스크들이 자동화 최적화기에 의해 인계될 수 있다. 따라서, 일부 실시예들은 RPA 기술이 클라우드 컴퓨팅 및 가상화에서 진보된 프로그래밍 기술들 또는 전문 지식이 부족한 사용자들에 의해 더 액세스될 수 있게 한다.
위의 실시예들은 본 발명의 범위로부터 벗어나지 않고서 많은 방식으로 변경될 수 있다는 것이 이 분야의 기술자에게 명백할 것이다. 따라서, 본 발명의 범위는 아래의 청구항들 및 그들의 법적 균등물들에 의해 결정되어야 한다.

Claims (21)

  1. 로봇 프로세스 자동화(robotic process automation; RPA) 방법으로서,
    컴퓨터 시스템의 적어도 하나의 하드웨어 프로세서를 이용하여,
    RPA 작업들의 큐(queue)에 따라 그리고 또한 선택된 RPA 호스트 플랫폼 상에 현재 인스턴스화된 RPA 로봇들의 풀(pool)에 따라 프로비저닝 조건이 충족되는지를 결정하는 단계;
    그에 응답하여, 상기 프로비저닝 조건이 충족될 때, 상기 큐의 RPA 작업에 따라 템플릿 저장소로부터 선택된 가상 머신(virtual machine; VM) 템플릿에 따라 상기 선택된 RPA 호스트 플랫폼 상의 VM의 자동 프로비저닝을 개시하는 단계 - 상기 VM 템플릿을 실행하는 것은 상기 VM으로 하여금 상기 RPA 작업을 실행하기 위한 RPA 로봇을 인스턴스화하게 함 -;
    상기 VM의 프로비저닝에 응답하여, 상기 RPA 로봇을, 상기 RPA 작업들의 큐를 상기 RPA 로봇들의 풀에 할당하도록 구성된 RPA 오케스트레이터에 접속하는 단계;
    머신 종료 조건이 충족되는지를 결정하는 단계; 및
    그에 응답하여, 충족될 때, 상기 VM의 자동 종료를 개시하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 RPA 호스트 플랫폼은 클라우드 컴퓨팅 플랫폼 및 구내 서버로 구성된 그룹으로부터 선택된 아이템을 포함하는 것인, 방법.
  3. 제1항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서를 이용하여, 고객이 상기 RPA 작업을 소유하는 것에 따라 복수의 이용가능한 RPA 호스트 플랫폼으로부터 상기 RPA 호스트 플랫폼을 선택하는 단계를 추가로 포함하는, 방법.
  4. 제1항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서를 이용하여, 상기 풀 내의 RPA 로봇들의 카운트에 따라 상기 프로비저닝 조건이 충족되는지를 결정하는 단계를 포함하는, 방법.
  5. 제4항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서를 이용하여, 추가로 상기 RPA 호스트 플랫폼의 실행을 위해 구성 가능한 RPA 로봇들의 최대 허용 가능 카운트에 따라 상기 프로비저닝 조건이 충족되는지를 결정하는 단계를 포함하는, 방법.
  6. 제1항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서를 이용하여, 추가로 상기 선택된 RPA 호스트 플랫폼으로부터 수신된 작업부하 표시자에 따라 상기 프로비저닝 조건이 충족되는지를 결정하는 단계를 포함하고, 상기 작업부하 표시자는 상기 선택된 RPA 호스트 플랫폼의 현재 계산 부하를 나타내는 것인, 방법.
  7. 제1항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서를 이용하여, 추가로 현재 시간에 따라 상기 프로비저닝 조건이 충족되는지를 결정하는 단계를 포함하는, 방법.
  8. 제1항에 있어서,
    상기 VM 템플릿은 상기 RPA 로봇이 사전 로딩된 상기 VM의 메모리 이미지 및 타겟 소프트웨어 애플리케이션의 인스턴스를 포함하고, 상기 RPA 작업을 실행하는 것은 인간 오퍼레이터와 상기 타겟 소프트웨어 애플리케이션 사이의 상호작용을 모방하는 것(mimicking)을 포함하는 것인, 방법.
  9. 제1항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서를 이용하여, 추가로 상기 RPA 로봇들의 풀 중 적어도 하나의 로봇이 현재 응답하지 않는지에 따라 상기 프로비저닝 조건이 충족되는지를 결정하는 단계를 포함하는, 방법.
  10. 제1항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서를 이용하여, 추가로 상기 RPA 로봇들의 풀 중 적어도 하나의 로봇이 실행 에러를 보고했는지에 따라 상기 프로비저닝 조건이 충족되는지를 결정하는 단계를 포함하는, 방법.
  11. 자동화 최적화기를 실행하도록 구성된 적어도 하나의 하드웨어 프로세서를 포함하는 컴퓨터 시스템으로서,
    상기 자동화 최적화기를 실행하는 것은,
    RPA 작업들의 큐에 따라 그리고 또한 선택된 RPA 호스트 플랫폼 상에 현재 인스턴스화된 RPA 로봇들의 풀에 따라 프로비저닝 조건이 충족되는지를 결정하는 것;
    그에 응답하여, 상기 프로비저닝 조건이 충족될 때, 상기 큐의 RPA 작업에 따라 템플릿 저장소로부터 선택된 VM 템플릿에 따라 상기 선택된 RPA 호스트 플랫폼 상의 VM의 자동 프로비저닝을 개시하는 것 - 상기 VM 템플릿을 실행하는 것은 상기 VM으로 하여금 상기 RPA 작업을 실행하기 위한 RPA 로봇을 인스턴스화하게 함 -;
    상기 VM의 프로비저닝에 응답하여, 상기 RPA 로봇을, 상기 RPA 작업들의 큐를 상기 RPA 로봇들의 풀에 할당하도록 구성된 RPA 오케스트레이터에 접속하는 것;
    머신 종료 조건이 충족되는지를 결정하는 것; 및
    그에 응답하여, 충족될 때, 상기 VM의 자동 종료를 개시하는 것
    을 포함하는 것인, 컴퓨터 시스템.
  12. 제11항에 있어서,
    상기 RPA 호스트 플랫폼은 클라우드 컴퓨팅 플랫폼 및 구내 서버로 구성된 그룹으로부터 선택된 아이템을 포함하는 것인, 컴퓨터 시스템.
  13. 제11항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서는 또한, 고객이 상기 RPA 작업을 소유하는 것에 따라 복수의 이용가능한 RPA 호스트 플랫폼으로부터 상기 RPA 호스트 플랫폼을 선택하도록 구성되는 것인, 컴퓨터 시스템.
  14. 제11항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서는 또한, 상기 풀 내의 RPA 로봇들의 카운트에 따라 상기 프로비저닝 조건이 충족되는지를 결정하도록 구성되는 것인, 컴퓨터 시스템.
  15. 제14항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서는, 추가로 상기 RPA 호스트 플랫폼의 실행을 위해 구성 가능한 RPA 로봇들의 최대 허용 가능 카운트에 따라 상기 프로비저닝 조건이 충족되는지를 결정하도록 구성되는 것인, 컴퓨터 시스템.
  16. 제11항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서는, 추가로 상기 선택된 RPA 호스트 플랫폼으로부터 수신된 작업부하 표시자에 따라 상기 프로비저닝 조건이 충족되는지를 결정하도록 구성되고, 상기 작업부하 표시자는 상기 선택된 RPA 호스트 플랫폼의 현재 계산 부하를 나타내는 것인, 컴퓨터 시스템.
  17. 제11항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서는 또한, 추가로 현재 시간에 따라 상기 프로비저닝 조건이 충족되는지를 결정하도록 구성되는 것인, 컴퓨터 시스템.
  18. 제11항에 있어서,
    상기 VM 템플릿은 상기 RPA 로봇이 사전 로딩된 상기 VM의 메모리 이미지 및 타겟 소프트웨어 애플리케이션의 인스턴스를 포함하고, 상기 RPA 작업을 실행하는 것은 인간 오퍼레이터와 상기 타겟 소프트웨어 애플리케이션 사이의 상호작용을 모방하는 것을 포함하는 것인, 컴퓨터 시스템.
  19. 제11항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서는, 추가로 상기 RPA 로봇들의 풀 중 적어도 하나의 로봇이 현재 응답하지 않는지에 따라 상기 프로비저닝 조건이 충족되는지를 결정하도록 구성되는 것인, 컴퓨터 시스템.
  20. 제11항에 있어서,
    상기 적어도 하나의 하드웨어 프로세서는 또한, 추가로 상기 RPA 로봇들의 풀 중 적어도 하나의 로봇이 실행 에러를 보고했는지에 따라 상기 프로비저닝 조건이 충족되는지를 결정하도록 구성되는 것인, 컴퓨터 시스템.
  21. 명령어들을 저장하는 비일시적 컴퓨터 판독가능 매체로서,
    상기 명령어들은 컴퓨터 시스템의 적어도 하나의 하드웨어 프로세서에 의해 실행될 때 상기 컴퓨터 시스템으로 하여금 자동화 최적화기를 형성하게 하고, 상기 자동화 최적화기는,
    RPA 작업들의 큐에 따라 그리고 또한 선택된 RPA 호스트 플랫폼 상에 현재 인스턴스화된 RPA 로봇들의 풀에 따라 프로비저닝 조건이 충족되는지를 결정하고;
    그에 응답하여, 상기 프로비저닝 조건이 충족될 때, 상기 큐의 RPA 작업에 따라 템플릿 저장소로부터 선택된 VM 템플릿에 따라 상기 선택된 RPA 호스트 플랫폼 상의 VM의 자동 프로비저닝을 개시하고 - 상기 VM 템플릿을 실행하는 것은 상기 VM으로 하여금 상기 RPA 작업을 실행하기 위한 RPA 로봇을 인스턴스화하게 함 -;
    상기 VM의 프로비저닝에 응답하여, 상기 RPA 로봇을, 상기 RPA 작업들의 큐를 상기 RPA 로봇들의 풀에 할당하도록 구성된 RPA 오케스트레이터에 접속하고;
    머신 종료 조건이 충족되는지를 결정하고;
    그에 응답하여, 충족될 때, 상기 VM의 자동 종료를 개시하도록
    구성되는 것인, 비일시적 컴퓨터 판독가능 매체.
KR1020210179681A 2020-12-18 2021-12-15 로봇 프로세스 자동화(rpa) 로봇들의 동적 클라우드 배치 KR20220088333A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/247,669 US20220197249A1 (en) 2020-12-18 2020-12-18 Dynamic Cloud Deployment of Robotic Process Automation (RPA) Robots
US17/247,669 2020-12-18

Publications (1)

Publication Number Publication Date
KR20220088333A true KR20220088333A (ko) 2022-06-27

Family

ID=78918530

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210179681A KR20220088333A (ko) 2020-12-18 2021-12-15 로봇 프로세스 자동화(rpa) 로봇들의 동적 클라우드 배치

Country Status (5)

Country Link
US (1) US20220197249A1 (ko)
EP (1) EP4016294A1 (ko)
JP (1) JP2022097438A (ko)
KR (1) KR20220088333A (ko)
CN (1) CN114647485A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230222044A1 (en) * 2022-01-07 2023-07-13 Jpmorgan Chase Bank, N.A. System and method for automatically monitoring performance of software robots
CN115580616B (zh) * 2022-12-07 2023-03-24 北财在线科技(北京)有限公司 一种多租户架构多云平台下的云rpa系统及应用方法
CN117076091B (zh) * 2023-10-12 2024-01-26 宁波银行股份有限公司 一种多引擎接口调度方法及装置、电子设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100153482A1 (en) * 2008-12-10 2010-06-17 Full Armor Corporation Cloud-Based Automation of Resources
US10264058B1 (en) * 2011-06-30 2019-04-16 Emc Corporation Defining virtual application templates
US10042657B1 (en) * 2011-06-30 2018-08-07 Emc Corporation Provisioning virtual applciations from virtual application templates
KR102364712B1 (ko) * 2015-04-03 2022-02-18 한국전자통신연구원 분산 클라우드 환경에서 서비스 오케스트레이션 시스템 및 방법
US10860905B1 (en) * 2019-10-16 2020-12-08 UiPath, Inc. Long running workflows for document processing using robotic process automation

Also Published As

Publication number Publication date
JP2022097438A (ja) 2022-06-30
CN114647485A (zh) 2022-06-21
EP4016294A1 (en) 2022-06-22
US20220197249A1 (en) 2022-06-23

Similar Documents

Publication Publication Date Title
US11481244B2 (en) Methods and systems that verify endpoints and external tasks in release-pipeline prior to execution
US20170257432A1 (en) Apparatus, systems and methods for container based service deployment
US9967318B2 (en) Apparatus, systems, and methods for cloud agnostic multi-tier application modeling and deployment
US7519711B2 (en) Method for middleware assisted system integration in a federated environment
US11604627B2 (en) Systems and methods for on-demand provisioning of robotic process automation environments
US10942790B2 (en) Automated-application-release-management subsystem that incorporates script tasks within application-release-management pipelines
EP4016294A1 (en) Dynamic cloud deployment of robotic process automation (rpa) robots
US11334471B1 (en) Mocking robotic process automation (RPA) activities for workflow testing
US10802954B2 (en) Automated-application-release-management subsystem that provides efficient code-change check-in
US20190227793A1 (en) Code-change and developer rating in an automated-application-release-management subsystem
US20200136930A1 (en) Application environment provisioning
US20190012150A1 (en) Methods and systems that generate proxy objects that provide an interface to third-party executables
US20190377596A1 (en) Flexible batch job scheduling in virtualization environments
WO2022087581A1 (en) Quantifying usage of robotic processs automation related resources
US20230032516A1 (en) Common platform for implementing rpa services on customer premises
Lublinsky et al. A kubernetes ‘bridge’operator between cloud and external resources
US11971705B2 (en) Autoscaling strategies for robotic process automation
Xiong Cloud Computing for Scientific Research
US20230102809A1 (en) Preconfigured robots for robotic process automation
US20230101948A1 (en) Generation of rpa platform design components for configuring rpa platforms
Figueira et al. Developing Self-adaptive Microservices