KR102257500B1 - 프로그램, 시스템, 및 정보 처리 방법 - Google Patents

프로그램, 시스템, 및 정보 처리 방법 Download PDF

Info

Publication number
KR102257500B1
KR102257500B1 KR1020170138088A KR20170138088A KR102257500B1 KR 102257500 B1 KR102257500 B1 KR 102257500B1 KR 1020170138088 A KR1020170138088 A KR 1020170138088A KR 20170138088 A KR20170138088 A KR 20170138088A KR 102257500 B1 KR102257500 B1 KR 102257500B1
Authority
KR
South Korea
Prior art keywords
asynchronous processing
script
processing code
program
execution
Prior art date
Application number
KR1020170138088A
Other languages
English (en)
Other versions
KR20180045818A (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 KR20180045818A publication Critical patent/KR20180045818A/ko
Application granted granted Critical
Publication of KR102257500B1 publication Critical patent/KR102257500B1/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/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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release 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/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
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3414Workload generation, e.g. scripts, playback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • G06F9/4837Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
    • 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
    • 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
    • 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
    • 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/5044Allocation 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 hardware capabilities
    • 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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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/542Event management; Broadcasting; Multicasting; Notifications

Abstract

이벤트 구동형 컴퓨팅 서비스의 제한에 도달될 것이라는 징후가 비동기 처리 코드의 실행 중에 검출되는 경우에, 동일한 비동기 처리 코드가, 동시에 실행되는 비동기 처리 코드로부터 더 높은 성능을 가지는 실행 환경에서 기동되고, 처리가 계속된다.

Description

프로그램, 시스템, 및 정보 처리 방법{PROGRAM, SYSTEM, AND INFORMATION PROCESSING METHOD}
본 발명은 프로그램, 시스템, 및 정보 처리 방법에 관한 것이고, 특히 클라우드 서비스의 이벤트 구동형 컴퓨팅 서비스에서의 효율적인 리소스 제어 방법에 관한 것이다.
여러 가지 유형의 클라우드 컴퓨팅 서비스가 최근 몇 년간 이용 가능해지기 시작했다. Amazon Web Service(이하에서 "AWS"로 약칭됨), Google Cloud Platform, 및 Microsoft Azure가 그러한 서비스의 예로서 주어질 수 있다. 이러한 서비스는, 사용되는 성능, 저장부, 및 기타에 따라 시간 단위로 과금되는 서비스로서, 가상 머신 및 저장부와 같은 컴퓨팅 리소스를 제공하는 것에 의해서 확산되기 시작하였다. 그러한 서비스의 이용에 의해서, 사용자는, 필요한 물리적 리소스를 스스로 준비할 필요가 없이, 저비용으로 웹 시스템과 같은 정보 처리 시스템을 탄력적으로 생성할 수 있다. 네트워크에 연결된 여러 장치, 컴퓨터 단말기, 및 모바일 단말기로부터 장치 및 애플리케이션에 관한 로그 정보, 및 동작 정보 등을 수집하는 것, 그러한 정보를 저장부 내에 저장하는 것, 및 데이터베이스 내의 정보를 관리하는 것이 그러한 클라우드 컴퓨팅 서비스의 사용 예로서 주어질 수 있다. 여기에서, 파일의 파일명, 및 정보가 저장되는 저장부 내의 위치 등을 관리하기 위해서, 파일의 수집과 같은 정보가 업로드될 때마다 기록이 생성된다.
예를 들어, 일본 특허 공개 제2004-38759호는 "이벤트 구동형 스크립트"라고 지칭되는 기술을 개시한다. 이러한 기술에 따라서, 특정 데이터가 업데이트된 경우에, 미리-등록된 스크립트가 업데이트 이벤트에 따라서 발진된다. 클라우드 컴퓨팅 서비스는 또한, 특정 컴퓨팅 리소스(이하에서, "이벤트 구동형 컴퓨팅 서비스"로 지칭됨)에 대해서 발생되는 이벤트에 응답하여 적은-부담의 처리를 실행하는 서비스를 제공한다. 예를 들어, AWS Lambda, Google Cloud Functions, 및 Microsoft Azure Functions가 있다. 이러한 서비스에서, 프로그램 코드를 실행하는 가상 머신의 지정된 성능, 예를 들어 CPU, 메모리, 및 기타를 가지는, 클라우드 컴퓨팅 서비스를 위한 희망 처리를 실시하기 위한 프로그램 코드가 먼저 등록된다. 등록된 프로그램 코드는 컴퓨팅 리소스 및 그러한 컴퓨팅 리소스에 대해서 발생된 구체적인 이벤트와 연관된다.
이제까지, 이벤트 구동형 컴퓨팅 서비스에 의해서 실현된 것과 동일한 종류의 처리를 실시하기 위해서, 컴퓨팅 리소스, 희망 처리를 실행하기 위한 애플리케이션, 및 기타에 대해서 발생되는 이벤트를 검출하기 위한 애플리케이션을 제공할 필요가 있고, 또한 이러한 애플리케이션을 실행하기 위한 기반시설을 구축하고 관리할 필요가 있었다. 그러나, 전술한 이벤트 구동형 컴퓨팅 서비스는 클라우드 컴퓨팅 서비스의 사용자가 희망 처리 개발에만 초점을 맞추게 할 수 있게 하였다. 또한, 이벤트 구동형 컴퓨팅 서비스로, 등록된 프로그램 코드가 실행되는 각각의 시간에 대해서 과금하면서 서비스를 제공할 수 있고, 이는 또한 기반시설 비용의 관점에서 전술한 구성을 가지는 애플리케이션을 더 용이하게 개발할 수 있게 하였다.
AWS Lambda에 의해서 대표되는 바와 같은 현재의 이벤트 구동형 컴퓨팅 서비스에서, 이벤트의 발생에 응답하여 실행되는 프로그램 코드를 실행할 때 제한이 있다. 구체적으로, 프로그램 코드가 이벤트 구동형 컴퓨팅 서비스에 의해서 특정된 시간량 이내에 처리를 끝내지 못하는 경우에, 처리가 만기되고 오류로 종료될 것이다. 프로그램 코드가, 설정된 연속적인 시간의 양에서 오류로 종료되는 경우에, 이벤트 구동형 컴퓨팅 서비스는, 상응하는 컴퓨팅 리소스에 대해서 이벤트가 발생되는 경우에도 프로그램 코드 실행을 중단할 것이다.
예를 들어, 파일 업로드 종료의 이벤트에 응답하여 미리 결정된 저장부에 업로드된 파일을 처리하기 위한 프로그램 코드가 이벤트 구동형 컴퓨팅 서비스에 등록되는 것을 가정한다. 이때, 만약 업로드된 파일이 크다면, 프로그램 코드를 실행하는 가상 머신의 성능에 따라서, 처리가 필요 시간량 내에 완료되지 못하는 경우가 있을 수 있다. 다시 말해서, 프로그램 코드를 실행하기 위한 환경으로서 가정되는 가상 머신의 성능에 합치되지 않는 데이터가 업로드될 때, 시간 만기가 반복적으로 발생될 수 있고 처리가 실행되지 않을 수 있다.
본 발명은 이벤트 구동형 컴퓨팅 서비스에서 실패를 억제하는 프로그램, 시스템, 및 정보 처리 방법을 제공한다.
본 발명은 이하의 구성을 갖는다.
즉, 본 발명의 제1 양태에 따라, 매체 내에 기록되고, 등록 중에 지정된 시스템 이벤트 및 컴퓨팅 리소스에 따라 시스템을 구성하는 컴퓨터에 의해서 실행되는 프로그램이 제공되고, 그러한 프로그램은 컴퓨터가: 시스템에 의해서 관리되는 데이터를 처리하기 위한 처리 수단; 및 프로그램을 실행하는 데에 걸린 시간량의 감시 결과에 따라서 처리 수단에 의해서 실행되는 처리를 중단시키고 시스템 내에 등록된 다른 프로그램을 기동하기 위한 기동 수단으로서 기능하게 한다.
본 발명의 제2 양태에 따라서, 시스템 이벤트에 응답하여 스크립트에 대해서 지정된 컴퓨팅 리소스로 미리 등록된 스크립트를 자동적으로 실행하는 서비스를 제공하는 시스템이 제공되며, 그러한 시스템은: 시스템 이벤트를 검출하기 위한 검출 수단; 검출된 시스템 이벤트에 상응하는 스크립트를 실행하는 것에 의해서 데이터를 처리하기 위한 처리 수단; 스크립트를 실행하는 데에 걸린 시간량을 감시하기 위한 감시 수단; 및 감시 수단에 의해서 실행된 감시의 결과에 따라 처리 수단에 의해서 실행되는 처리를 중단시키고 시스템 내에 등록된 다른 스크립트를 실행하기 위한 실행 수단을 포함하고, 처리 수단에 의해서 처리되는 데이터는 실행되는 다른 스크립트의 결과로서 처리된다.
본 발명의 제3 양태에 따라서, 시스템 이벤트에 응답하여 스크립트에 대해서 지정된 컴퓨팅 리소스로 미리 등록된 스크립트를 자동적으로 실행하는 서비스를 제공하는 시스템 내의 정보 처리 방법이 제공되며, 그러한 방법은: 시스템 이벤트를 검출하는 단계; 검출된 시스템 이벤트에 상응하는 스크립트를 실행하는 것에 의해서 데이터를 처리하는 단계; 스크립트를 실행하는 데에 걸린 시간량을 감시하는 단계; 및 감시의 결과에 따라 데이터 처리를 중단시키고 시스템 내에 등록된 다른 스크립트를 실행하는 단계를 포함하고, 처리되는 데이터는 실행되는 다른 스크립트의 결과로서 처리된다.
본 발명에 따라, 이벤트 구동형 컴퓨팅 서비스에서, 이벤트 구동형 컴퓨팅 서비스의 실패가 억제될 수 있다.
(첨부된 도면을 참조한) 예시적인 실시예에 관한 이하의 설명으로부터 본 발명의 추가적인 특징이 명확해질 것이다.
도 1은 시스템의 전체적인 구성을 도시하는 도면이다.
도 2는 클라이언트 장치(101)의 하드웨어 구성을 도시한 도면이다.
도 3은 서버(102, 103, 및 104)의 각각의 하드웨어 구성을 도시한 도면이다.
도 4는 클라이언트 장치(101)의 소프트웨어 구성을 도시한 도면이다.
도 5는 파일 서버(102)의 소프트웨어 구성을 도시한 도면이다.
도 6은 파일 정보 서버(103)의 소프트웨어 구성을 도시한 도면이다.
도 7은 이벤트 정보 관리 서버(104)의 소프트웨어 구성을 도시한 도면이다.
도 8은 비동기 처리 코드를 등록하기 위한 일련의 처리를 도시한 순서도이다.
도 9a 및 도 9b는 비동기 처리 코드에 의해서 실행된 일련의 처리를 도시한 순서도이다.
도 10은 비동기 처리 코드 감시 처리를 도시한 흐름도이다.
도 11은 비동기 처리 코드가 처리 시간에 따라 상이한 실행 환경으로 코드를 비동기 처리하는 것을 기동하는 처리를 도시한 흐름도이다.
도 12는 상이한 실행 환경에서 비동기 처리 코드를 기동하는 비동기 처리 코드의 의사-코드(pseudo-code)를 도시한다.
도 13은 비동기 처리 코드가 처리 수에 따라 상이한 실행 환경에서 비동기 처리 코드를 기동하는 처리를 도시한 흐름도이다.
도 14는 상이한 실행 환경에서 비동기 처리 코드를 발진하는 비동기 처리 코드의 의사-코드를 도시한다.
도 15는 이벤트의 상세 내용에 따라 비동기 처리 코드를 실행하기 위한 환경을 결정하는 처리를 도시하는 흐름도이다.
제1 실시예
● 시스템 구성
이하에서, 도면을 참조하여 본 발명의 실시예를 설명할 것이다. 도 1은 본 발명에 따른 시스템의 전체적인 구성을 도시한 블록도이다. 네트워크(100)는 도 1의 블록도 내의 구성 요소 즉, 클라이언트 장치(101), 파일 서버(102), 파일 정보 관리 서버(103), 및 이벤트 정보 관리 서버(104)를 연결하는 네트워크이다. 클라이언트 장치 및 서버, 관리자 장치, 및 기타가 "정보 처리 기구" 또는 "컴퓨터"로서 또한 지칭될 수 있다. 도 1에 도시된 시스템은 "클라우드 시스템" 또는 "정보 처리 시스템"으로 지칭될 수 있다.
네트워크(100)는 프레임워크로서, 그러한 프레임워크를 통해서 구성 요소들이 서로 통신한다. 본 발명에서, 클라이언트 장치(101)는 인터넷을 통해서 다른 구성 요소에 연결되는 것으로 설명될 것이다. 한편, 다른 구성 요소는 인트라넷, 인터넷, 또는 다른 네트워크 시스템을 통해서 연결될 수 있다. 도 1의 블록도에서 도시된 구성 요소 중에서, 클라이언트 장치(101)는 네트워크(100)를 통해서 파일 서버(102)와 파일 정보 관리 서버(103)에 상호 연결된다. 이러한 실시예는 클라이언트 장치(101)가 개인용 컴퓨터(이하에서, "PC")로 가정되지만, 클라이언트 장치(101)는 네트워크(100)를 통한 통신 기능을 가지는 임의 유형의 단말기일 수 있다. 파일 서버(102)는, 클라이언트 장치(101)로부터 송신된 실제 파일을 수신하고 저장하는 서버 장치이다. 파일 서버(102)는 클라이언트 장치(101)로부터 송신된 다양한 포맷의 파일을 저장하는 기능을 갖는다. 파일 정보 관리 서버(103)는, 파일이 파일 서버(102) 내에 저장된 장소를 나타내는 정보(URL)와 관련하여 클라이언트 장치(101)로부터 송신된 파일의 속성 정보를 저장하는 서버 장치이다.
이벤트 정보 관리 서버(104)는 이벤트 구동형 컴퓨팅 서비스에서 프로그램 코드를 관리 및 실행하는 서버 장치이다. 이벤트 구동형 컴퓨팅 서비스의 사용자는 프로그램 코드, 및 서로 연관된 해당 프로그램 코드를 실행하기 위해서 파일 서버(102) 내에서 발생되는 이벤트를 이벤트 정보 관리 서버(104) 내에 등록한다. "이벤트"는, 파일 서버(102) 내의 미리 결정된 경로로 업로드되는 파일, 업데이트되는 파일 서버(102) 내의 미리 결정된 경로에 저장된 파일, 및 기타와 같이, 파일 서버(102) 내에 저장된 파일에 대해서, 클라이언트 장치(101) 또는 도 1에 도시된 다른 구성 요소에 의해서 이루어는 동작을 지칭한다. 프로그램 코드를 실행하는 가상 머신의 환경 정보가 또한 코드와 관련하여 등록된다. 이는 구체적으로 가상 머신 내에서 동작되는 CPU, RAM, 및 기타의 성능을 지칭한다. 그렇게 하는 것에 의해서, 이벤트가 파일 서버(102) 내에서 발생될 때, 이벤트 정보 관리 서버(104)는 파일 서버(102) 내에서 실행된 처리와 비동기식으로 이벤트와 연관되는 미리 결정된 프로그램 코드를 실행한다. 이하에서, 파일 서버(102) 내에서 발생되는 이벤트에 응답하여 이벤트 정보 관리 서버(104)에 의해서 실행되는 프로그램 코드는 "비동기 처리 코드"로 지칭될 것이다. 부가적으로, 이러한 실시예에 따른 "이벤트"는 "시스템 이벤트"로서 지칭될 것이다. 이벤트의 유형 및 비동기 처리 코드는, 예를 들어, 이벤트 정보가 등록될 때, 지정되고 연관된다. 비동기 처리 코드는 비동기 처리 코드를 실행하는 이벤트 정보 관리 서버(104)의 컴퓨팅 리소스를 이용하여 실행된다. 비동기 처리 코드는 예를 들어 Javascript®과 같은 스크립트를 이용하여 실행된다.
● 단말기 및 서버 하드웨어 구성
도 2는 도 1에 도시된 클라이언트 장치(101)의 하드웨어 구성의 예를 도시한 블록도이다. 시스템 버스(200)는 클라이언트 장치(101)를 구성하는 하드웨어 요소들을 서로 연결하는 버스이다. 달리 구체화되지 않은 경우에, 이러한 실시예는, 시스템 버스(200)가 CPU(201)로부터 시스템 버스(200)에 연결된 여러 하드웨어 요소에 제어 명령을 이송하는 것으로 가정한다. CPU(201)는 RAM(202) 및 저장 디바이스(203)로부터 로딩된 프로그램을 실행하고, 이러한 실시예에 따른 발명을 실현하기 위해서 시스템 버스(200)에 의해서 연결된 클라이언트 장치(101)의 하드웨어 요소를 직접적으로 또는 간접적으로 제어한다. RAM(202)은 CPU(201)를 동작시키기 위한 작업 영역으로서 이용되는 일시적 메모리 영역이다. 저장 디바이스(203)는, 기본 소프트웨어인 운영시스템뿐만 아니라 다른 소프트웨어 모듈을 저장하는, HDD와 같은 외부 저장 디바이스이다. 네트워크 디바이스(204)는, 다른 장치와의 통신을 위해서 네트워크(100)에 연결되는 하드웨어이다. 입/출력 인터페이스(205)는 입/출력 디바이스(206)에 연결하기 위한 인터페이스이다. 입/출력 인터페이스(205)는, 예를 들어, PS2, 범용직렬버스(USB), 아날로그 또는 디지털 디스플레이 인터페이스, 및 기타를 포함한다. 입/출력 디바이스(206)는, 입/출력 인터페이스(205)를 통해서 클라이언트 장치(101)에 연결되고 정보를 입/출력하는 장치이다. 입/출력 디바이스(206)는, 예를 들어, 디스플레이, 키보드, 마우스, 또는 기타이다.
도 3은 도 1에 도시된 파일 서버(102), 파일 정보 관리 서버(103), 및 이벤트 정보 관리 서버(104)의 하드웨어 구성의 예를 도시한 블록도이다. 시스템 버스(300)는 파일 서버(102), 파일 정보 관리 서버(103), 또는 이벤트 정보 관리 서버(104)를 구성하는 하드웨어 요소를 서로 연결하는 버스이다. 달리 구체화되지 않은 경우에, 이러한 실시예는, 시스템 버스(300)가 CPU(301)로부터 시스템 버스(300)에 연결된 여러 하드웨어 요소에 제어 명령을 이송하는 것으로 가정한다. CPU(301)는 RAM(302) 및 저장 디바이스(303)로부터 로딩된 프로그램을 실행하고, 이러한 실시예에 따른 발명을 실현하기 위해서 시스템 버스(300)에 의해서 연결된 클라이언트 장치(101)의 하드웨어 요소를 직접적으로 또는 간접적으로 제어한다. RAM(302)은 CPU(301)를 동작시키기 위한 작업 영역으로서 이용되는 일시적 메모리 영역이다. 저장 디바이스(303)는, 기본 소프트웨어인 운영시스템뿐만 아니라 다른 소프트웨어 모듈을 저장하는, HDD와 같은 외부 저장 디바이스이다. 네트워크 디바이스(304)는, 다른 장치와의 통신을 위해서 네트워크(100)에 연결되는 하드웨어이다. 도 1에 도시된 파일 서버(102), 파일 정보 관리 서버(103), 및 이벤트 정보 관리 서버(104)가 클라우드 컴퓨팅 서비스로서 제공되는 것, 및 도 3에 도시된 하드웨어 요소가 가상 머신 소프트웨어에 의해서 애플리케이션 소프트웨어로서 실현되고 물리적 하드웨어 요소와 동일한 방식으로 거동하는 것을 가정한다.
● 클라이언트 소프트웨어
도 4는 이러한 실시예에 따른 클라이언트 장치(101) 상에서 실행되는 클라이언트 장치 정보 전송 애플리케이션(400)의 소프트웨어 구성의 예를 도시한 블록도이다. 클라이언트 장치 정보 전송 애플리케이션(400)은 클라이언트 장치(101)의 저장 디바이스(203) 내에 저장되고 CPU(201)에 의해서 실행된다. 클라이언트 장치 정보 전송 애플리케이션(400)은 통신 유닛(401) 및 정보 수집 유닛(402)으로 구성된다. 통신 유닛(401)은 네트워크 디바이스(204)를 통해서 파일 서버(102)와 통신한다. 정보 수집 유닛(402)은 클라이언트 장치(101)에 의해서 생성된 클라이언트 장치 정보를 수집하고 그러한 정보를 파일로서 저장 디바이스(203) 내에 저장한다. 구체적으로, 정보 수집 유닛(402)은 클라이언트 장치(101)에 의해서 출력된 하드웨어 로그 정보 등을 파일로서 저장 디바이스(203) 내에 순차적으로 저장한다. 클라이언트 장치 정보 전송 애플리케이션(400)은 통신 유닛(401)을 통해서 파일 서버(102)로 클라이언트 장치 정보를 송신한다.
● 파일 서버 소프트웨어
도 5는 이러한 실시예에 따른 파일 서버(102) 상에서 실행되는 파일 관리 애플리케이션(500)의 소프트웨어 구성의 예를 도시한 블록도이다. 파일 관리 애플리케이션(500)은 파일 서버(102)의 저장 디바이스(303) 내에 저장되고 CPU(301)에 의해서 실행된다. 파일 관리 애플리케이션(500)은 통신 유닛(501), 파일 관리 유닛(502), 및 파일 저장 유닛(503)으로 구성된다. 통신 유닛(501)은 네트워크 디바이스(304)를 통해서 클라이언트 장치(101), 파일 서버(102), 파일 정보 관리 서버(103), 및 이벤트 정보 관리 서버(104)와 통신한다. 파일 관리 유닛(502)은 통신 유닛(501)을 통해서 클라이언트 장치(101) 및 이벤트 정보 관리 서버(104)로부터 요청을 수신한다. 파일 관리 유닛(502)은 또한 통신 유닛(501)을 통해서 이벤트 정보 관리 서버(104)로 이벤트를 송신한다. 파일 저장 유닛(503)은 파일 관리 유닛(502)으로부터의 지시에 따라 클라이언트 장치(101)로부터 수신된 실제 파일을 저장한다. 파일 저장 유닛(503)은 또한, 파일 관리 유닛(502)으로부터의 지시에 따라서, 도 1에 도시된 실시예에 따른 본 발명의 구성 요소로부터의 요청에 응답하여 실제 파일을 송신한다. 이하의 파일 관리 표(표 1)는 실제 파일에 대해서 파일 저장 유닛(503)에 의해서 관리되는 데이터의 예를 도시한다.
Figure 112017104803323-pat00001
표 1에서, "ID" 열은, 파일 관리 애플리케이션(500)이 파일 서버(102) 내에 저장된 파일을 특이적으로 식별하기 위해서 이용하는 값을 유지하는 열이다. "저장 경로" 열은, 파일이 파일 서버(102) 내에 저장된 폴더에 관한 경로 정보를 유지하는 열이다. "파일명" 열은, 파일 서버(102) 내에 저장된 파일의 명칭에 관한 값을 유지하는 열이다. "파일 크기" 열은, 파일 서버(102) 내에 저장된 파일의 크기에 관한 값을 유지하는 열이다. "파일 데이터" 열은, 파일 서버(102) 내에 저장된 실제 파일의 2진 데이터를 유지하는 열이다.
● 파일 정보 관리 서버 소프트웨어
도 6은 이러한 실시예에 따른 파일 정보 관리 서버(103) 상에서 실행되는 파일 정보 관리 애플리케이션(600)의 소프트웨어 구성의 예를 도시한 블록도이다. 파일 정보 관리 애플리케이션(600)은 파일 정보 관리 서버(103)의 저장 디바이스(303) 내에 저장되고 CPU(301)에 의해서 실행된다. 파일 정보 관리 애플리케이션(600)은 통신 유닛(601), 파일 정보 관리 유닛(602), 및 파일 정보 저장 유닛(603)으로 구성된다. 통신 유닛(601)은 네트워크 디바이스(304)를 통해서 이벤트 정보 관리 서버(104)와 통신한다. 파일 정보 관리 유닛(602)은 통신 유닛(601)을 통해서 이벤트 정보 관리 서버(104)로부터 요청을 수신한다. 파일 정보 저장 유닛(603)은, 파일 정보 관리 유닛(602)으로부터의 지시에 따라서, 파일 서버(102)로부터 수신된 실제 파일로부터 추출된 여러 유형의 속성 정보를 저장한다. 속성 정보는, 이하에서 설명될, 이벤트 정보 관리 서버(104)에 의한 비동기 처리 코드의 실행의 결과로서 파일 정보 저장 유닛(603) 내에 저장된다. 이하의 파일 정보 관리 표(표 2)는 파일의 속성 정보에 대해서 파일 정보 저장 유닛(603)에 의해서 관리되는 데이터의 예를 도시한다.
Figure 112017104803323-pat00002
표 2에서, "ID" 열은, 파일 정보 관리 애플리케이션(600)이 파일 정보 관리 서버(103) 내에 저장된 파일 속성 정보를 특이적으로 식별하기 위해서 이용하는 값을 유지하는 열이다. "파일 서버 ID" 열은, 속성 정보가 추출된 실제 파일에 상응하는 파일 관리 표(표 1)의 "ID" 열로부터의 값을 유지하는 열이다. "속성" 열은 실제 파일로부터 추출된 속성 정보를 유지하는 열이다. 애플리케이션의 목적에 따라서, 여러 유형의 정보가 "속성" 열 내에서 유지되는 구체적인 값의 예로서 주어질 수 있다. 예를 들어, 파일로부터 추출된 전체 텍스트를 탐색하기 위한 색인 텍스트 데이터가 예로서 주어질 수 있다. 그러나, 추출된 속성 정보의 값은 이러한 실시예에서 특히 제한되지 않는다.
● 이벤트 정보 관리 서버 소프트웨어
도 7은 이러한 실시예에 따른 이벤트 정보 관리 서버(104) 상에서 실행되는 각각의 애플리케이션의 소프트웨어 구성의 예를 도시한 블록도이다. 이벤트 정보 관리 서버(104)에서, 비동기 처리 코드 관리 애플리케이션(700), 비동기 처리 코드 실행 관리 애플리케이션(710), 비동기 처리 코드 실행 환경(720)이 저장 디바이스(303) 내에 저장되고 CPU(301)에 의해서 실행된다. 비동기 처리 코드 관리 애플리케이션(700)은 이벤트 정보 관리 서버(104)에 의해서 실행된 비동기 처리 코드를 저장하고 비동기 처리 코드의 실행 설정을 관리한다. 비동기 처리 코드 관리 애플리케이션(700)은 통신 유닛(701), 비동기 처리 코드 관리 유닛(702), 비동기 처리 코드 저장 유닛(703), 및 비동기 처리 코드 설정 저장 유닛(704)으로 구성된다. 통신 유닛(701)은 네트워크 디바이스(304)를 통해서 클라이언트 장치(101), 파일 서버(102), 파일 정보 관리 서버(103), 및 비동기 처리 코드 실행 관리 애플리케이션(710)과 통신한다. 비동기 처리 코드 관리 유닛(702)은 통신 유닛(701)을 통해서 클라이언트 장치(101)로부터 비동기 처리 코드 등록 요청을 수신한다. 비동기 처리 코드 관리 유닛(702)은 또한 비동기 처리 코드 실행 관리 애플리케이션(710)으로부터 비동기 처리 코드 요청을 수신한다. 비동기 처리 코드 저장 유닛(703)은 비동기 처리 코드 관리 유닛(702)으로부터의 지시에 따라 클라이언트 장치(101)로부터 수신된 비동기 처리 코드를 저장한다. 부가적으로, 비동기 처리 코드 저장 유닛(703)은, 비동기 처리 코드 관리 유닛(702)으로부터의 지시에 따라서, 비동기 처리 코드를 비동기 처리 코드 실행 관리 애플리케이션(710)에 송신한다. 이하의 비동기 처리 코드 관리 표(표 3)는 비동기 처리 코드를 관리하기 위한 비동기 처리 코드 저장 유닛(703)을 위한 데이터의 예를 도시한다.
Figure 112017104803323-pat00003
표 3에서, "ID" 열은 비동기 처리 코드 관리 애플리케이션(700)에 의해서 저장된 비동기 처리 코드를 특이적으로 식별하는 값을 유지하는 열이다. "파일명" 열은 비동기 처리 코드 관리 애플리케이션(700)에 의해서 저장된 비동기 처리 코드의 파일명에 관한 값을 유지하는 열이다. "파일 데이터" 열은 비동기 처리 코드 관리 애플리케이션(700)에 의해서 저장된 비동기 처리 코드의 2진 데이터를 유지하는 열이다.
비동기 처리 코드 설정 저장 유닛(704)은 비동기 처리 코드 관리 유닛(702)으로부터의 지시에 따라 실제 비동기 처리 코드와 관련하여 클라이언트 장치(101)로부터 수신된 비동기 처리 코드의 실행 설정을 저장한다. 부가적으로, 비동기 처리 코드 설정 저장 유닛(704)은, 비동기 처리 코드 관리 유닛(702)으로부터의 지시에 따라서, 비동기 처리 코드와 함께 비동기 처리 코드의 실행 설정을 비동기 처리 코드 실행 관리 애플리케이션(710)에 송신한다. 이하의 실행 환경 설정 표(표 4) 및 이벤트 설정 표(표 5)는 비동기 처리 코드 실행 설정을 위해서 비동기 처리 코드 설정 저장 유닛(704)에 의해서 관리되는 데이터의 예를 보여준다.
Figure 112017104803323-pat00004
표 4에서, "ID" 열은, 비동기 처리 코드 관리 애플리케이션(700)이 비동기 처리 코드를 실행하기 위한 가상 머신 환경의 설정을 특이적으로 식별하기 위해서 이용하는 값을 유지하는 열이다. "실행 환경 유형" 열은, 비동기 처리 코드를 실행하기 위한 가상 머신 환경의 특성을 나타내는 명칭을 유지하는 열이다. "CPU" 열은, 비동기 처리 코드를 실행하기 위한 가상 머신 환경에서 CPU의 값을 유지하는 열이다. "RAM" 열은, 비동기 처리 코드를 실행하기 위한 가상 머신 환경에서 RAM의 값을 유지하는 열이다. "HDD" 열은, 비동기 처리 코드를 실행하기 위한 가상 머신 환경에서 HDD의 크기를 유지하는 열이다.
Figure 112017104803323-pat00005
표 5에서, "ID" 열은, 비동기 처리 코드 관리 애플리케이션(700)이 비동기 처리 코드를 실행하기 위한 이벤트를 특이적으로 식별하기 위해서 이용하는 값을 유지하는 열이다. "대상 파일 경로" 열은 비동기 처리 코드를 실행하기 위한 대상 파일 경로를 유지하는 열이다. "대상 이벤트 열"은 비동기 처리 코드를 실행하기 위한 조건으로서의 역할을 하는, "대상 파일 경로" 열 내에서 유지되는 파일 경로에 상응하는 파일에서 실행되는, 작용에 관한 상세 내용을 유지하는 열이다. "비동기 처리 코드 ID" 열은 실행하고자 하는 비동기 처리 코드에 상응하는 비동기 처리 코드 관리 표 내의 "ID" 열의 값을 유지하는 열이다. "실행 환경 ID" 열은 비동기 처리 코드를 실행하기 위한 환경에 상응하는 실행 환경 설정 표 내의 "ID" 열의 값을 유지하는 열이다.
예를 들어, 이벤트 설정 표의 "ID" 열 내의 값의 기록이 1이고 파일이 "로그데이터/클라이언트1" 아래의 폴더에 "부가"되었을 때, 이는, 비동기 처리 코드 관리 표(표 3)를 기초로, 1의 비동기 처리 코드 ID를 가지는 "asyncproc1.zip" 내의 비동기 처리 코드가, 실행 환경 설정 표(표 4)를 기초로, 1의 실행 환경 ID, 또는 다시 말해서, 2 GHz CPU, 4 GB의 RAM, 및 1 GB HDD를 가지는 가상 머신 환경을 가지는 환경에서 실행된다는 것을 나타낸다.
비동기 처리 코드 실행 관리 애플리케이션(710)은, 비동기 처리 코드 관리 애플리케이션(700)으로부터, 파일 서버(102)로부터 수신된 이벤트 및 그 실행 설정을 기초로 비동기 처리 코드를 획득하고, 그러한 비동기 처리 코드를 실행하기 위한 비동기 처리 코드 실행 환경(720)을 생성한다. 비동기 처리 코드 실행 관리 애플리케이션(710)은 통신 유닛(711), 비동기 처리 코드 실행 관리 유닛(712), 비동기 처리 코드 실행 유닛(713), 및 비동기 처리 코드 실행 환경 관리 유닛(714)으로 구성된다. 통신 유닛(711)은 네트워크 디바이스(304)를 통해서 파일 서버(102), 파일 정보 관리 서버(103), 비동기 처리 코드 관리 애플리케이션(700), 및 비동기 처리 코드 실행 환경(720)과 통신한다. 비동기 처리 코드 실행 관리 유닛(712)은 통신 유닛(711)을 통해서 파일 서버(102)로부터 이벤트를, 그리고 비동기 처리 코드 관리 애플리케이션(700)으로부터 비동기 처리 코드 및 실행 설정을 수신한다. 비동기 처리 코드 실행 유닛(713)은 비동기 처리 코드 실행 관리 유닛(712)으로부터의 지시에 따라서 파일 서버(102)로부터 수신된 이벤트에 상응하는 비동기 처리 코드 및 실행 설정을 수신한다. 비동기 처리 코드 실행 유닛(713)은 비동기 처리 코드 실행 환경(720)을 생성하고, 파일 서버(102)로부터 수신된 실행 설정을 기초로 이벤트에 상응하는 비동기 처리 코드의 실행을 지시한다. 비동기 처리 코드 실행 환경 관리 유닛(714)은 비동기 처리 코드 실행 환경(720)에서 실행되는 비동기 처리 코드의 실행의 상황을 관리한다. 이하의 실행 환경 감시 항목 표(표 6)는, 비동기 처리 코드 실행 환경 관리 유닛(714)에 의해서 관리되는, 비동기 처리 코드 실행 환경(720)의 실행 조건의 예를 보여준다.
Figure 112017104803323-pat00006
표 6에서, "ID" 열은 비동기 처리 코드 실행 관리 애플리케이션(710) 내의 비동기 처리 코드 실행 환경(720)의 실행 상황을 관리하는 항목을 특이적으로 식별하는 값을 유지하는 열이다. "감시 항목" 열은 비동기 처리 코드 실행 환경(720)에 의해서 실행되는 비동기 처리 코드의 실행의 상황을 감시하기 위한 항목을 유지하는 열이다. "감시 항목 값" 열은 "감시 항목" 열에서 유지되는 항목과 관련된 문턱값을 유지하는 열이다. 예를 들어, 실행 환경 감시 항목 표의 "ID" 열 내의 값이 1인 기록은, 비동기 처리 코드 실행 환경(720)에 의해서 실행되는 비동기 처리 코드에 의해서 5번의 재시도까지 허용된다는 것을 의미한다. 비동기 처리 코드가 미리 결정된 5번의 재시도 수를 초과한 후에도 이벤트 처리를 성공적으로 완료할 수 없는 경우에, 초과된 재시도 수에 응답하여 오류가 발생되고, 비동기 처리 코드 실행 관리 애플리케이션(710)은 비동기 처리 코드의 실행을 중단시킨다. 부가적으로, 실행 환경 감시 항목 표의 "ID" 열 내의 값이 2인 기록은, 이벤트 처리를 위해서 비동기 처리 코드 실행 환경(720)에 의해서 실행되는 비동기 처리 코드가 필요로 하는 시간이 300 초로 제한된다는 것을 의미한다. 만약, 비동기 처리 코드가 처리를 완료하였다는 통지가 300 초 이내에 비동기 처리 코드 실행 관리 애플리케이션(710)에 송신되지 않는다면, 비동기 처리 코드 실행 관리 애플리케이션(710)은 비동기 처리 코드 종료 지시를 비동기 처리 코드 실행 환경(720)에 송신하고 처리를 중단시킨다. 그에 따라, 이벤트 구동형 컴퓨팅 서비스에 대한 다양한 제한이 실행 환경 감시 항목 표에서 규정될 수 있다.
비동기 처리 코드 실행 환경(720)은, 이벤트를 처리하기 위해서, 파일 서버(102)에 의해서 비동기 처리 코드 실행 관리 애플리케이션(710)에 송신된 이벤트에 상응하는 비동기 처리 코드를 실행하기 위한 가상 머신 환경이다. 비동기 처리 코드 실행 환경(720)은 클라우드 컴퓨팅 서비스로서 제공된다. 도 3에 도시된 하드웨어 요소는 가상 머신 소프트웨어에 의해서 애플리케이션 소프트웨어로서 구현되고, 같은 방식으로 물리적 하드웨어 요소로서 거동한다. 비동기 처리 코드 실행 환경(720)은 통신 유닛(721) 및 실행 유닛(722)으로 구성된다.
통신 유닛(721)은 네트워크 디바이스(304)를 통해서 파일 서버(102), 파일 정보 관리 서버(103), 비동기 처리 코드 관리 애플리케이션(700), 및 비동기 처리 코드 실행 환경(720)과 통신한다. 실행 유닛(722)은 통신 유닛(721)을 통해서 파일 서버(102) 내에서 발생되는 이벤트를 처리하기 위해서 비동기 처리 코드 관리 애플리케이션(700)으로부터 수신되고 비동기 처리 코드 실행 관리 애플리케이션(710)으로부터 수신된 비동기 처리 코드를 실행한다. 실행 유닛(722)은 연속적인 실행 감시 요청을 비동기 처리 코드 실행 환경 관리 유닛(714)으로부터 수신하고, 실행되는 비동기 처리 코드와 관련된 감시 요청을 비동기 처리 코드 실행 관리 애플리케이션(710)으로부터 수신하며, 비동기 처리 코드의 실행을 제어한다.
● 비동기 처리 코드의 등록
도 8, 도 9a 및 도 9b는 파일 서버(102) 내에서 발생되는 이벤트를 실제로 처리하기 위해서 도 7을 참조하여 설명된 바와 같은 이벤트 정보 관리 서버(104) 내의 비동기 처리 코드의 등록 및 관리로부터의 흐름을 도시한 순서도이다.
도 8은, 이러한 실시예에 따라, 클라이언트 장치(101)가 비동기 처리 코드를 비동기 처리 코드 관리 애플리케이션(700)에 등록하기 위해서 이용하는 일련의 처리를 도시한 순서도이다. 단계(S801)에서, 클라이언트 장치(101)는 통신 유닛(401)을 통해서 비동기 처리 코드 등록 요청을 비동기 처리 코드 관리 애플리케이션(700)에 송신한다. 이하의 비동기 처리 코드 등록 요청 기록(표 7)은 비동기 처리 코드 등록 요청으로서 비동기 처리 코드 관리 애플리케이션(700)에 송신된 기록의 예를 보여준다.
Figure 112017104803323-pat00007
"비동기 처리 코드" 열은 실제 비동기 처리 코드를 2진 데이터로 유지하는 열이다. "비동기 처리 코드 파일명" 열은 비동기 처리 코드의 파일명을 유지하는 열이다. "실행 대상 파일 경로" 열은 비동기 처리 코드를 실행하기 위해서 파일 서버(102) 내에서 파일 경로를 유지하는 열이다. 비동기 처리 코드 실행 관리 애플리케이션(710)은 파일 서버(102)로부터 수신된 이벤트 내에 포함된 파일 경로를 지칭하고, 해당 경로가 이러한 열 내에서 유지되는 경로와 합치되는 경우에, 그 이벤트가 비동기 처리 코드가 실행되기 위한 이벤트라는 것을 결정한다. "실행 대상 이벤트" 열은, 파일 서버(102) 내의 실행 대상 파일 경로 내에서 유지되는 파일에 대해서 비동기 처리 코드가 실행되는 작용을 유지하는 열이다. "실행 환경 ID" 열은 비동기 처리 코드를 실행하기 위한 환경에 상응하는 실행 환경 설정 표 내의 "ID" 열의 값을 유지하는 열이다. 예를 들어, 표 7에 기재된 비동기 처리 코드 등록 요청 기록은, 파일이 파일 서버(102) 내의 로그데이터/클라이언트1 아래의 폴더에 부가된 경우에, 실행되는 비동기 처리 코드를 등록하기 위한 요청을 의미한다.
단계(S802)에서, 비동기 처리 코드 실행 관리 애플리케이션(710)은 통신 유닛(701)에 의해서 수신된 비동기 처리 코드 등록 요청 기록으로부터 비동기 처리 코드 관리 기록을 생성하고, 그러한 기록을 비동기 처리 코드 저장 유닛(703) 내의 비동기 처리 코드 관리 표에 저장한다. 비동기 처리 코드 등록 요청 기록 내의 "비동기 처리 코드 파일명" 열의 값은 비동기 처리 코드 관리 기록의 "파일명" 열 내에서 유지된다. 비동기 처리 코드 등록 요청 기록 내의 "비동기 처리 코드" 열 내의 2진 데이터는 비동기 처리 코드 관리 기록의 "파일 데이터" 열 내에서 유지된다.
단계(S803)에서, 비동기 처리 코드 실행 관리 애플리케이션(710)은 이벤트 설정 기록을 생성하고 그 기록을 비동기 처리 코드 설정 저장 유닛(704)에서 이벤트 설정 표(예를 들어, 표 5) 내에 저장한다. 비동기 처리 코드 등록 요청 기록의 실행 "대상 파일 경로" 열의 값은 이벤트 설정 기록의 "대상 파일 경로" 열 내에서 유지된다. 비동기 처리 코드 등록 요청 기록의 "실행 대상 이벤트" 열의 값은 이벤트 설정 기록의 "대상 이벤트" 열 내에서 유지된다. 단계(S802)에서 비동기 처리 코드 저장 유닛(703)의 비동기 처리 코드 관리 표 내에서 유지되는, 비동기 처리 코드 관리 기록의 "ID" 열 내의 값은 이벤트 설정 기록의 "비동기 처리 코드 ID" 내에서 유지된다. 비동기 처리 코드 등록 요청 기록의 "실행 환경 ID" 열의 값은 이벤트 설정 기록의 "실행 환경 ID" 열 내에서 유지된다. 비동기 처리 코드는 이러한 일련의 처리의 결과로서 비동기 처리 코드 실행 관리 애플리케이션(710) 내에 등록된다.
● 비동기 처리 코드의 실행
도 9a 및 도 9b는, 이러한 실시예에 따라, 비동기 처리 코드가 기동되고 완료되는 일련의 처리를 도시한 순서도이다. 이와 함께, 도 9a 및 도 9b는 단일 시퀀스를 도시한다. 도 9a 및 도 9b를 참조하여 설명한 비동기 처리 코드는 이벤트로서 파일 서버(102) 내에 파일을 새롭게 등록하는 클라이언트 장치(101)를 이용하여 기동되는 것으로 가정되며, 그러한 코드는 새롭게-등록된 파일의 속성 정보를 추출하고 파일 서버(102)의 파일 관리 유닛(502) 내에 그러한 정보를 등록하기 위한 처리를 실행한다. 물론, 이벤트 및 이벤트 구동형 컴퓨팅 서비스의 예만이 있으나, 그 대신에, 다른 이벤트가 트리거로서 사용될 수 있고, 다른 처리가 서비스로서 이용될 수 있을 것이다.
단계(S901)에서, 클라이언트 장치(101)는, 통신 유닛(401)을 통해서, 정보 수집 유닛(402)에 의해서 출력된 로그 정보를 파일로서 등록하기 위한 파일 업로드 요청을 파일 서버(102)에 송신한다. 이하의 파일 업로드 요청 기록(표 8)은 파일 업로드 요청으로서 파일 서버(102)에 송신된 기록의 예를 보여준다.
Figure 112017104803323-pat00008
표 8에서, "파일 데이터" 열은 피송신 파일의 2진 데이터를 유지하는 열이다. "파일명" 열은 피송신 파일의 명칭을 유지하는 열이다. "업로드 목표 폴더" 열은, 파일이 업로드되는 파일 서버(102) 내에서 폴더의 경로를 유지하는 열이다.
단계(S902)에서, 파일 서버(102)는 통신 유닛(501)에 의해서 수신된 파일 업로드 요청 내에 포함된 데이터를 파일 저장 유닛(503)의 파일 관리 표에 부가한다. 파일 서버(102)가 파일 저장 유닛(503)에 데이터를 부가하는 것을 마무리하면, 파일 서버(102)는 통신 유닛(501)을 통해서 클라이언트 장치(101)에 응답을 송신하여, 파일 업로드가 완료되었다는 것을 나타낸다.
단계(S903)에서, 파일 서버(102)는 파일 업로드가 완료되었다는 것을 나타내는 이벤트를 생성하고, 그러한 이벤트를 통신 유닛(501)을 통해서 비동기 처리 코드 실행 관리 애플리케이션(710)에 통지한다. 이하의 파일 업로드 완료 이벤트(표 9)는 파일 업로드 완료 이벤트로서 비동기 처리 코드 실행 관리 애플리케이션(710)에 송신된 기록의 예를 보여준다.
Figure 112017104803323-pat00009
표 9 내의 "파일 경로" 열은 이벤트를 생성하기 위한 트리거로서의 역할을 하는 파일의 파일 경로를 파일 서버(102) 내에서 유지하는 열이다. "이벤트 유형" 열은 "파일 경로" 열 내에서 유지되는 파일 경로 내에 저장된, 파일 서버(102) 내의, 파일에서 실행되는 동작의 상세 내용을 유지하는 열이다. 단계(S901)에서, 파일은 클라이언트 장치(101)로부터 파일 서버(102)에 새롭게 업로드되었고, 그에 따라 "부가"의 값이 여기에서 입력된다.
단계(S904)에서, 비동기 처리 코드 실행 관리 애플리케이션(710)은 통신 유닛(711)을 통해서 수신된 파일 업로드 완료 이벤트에 관한 상세 내용을 확인하기 위해서 비동기 처리 코드 실행 관리 유닛(712)을 이용한다. 첫 번째로, 비동기 처리 코드 실행 관리 유닛(712)은, 파일명을 제외하고, 폴더 경로를, "이벤트 유형" 열 내의 값과 함께, 파일 업로드 완료 이벤트의 "파일 경로" 열 내의 값으로부터 획득한다. 다음에, 통신 유닛(711)을 통해서, 비동기 처리 코드 실행 관리 유닛(712)은 비동기 처리 코드 관리 애플리케이션(700)의 비동기 처리 코드 설정 저장 유닛(704) 내의 이벤트 설정 표를 참조하고, "대상 파일 경로" 열 내의 값과 "대상 이벤트" 열 내의 값의 조합이 폴더 경로와 "이벤트 유형" 열 내의 값의 조합과 합치되는 기록을 탐색하며, 그러한 기록이 존재하는 경우에, 그러한 기록을 획득한다. 만약 그러한 기록이 존재하지 않는다면, 트리거로서 통지된 이벤트를 취하는 비동기 처리가 설정되지 않은 것으로 결정할 수 있다. 이러한 경우에, 시퀀스는 단계(S904)에서 종료될 수 있다.
그러나, 만약 기록이 존재한다면, 단계(S905)에서, 비동기 처리 코드 실행 관리 유닛(712)은, 단계(S904)에서 획득된 이벤트 설정 기록을 기초로, 비동기 처리 코드 관리 애플리케이션(700)으로부터, 단계(S904)에서 수신된 이벤트에 상응하는 비동기 처리 코드를 획득한다. 비동기 처리 코드 실행 관리 유닛(712)은 비동기 처리 코드 저장 유닛(703)의 비동기 처리 코드 관리 표로부터 이벤트 설정 기록의 "비동기 처리 코드 ID" 내의 값과 합치되는 기록을 탐색하고, "파일 데이터" 열 내에서 유지되는 비동기 처리 코드의 2진 데이터를 획득한다.
단계(S906)에서, 비동기 처리 코드 실행 관리 유닛(712)은, 비동기 처리 코드 관리 애플리케이션(700)으로부터, 단계(S905)에서 획득된 비동기 처리 코드를 실행하기 위한 설정을 획득한다. 비동기 처리 코드 실행 관리 유닛(712)은 비동기 처리 코드 저장 유닛(703) 내의 실행 환경 설정 표(표 4)로부터 이벤트 설정 기록 내의 "실행 환경 ID" 열의 값과 합치되는 기록을 탐색하고, 기록을 획득한다.
단계(S907)에서, 비동기 처리 코드 실행 관리 유닛(712)은 단계(S906)에서 획득된 실행 환경 설정 기록을 기초로 하는 성능을 가지는 비동기 처리 코드 실행 환경(720)의 가상 머신을 생성하고 기동한다.
단계(S908)에서, 비동기 처리 코드 실행 관리 유닛(712)은 통신 유닛(711)을 통해서 단계(S905)에서 획득된 비동기 처리 코드를 비동기 처리 코드 실행 환경(720)의 저장 디바이스(303)에 배치한다.
단계(S909)에서, 비동기 처리 코드 실행 유닛(713)은 통신 유닛(711)을 통해서 비동기 처리 코드 실행 요청을 비동기 처리 코드 실행 환경(720)의 실행 유닛(722)에 송신한다. 비동기 처리 코드 실행 요청을 수신할 때, 실행 유닛(722)은 단계(S908)에서 수신된 비동기 처리 코드를 RAM(302) 내로 로딩하고, 비동기 처리 코드의 실행을 기동한다. 이하의 비동기 처리 코드 실행 요청 기록(표 10)은 실행 유닛(722)에 송신된 비동기 처리 코드 실행 요청의 예를 보여준다.
Figure 112017104803323-pat00010
표 10에서, "파일 경로" 열은 비동기 처리 코드를 가지는 피처리 파일의 파일 서버(102) 내에서 경로를 유지하는 열이다. 단계(S904)에서 수신된 파일 업로드 완료 이벤트 기록 내의 "파일 경로" 열의 값이 여기에서 유지된다. "이벤트 설정 ID" 열은 비동기 처리 코드 실행 관리 애플리케이션(710)에 의해서 단계(S904)에서 획득된 이벤트 설정 기록의 "ID" 열 내에서 값을 유지하는 열이다.
실행 유닛(722)은 실행되는 비동기 처리 코드의 실행의 상황을 관리한다. 이하의 표 11은 실행 유닛(722)에 의해서 관리되는 실행 상황 기록의 예를 보여준다.
Figure 112017104803323-pat00011
표 11에서, "상태" 열은 실행 유닛(722)에 의해서 실행되는 비동기 처리 코드의 실행 상황의 값을 유지하는 열이다. 상태로서 가능한 값의 수가 비동기 처리 코드에 의해서 실시되는 처리의 상세 내용에 따라서 증가/감소될 것임을 이해할 수 있을 것이다. 이러한 실시예에서, 값은, 비동기 처리 코드가 기동될 때로부터 비동기 처리 코드가 종료될 때 까지의 시간 동안 "실행"된다. 만약 처리가 정상적으로 종료되었다면, 값은 "OK"가 되는 반면, 처리가 오류로 종료되었다면, 값은 "오류"가 된다. "실행 수" 열은, 실행 유닛(722)이 파일 서버(102) 내에서 발생된 이벤트에 대한 비동기 처리 코드를 실행한 횟수를 유지하는 열이다. 코드가 실행된 횟수는, 예를 들어, 재시도 수를 지칭한다. "경과 시간" 열은, 예를 들어, 실행 유닛(722)이 비동기 처리 코드의 실행을 시작하였을 때로부터의, 초 단위의, 경과 시간의 양을 유지하는 열이다. "경과 시간" 열 내의 값은, "상태" 열 내의 값이 "실행"되는 동안 증가되고, 그러한 증가는 "상태" 열 내의 값이 "OK" 또는 "오류"가 될 때 중단된다. "경과 시간" 열 내의 값은, "상태" 열 내의 값이 하나를 "실행"으로 다시 변화시킬 때, 0으로 리셋된다.
단계(S910)에서, 비동기 처리 코드 실행 환경 관리 유닛(714)은 단계(S909)에서 기동된 비동기 처리의 실행 상황을 확인하는 감시 처리를 실행한다.
도 10은 단계(S910)에서 비동기 처리 코드 실행 환경 관리 유닛(714)에 의해서 실행되는 감시 처리를 구체적으로 도시하는 흐름도이다. 이러한 처리는 단계(S909)에서 기동된 비동기 처리와 병렬로 실행되고, 비동기 처리가 종료될 때까지 또는 비동기 처리 코드 실행 환경 관리 유닛(714)의 실행 환경 감시 항목 표(예를 들어, 표 6)에 등록된 감시 항목이 초과될 때까지, 비동기 처리 코드 실행 환경 관리 유닛(714)에 의해서 실행된다.
단계(S1001)에서, 비동기 처리 코드 실행 환경 관리 유닛(714)은 실행 환경 감시 항목 표로부터 실행 환경 감시 항목 기록을 획득한다.
단계(S1002)에서, 비동기 처리 코드 실행 환경 관리 유닛(714)은 비동기 처리 코드 실행 환경(720)의 실행 상황 기록을 획득한다.
단계(S1003)에서, 비동기 처리 코드 실행 환경 관리 유닛(714)은 단계(S1002)에서 획득된 실행 상황 기록의 "경과 시간" 열 내의 값을 기록 내의 "감시 항목 값" 열의 값과 비교하고, 단계(S1001)에서 획득된 실행 환경 감시 항목 기록의 "감시 항목" 열 내의 값은 "실행 시간"이다. "경과 시간" 열 내의 값이 "감시 항목 값" 열 내의 값 보다 작은 경우에, 처리는 단계(S1002)로 복귀되고 감시가 계속된다. "경과 시간" 열 내의 값이 "감시 항목 값" 열 내의 값 보다 큰 경우에, 처리는 단계(S1004)로 진행된다.
단계(S1004)에서, 비동기 처리 코드 실행 환경 관리 유닛(714)은 비동기 처리 코드 실행 환경(720)에 의해서 실행되는 처리를 중단시킨다.
단계(S1005)에서, 비동기 처리 코드 실행 환경 관리 유닛(714)은 단계(S1002)에서 획득된 실행 상황 기록의 "실행 수" 열 내의 값을 기록 내의 "감시 항목 값" 열의 값과 비교하고, 단계(S1001)에서 획득된 실행 환경 감시 항목 기록의 "감시 항목" 열 내의 값은 "재시도 수"이다. "실행 수" 열 내의 값이 "감시 항목 값" 열 내의 값 보다 작은 경우에, 처리는 단계(S1006)로 진행된다. "실행 수" 열 내의 값이 "감시 항목 값" 열 내의 값과 합치되는 경우에, 감시 처리가 종료된다.
단계(S1006)에서, 비동기 처리 코드 실행 환경 관리 유닛(714)은 비동기 처리 코드 실행 환경(720)의 실행 상황 기록의 "실행 수" 열 내의 값에 1을 부가한다.
단계(S1007)에서, 비동기 처리 코드 실행 환경 관리 유닛(714)은 비동기 처리 코드를 재-실행한다.
이러한 일련의 처리를 통해서, 비동기 처리 코드 실행 관리 애플리케이션(710)에 의해서 설정된 제한 값을 초과하지 않고 실행되도록, 비동기 처리 코드 실행 환경(720) 내의 비동기 처리 코드가 감시된다. 단계(S1005)에서 재시도 수가 제한 값에 도달하였다는 것이 결정되는 경우에, 어떠한 추가적인 재시도도 없이 해당 시간에 처리 시퀀스가 종료된다. 만약, 이러한 단계에서가 아니라, 도 9a 및 도 9b에 도시된 시퀀스가 비동기 처리 코드의 실행이 없이 또는 비동기 처리 코드가 중단되어 종료된다면, 그러한 정보는 실행 로그 내에 기록될 수 있다. 또한, 비록 단계(S911 및 S912)가 도 9b에서 단계(S910) 이후에 실행되는 것으로 표시되었지만, 이는 단지 도면을 보다 용이하게 이해할 수 있게 하기 위한 것임을 주목하여야 할 것이다. 단계(S911) 및 단계(S912)는 비동기 처리 코드를 실행하는 것에 의해서 실시되는 단계이고, 비동기 처리 코드의 상세 내용을 기초로 처리를 실시한다. 단계(S910)에서 실행되는 감시는 비동기 처리 코드의 실행 중에, 예를 들어 주기적으로, 반복된다.
단계(S911)에서, 실행 유닛(722)은, 파일 서버(102)로부터, 단계(S909)에서 수신된 비동기 처리 코드 실행 요청 기록 내의 파일 경로에 상응하는 파일을 획득한다.
단계(S912)에서, 실행 유닛(722)은 단계(S911)에서 획득된 파일로부터 속성 정보를 추출하고, 파일 속성 정보 기록을 생성하며, 기록을 파일 서버(102)의 파일 정보 저장 유닛(603) 내의 파일 정보 관리 표 내에 등록한다. 비동기 처리 코드가 정상적으로 종료될 때, 실행 유닛(722)은 코드 종료의 통지를 비동기 처리 코드 실행 관리 유닛(712)에 송신한다.
비동기 처리 코드의 실행이 종료될 때, 단계(S913)에서, 비동기 처리 코드 실행 관리 유닛(712)은 비동기 처리 코드 실행 환경(720)의 가상 머신을 차단하고 폐기한다.
● 비동기 처리 코드 상의 제한에 의해서 유발되는 실패 방지
도 8, 도 9a, 도 9b, 및 도 10에 도시된 일련의 처리로 인해서 파일 서버(102) 내에서 이벤트가 발생될 때마다, 이벤트에 상응하는 비동기 처리 코드가 이벤트 정보 관리 서버(104) 내에서 적절하게 실행된다. 그러나, 이벤트의 상세 내용에 따라서, 비동기 처리 코드 실행 관리 애플리케이션(710)에 의해서 설정된 실행 환경 감시 항목의 제한 내의 처리 종료가 없이, 비동기 처리 코드의 처리가 중단되는 경우가 있다. 예를 들어, 이러한 실시예에서, 클라이언트 장치(101)에 의해서 파일 서버(102)에 업로드된 파일이 크고, 해당 파일에 따라 실행되는 비동기 처리 코드에 대한 실행 환경으로서 할당된 CPU, RAM, 및 HDD의 성능이 적합하지 않은 경우가 있다. 이러한 경우에, 비동기 처리 코드 실행 관리 애플리케이션(710)이 비동기 처리 코드를 실행하는 경우에도, 실행 시간은 단계(S1003)에서 초과될 것이고, 처리의 중단을 초래하는, 제한 값에 도달될 때까지, 단계(S1007)에서의 비동기 처리의 재기동이 반복될 것이다.
● 실시예에서의 비동기 처리 코드
도 11은, 파일 서버(102)로부터 발생되는 이벤트의 상세 내용에 상응하는 비동기 처리 코드의 실행 환경이 이벤트에 따라 동적으로 변화될 수 있게 하고, 그에 따라, 실행 환경의 성능이 크기 초과된 경우에, 처리가 계속될 수 있게 하는 비동기 처리 코드의 처리 시퀀스를 도시한 흐름도이다. 도 12는 도 11에 도시된 흐름도의 흐름으로 실행되는 비동기 처리 코드의 의사-코드를 도시한 도면이다. 도 11에 도시된 비동기 처리 코드는 실행 유닛(722)에 의해서 실행된다. 하드웨어 구성과 관련하여, 예를 들어, 코드는 실행 유닛(722)을 실현하는 CPU(301)에 의해서 실행된다.
단계(S1101)에서, 비동기 처리 코드는 해당 코드 자체 내에 설정된 실행 허용 시간의 값을 획득한다. 실행 허용 시간은 또한 실행 시간에 대한 상한으로 지칭될 수 있다. 단계(S909)에서 비동기 처리 코드 실행 관리 애플리케이션(710)으로부터 획득된 비동기 처리 코드 실행 요청 기록이 또한 이때 획득된다. 이러한 처리는 의사-코드 블록(1201)에 상응한다.
단계(S1102)에서, 비동기 처리 코드는 해당 코드 처리의 기동 시간을 측정하는 타이머를 실행시킨다. 이러한 처리는 의사-코드 블록(1202)에 상응한다.
단계(S1103)에서, 비동기 처리 코드는 해당 코드의 처리를 기동한다. 이러한 실시예에서, 파일 서버(102)로부터 수신된 파일 업로드 완료 이벤트의 "파일 경로" 열 내의 값에 의해서 표시된 경로 내의 파일이 획득되고, 파일에 대한 속성 정보가 생성되고, 속성 정보는 파일 정보 관리 표 내에 등록된다. 이러한 처리는 의사-코드 블록(1203)에 상응한다.
단계(S1104)에서, 비동기 처리 코드는 해당 코드 처리의 실행 경과 시간을 감시하고, 해당 시간의 값이 단계(S1101)에서 획득된 실행 허용 시간을 초과하는지의 여부를 확인한다. 실행 허용 시간이 초과되지 않은 경우에, 처리가 계속된다. 실행 허용 시간이 초과되었다는 것을 실행 시간 감시 결과가 나타내는 경우에, 처리가 단계(S1105)로 진행된다. 이러한 처리는 의사-코드 블록(1204)에 상응한다. 단계(S1104)에서, 예를 들어, 단계(S1102)에서 설정된 타이머가 만료될 때 경과 시간이 허용 시간을 초과하였다는 것이 결정될 수 있다. 대안적으로, 결정은, 단계(S1103)가 실행되는 동안에 다른 타이머 또는 기타를 이용하여 주기적으로 실행될 수 있다. 전자의 경우에, 타이머 만료에 응답하여 기동된 다른 시퀀스가, 예를 들어, 단계(S1105)로부터 실행될 수 있다.
단계(S1105)에서, 비동기 처리 코드는 단계(S1103)에서 기동된 처리를 중단시킨다.
단계(S1106)에서, 비동기 처리 코드는, 비동기 처리 코드 설정 저장 유닛(704)의 이벤트 설정 표로부터, 실행 유닛(722)을 통해서, 단계(S1101)에서 획득된 비동기 처리 코드 실행 요청 기록의 "이벤트 설정 ID" 열 내의 값과 합치되는 값을 가지는 이벤트 설정 기록을 획득한다. "비동기 처리 코드 ID" 열의 값과 "실행 환경 ID" 열의 값은 획득된 이벤트 설정 기록으로부터 획득된다. 이어서, 새로운, 더 높은-레벨의 실행 환경에서 비동기 처리 코드를 실행하기 위한 더 높은-레벨의 실행 환경 기동 요청이 생성되고 비동기 처리 코드 실행 관리 애플리케이션(710)에 송신된다. 이러한 처리는 의사-코드 블록(1206)에 상응한다. 표(12)는 더 높은-레벨의 실행 환경 기동 요청의 예를 도시한다.
Figure 112017104803323-pat00012
표 12에서, "비동기 처리 코드 ID" 열은, 새로운, 더 높은-레벨의 실행 환경에서 유사한 비동기 처리 코드를 실행하기 위해서 도 11에 도시된 바와 같이 실행되는 비동기 처리 코드의 ID를 유지하는 열이다. 구체적으로, 이러한 열은 단계(S1106)에서 획득된 이벤트 설정 기록의 "비동기 처리 코드 ID" 열의 값을 유지한다. "더 높은-레벨의 실행 환경 ID" 열은 비동기 처리 코드를 새롭게 실행하기 위한 환경의 환경 ID를 유지하는 열이다. 구체적으로, 이러한 열은 단계(S1106)에서 획득된 이벤트 설정 기록의 "환경 ID" 열 내의 값을 1 만큼 증가시키는 것에 의해서 획득된 값(즉, 1 만큼 값을 증가시키는 것에 의해서 획득된 값)을 유지한다. "파일 경로" 열은 새로운, 더 높은-레벨의 실행 환경에서 실행되는 비동기 처리 코드에 대한 파일 경로를 유지하는 열이다. 구체적으로, 이러한 열은 단계(S1106)에서 획득된 이벤트 설정 기록의 "파일 경로" 열의 값을 유지한다. 이러한 예에서, 실행 환경 설정 표(표 4)가, 예를 들어, 1로부터 시작하는 ID(환경 ID) 값을 가지는 복수의 실행 환경 설정 기록을 포함하는 것이 바람직하다. ID의 값이 증가됨에 따라, 환경이 더 짧은 시간 내에 비동기 처리 코드를 실행할 수 있는 것(즉, 더 높은-레벨의 환경인 것)이 또한 바람직하다. 단계(S1106)에서, 새롭게-설정된 환경 ID가 표 4의 실행 환경 설정 표 내에 등록되는지의 여부가 결정되고, ID가 등록되는 경우에 처리가 진행될 수 있다. 이러한 경우에, 새롭게-설정된 환경 ID가 표 4의 실행 환경 설정 표 내에 등록되지 않은 경우에, 더 높은 환경이 존재하지 않고; 그에 따라 처리는, 예를 들어, 처리 시간을 가장 큰 양만큼 단축시키는 환경에서도 처리가 제한 시간 내에 완료되지 못한 것으로 가정할 수 있는, 오류로 종료될 수 있다.
단계(S1107)에서, 비동기 처리 코드 실행 관리 애플리케이션(710)은 단계(S1106)에서 실행 유닛(722)으로부터 송신된 더 높은-레벨의 실행 환경 기동 요청을 수신한다. 이어서, 비동기 처리 코드 실행 관리 애플리케이션(710)은 더 높은-레벨의 실행 환경 기동 요청에서 유지되는 값에 따라 비동기 처리 코드 실행 환경(720)을 새롭게 생성하고, 파일 서버(102) 내에서 발생되는 이벤트를 처리한다.
단계(S1108)에서, 비동기 처리 코드는, 해당 코드의 처리가 정확하게 종료되었다는 통지를 비동기 처리 코드 실행 관리 애플리케이션(710)에 송신한다. 처리가 정확하게 종료되었다는 이러한 통지를 송신하는 비동기 처리 코드에 의해서, 단계(S1103)에서 실행되는 비동기 처리 코드가 도 10에 도시된 감시 처리의 대상으로부터 제거된다. 결과적으로, 트리거로서 단계(S903)에서 통신 유닛(711)에 의해서 수신된 이벤트를 이용하여 단계(S1103)에서 실행되는 비동기 처리 코드 및 단계(S1107)에서 새롭게 기동된 비동기 처리 코드가 동시에 실행되는 상황이 방지될 수 있다. 통지를 수신하면, 비동기 처리 코드 실행 관리 애플리케이션(710)은 이전의 비동기 처리 코드 실행 환경(720)을 삭제한다. 실행되는 비동기 처리 코드는 단계(S1108) 이후에 종료된다.
이러한 예에서, 단계(S1102)에서 설정된 타이머 값(허용된 시간)이, 도 10의 단계(S1003)에서 체크된 실행 시간의 상한으로부터 단계(S1105)로부터 단계(S1108)까지 요구되는 시간을 차감하는 것에 의해서 획득된 시간 보다 짧은 것이 바람직하다. 이는, 비동기 처리의 실행이 도 10의 단계(S1004)에서 중단되기에 앞서서, 단계(S1105)로부터 단계(S1108)까지가 실행되고 상이한 비동기 처리가 기동되기 때문이다.
이러한 방식으로 새롭게 기동된 비동기 처리 코드는 그에 의해서 기동된 비동기 처리 코드와 동일하고, 그에 따라 실행 시간이 허용 시간을 초과하는 경우에, 다른 비동기 처리 코드가 더 기동될 수 있고 처리를 실행할 수 있다. 실행 환경은 각각의 기동으로 더 높은 성능을 가지고, 그에 따라 처리가 완료되기 더 쉬운 환경이 된다.
재-기동 처리는, 현재 처리가 함께 동시에 실행될 것임을 의미한다는 것을 주목하여야 할 것이다. 그러나, 비동기 처리가, 예를 들어, 이벤트와 연관된 파일로부터 추출된 정보(예를 들어, 속성 정보)를 저장한다는 것을 나타내는 경우에, 동일한 이벤트와 관련된 파일을 동일한 저장 위치에 그리고 동일한 명칭으로 저장하는 것에 의해서, 파일이 중복 저장되는 상황을 방지할 수 있다.
전술한 처리의 시퀀스를 통해서, 검출된 제1 시스템 이벤트에 응답하여 자동으로 기동되고 실행된 비동기 처리(즉, 스크립트)가 해당 비동기 처리 코드 실행 환경(720) 내에서 처리를 완료할 수 없는 경우에도, 더 높은 성능을 가지는 비동기 처리 코드 실행 환경은 비동기 처리 코드가 오류로 종료되기 전에 새롭게 발진되고, 비동기 처리 코드는 이벤트에 적합한 환경에서 계속된다. 따라서, 이벤트에 최적인 실행 환경은 비동기 처리 코드에 동적으로 할당될 수 있고, 그에 따라 이벤트 처리가 신뢰 가능하게 완료될 수 있다.
이러한 실시예에서, 트리거로서 이벤트를 이용하여 실행되는 비동기 처리(예를 들어, 스트립트)는 더 빠른 처리를 가능하게 하는 실행 환경 대신에 동일한 스크립트를 호출한다. 그러나, 실행 환경을 변화시키는 대신에, 비동기 처리와 별개로 호출된 비동기 처리 코드는 호출측 상의 코드 자체와 상이한 코드일 수 있다. 이러한 경우에, 새롭게-기동된 비동기 처리 코드가 보다 효율적인 코드이다. 그러한 목적을 위해서, 처리의 상세 내용이 변화되게 할 수 있고, 예를 들어 파일로서 저장되는 정보로부터 항목을 제거할 수 있거나, 어떠한 변경도 없이 그대로 정보를 저장할 수 있다. 또한, 비동기 처리의 환경 및 기동되는 비동기 처리 코드 모두가 호출측 상의 비동기 처리 코드와 상이할 수 있다. 이러한 경우에, 비동기 처리 코드는 이벤트 구동형 처리의 대상인 데이터가 유지되는 장소와 연관되어 등록되나, 실행되는 비동기 처리 코드로부터 기동된 다른 비동기 처리 코드는 그러한 연관의 구축이 없이 등록될 수 있다. 이는 또한 후술되는 제2 실시예에서 적용될 수 있다.
제2 실시예
제1 실시예에서, 단계(S903)에서 통신 유닛(711)에 의해서 수신된 이벤트에 응답하여 기동된 비동기 처리 코드의 실행 경과 시간이 감시되고, 그러한 시간이 비동기 처리 코드 실행 관리 애플리케이션(710)에 의해서 설정된 실행 시간을 초과할 위험이 있는 경우에, 비동기 처리 코드의 실행 환경이 더 큰 성능을 가지는 환경으로 전환된다. 이는, 이벤트 처리가 더 신뢰 가능하게 완료될 수 있게 한다. 그러나, 이러한 실시예는, 비동기 처리 코드에 의해서 처리되는 이벤트가 비동기 처리 코드 실행 관리 애플리케이션(710)에 의해서 설정된 재시도 수를 초과할 위험이 있는 경우에, 이러한 것이 발생될 징후가 미리 검출되고, 비동기 처리 코드의 실행 환경이 더 높은-성능의 환경으로 전환되는 방법을 설명한다. 이는, 이벤트 처리가 신뢰 가능하게 완료될 수 있게 한다.
도 13은 비동기 처리 코드의 처리의 시퀀스를 도시한 흐름도이다. 파일 서버(102) 내에서 발생되는 이벤트의 상세 내용이 비동기 처리 코드의 실행 환경의 성능을 크게 초과하는 경우에, 이러한 것이 발생될 징후가 비동기 처리 코드의 재시도 수를 기초로 검출된다. 그러한 징후가 검출되는 경우에, 이벤트에 따라 실행 환경을 동적으로 변화시키는 것에 의해서 처리가 계속될 수 있다. 도 14는 도 13에 도시된 흐름도의 흐름으로 실행되는 비동기 처리 코드의 의사-코드를 도시한 도면이다.
단계(S1301)에서, 비동기 처리 코드는 파일 정보 관리 서버(103)의 파일 정보 관리 유닛(602) 내의 비동기 처리 코드 기동 제한 표를 지칭하고, 비동기 처리 코드가 동일한 이벤트에 대해서 실행될 수 있는 횟수를 나타내는 기동 제한 수를 획득한다. 이러한 처리는 의사-코드 블록(1401)에 상응한다. 이하의 비동기 처리 코드 기동 제한 표(표 13)는 비동기 처리 코드 기동 제한 표 내에서 유지되는 데이터의 예를 보여준다.
Figure 112017104803323-pat00013
"비동기 처리 코드 ID" 열은 비동기 처리 코드 관리 표(예를 들어, 표 3) 내에서 "ID" 열의 값을 유지하는 열이다. "기동 제한 수" 열은 동일한 이벤트에 대해서 기동될 수 있는 비동기 처리 코드의 횟수에 대한 제한 값을 유지하는 열이다. 이러한 값은, 비동기 처리 코드 실행 환경 관리 유닛(714)에 의해서 관리되는 실행 환경 감시 항목 표(예를 들어, 표 6)의 "감시 항목" 열 내의 값이 "재시도 수"인 기록 내의 "감시 항목 값" 열 내의 값 보다 작도록 설정된다.
단계(S1302)에서, 비동기 처리 코드는 실행 유닛(722)에 의해서 관리되는 실행 상황 기록의 "실행 수" 열 내의 값을 지칭하고, 단계(S903)에서 통신 유닛(711)에 의해서 수신된 이벤트에 대한 해당 비동기 처리 코드 자체의 실행 수를 확인한다. 이러한 처리는 의사-코드 블록(1402)에 상응한다. 이어서, 비동기 처리 코드는 단계(S1301)에서 획득된 "기동 제한 수" 열 내의 값을 단계(S1302)에서 획득된 "실행 수" 열 내의 값과 비교하고; "실행 수" 열 내의 값이 "기동 제한 수" 열 내의 값 보다 작은 경우에 처리가 단계(S1303)로 진행되고, 그렇지 않은 경우에 처리가 단계(S1304)로 진행된다. 이러한 처리는 의사-코드 블록(1403)에 상응한다.
단계(S1303)에서, 비동기 처리 코드는 해당 코드의 처리를 기동한다. 이때, 실행 유닛(722)에 의해서 관리되는 실행 상황 기록의 "실행 수" 열 내의 값은 1 만큼 증가되고 업데이트된다. 이러한 실시예에서, 파일 서버(102)로부터 수신된 파일 업로드 완료 이벤트의 "파일 경로" 열 내의 값에 의해서 표시된 경로 내의 파일이 획득되고, 파일에 대한 속성 정보가 생성되고, 속성 정보는 파일 정보 관리 표 내에 등록된다. 이러한 처리는 의사-코드 블록(1404)에 상응한다. 여기에서 시작된 처리가 만기되는 경우에, 재시도 처리가 동일한 실행 환경에서 자동적으로 실행된다(S1301로부터 다시 시작된다)는 것을 주목하여야 할 것이다.
단계(S1304)에서, 비동기 처리 코드는 해당 코드의 실질적인 처리를 중단시킨다. 비동기 처리 자체는 계속된다. 이러한 스테이지에서, 실질적인 처리는 실행되지 않고, 그에 따라 단계(S1304)가 생략될 수 있다. 단계(S1305)로부터 단계(S1307)까지의 일련의 처리는 도 11의 단계(S1106)로부터 단계(S1108)까지의 처리와 동일하고, 그에 따라 그 설명을 생략할 것이다.
전술한 처리의 시퀀스에 따라, 이벤트가 최초로 수신될 때 기동되는 비동기 처리 코드 실행 환경(720) 내의 비동기 처리 코드가 비동기 처리 코드 실행 관리 애플리케이션(710)에 의해서 설정된 재시도 수의 제한 값에 도달되기 전에, 더 높은 성능을 가지는 비동기 처리 코드 실행 환경이 새롭게 기동되고, 비동기 처리 코드는 이벤트에 적합한 환경에서 계속된다. 따라서, 이벤트에 최적인 실행 환경은 비동기 처리 코드에 동적으로 할당될 수 있고, 그에 따라 이벤트 처리가 신뢰 가능하게 완료될 수 있다.
제3 실시예
제1 및 제2 실시예에서, 공통으로 실행되는 비동기 처리 코드 및 그 실행 환경이 이벤트에 대해서 최초로 할당되는 것이 가정된다. 여기에서, 이벤트 처리가 가정된 실행 환경 내에서 완료될 수 없을 것 같은 징후가 미리 검출되고, 비동기 처리 코드의 실행 환경은 더 높은 성능을 가지는 환경으로 전환되고, 그에 따라 이벤트 처리가 신뢰 가능하게 완료될 수 있다. 그러나, 이러한 실시예는, 실행 환경이 해당 이벤트에 대해서 생성되기 전에 이벤트의 상세 내용이 확인되고, 구체적인 조건에 상응하는 이벤트에 적합한 실행 환경이 시작으로부터 생성되고 그에 따라 이벤트 처리가 신뢰 가능하게 완료될 수 있는 방법을 설명한다.
도 15는 일련의 처리를 도시하는 흐름도이고, 여기에서, 비동기 처리 코드 실행 관리 유닛(712)이 도 9a의 단계(S907)에서 비동기 처리 코드의 실행 환경을 구축할 때, 이벤트의 상세 내용이 판단되고 그에 적합한 실행 환경이 생성된다.
단계(S1501)에서, 비동기 처리 코드 실행 관리 유닛(712)은 비동기 처리 코드 관리 애플리케이션(700)의 비동기 처리 코드 설정 저장 유닛(704)로부터 획득된 확장된 이벤트 설정 기록을 지칭한다. 이하의 확장된 이벤트 설정 표(표 14)는 확장된 이벤트 설정 기록의 예를 보여준다.
Figure 112017104803323-pat00014
표 14에 기재된 확장된 이벤트 설정 기록은, 이러한 실시예에 따른 방법을 실시하기 위한 정보가 제1 및 제2 실시예에 따른 이벤트 설정 표(예를 들어, 표 5)의 기록에 부가된, 기록이다. "ID" 열은, 비동기 처리 코드 관리 애플리케이션(700)이 비동기 처리 코드를 실행하기 위한 이벤트를 특이적으로 식별하기 위해서 이용하는 값을 유지하는 열이다. "대상 파일 경로" 열은 비동기 처리 코드를 실행하기 위한 대상 파일 경로를 유지하는 열이다. "대상 이벤트 열"은 비동기 처리 코드를 실행하기 위한 조건으로서의 역할을 하는, "대상 파일 경로" 열 내에서 유지되는 파일 경로에 상응하는 파일에서 실행되는, 작용에 관한 상세 내용을 유지하는 열이다. "비동기 처리 코드 ID" 열은 실행하고자 하는 비동기 처리 코드에 상응하는 비동기 처리 코드 관리 표 내의 "ID" 열의 값을 유지하는 열이다. "실행 환경 ID" 열은 비동기 처리 코드를 실행하기 위한 환경에 상응하는 실행 환경 설정 표 내의 "ID" 열의 값을 유지하는 열이다. "조건 ID" 열은, 대상 이벤트의 상세 내용에 따라 실행 환경에 대한 상이한 후보들이 존재하는 경우에, 조건 표로부터 조건 기록을 특이적으로 식별하기 위한 ID를 유지하는 열이다. 이하의 조건 표(표 15)는 조건 기록 내의 데이터의 예를 보여준다.
Figure 112017104803323-pat00015
표 15에서, "조건 ID" 열은 비동기 처리 코드 관리 애플리케이션(700) 내의 조건 기록을 특이적으로 식별하는 값을 유지하는 열이다. "권장 실행 환경 ID" 열은, 이벤트를 기초로 비동기 처리 코드를 실행할 때 권장되는 실행 환경에 상응하는 실행 환경 설정 표의 "ID" 열 내에서 값을 유지하는 열이다. "조건 항목" 열은, 권장되는 "실행 환경 ID" 열의 값에 상응하는 실행 환경 설정에서 실행하고자 하는 비동기 처리 코드를 허용하기 위한 조건의 항목 명칭을 유지하는 열이다. "조건 값" 열은 "조건 항목" 열 내의 값에 상응하는 구체적인 조건 값을 유지하는 열이다. 표 15에 기재된 기록의 예는, 수신된 이벤트에 상응하는 파일의 파일 크기가 2048 KB 이상인 경우에, 상응하는 비동기 처리 코드가, 실행 환경 설정 표의 "ID" 열 내의 값이 3인 환경에서 실행된다는 것을 의미한다.
단계(S1501)에서, 비동기 처리 코드 실행 관리 유닛(712)은 표 14에 기재된 확장된 이벤트 설정 기록의 "조건 ID" 열 내의 값을 지칭하고, 값이 설정된 경우에, 비동기 처리 코드 설정 저장 유닛(704)으로부터 해당 값에 상응하는 조건 기록을 획득한다. 이어서, 비동기 처리 코드 실행 관리 유닛(712)은, 파일 저장 유닛(503)의 파일 관리 표로부터, 확장된 이벤트 설정 기록의 "대상 파일 경로" 열 내의 값에 상응하는 파일 정보 내의 파일 크기를 획득한다. 마지막으로, 획득된 파일 크기가 조건 기록의 "조건 값" 열 내의 값과 비교되고, 조건 기록 내에 표시된 조건이 충족되는 경우에, 처리가 단계(S1503)로 진행된다. 조건이 충족되지 않는 경우에, 처리가 단계(S1502)로 진행된다.
단계(S1502)에서, 비동기 처리 코드 실행 관리 유닛(712)은 확장된 이벤트 설정 기록의 "확장 환경 ID" 열 내의 값을 지칭하고, 실행 환경 설정 표의 "ID" 열 내의 값이 합치되는 기록을 획득한다.
단계(S1503)에서, 비동기 처리 코드 실행 관리 유닛(712)은 조건이 충족되는 조건 기록의 "권장 실행 환경 ID" 열 내의 값을 지칭하고, 실행 환경 설정 표의 "ID" 열 내의 값이 합치되는 기록을 획득한다.
단계(S1504)에서, 비동기 처리 코드 실행 관리 유닛(712)은 단계(S1502) 또는 단계(S1503)에서 획득된 실행 환경 설정 기록 내의 값에 따라 실행 환경(720)을 생성한다.
전술한 처리의 시퀀스에 따라, 이벤트에 대한 처리에 적합한 실행 환경이 시작으로부터 생성되고, 그에 따라 이벤트 처리가 신뢰 가능하게 완료될 수 있다.
다른 실시예
본 발명의 실시예는, 전술한 실시예의 하나 이상의 기능을 수행하기 위해서 ('비일시적 컴퓨터 판독 가능 저장 매체'로서 더 상세히 언급될 수 있는) 저장 매체에 기록된 컴퓨터 실행 가능 명령어(예를 들어, 하나 이상의 프로그램)을 판독하고 실행하고 및/또는 전술한 실시예의 하나 이상의 기능을 수행하기 위한 하나 이상의 회로(예를 들어, 주문형 반도체 회로(ASIC))를 포함하는 시스템 또는 시스템 또는 기구의 컴퓨터에 의해서, 예를 들어, 그리고 전술한 실시예의 하나 이상의 기능을 수행하기 위해서 저장 매체로부터의 컴퓨터 실행 가능 명령을 판독하고 실행하는 것 및/또는 전술한 실시예의 하나 이상의 기능을 실시하기 위해서 하나 이상의 회로를 제어하는 것에 의해서 시스템 또는 장치의 컴퓨터에 의해 실시되는 방법에 의해서 또한 실현될 수도 있다. 컴퓨터는, 하나 이상의 프로세서(예를 들어, 중앙처리장치(CPU)), 마이크로 처리 유닛(MPU)을 포함할 수 있고, 컴퓨터 실행 가능 명령을 판독하기 실행하기 위한 별개의 컴퓨터들 또는 별개의 프로세서들의 네트워크를 포함할 수 있다. 컴퓨터 실행 가능 명령은, 예를 들어, 네트워크 또는 저장 매체로부터, 컴퓨터에 제공될 수 있다. 저장 매체는, 예를 들면, 하드디스크, 랜덤-액세스 메모리(RAM), 리드 온리 메모리(ROM), 분산 컴퓨팅 시스템의 저장부, 광 디스크(예를 들어, 콤팩트 디스크(CD), 디지털 다기능 디스크(DVD), 또는 블루-레이 디스크(BD)TM), 플래시 메모리 디바이스, 메모리 카드 등 중 하나 이상을 포함할 수 있다.
(기타의 실시예)
본 발명은, 상기의 실시형태의 1개 이상의 기능을 실현하는 프로그램을, 네트워크 또는 기억 매체를 개입하여 시스템 혹은 장치에 공급하고, 그 시스템 혹은 장치의 컴퓨터에 있어서 1개 이상의 프로세서가 프로그램을 읽어 실행하는 처리에서도 실현가능하다.
또한, 1개 이상의 기능을 실현하는 회로(예를 들어,ASIC)에 의해서도 실행가능하다.
예시적인 실시예를 참조하여 본 발명을 설명하였지만, 본 발명이 개시된 예시적인 실시예로 제한되지 않는다는 것을 이해할 수 있을 것이다. 이하의 청구항의 범위는 가장 광의의 해석에 따르며, 그에 따라 모든 그러한 수정예 및 균등한 구조 및 기능을 포함한다.

Claims (15)

  1. 매체에 기록되고 시스템을 구성하는 컴퓨터에 의해서 실행되는 제1 프로그램이며, 상기 제1 프로그램은 컴퓨터가,
    상기 제1 프로그램과 연관된 미리 결정된 시스템 이벤트의 검출에 따라, 상기 제1 프로그램과 연관되어 등록된 컴퓨팅 리소스를 사용하여 데이터를 처리하기 위한 처리 수단;
    상기 제1 프로그램을 실행하는 데에 걸린 시간량을 감시한 결과에 따라 상기 처리를 중단하기 위한 중단 수단; 및
    상기 시스템 내에 등록된 제2 프로그램을 기동시켜 기동된 상기 제2 프로그램에 의해 데이터가 처리되도록 하기 위한 기동 수단으로서 기능하게 하고,
    상기 제2 프로그램은 상기 미리 결정된 시스템 이벤트와 연관되지 않고 상기 시스템에 등록된, 매체에 기록된 제1 프로그램.
  2. 제1항에 있어서,
    상기 제1 프로그램을 실행하는 데에 걸린 시간량은, 상기 제1 프로그램이 실행된 때로부터의 경과 시간의 양, 상기 제1 프로그램의 실행을 위해 허용된 시간의 잔여량, 및 상기 제2 프로그램이 기동되는지가 결정되는 시간의 잔여량 중 하나를 포함하는, 매체에 기록된 제1 프로그램.
  3. 제1항에 있어서,
    상기 처리 수단에 의해서 실행되는 처리가, 상기 제1 프로그램이 실행될 때로부터의 경과 시간의 양이 제한 시간을 초과하는 것에 응답하여 중단되고;
    상기 기동 수단은, 상기 제1 프로그램이 실행될 때로부터의 경과 시간의 양이 제한 시간을 초과하기 전에, 상기 제2 프로그램을 기동시키는, 매체에 기록된 제1 프로그램.
  4. 제3항에 있어서,
    상기 제2 프로그램은, 상기 제한 시간을 초과하는 상기 제1 프로그램의 실행 시간에 응답하여 실행되는 재시도 수가 미리 결정된 수를 초과한 경우에 기동하는, 매체에 기록된 제1 프로그램.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서,
    추가적인 컴퓨팅 리소스가 상기 제1 프로그램이 아닌 상기 제2 프로그램에 할당되는, 매체에 기록된 제1 프로그램.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 미리 결정된 시스템 이벤트는, 피처리 데이터가 미리 결정된 저장 장소에 저장되었음을 나타내는, 매체에 기록된 제1 프로그램.
  7. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제2 프로그램은 상기 제1 프로그램과 동일한 데이터를 처리하는, 매체에 기록된 제1 프로그램.
  8. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제2 프로그램은 상기 제1 프로그램과 동일한 코드를 가지는, 매체에 기록된 제1 프로그램.
  9. 미리 등록된 스크립트를 자동으로 실행하는 서비스를 제공하는 시스템이며:
    미리 결정된 시스템 이벤트를 검출하기 위한 검출 수단;
    상기 미리 결정된 시스템 이벤트의 검출에 따라, 상기 미리 결정된 시스템 이벤트와 연관된 제1 스크립트를 자동으로 실행하기 위한 제1 실행 수단;
    상기 제1 스크립트를 실행함으로써 데이터를 처리하기 위한 처리 수단;
    상기 제1 스크립트를 실행하는 데에 걸린 시간량을 감시하기 위한 감시 수단;
    상기 제1 스크립트를 실행하는 데에 걸린 시간량을 감시한 결과에 따라 상기 처리를 중단하기 위한 중단 수단;
    상기 제1 스크립트에 따라 상기 시스템 내에 등록된 제2 스크립트를 기동시키기 위한 기동 수단; 및
    상기 제2 스크립트를 실행하여 데이터가 처리되도록 하기 위한 제2 실행 수단을 포함하고,
    상기 제2 스크립트는 상기 미리 결정된 시스템 이벤트와 연관되지 않고 상기 시스템 내에 등록된, 시스템.
  10. 제9항에 있어서,
    상기 제1 스크립트를 실행하는 데에 걸린 시간량은, 상기 제1 스크립트가 실행된 때로부터의 경과 시간의 양, 상기 제1 스크립트의 실행을 위해 허용된 시간의 잔여량, 및 상기 제2 스크립트가 기동되는지가 결정되는 시간의 잔여량 중 하나를 포함하는, 시스템.
  11. 제9항에 있어서,
    상기 처리 수단에 의해서 실행되는 처리가, 상기 제1 스크립트가 실행될 때로부터의 경과 시간의 양이 제한 시간을 초과하는 것에 응답하여 중단되고;
    상기 제2 실행 수단은, 상기 제1 스크립트가 실행될 때로부터의 경과 시간의 양이 제한 시간을 초과하기 전에 상기 제2 스크립트를 실행하는, 시스템.
  12. 제11항에 있어서,
    상기 제2 실행 수단은, 상기 제한 시간을 초과하는 상기 제1 스크립트의 실행 시간에 응답하여 실행되는 재시도 수가 미리 결정된 수를 초과한 경우에, 상기 시스템 내에 등록된 상기 제2 스크립트를 실행하고;
    피처리 데이터는 실행되는 상기 제2 스크립트의 결과로서 처리되는, 시스템.
  13. 제9항 내지 제11항 중 어느 한 항에 있어서,
    상기 제2 스크립트는 상기 제1 스크립트와 동일한 코드를 가지고;
    추가적인 컴퓨팅 리소스가 상기 제1 스크립트를 위한 상기 제1 실행 수단이 아닌 상기 제2 스크립트를 위한 상기 제2 실행 수단에 할당되는, 시스템.
  14. 제9항 내지 제11항 중 어느 한 항에 있어서,
    상기 제2 스크립트는 상기 제1 스크립트와 동일한 데이터를 처리하는, 시스템.
  15. 미리 등록된 스크립트를 자동으로 실행하는 서비스를 제공하는 시스템 내의 정보 처리 방법이며:
    미리 결정된 시스템 이벤트를 검출하는 단계;
    상기 미리 결정된 시스템 이벤트의 검출에 따라, 상기 미리 결정된 시스템 이벤트와 연관된 제1 스크립트를 자동으로 실행하는 단계;
    상기 제1 스크립트를 실행함으로써 데이터를 처리하는 단계;
    상기 제1 스크립트를 실행하는 데에 걸린 시간량을 감시하는 단계;
    상기 제1 스크립트를 실행하는 데에 걸린 시간량을 감시한 결과에 따라 상기 처리를 중단하는 단계;
    상기 제1 스크립트에 따라 상기 시스템 내에 등록된 제2 스크립트를 기동시키는 단계; 및
    상기 제2 스크립트를 실행하여 데이터가 처리되도록 하는 단계를 포함하고,
    상기 제2 스크립트는 상기 미리 결정된 시스템 이벤트와 연관되지 않고 상기 시스템 내에 등록된, 정보 처리 방법.
KR1020170138088A 2016-10-25 2017-10-24 프로그램, 시스템, 및 정보 처리 방법 KR102257500B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016208847A JP6942458B2 (ja) 2016-10-25 2016-10-25 プログラム、システム及び情報処理方法
JPJP-P-2016-208847 2016-10-25

Publications (2)

Publication Number Publication Date
KR20180045818A KR20180045818A (ko) 2018-05-04
KR102257500B1 true KR102257500B1 (ko) 2021-05-31

Family

ID=60037344

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170138088A KR102257500B1 (ko) 2016-10-25 2017-10-24 프로그램, 시스템, 및 정보 처리 방법

Country Status (5)

Country Link
US (1) US10481952B2 (ko)
EP (1) EP3316132B1 (ko)
JP (1) JP6942458B2 (ko)
KR (1) KR102257500B1 (ko)
CN (1) CN107977258A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10248509B2 (en) * 2016-11-16 2019-04-02 International Business Machines Corporation Executing computer instruction including asynchronous operation
JP7118833B2 (ja) * 2018-09-19 2022-08-16 キヤノン株式会社 システム及び方法
US11449367B2 (en) * 2019-02-27 2022-09-20 International Business Machines Corporation Functional completion when retrying a non-interruptible instruction in a bi-modal execution environment
JP7231044B2 (ja) * 2019-08-20 2023-03-01 株式会社島津製作所 液体クロマトグラフを管理する管理装置、管理方法および管理プログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040153866A1 (en) * 2002-11-15 2004-08-05 Microsoft Corporation Markov model of availability for clustered systems
US20040255296A1 (en) * 2003-06-10 2004-12-16 Schmidt Darren R. Time-bounded program execution

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02196341A (ja) * 1989-01-26 1990-08-02 Nec Eng Ltd 情報処理装置の障害復旧方式
JPH0512205A (ja) * 1991-07-08 1993-01-22 Nec Corp コンピユータシステム
JP4115083B2 (ja) 2000-12-05 2008-07-09 キヤノン株式会社 プログラムを格納した記憶媒体及び情報処理装置並びに情報処理方法
JP2004038759A (ja) * 2002-07-05 2004-02-05 Mitsubishi Electric Corp アプリケーション連携システム、アプリケーション連携方法およびその方法を実行するためのプログラム
JP4912139B2 (ja) 2006-12-22 2012-04-11 キヤノン株式会社 情報処理装置
CN101599027B (zh) * 2009-06-30 2013-02-13 中兴通讯股份有限公司 一种线程池管理方法及其系统
US8365009B2 (en) 2010-09-10 2013-01-29 Microsoft Corporation Controlled automatic healing of data-center services
US8949653B1 (en) * 2012-08-03 2015-02-03 Symantec Corporation Evaluating high-availability configuration
US10552774B2 (en) * 2013-02-11 2020-02-04 Amazon Technologies, Inc. Cost-minimizing task scheduler

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040153866A1 (en) * 2002-11-15 2004-08-05 Microsoft Corporation Markov model of availability for clustered systems
US20040255296A1 (en) * 2003-06-10 2004-12-16 Schmidt Darren R. Time-bounded program execution

Also Published As

Publication number Publication date
KR20180045818A (ko) 2018-05-04
CN107977258A (zh) 2018-05-01
EP3316132B1 (en) 2024-01-03
JP2018072944A (ja) 2018-05-10
JP6942458B2 (ja) 2021-09-29
EP3316132A1 (en) 2018-05-02
US10481952B2 (en) 2019-11-19
US20180113745A1 (en) 2018-04-26

Similar Documents

Publication Publication Date Title
KR102257500B1 (ko) 프로그램, 시스템, 및 정보 처리 방법
TWI740901B (zh) 執行資料恢復操作的方法及裝置
US10013491B2 (en) Methods and systems of workload mobility across divergent platforms
CN106445951B (zh) 一种文件传输方法和装置
US9864736B2 (en) Information processing apparatus, control method, and recording medium
CN103946807A (zh) 一种生成快照的方法、系统和装置
CN108228444B (zh) 一种测试方法和装置
US10540325B2 (en) Method and device for identifying junk picture files
US9727394B2 (en) Establishing causality order of computer trace records
CN110795278B (zh) 用于提供文件级恢复的系统和方法
KR20170068533A (ko) 가상 카드 처리 방법 및 장치
CN108628733B (zh) 批量业务处理操作的测试方法及装置
CN106549795B (zh) 用于监视多个分布式设备的系统
KR20120027219A (ko) 오퍼레이팅 시스템 상태의 캡처링 및 로딩
JP5758544B2 (ja) 画面情報収集計算機、画面情報収集方法及び計算機読み取り可能な記憶媒体
US10725975B2 (en) Non-transitory computer-readable medium, system, and information processing method
KR101659147B1 (ko) 정보 처리 장치, 및 그의 제어 방법
CN112698908A (zh) 云计算资源的伸缩处理方法及装置、存储介质及处理器
CN115080538A (zh) 一种区块链版本验证方法及装置
JP2018097822A (ja) プログラム、システム、およびシステムの制御方法
CN113127369A (zh) 一种执行脚本的处理方法以及装置
CN111104404A (zh) 基于分布式对象的数据存储方法及装置
CN113094211B (zh) 一种备份数据处理的方法和装置
CN113742299B (zh) 文件压缩和解压缩方法以及文件压缩和解压缩装置
CN104809033A (zh) 一种备份方法及系统

Legal Events

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