KR102399291B1 - 서버 플랫폼 상에서 원자적 태스크의 개시를 제어하는 기법 - Google Patents

서버 플랫폼 상에서 원자적 태스크의 개시를 제어하는 기법 Download PDF

Info

Publication number
KR102399291B1
KR102399291B1 KR1020177000387A KR20177000387A KR102399291B1 KR 102399291 B1 KR102399291 B1 KR 102399291B1 KR 1020177000387 A KR1020177000387 A KR 1020177000387A KR 20177000387 A KR20177000387 A KR 20177000387A KR 102399291 B1 KR102399291 B1 KR 102399291B1
Authority
KR
South Korea
Prior art keywords
tenant
task
specific
server platform
platform
Prior art date
Application number
KR1020177000387A
Other languages
English (en)
Other versions
KR20170030517A (ko
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 KR20170030517A publication Critical patent/KR20170030517A/ko
Application granted granted Critical
Publication of KR102399291B1 publication Critical patent/KR102399291B1/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/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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • G06F9/4875Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate with migration policy, e.g. auction, contract negotiation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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/5038Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0633Workflow analysis

Abstract

테넌트 및 서버 플랫폼은 이 플랫폼에 의해 수행될 것이지만 테넌트에게 적어도 잠재적인 영향을 미치는 원자적 태스크의 수행을 조정한다. 서버 플랫폼은 특정 테넌트 자신이 하나 이상의 태스크 각각의 개시를 승인할 수 있는 시간프레임을 그 특정 테넌트에게 허용한다. 서버 플랫폼은 시간프레임이 경과한 후에 테넌트가 더 이상 특정 태스크의 개시를 제어하지 못하도록 하는 시간제한을 시간프레임에 부과함으로써 지연된 동작으로부터 스스로를 보호할 수 있다. 따라서, 테넌트는 서버 플랫폼에 의해 수행되는 태스크의 개시를 제어하는 것에 대한 유연성을 제공받는 한편, 서버 플랫폼은 자신의 리소스를 보호하는 수준의 제어를 유지하고 다양한 테넌트의 요구들 사이에서 균형을 잡는다.

Description

서버 플랫폼 상에서 원자적 태스크의 개시를 제어하는 기법{CONTROL IN INITIATING ATOMIC TASKS ON A SERVER PLATFORM}
컴퓨팅 시스템 및 관련 네트워크는 인간이 일하고, 놀고, 의사소통하는 방식을 혁신적으로 변화시켰다. 우리 삶의 거의 모든 면은 컴퓨팅 시스템에 의해 어떤 식으로든 영향을 받는다. 오늘날 컴퓨팅 시스템은 네트워크와 인터넷에 연결되어 광범위한 통신이 가능하게 되었다. 이러한 컴퓨팅 네트워크의 막대한 성능은 네트워크를 통해 다양한 서비스가 확산되게 하였다. 네트워크 서비스의 예로는 웹 사이트, 전자 메일, 메시징, 소셜 네트워크, 데이터베이스 관리, 가상화, 일정 관리, 저장소, 정책 관리 등이 있다.
하나의 컴퓨팅 모델에서, 플랫폼은 다수의 테넌트(tenants)(예를 들어, 컴포넌트 프로그램)를 호스트하며, 각각의 테넌트는 자기 자신의 서비스를 그 테넌트의 제공자의 고객에게 제공한다. 이 플랫폼은 예를 들어 서버 플랫폼일 수 있으며, 하나 이상의 서버에 의해 지원될 수 있다. 플랫폼은 플랫폼이 데이터 센터의 모든 리소스를 보유한 클라우드 플랫폼일 수도 있다. 클라우드 플랫폼은 사설 클라우드, 공용 클라우드 또는 이들 각각의 일부 특징을 나타내는 하이브리드 클라우드일 수 있다.
어떤 경우든, 다수의 테넌트를 호스팅할 때, 플랫폼은 각 테넌트의 데이터가 확실히 보호되고, 각 테넌트에 충분한 컴퓨팅 리소스가 할당되도록 보장하기 위해 다수의 보호장치(safeguard)를 취한다. 플랫폼은 또한 각 테넌트와 연관된 워크플로우를 인식한다. 각 테넌트가 해당 워크플로우를 진행함에 따라, 플랫폼은 각 워크플로우가 후속하도록 하고 워크플로우의 다양한 작업이 적시에 성공적으로 완수되도록 보장한다. 따라서, 워크플로우 관리는 특히 여러 테넌트를 관리할 때 플랫폼의 중요한 역할을 한다.
본 명세서에서의 청구대상은 임의의 단점을 해결하거나 전술한 것과 같은 환경에서만 동작하는 실시예에 한정되지 않는다. 오히려, 본 배경기술은 본 명세서에 기술된 일부 실시예가 실시될 수 있는 하나의 예시적인 기술 영역을 예시하기 위해 제공된다.
본 명세서에 기술된 적어도 일부 실시예는 다수의 테넌트를 운영하는 (클라우드 플랫폼과 같은) 서버 플랫폼의 동작에 관한 것이다. 특히, 본 명세서에 기술된 실시예는 서버 플랫폼 및 그의 하나 이상의 테넌트가 서버 플랫폼에 의해 수행되지만 테넌트에게 적어도 잠재적인 영향을 미치는 원자적 태스크들(atomic tasks)을 조정하는 것을 돕는다.
특히, 서버 플랫폼은 특정 테넌트 자신이 하나 이상의 태스크 각각의 개시를 승인할 수 있는 시간프레임(timeframe)을 그 특정 테넌트에게 허용한다. 테넌트는 결국, 서버 플랫폼에게 이용가능하지 않지만 테넌트의 관점에서 특정 태스크를 시작하는 것이 적절한 때와 관련있을 수 있는 정보를 가질 수 있다. 시간프레임이 경과한 후에는 테넌트가 더 이상 특정 태스크의 개시를 제어하지 못하고, 오히려 서버 플랫폼이 특정 태스크의 개시 타이밍을 담당하는 시간제한을 시간프레임에 부과함으로써, 서버 플랫폼은 지연된 동작으로부터 스스로를 보호할 수 있다. 따라서, 테넌트는 서버 플랫폼에 의해 수행되는 태스크의 시작을 제어하는 것에 대한 유연성을 제공받는 한편, 서버 플랫폼은 자신의 리소스를 보호하는 수준의 제어를 유지하고 다양한 테넌트의 요구들 사이에서 균형을 잡는다.
본 요약은 청구대상의 주요 특징 또는 필수적인 특징을 식별하기 위한 것이 아니며 청구대상의 범위를 결정하는 데 도움을 주기 위한 것도 아니다.
상술한 및 그 밖의 다른 장점과 특징이 얻어질 수 있는 방식을 설명하기 위해, 첨부된 도면을 참조하여 다양한 실시예에 대한 보다 상세한 설명이 제공될 것이다. 이들 도면은 단지 예시적인 실시예를 묘사하므로 본 발명의 범위를 제한하는 것으로 간주되어서는 안됨을 이해하면서, 실시예들이 첨부된 도면을 사용하여 추가의 특이성 및 세부사항과 함께 기술되고 설명될 것이다.
도 1은 본 명세서에서 설명된 일부 실시예가 채용될 수 있는 컴퓨팅 시스템을 추상적으로 도시한다.
도 2는 다수의 테넌트가 실행되는 서버 플랫폼을 비롯하여, 본 명세서에서 설명된 원리가 채용될 수 있는 환경을 도시한다.
도 3은 적어도 하나의 테넌트를 포함하는 서버 플랫폼에서 특정 원자적 태스크를 스케줄링하는 방법의 흐름도를 나타낸다.
도 4는 본 명세서에서 설명된 원리들에 따른 태스크들 및 시간프레임들의 지정을 도시한다.
도 5는 본 명세서에서 설명된 원리들에 따른 보충 정보의 예를 도시한다.
본 명세서에 기술된 적어도 일부 실시예는 다수의 테넌트를 운영하는 (클라우드 플랫폼과 같은) 서버 플랫폼의 동작에 관한 것이다. 특히, 본 명세서에 기술된 실시예는 서버 플랫폼 및 이의 하나 이상의 테넌트가 서버 플랫폼에 의해 수행되지만 테넌트에게 적어도 잠재적인 영향을 미치는 원자적 태스크들을 조정하는 것을 돕는다.
특히, 서버 플랫폼은 특정 테넌트 자신이 하나 이상의 태스크 각각의 개시를 승인할 수 있는 시간프레임을 그 특정 테넌트에게 허용한다. 테넌트는 결국, 서버 플랫폼에게 이용가능하지 않지만 테넌트의 관점에서 특정 태스크를 시작하는 것이 적절한 때와 관련있을 수 있는 정보를 가질 수 있다. 시간프레임이 경과한 후에는 테넌트가 더 이상 특정 태스크의 개시를 제어하지 못하고, 오히려 서버 플랫폼이 특정 태스크의 개시 타이밍을 담당하는 시간제한을 시간프레임에 부과함으로써, 서버 플랫폼은 지연된 동작으로부터 스스로를 보호할 수 있다. 따라서, 테넌트는 서버 플랫폼에 의해 수행되는 태스크의 시작을 제어하는 것에 대한 유연성을 제공받는 한편, 서버 플랫폼은 자신의 리소스를 보호하는 수준의 제어를 유지하고 다양한 테넌트의 요구들 사이에서 균형을 잡는다.
컴퓨팅 시스템에 대한 일부 소개 논의가 도 1과 관련하여 설명될 것이다. 그 후, 본 명세서에서 설명된 원리를 사용하는 지원 아키텍처 및 방법이 후속하는 도면들과 관련하여 설명될 것이다.
컴퓨팅 시스템은 이제 점점 더 다양한 형태를 취하고 있다. 컴퓨팅 시스템은 예를 들어 핸드헬드 장치, 어플라이언스, 랩톱 컴퓨터, 데스크톱 컴퓨터, 메인프레임, 분산형 컴퓨팅 시스템 또는 심지어 컴퓨팅 시스템으로 간주되지 않는 장치일 수 있다. 본 명세서 및 청구 범위에서, "컴퓨팅 시스템"이라는 용어는 적어도 하나의 물리적 및 유형의 프로세서, 및 이 프로세서에 의해 실행될 수 있는 컴퓨터 실행가능 명령어를 포함하는 물리적 및 유형의 메모리를 포함하는 임의의 장치 또는 시스템(또는 이들의 조합)을 포함하는 것으로 넓게 정의된다. 메모리는 임의의 형태를 취할 수 있고 컴퓨팅 시스템의 특성 및 형태에 의존할 수 있다. 컴퓨팅 시스템은 네트워크 환경을 통해 분산될 수 있으며, 다수의 구성 컴퓨팅 시스템을 포함할 수 있다.
도 1에 도시된 바와 같이, 가장 기본적인 구성에서, 컴퓨팅 시스템(100)은 전형적으로 적어도 하나의 하드웨어 프로세싱 유닛(102) 및 메모리(104)를 포함한다. 메모리(104)는 휘발성, 비휘발성, 또는 두 가지의 조합일 수 있는 물리적 시스템 메모리일 수 있다. 또한, 용어 "메모리"는 물리적 저장 매체와 같은 비휘발성 대용량 저장 장치를 지칭하는데 사용될 수 있다. 컴퓨팅 시스템이 분산되면, 프로세싱, 메모리 및/또는 저장 능력도 분배될 수 있다. 본 명세서에 사용된 바와 같이, "실행가능 모듈" 또는 "실행가능 컴포넌트"라는 용어는 컴퓨팅 시스템상에서 실행될 수 있는 소프트웨어 객체, 라우팅 또는 방법을 지칭할 수 있다. 본 명세서에서 설명된 상이한 컴포넌트, 모듈, 엔진 및 서비스는 컴퓨팅 시스템에서 실행되는 객체 또는 프로세스(예를 들어, 개별 스레드)로 구현될 수 있다.
이하의 설명에서, 실시예는 하나 이상의 컴퓨팅 시스템에 의해 수행되는 동작을 참조하여 설명된다. 이러한 동작이 소프트웨어로 구현되는 경우, 동작을 수행하는 관련 컴퓨팅 시스템의 하나 이상의 프로세서는 컴퓨터 실행가능 명령어를 실행하는 것에 응답하여 컴퓨팅 시스템의 동작을 지시한다. 예를 들어, 이러한 컴퓨터 실행가능 명령어는 컴퓨터 프로그램 제품을 형성하는 하나 이상의 컴퓨터 판독가능 매체상에 구현될 수 있다. 이러한 동작의 예는 데이터 조작을 포함한다. 컴퓨터 실행가능 명령어(및 조작된 데이터)는 컴퓨팅 시스템(100)의 메모리(104)에 저장될 수 있다. 컴퓨팅 시스템(100)은 또한 컴퓨팅 시스템(100)이 예를 들어, 네트워크(110)를 통해 다른 메시지 프로세서와 통신할 수 있게 하는 통신 채널(108)을 포함할 수 있다.
본 명세서에서 설명된 실시예는 이하에서 더 상세히 설명되는 바와 같이, 예를 들어 하나 이상의 프로세서 및 시스템 메모리와 같은 컴퓨터 하드웨어를 포함하는 특수 목적 또는 범용 컴퓨터를 포함하거나 이용할 수 있다. 본 명세서에서 설명된 실시예는 또한 컴퓨터 실행가능 명령어 및/또는 데이터 구조를 운반하거나 저장하기 위한 물리적 및 다른 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는 범용 또는 특수 목적 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 컴퓨터 실행가능 명령어를 저장하는 컴퓨터 판독가능 매체는 물리적 저장 매체이다. 컴퓨터 실행가능 명령어를 전송하는 컴퓨터 판독가능 매체는 전송 매체이다. 따라서, 제한이 아닌 예로서, 본 발명의 실시예들은 적어도 두 개의 명백하게 상이한 종류의 컴퓨터 판독가능 매체, 즉 컴퓨터 저장 매체 및 전송 매체를 포함할 수 있다.
컴퓨터 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장소, 자기 디스크 저장소 또는 다른 자기 저장 장치, 또는 컴퓨터 실행가능 명령어의 형태를 갖는 원하는 프로그램 코드 수단 또는 데이터 구조를 저장하는데 사용될 수 있고, 범용 또는 전용 컴퓨터에 의해 액세스될 수 있는 임의의 다른 저장 매체를 포함한다.
"네트워크"는 컴퓨터 시스템 및/또는 모듈 및/또는 다른 전자 장치 사이에서 전자 데이터의 전송을 가능하게 하는 하나 이상의 데이터 링크로서 정의된다. 정보가 네트워크 또는 다른 통신 연결(유선, 무선 또는 유선과 무선의 조합)을 통해 컴퓨터로 전송되거나 제공되는 경우, 컴퓨터는 그 연결을 사실상 전송 매체로 간주한다. 전송 매체는 컴퓨터 실행가능 명령어의 형태를 갖는 원하는 프로그램 코드 수단 또는 데이터 구조를 운반하는데 사용될 수 있고 범용 또는 특수 목적 컴퓨터에 의해 액세스 될 수 있는 네트워크 및/또는 데이터 링크를 포함할 수 있다. 상기의 조합 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
또한, 다양한 컴퓨터 시스템 컴포넌트에 도달할 때, 컴퓨터 실행가능 명령어의 형태를 갖는 프로그램 코드 수단 또는 데이터 구조가 전송 매체로부터 컴퓨터 저장 매체로 (또는 그 반대로) 자동으로 전송될 수 있다. 예를 들어, 네트워크 또는 데이터 링크를 통해 수신된 컴퓨터 실행가능 명령어 또는 데이터 구조는 네트워크 인터페이스 모듈 (예를 들어, "NIC") 내의 RAM에 버퍼링 될 수 있고, 결국 컴퓨터 시스템 RAM 및/또는 컴퓨터 시스템에서의 난휘발성 컴퓨터 저장 매체에 전달될 수 있다. 따라서, 컴퓨터 저장 매체는 또한 전송 매체를 또한 (또는 주로) 이용하는 컴퓨터 시스템 컴포넌트에 포함될 수 있다는 것을 이해해야 한다.
컴퓨터 실행가능 명령어는 예를 들어 프로세서에서 실행될 때 범용 컴퓨터, 전용 컴퓨터 또는 특수 목적 처리 장치가 특정 기능 또는 기능 그룹을 수행하게 하는 명령어 및 데이터를 포함한다. 컴퓨터 실행가능 명령어는 예를 들어 바이너리일 수 있고 또는 어셈블리 언어와 같은 중간 포맷 명령어, 또는 심지어 소스 코드와 같이, 프로세서에 의한 직접 실행 전에 변환(예를 들어 컴파일)을 거치는 명령어일 수 있다. 본 발명이 구조적 특징들 및/또는 방법론적 동작들에 특정한 언어로 기술되었지만, 첨부된 청구 범위에서 한정된 청구대상이 반드시 상술한 특징들 또는 동작들에 반드시 제한되는 것은 아니라는 것을 이해해야 한다. 오히려, 설명된 특징 및 동작은 청구 범위를 구현하는 예시적인 형태로서 개시된다.
당업자라면, 본 발명이 개인용 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 메시지 프로세서, 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그래밍가능 소비자 전자기기, 네트워크 PC, 미니 컴퓨터, 메인프레임 컴퓨터, 이동 전화, PDA, 호출기, 라우터, 스위치 등을 포함하는 많은 유형의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경에서 실시될 수 있음을 이해할 것이다. 본 발명은 (유선 데이터 링크, 무선 데이터 링크 또는 유선 및 무선 데이터 링크의 조합에 의해) 네트워크를 통해 연결된 로컬 및 원격 컴퓨터 시스템 모두가 작업을 수행하는 분산 시스템 환경에서도 실시될 수 있다. 분산 시스템 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 모두에 위치할 수 있다.
도 2는 설명된 원리가 사용될 수 있는 환경(200)을 도시한다. 환경(200)은 다수의 테넌트(220)가 운영되는 서버 플랫폼(201)을 포함한다. 각 테넌트는 예를 들어, 환경(200)에서 서비스를 실행하는 서비스 제공자와 관련된 소프트웨어일 수 있다. 예를 들어, 서버 플랫폼(201)은 단일 서버, 다중 분산형 서버, 또는 공개 클라우드, 사설 클라우드 또는 하이브리드 클라우드를 구성하는 클라우드 컴퓨팅 환경일 수 있다. 서버 플랫폼(201)은 클라우드 컴퓨팅 환경에 있다면 상당히 분산될 가능성이 있지만, 도 1의 컴퓨팅 시스템(100)에 대해 상술한 바와 같이 구성될 수 있다.
서버 플랫폼(201)은 각 테넌트(220)의 워크플로우 상태를 추적하고, 각 테넌트의 워크플로우 상태를 완료하는 목적으로 원자적 태스크를 수행한다. 시간이 진행됨에 따라, 서버 플랫폼(201)은 특정 테넌트에 관한 워크플로우를 개시할 수 있거나 또는 그 특정 테넌트가 워크플로우의 개시를 요청할 수 있다.
테넌트 개시 워크플로우의 경우, 서버 플랫폼(201)은 워크플로우를 개시하고 계속함에 있어 테넌트와 협조할 수 있다. 예를 들어, 테넌트의 역할 인스턴스 중 일부가 새 버전으로 업데이트되어야 한다고 테넌트가 결정한 경우를 가정한다. 테넌트는 이 의도를 서버 플랫폼(201)에 전달할 수 있다. 그러면, 서버 플랫폼(201)은 승인을 위해 이 동작을 테넌트에게 다시 제시한다. 테넌트가 요청한 동작을 승인을 위해 테넌트에게 다시 제시하는 이유는 테넌트가 의도를 표현할 때 임의의 서버 플랫폼이 개시한 동작이 없을 수도 있기 때문이다. 서버 플랫폼(201)이 테넌트 개시 동작을 수행할 준비가 되기까지는, 다른 플랫폼 개시 동작이 있을 수 있다. 따라서, 이 시점에서, 테넌트는 잠재적으로 보다 짧은 시간 제약을 가질 수 있는 다른 계류중인 동작의 컨텍스트에서 인스턴스가 업그레이드되는 시점을 제어하려고 할 수 있다.
서버 플랫폼(201)은 (각 워크플로우에서 수행될 다음 태스크를 식별하기 위해) 각 테넌트에 대한 현재의 활성 워크플로우 및 워크플로우 자체의 구조를 추적하는 것을 돕는 워크플로우 상태 저장소(211)에 대한 액세스를 갖는다.
강력한 서버 플랫폼은 종종 수백 또는 수천의 테넌트를 호스팅할 수 있다. 그러나, 도시된 실시예에서, 간단하고 명료하게 하기 위해서, 세 개의 테넌트(221, 222, 223)만이 도시되어 있다. 그러나, 생략부호(224)는 본 명세서에서 설명된 원리 또는 범위를 벗어나지 않으면서 플랫폼 내에서 동작하는 임의의 수의 테넌트가 있을 수 있음을 상징적으로 나타낸다. 따라서, 본 명세서에서 설명된 원리는 플랫폼 내에서 운영되는 실제 테넌트 수에 제한되지 않으며, 심지어 테넌트가 플랫폼에 추가되거나 플랫폼에서 제거되므로 테넌트의 수는 정적이지 않다.
이러한 테넌트들은 완전히 관련이 없을 수도 있다. 예를 들어, 한 테넌트는 기업을 위해 전자 메일 서비스를 제공할 수 있고, 또 다른 테넌트는 고객이 전세계적으로 제품을 주문할 수 있는 웹 사이트를 제공할 수 있으며, 또 다른 테넌트는 동물 및 애완동물 관리 주제를 충족시키는 블로그 서비스를 제공할 수도 있다. 서버 플랫폼(201)은 각 테넌트의 데이터 소유권 및 프라이버시를 존중하도록 각각의 테넌트들 사이의 적절한 데이터 분리를 유지하고 또한 각 테넌트와 연관된 활성 워크플로우의 성취를 위한 적절한 프로세싱 리소스를 할당한다.
도 3은 적어도 하나의 테넌트를 포함하는 서버 플랫폼에서 특정 원자적 태스크를 스케줄링하는 방법(300)의 흐름도를 도시한다. 방법(300)의 동작들 중 일부는 도 2의 서버 플랫폼(201)(또는 구체적으로 제어기(210))에 의해 수행되며, 도 3의 좌측 열에 "플랫폼"이라는 제목 아래에 도시되어 있다. 방법(300)의 다른 동작은 도 3의 우측 열에서 "테넌트"라는 제목 아래에 표시된 바와 같이 해당 테넌트(예를 들어, 테넌트(221))에 의해 수행된다. 방법(300)은 주어진 테넌트에게 영향을 미칠 수 있는 새로운 태스크가 수행될 때 그 테넌트에 대해 반복적으로 수행될 수 있다.
방법(300)은, 서버 플랫폼에 의해 수행될 것이지만 특정 테넌트에게 적어도 잠재적으로 영향을 미치는 하나 이상의 (잠재적으로 다수의) 원자적 태스크를 플랫폼이 식별할 때(동작(311)) 개시된다. 예를 들어, 도 2를 참조하면, 이후 "특정 사례의 예"로서 참조되는 예에서, 플랫폼(201)의 제어기(210)가 플랫폼(201)이 이하에서 테넌트(221)에 잠적으로 영향을 미칠 수 있는 태스크 A, 태스크 B, 태스크 C 및 태스크 D로 지칭되는 4개의 태스크를 수행할 것으로 결정하는 경우를 가정한다. 플랫폼이 수행할 수 있고 테넌트에 영향을 미칠 수 있는 태스크의 예는 테넌트의 전부 또는 일부가 작동하고 있는 물리적 머신을 재부팅하는 것, 테넌트의 전부 또는 일부를 실행하는 가상 머신을 다시 초기화하는 것, 테넌트의 소프트웨어 컴포넌트를 업데이트하는 것, 테넌트의 구성을 업데이트하는 것, 테넌트가 사용할 수 있는 리소스를 추가하거나 제거하는 등을 포함한다.
일 실시예에서, 태스크는 워크플로우 상태 저장소(211)에 저장된 워크플로우를 평가함으로써 플랫폼 제어기(210)에 의해 식별된다. 예를 들어, 플랫폼 제어기(210)는 테넌트(221)에 대한 활성 및 신규 워크플로우를 평가하고, 그 워크플로우 상태에 기초하여 다음 원자적 태스크를 결정한다. 워크플로우는 단일 원자적 태스크와 같이 간단할 수도 있고, 수행되어야 또는 수행될 수 있는 시기에 대한 소정의 시간적 관계를 가질 수 있는 여러 개의 원자적 태스크를 포함할 수도 있다. 테넌트(221)에 대한 워크플로우는 플랫폼(201) 또는 테넌트(221)의 방향에서 개시될 수 있다. 일부 경우에, 주어진 테넌트에게 영향을 줄 수 있는 태스크를 발견하기 위해, 플랫폼 제어기(210)는 그 테넌트에게 능동적으로 배정된 워크플로우 외의 워크플로우를 조사할 수 있다. 예를 들어, 특정 태스크가 각각이 상이한 테넌트를 서빙하는 세 개의 가상 머신이 실행되고 있는 머신의 물리적 재부팅을 포함하는 경우, 재부팅 태스크는 각 테넌트에 영향을 미치는 것으로 간주될 수 있다. 가상 머신의 종료와 관련된 태스크의 경우, 아마도 그 가상 머신에 의해 실행중이었던 테넌트만이 영향을 받는 것으로 판정된다. 따라서, 본 명세서 및 청구 범위에서, 플랫폼이 태스크의 개시에 관한 제어를 특정 테넌트에 제공하는 경우, 그 특정 테넌트는 하나 이상의 다른 테넌트와 그러한 제어를 공유할 수 있다.
반드시 전부는 아니지만 일부 태스크에 대해, 플랫폼은 영향을 받은 테넌트가 대응 태스크를 언제 개시할 지에 대한 소정의 제어를 허용할 수 있다. 이러한 방식으로, 테넌트는 해당 태스크의 개시를 보증한다. 예를 들어, 특정 사례의 예에서, 플랫폼(210)은 태스크 D가 단순히 진행될 것임을 판정하는 한편, 테넌트(221)가 태스크 A, B 및 C가 개시되는 시기에 대한 일부 제어를 가질 수 있다고 플랫폼이 판단하는 경우를 가정한다. 테넌트가 태스크의 개시에 대한 일부 제어를 가질 수 있다고 플랫폼이 판정하는 태스크에 대해, 플랫폼 제어기는 또한 테넌트가 특정 태스크의 개시에 대한 제어를 가질 수 있는 시간프레임을 식별한다(동작(312)). 이 시간프레임은 타임아웃으로 간주될 수 있는데, 이 타임아웃 이후 플랫폼은 임의의 시간에 태스크를 개시할 수 있다.
식별된 시간프레임은 플랫폼 및 테넌트에 대한 태스크의 긴급도에 좌우될 수 있다. 예를 들어, 태스크가 급하게 수행되어야 하는 경우(예를 들어, 태스크 D의 경우), 플랫폼은 테넌트에 결코 제어를 부여하지 않는다. 그러나, 다소 덜 긴급한 태스크의 경우, 시간프레임은 상대적으로 짧다. 일반적으로 플랫폼에 대한 태스크가 덜 긴급할수록, 시간프레임은 더 길 수 있다. 시간프레임은 무한할 수도 있는데, 이 경우 테넌트는 플랫폼이 태스크를 개시하는 시기에 대한 자유 재량권을 갖는다. 시간프레임은 테넌트에 따라 다를 수 있다. 예를 들어, 일부 테넌트는 보다 높은 수준의 서비스를 플랫폼에 의해 제공받을 수 있다. 이러한 테넌트는 일반적으로 플랫폼이 태스크를 개시하도록 지시하는 데 더 긴 시간프레임을 부여받을 수 있다.
그 다음, 플랫폼은 플랫폼에 의해 수행될 것이지만 최소한 잠재적으로 테넌트에게 영향을 주는 하나 이상의 원자적 태스크의 지정(designation)을 생성한다(동작(313)). 도 2와 관련한 특정 사례의 예에서, 제어기(210)는 지정을 생성하고 그 지정 내에서 태스크 A, B 및 C를 식별한다.
제어기는 또한 각 작업에 대한 시간프레임을 결정하고 그 지정 내에 포함시켰다. 예를 들어, 태스크 A의 시간프레임은 15분이고, 태스크 B의 시간프레임은 15일이며 태스크 C의 시간프레임은 비어있다(blank)(끝이 없는 무한한 시간프레임을 암시적으로 전달했을 가능성이 있음). 따라서, 플랫폼 제어기(210)는 플랫폼이 태스크 A를 개시하도록 하는 15분 기간 내에서 테넌트(221)의 재량을 허용하기 위해 태스크 A를 수행하기 위해 기꺼이 15분을 대기하려 한다고 결정했다. 마찬가지로, 플랫폼 제어기(210)는 플랫폼이 태스크 B를 개시하도록 하는 15일 기간 내에서 테넌트(221)의 재량을 허용하기 위해 태스크 B를 수행하기 위해 기꺼이 15일을 대기하려 한다고 결정했다. 끝으로, 플랫폼 제어기(210)는 마찬가지로 테넌트(221)가 태스크 C를 수행하는 한 기꺼이 대기하려 한다고 결정했다. 예를 들어, 아마도 태스크 C는 전체적으로 플랫폼에 영향을 미치지 않으며 단지 테넌트(221)에만 영향을 미친다.
동작의 아이덴티티 및 임의의 대응하는 시간프레임을 포함하는 지정은 그 동작이 영향을 주는 특정 테넌트에게 전달된다(동작(314)). 예를 들어, 이것은 단일 통신으로 수행될 수 있다. 마찬가지로, 선택에 따라, 플랫폼은 특정 태스크를 승인할 시기를 결정할 때 특정 테넌트를 돕기 위한 보충 정보를 또한 제공한다(동작(315)). 예를 들어, 특정 사례의 예에서, 제어기(210)는 태스크 A, B 및 C와, 가능한 경우 그들의 연관된 시간프레임을 식별하는 통신(아마도 단일 통신)을 테넌트(221)에게로 발생시킨다. 예를 들어, 도 4는 테넌트에게 전달될 수 있는 예시적인 표를 나타낸다. 이 표는 각 태스크 A, B 및 C의 식별을 포함한다. 또한, 각 태스크에 대해, 시간프레임이 전달된다. 서버 플랫폼(201)은 또한 시간프레임을 변경하거나 또는 수행될 동작을 취소할 수도 있다. 이는 서버 플랫폼(201)으로부터 각각의 테넌트에게로의 개별 통신으로 제공될 수 있다.
동작(314, 315)의 그 통신에서, 플랫폼 제어기(210)는 또한 보충 정보를 통신할 수 있다. 이 보충 정보에는 플랫폼이 대응하는 태스크를 개시할 시기를 결정할 때 테넌트에게 도움이 되는 임의의 정보가 또 한번 포함될 수 있다. 예를 들어, 임의의 주어진 태스크에 대해, 보충 정보는 태스크 수행시 추정된 또는 평균 복구 시간, 개시 명령어가 검출될 때 플랫폼에 의해 태스크가 개시되는 예상 또는 평균 시간과 같은 태스크 특정 정보를 포함할 수 있다. 예를 들어, 도 4에서, 각 태스크는 평균 복구 시간도 포함한다. 보충 정보는 데이터 가용성, 저장소 액세스 속도, 메모리 사용률, 프로세서 사용률 등과 같은 태스크 실행의 다른 결과도 포함할 수 있다.
보충 정보는 또한 테넌트 특정 정보를 포함할 수 있다. 예를 들어, 플랫폼 제어기는 플랫폼의 관점, 특정 테넌트의 상태(예를 들어, 테넌트에서 실행되는 다양한 소프트웨어의 버전), 테넌트의 구성 등으로부터 테넌트의 추정된 건전성(estimated health)을 지정할 수 있다. 예를 들어, 도 5는 테넌트의 4개의 컴포넌트 각각에 대해 (이 경우 컴포넌트의 실행 여부와는 상관없이) 건전성 상태를 지정하는, 테넌트에게 전달될 수 있는 건전성 표를 보여준다.
다음으로 테넌트는 지정을 최적으로 수신한다(동작(321)). 따라서, 특정 사례의 예에서, 테넌트(221)는 플랫폼 제어기(210)로부터 태스크 A, B 및 C의 지정을 수신한다. 따라서, 테넌트는 태스크 A가 수행되는 시기를 테넌트가 제어할 수 있는 15분 윈도우와, 태스크 B가 수행되는 시기를 테넌트가 제어할 수 있는 15일 윈도우와, 태스크 C가 수행되는 시기를 테넌트가 제어할 수 있는 무한대 윈도우를 가짐을 안다.
그 다음, 테넌트는 대응하는 시간프레임 내에서 태스크의 명시적인 승인으로 응답하거나, 명시적 승인없이 시간프레임을 경과시킴으로써 각 태스크를 승인하여(동작 (322)), 특정 원자적 태스크를 수행하는 서버 플랫폼을 암묵적으로 승인한다. 명시적 승인의 경우, 여러 태스크에 대한 명시적 승인은 단일 통신으로 제공될 수 있다. 예를 들어, 특정 사례의 경우, 13분 표시에서, 테넌트(221)가 태스크 A와 B를 모두 시작하기로 결정했다고 가정한다. 두 태스크의 시간프레임 내에 있기 때문에, 테넌트는 여전히 두 태스크에 대한 제어를 갖는다. 따라서, 단일 통신에서, 테넌트(221)는 태스크 A 및 B의 개시를 승인할 수 있다.
그 다음, 플랫폼은 서버 플랫폼이 지정의 통신에 대응하는 응답 상태에 기초하여 특정 태스크의 수행을 진행해야 하는 것으로 결정한다(동작(316)). 예를 들어, 특정한 사례의 예에서, 13분 표시에서, 플랫폼 제어기(210)는 테넌트가 태스크 A 및 B의 진행을 승인한다는 표시를 테넌트(221)로부터 수신하였다. 이 경우, 서버 플랫폼은 임의로 진행한다. 그러나, 태스크 A와 관련하여 테넌트(221)로부터의 통신없이 15분이 경과했다고 가정한다. 이 시점에서, (수신된 응답 없음의) 응답 상태가 주어지면, 플랫폼은 응답 없음을 암묵적인 승인으로 해석하여 앞으로 나아갈 수 있다. 따라서, 플랫폼은 태스크 A를 진행할 수 있다.
이 메커니즘은 플랫폼과 테넌트 간의 통신 문제에 대해 탄력적이다. 예를 들어, 태스크와 시간프레임의 지정이 테넌트에 의해 결코 수신되지 않았고, 및/또는 태스크를 수행하라는 명시적인 승인이 테넌트에 의해 결코 수신되지 않았다고 가정한다. 이 경우, 플랫폼은 플랫폼 제어기와 테넌트 간의 완전한 통신 중단이 있더라도 여전히 태스크를 진행할 것이다. 예를 들어, 대응하는 시간프레임이 만료되면 단순히 플랫폼이 태스크를 행하면 된다.
테넌트에게 영향을 미치는 특정 태스크를 개시할 시기를 그 테넌트가 제어할 수 있게 하는 능력은 유용할 수 있는데, 그 이유는 테넌트가 플랫폼이 수행할 수 있는 태스크를 언제 시작할 지에 대한 결정에 관련된 보다 많은 정보를 가질 수 있기 때문이다. 예를 들어, 플랫폼이 테넌트가 건전하지 않다고(예를 들어, 동작하고 있지 않다고) 생각하지만, 테넌트가 다르게 알고 있는 경우, 플랫폼은 일반적으로 테넌트에게 시정 조치를 즉시 취하게 할 수 있다. 그러나, 테넌트가 자신의 건전성을 알고 있기 때문에 테넌트는 덜 긴급할 수 있다. 따라서, 이 메커니즘을 통해 테넌트는 테넌트가 알고 있는 사실을 고려하여 태스크를 보다 적절한 시점으로 연기하도록 그의 보다 훌륭한 지능을 사용할 수 있다. 이는 상황에 따라 적절한 속도로 워크플로우를 진행할 수 있게 하는 효과를 갖는다.
본 발명은 그 사상 또는 본질적인 특성에서 벗어남이 없이 다른 특정 형태로 구체화될 수 있다. 기술된 실시예들은 모든 면에서 단지 예시적인 것이며 제한적이지는 않다. 그러므로, 본 발명의 범위는 전술한 설명보다는 첨부된 청구 범위에 의해 표시된다. 청구 범위와 균등한 의미 및 범위 내에있는 모든 변경은 그 범위 내에 포함되어야 한다.

Claims (23)

  1. 정보(knowledge)가 부족한 서버 플랫폼에 비해 더 많은 정보를 가진 테넌트를 선택적으로 호출하여, 상기 테넌트의 상기 더 많은 정보에 따라서 적합한 시간까지 워크플로우 태스크를 지연시켜, 워크플로우의 실행을 개선하는 아키텍처를 운영하는, 상기 테넌트에 의해 수행되는 방법으로서,
    상기 테넌트가 상기 서버 플랫폼으로부터 특정 원자적 태스크(atomic task)과 관련된 지정(designation)을 수신하는 단계 - 상기 지정은 (1) 특정 원자적 태스크가 상기 서버 플랫폼에 의해 수행될 것 및 (2) 상기 특정 원자적 태스크의 수행이 잠재적으로 상기 테넌트에 영향을 미칠 것임을 나타냄 - 와,
    상기 특정 원자적 태스크가 상기 서버 플랫폼에 의해 수행될 시기를 결정할 때 상기 서버 플랫폼이 상기 테넌트에게 적어도 일부 제어를 넘겨주기 위해 상기 지정을 사용하고 있음을 상기 테넌트가 나타내는(identify) 단계 - 상기 테넌트는 상기 지정 내에 표시된 결정된 시간프레임(timeframe) 동안 상기 적어도 일부 제어를 유지하고, 상기 테넌트에게 상기 적어도 일부 제어를 넘겨주는 것은 상기 테넌트가 상기 특정 원자적 태스크가 얼마나 긴급한지에 관해 더 많은 정보를 가지고 있기 때문에 적어도 부분적으로 수행됨 - 와,
    상기 서버 플랫폼이 상기 특정 원자적 태스크를 수행하는 것을 상기 테넌트가 승인하는 단계 - 상기 테넌트의 승인은 상기 결정된 시간프레임 내에 수행되고, 상기 테넌트의 승인은 상기 서버 플랫폼이 상기 특정 원자적 태스크를 개시하는 명령을 상기 테넌트로부터 수신한 후 상기 서버 플랫폼이 대기할 예상 시간에 적어도 부분적으로 기초함 - 를 포함하고,
    상기 특정 원자적 태스크가 수행될 시기에 대해 상기 서버 플랫폼이 상기 테넌트와 조정한 결과로서, 상기 특정 원자적 태스크의 실행은, 상기 서버 플랫폼으로 하여금 태스크에 대한 결정된 긴급성에 따라 태스크를 처리함으로써 자신의 리소스를 더 효율적으로 사용하게 하는 속도(pace)로 진행되는,
    방법.
  2. 제 1 항에 있어서,
    상기 테넌트의 승인 단계는,
    상기 특정 원자적 태스크를 승인하는 명시적인 통신을 상기 서버 플랫폼에 송신하지 않고 상기 테넌트가 상기 결정된 시간프레임의 종료시(end)까지 대기하고, 이로써 상기 서버 플랫폼이 상기 특정 원자적 태스크를 수행하는 것을 암시적으로 승인하는 단계를 포함하는,
    방법.
  3. 제 1 항에 있어서,
    상기 테넌트의 승인 단계는,
    상기 테넌트가 상기 결정된 시간프레임 내에 상기 특정 원자적 태스크의 명시적인 승인을 서버 플랫폼에 통신하는 단계를 포함하는,
    방법.
  4. 제 1 항에 있어서,
    상기 지정은 복수의 다른 원자적 태스크에도 관련되는,
    방법.
  5. 제 4 항에 있어서,
    상기 테넌트의 승인 단계는,
    상기 테넌트가 단일 통신 내에서 상기 복수의 원자적 태스크 중 적어도 하나의 원자적 태스크 각각을 명시적으로 승인하는 단계를 포함하는,
    방법.
  6. 제 5 항에 있어서,
    상기 테넌트의 승인 단계는,
    상기 테넌트가 상기 서버 플랫폼과의 단일 통신 내에서 상기 복수의 원자적 태스크 중 적어도 일부의 원자적 태스크 각각을 명시적으로 승인하는 단계를 포함하는,
    방법.
  7. 제 1 항에 있어서,
    상기 테넌트가 상기 서버 플랫폼으로부터 특정 원자적 태스크와 관련된 지정을 수신하는 단계 이전에,
    상기 테넌트가 상기 서버 플랫폼에 의해 수행될 태스크를 제안하는 단계 - 상기 지정은 상기 제안된 태스크에 적어도 부분적으로 기초함 - 를 더 포함하는,
    방법.
  8. 컴퓨터 실행가능 명령어를 포함하며, 하나 이상의 컴퓨터 판독가능 물리적 저장 매체에 저장된 컴퓨터 프로그램으로서,
    상기 명령어는 정보(knowledge)가 부족한 서버 플랫폼에 비해 더 많은 정보를 가진 테넌트를 선택적으로 호출하여, 상기 테넌트의 상기 더 많은 정보에 따라서 적합한 시간까지 워크플로우 태스크를 지연시켜, 워크플로우의 실행을 개선하는 아키텍처를 운영하는 방법을 수행하도록 상기 하나 이상의 프로세서에 의해 실행되며,
    상기 방법은,
    상기 서버 플랫폼에 의해 수행되고 특정 테넌트에 적어도 잠재적으로 영향을 미칠 특정 태스크를 식별하는 단계와,
    상기 특정 태스크과 관련된 지정을 생성하는 단계 - 상기 지정은, (1) 상기 특정 태스크가 상기 서버 플랫폼에 의해 수행될 것 및 (2) 상기 태스크의 수행이 잠재적으로 상기 특정 테넌트에 영향을 미칠 것임을 나타내고, 상기 지정은 상기 서버 플랫폼에 의해 상기 특정 태스크가 수행될 시기를 결정할 때 상기 특정 테넌트에게 적어도 일부 제어를 넘겨주기 위해 상기 서버 플랫폼이 상기 지정을 사용하고 있음을 나타내기 위해 상기 특정 테넌트에 의해 사용되고, 상기 특정 테넌트는 상기 지정 내에 표시된 특정 시간프레임 동안 적어도 일부 제어를 유지하며, 상기 테넌트에게 상기 적어도 일부 제어를 넘겨주는 것은 상기 테넌트가 상기 특정 태스크가 얼마나 긴급한지에 관해 더 많은 정보를 가지고 있기 때문에 적어도 부분적으로 수행됨 - 와,
    상기 지정이 적어도 상기 특정 테넌트로 통신되도록 시도하는 단계와,
    상기 서버 플랫폼이 상기 지정의 통신에 대응하는 응답 상태에 기초하여 상기 특정 태스크의 수행을 계속할 것을 결정하는 단계 - 상기 특정 테넌트는 상기 응답 상태를 생성하고, 상기 응답 상태를 생성하는 것은 상기 서버 플랫폼이 상기 특정 테넌트로부터 상기 특정 태스크를 개시하라는 명령을 수신한 후 상기 서버 플랫폼이 대기할 예상 시간에 적어도 부분적으로 기초하고,
    상기 서버 플랫폼이 상기 특정 태스크가 수행될 시기에 대해 상기 테넌트와 조정한 결과로서, 상기 특정 태스크의 실행은 상기 서버 플랫폼으로 하여금 태스크들의 결정된 긴급성에 따라 태스크를 처리함으로써 자신의 리소스를 더 효율적으로 사용할 수 있게 하는 속도로 진행되는,
    컴퓨터 프로그램.
  9. 제 8 항에 있어서,
    상기 서버 플랫폼이 상기 특정 태스크의 수행을 계속할 것을 결정하는 단계는 상기 특정 시간프레임 내에 상기 특정 테넌트로부터 명시적 승인을 수신한 것에 응답하여 수행되는,
    컴퓨터 프로그램.
  10. 제 8 항에 있어서,
    상기 서버 플랫폼이 상기 특정 태스크의 수행을 계속할 것을 결정하는 단계는 상기 특정 시간프레임 내에 상기 특정 테넌트의 명시적인 승인없이 상기 특정 시간프레임이 경과했다는 결정에 응답하여 수행되는,
    컴퓨터 프로그램.
  11. 제 8 항에 있어서,
    상기 특정 시간프레임은 상기 지정 내에 명시적으로 표현되는,
    컴퓨터 프로그램.
  12. 제 8 항에 있어서,
    상기 특정 시간프레임이 종료하지 않는다는 것은 상기 특정 테넌트가 상기 서버 플랫폼에 의해 상기 특정 태스크가 수행되는 시기에 대한 연속적인 제어를 가진다는 것을 나타내는 것인,
    컴퓨터 프로그램.
  13. 제 8 항에 있어서,
    상기 특정 시간프레임은 상기 서버 플랫폼에 의해 취소 가능한,
    컴퓨터 프로그램.
  14. 제 8 항에 있어서,
    상기 방법은,
    상기 특정 태스크를 승인할 시기를 결정할 때 상기 특정 테넌트를 돕기 위해 상기 특정 테넌트에게 보충 정보를 제공하는 단계를 더 포함하는 것인,
    컴퓨터 프로그램.
  15. 제 14 항에 있어서,
    상기 보충 정보는 상기 특정 태스크에 대응하는 예상 복구 시간을 포함하는,
    컴퓨터 프로그램.
  16. 제 14 항에 있어서,
    상기 보충 정보는 상기 특정 테넌트의 건전성(health)에 대한 서버 플랫폼 추정을 포함하는,
    컴퓨터 프로그램.
  17. 제 14 항에 있어서,
    상기 보충 정보는 상기 특정 테넌트의 상태를 포함하는,
    컴퓨터 프로그램.
  18. 제 14 항에 있어서,
    상기 보충 정보는 상기 특정 테넌트의 구성을 포함하는,
    컴퓨터 프로그램.
  19. 정보가 부족한 서버 플랫폼에 비해 더 많은 정보를 가진 테넌트를 선택적으로 호출하여, 상기 테넌트의 상기 더 많은 정보에 따라 적합한 시간까지 워크플로우 태스크를 지연시켜, 워크플로우의 실행을 개선하는 아키텍처를 운영하는, 상기 서버 플랫폼에 의해 수행되는 방법으로서,
    상기 서버 플랫폼에 의해 수행되고 특정 테넌트에 적어도 잠재적으로 영향을 미칠 특정 태스크를 식별하는 단계와,
    상기 특정 태스크과 관련된 지정을 생성하는 단계 - 상기 지정은, (1) 상기 특정 태스크가 상기 서버 플랫폼에 의해 수행될 것 및 (2) 상기 태스크의 수행이 잠재적으로 상기 특정 테넌트에게 영향을 미칠 것임을 나타내고, 상기 지정은 상기 서버 플랫폼에 의해 상기 특정 태스크가 수행될 시기를 결정할 때 상기 특정 테넌트에게 적어도 일부 제어를 넘겨주기 위해 상기 서버 플랫폼이 상기 지정을 사용하고 있음을 나타내기 위해 상기 특정 테넌트에 의해 사용되고, 상기 특정 테넌트는 상기 지정 내에 표시된 특정 시간프레임 동안 적어도 일부 제어를 유지하며, 상기 테넌트에게 상기 적어도 일부 제어를 넘겨주는 것은 상기 테넌트가 상기 특정 태스크가 얼마나 긴급한지에 관해 더 많은 정보를 가지고 있기 때문에 적어도 부분적으로 수행됨 - 와,
    상기 지정을 상기 특정 테넌트로 통신하는 단계와,
    상기 서버 플랫폼이 상기 지정의 통신에 대응하는 응답 상태에 기초하여 상기 특정 태스크의 수행을 계속할 것을 결정하는 단계 - 상기 특정 테넌트는 상기 응답 상태를 생성하고, 상기 응답 상태를 생성하는 것은 상기 서버 플랫폼이 상기 특정 테넌트로부터 상기 특정 태스크를 개시하라는 명령을 수신한 후 상기 서버 플랫폼이 대기할 예상 시간에 적어도 부분적으로 기초하고,
    상기 서버 플랫폼이 상기 특정 태스크가 수행될 시기에 대해 상기 테넌트와 조정한 결과로서, 상기 특정 태스크의 실행은 상기 서버 플랫폼으로 하여금 태스크들의 결정된 긴급성에 따라 태스크를 처리함으로써 자신의 리소스를 더 효율적으로 사용할 수 있게 하는 속도로 진행되는
    방법.
  20. 제 19 항에 있어서,
    상기 특정 태스크는 제 1 원자적 태스크이고, 상기 특정 시간프레임은 제 1 시간프레임이며,
    상기 방법은,
    상기 서버 플랫폼에 의해 수행되고 상기 특정 테넌트에 잠재적으로 영향을 미칠 제 2 원자적 태스크를 식별하는 단계와,
    상기 제 2 원자적 태스크와 관련되고 상기 특정 테넌트가 상기 제 2 원자적 태스크를 수행하는 서버 플랫폼을 승인하기 위한 제어를 갖는 적어도 제 2 시간프레임의 암시적 식별을 적어도 포함하는 상이한 지정을 생성하는 단계와,
    상기 상이한 지정을 상기 특정 테넌트에 통신하는 단계와,
    상기 서버 플랫폼이 상기 상이한 지정의 통신에 대응하는 응답 상태에 기초하여 상기 제 2 원자적 태스크의 수행을 계속할 것을 결정하는 단계를 포함하는
    방법.
  21. 제 19 항에 있어서,
    상기 방법은,
    상기 서버 플랫폼에 의해 수행될 다른 태스크를 식별하는 단계 - 상기 다른 태스크는 제 1 테넌트에 할당된 제 1 태스크를 포함함 - 와,
    상기 서버 플랫폼에 의해 수행될 때 상기 제 1 태스크가 상기 특정 테넌트에 영향을 미칠 것임을 식별하는 단계와,
    상기 특정 테넌트 및 상기 제 1 테넌트 모두로 하여금 상기 서버 플랫폼에 의해 제 1 태스크가 수행될 시기에 대한 제어를 공유할 수 있게 하는 단계를 더 포함하는
    방법.
  22. 제 19 항에 있어서,
    상기 특정 시간프레임의 길이는 상기 특정 태스크의 결정된 긴급성에 의존하고, 이에 의해 긴급성이 높은 태스크는 긴급성이 낮은 태스크보다 짧은 시간프레임을 갖는
    방법.
  23. 제 1 항에 있어서,
    보충 정보가 상기 테넌트에게 제공되며, 상기 보충 정보는 상기 특정 원자적 태스크를 실행하는 하나 이상의 결과를 기술하며, 상기 결과는 저장소 액세스 속도를 포함하는
    방법.
KR1020177000387A 2014-07-07 2015-07-06 서버 플랫폼 상에서 원자적 태스크의 개시를 제어하는 기법 KR102399291B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/324,511 2014-07-07
US14/324,511 US10110501B2 (en) 2014-07-07 2014-07-07 Tenant control in initiating atomic platform tasks
PCT/US2015/039177 WO2016007402A1 (en) 2014-07-07 2015-07-06 Control in initiating atomic tasks on a server platform

Publications (2)

Publication Number Publication Date
KR20170030517A KR20170030517A (ko) 2017-03-17
KR102399291B1 true KR102399291B1 (ko) 2022-05-17

Family

ID=53682849

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177000387A KR102399291B1 (ko) 2014-07-07 2015-07-06 서버 플랫폼 상에서 원자적 태스크의 개시를 제어하는 기법

Country Status (11)

Country Link
US (1) US10110501B2 (ko)
EP (1) EP3167362A1 (ko)
JP (1) JP6568576B2 (ko)
KR (1) KR102399291B1 (ko)
CN (1) CN106489133B (ko)
AU (1) AU2015288125B2 (ko)
BR (1) BR112016030987A2 (ko)
CA (1) CA2954262C (ko)
MX (1) MX366479B (ko)
RU (1) RU2696299C2 (ko)
WO (1) WO2016007402A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10768920B2 (en) 2016-06-15 2020-09-08 Microsoft Technology Licensing, Llc Update coordination in a multi-tenant cloud computing environment
JP2018198236A (ja) * 2017-05-23 2018-12-13 パナソニック株式会社 太陽電池モジュール
CN107391188A (zh) * 2017-07-17 2017-11-24 聚好看科技股份有限公司 一种控制定时任务的方法和装置
US11119751B2 (en) * 2019-07-16 2021-09-14 International Business Machines Corporation Self-learning optimized patch orchestration

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011046559A1 (en) 2009-10-15 2011-04-21 Hewlett-Packard Development Company, L.P. Information technology system change planning
US20130151681A1 (en) 2011-12-12 2013-06-13 Microsoft Corporation Increasing availability of stateful applications

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2348972C2 (ru) * 2004-05-19 2009-03-10 Еитиро ТЕРАСАВА Устройство обработки информации, система обновления программного обеспечения, способ обновления программного обеспечения и программа для его реализации
US20060064481A1 (en) * 2004-09-17 2006-03-23 Anthony Baron Methods for service monitoring and control
CN101038635B (zh) * 2006-03-15 2012-09-26 北大方正集团有限公司 一种工作流管理系统流程权限控制系统的实现方法
US20080104573A1 (en) * 2006-10-25 2008-05-01 Microsoft Corporation Software build validation before check-in
US8019812B2 (en) * 2007-04-13 2011-09-13 Microsoft Corporation Extensible and programmable multi-tenant service architecture
CN101094229B (zh) * 2007-07-24 2012-12-19 深圳市融创天下科技股份有限公司 一种网络应用程序的增量升级方法
EP2550620B1 (en) * 2010-03-24 2014-07-02 e-BO Enterprises Trusted content distribution system
KR101350755B1 (ko) * 2011-01-14 2014-01-10 대전대학교 산학협력단 클라우드 컴퓨팅에서 다중 워크플로우를 위한 비용기반 스케줄링 방법 및 그 시스템
US9361468B2 (en) * 2012-04-17 2016-06-07 Salesforce.Com, Inc. Method and system for granting access to secure data
US8949839B2 (en) * 2012-07-26 2015-02-03 Centurylink Intellectual Property Llc Method and system for controlling work request queue in a multi-tenant cloud computing environment
CN103294511A (zh) * 2013-05-31 2013-09-11 哈尔滨工业大学 基于CAN总线的bootloader软件的升级方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011046559A1 (en) 2009-10-15 2011-04-21 Hewlett-Packard Development Company, L.P. Information technology system change planning
US20120016713A1 (en) 2009-10-15 2012-01-19 Lawrence Wilcock Information Technology System Change Planning
US20130151681A1 (en) 2011-12-12 2013-06-13 Microsoft Corporation Increasing availability of stateful applications

Also Published As

Publication number Publication date
BR112016030987A2 (pt) 2021-06-08
EP3167362A1 (en) 2017-05-17
MX366479B (es) 2019-07-10
RU2696299C2 (ru) 2019-08-01
MX2017000166A (es) 2017-04-25
RU2016152186A (ru) 2018-07-02
JP6568576B2 (ja) 2019-08-28
AU2015288125A1 (en) 2017-01-12
US10110501B2 (en) 2018-10-23
WO2016007402A1 (en) 2016-01-14
CN106489133B (zh) 2019-11-19
KR20170030517A (ko) 2017-03-17
RU2016152186A3 (ko) 2019-02-05
CA2954262C (en) 2022-08-30
CA2954262A1 (en) 2016-01-14
BR112016030987A8 (pt) 2017-08-22
US20160006666A1 (en) 2016-01-07
JP2017520858A (ja) 2017-07-27
CN106489133A (zh) 2017-03-08
AU2015288125B2 (en) 2020-05-21

Similar Documents

Publication Publication Date Title
EP3167368B1 (en) Dynamic shard allocation adjustment
CN109155782B (zh) 容器之间的进程间通信
US9262220B2 (en) Scheduling workloads and making provision decisions of computer resources in a computing environment
US20160378554A1 (en) Parallel and Distributed Computing Using Multiple Virtual Machines
US10033816B2 (en) Workflow service using state transfer
US20120203823A1 (en) Apparatus, systems and methods for deployment and management of distributed computing systems and applications
KR102399291B1 (ko) 서버 플랫폼 상에서 원자적 태스크의 개시를 제어하는 기법
US10938641B1 (en) On-demand development environment
US11157355B2 (en) Management of foreground and background processes in a storage controller
US20150178184A1 (en) Test management using distributed computing
US20150244626A1 (en) Identity-aware load balancing
US20190108065A1 (en) Providing additional memory and cache for the execution of critical tasks by folding processing units of a processor complex
JP2020024646A (ja) リソース予約管理装置、リソース予約管理方法およびリソース予約管理プログラム
CN107800779B (zh) 优化负载均衡的方法及系统
KR102018407B1 (ko) 콘텍스트적으로 애플리케이션과 상호작용하는 기법
JP6326062B2 (ja) 異なる環境どうし間でのジョブ実行依頼のトランスペアレントなルーティング
US9246778B2 (en) System to enhance performance, throughput and reliability of an existing cloud offering
US20200278890A1 (en) Task management using a virtual node
CN112860421A (zh) 用于作业处理的方法、设备和计算机程序产品
US20210160138A1 (en) Dynamic network of supercomputing resources with unified management interface
KR20150096286A (ko) 유휴 컴퓨터를 활용한 클라우드 대용량 데이터 분석 방법
US20180046506A1 (en) Providing exclusive use of cache associated with a processing entity of a processor complex to a selected task
EP3659033B1 (en) Connector leasing for long-running software operations
US8380938B2 (en) Providing shared access to data storage resources across cluster computing environment boundaries
US10025635B2 (en) Adaptive scheduling policy for jobs submitted to a grid

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant