KR20180068300A - 서비스 시스템 및 서비스 시스템의 제어 방법, 및 컴퓨터 판독가능 저장 매체 - Google Patents

서비스 시스템 및 서비스 시스템의 제어 방법, 및 컴퓨터 판독가능 저장 매체 Download PDF

Info

Publication number
KR20180068300A
KR20180068300A KR1020170169895A KR20170169895A KR20180068300A KR 20180068300 A KR20180068300 A KR 20180068300A KR 1020170169895 A KR1020170169895 A KR 1020170169895A KR 20170169895 A KR20170169895 A KR 20170169895A KR 20180068300 A KR20180068300 A KR 20180068300A
Authority
KR
South Korea
Prior art keywords
api
execution
limit value
external
service
Prior art date
Application number
KR1020170169895A
Other languages
English (en)
Other versions
KR102227061B1 (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 KR20180068300A publication Critical patent/KR20180068300A/ko
Application granted granted Critical
Publication of KR102227061B1 publication Critical patent/KR102227061B1/ko

Links

Images

Classifications

    • H04L67/16
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • G06F3/1287Remote printer device, e.g. being remote from client or server via internet
    • 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/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/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
    • 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/547Remote procedure calls [RPC]; Web services
    • 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
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/0246Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols
    • H04L41/0273Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols using web services for network management, e.g. simple object access protocol [SOAP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1031Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
    • H04L67/42
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/506Constraint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • H04L41/0897Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities by horizontal or vertical scaling of resources, or by migrating entities, e.g. virtual resources or entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Human Resources & Organizations (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명의 서비스 시스템은, 웹 서비스가 구현되는 가상 서버의 수 및 API-실행-횟수 제한 값에 기초하여 가상 서버당 API-실행-횟수 제한 값을 결정하도록 구성된 결정 수단과, 상기 API가 실행된 횟수가 상기 API-실행-횟수 제한 값을 초과하거나 또는 초과하지 않으면, 상기 웹 서비스를 제공하거나 또는 오류로서 상기 API의 호출을 처리하도록 구성되는 제어기를 포함한다.

Description

서비스 시스템 및 서비스 시스템의 제어 방법, 및 컴퓨터 판독가능 저장 매체{SERVICE SYSTEM AND CONTROL METHOD OF THE SAME, AND COMPUTER READABLE STORAGE MEDIUM}
본 발명은 릴리즈된 API의 실행에 응답하여 웹 서비스를 제공하는 서비스 시스템 및 그러한 서비스 시스템의 제어 방법에 관한 것이다.
최근, 웹 서비스들이 연계되는 경우의 수가 증가하고 있다. 예컨대, 릴리즈된 웹 서비스 API(Application Programming Interface)가 웹 서비스들을 서로 연계하는 데 사용되는데, 이를 매시업이라고 부른다. 이 경우, 연계 웹 서비스는 연계 웹 서비스에 의해 릴리즈되는 API를 실행하여 연계 웹 서비스를 이용하고, 그 결과 웹 서비스들이 연계된다.
웹 서비스의 종래 기술 중 하나는 API 스로틀링이라 불리는 기능이다. 웹 서비스에서, 단위 시간당 가능한 API 실행 횟수가 제한되어, 사용자 단말 내의 서비스로부터 다른 웹 서비스까지의 범위를 갖는 클라이언트 서비스로부터 많은 API가 실행되는 것을 억제한다. 일부 웹 서비스는, 클라이언트에 의해 실행되는 API의 실행 횟수가 제한을 초과하는 경우에 클라이언트 상의 웹 서비스의 이용을 일시적으로 금지하는 것과 같은 패널티를 부가한다. 일본 특허 공개 번호 2016-126801은 API 스로틀링 기능을 이용하여 대용량 데이터를 처리하는 전자 시스템을 개시하고 있다.
웹 서비스의 다른 종래의 기술은, 가상 서버가 웹 서비스를 제공하게 하는 기술이다. 가상 서버는, 각각이 독립 OS를 포함하고 물리적 서버 컴퓨터 그룹이 가상화 기술에 의해 분할되는 논리적 컴퓨터들이다.
가상 서버가 제공하는 웹 서비스가 API 스로틀링 기능을 갖는 경우, 각각의 가상 서버는 가상 서버에 의해 실행되는 API의 실행 횟수의 제한 값(API-실행-횟수 제한 값으로 후술됨)을 자동으로 결정하기 위한 메커니즘을 갖지 않는다.
본 발명은, 가상 서버당 새로운 API-실행-횟수 제한 값을 자동으로 결정하고 사용자가 API-실행-횟수 제한 값을 수동으로 결정하는 문제를 해결할 수 있게 하는 서비스 시스템을 제공한다.
본 발명은, 가상 서버당 새로운 API-실행-횟수 제한 값을 자동으로 결정하고 사용자가 API-실행-횟수 제한 값을 수동으로 결정하는 문제를 해결할 수 있게 하는 서비스 시스템을 제공한다.
본 발명은 가상 서버 상에서 웹 서비스를 구현하고 클라이언트 서비스로부터 릴리즈된 API의 호출에 응답하여 상기 웹 서비스를 제공하는 서비스 시스템을 제공하며, 상기 시스템은 웹 서비스가 구현되는 가상 서버의 수 및 API가 실행되는 횟수를 제한하는데 이용되는 API-실행-횟수 제한 값을 기초로 가상 서버당 API-실행-횟수 제한 값을 결정하도록 구성된 결정 수단과, API가 실행된 횟수가 상기 API-실행-횟수 제한 값을 초과하는지 여부에 따라, 웹 서비스를 제공하거나 또는 API의 호출을 오류로 처리하도록 구성된 제어기를 포함한다.
본 발명의 다른 구성은 첨부된 도면을 참조하여 예시적 실시예의 후속하는 설명으로부터 명확해질 것이다.
도 1은 전체 서비스 시스템을 도시한다.
도 2는 정보-처리 장치의 내부 구조를 도시한다.
도 3은 각 장치 기능의 블록도이다.
도 4는 본 발명의 제1 실시예에 따른 프로세스들의 흐름을 도시한 흐름도이다.
도 5는 본 발명의 제1 실시예에 따른 프로세스들의 흐름을 도시한 흐름도이다.
도 6은 본 발명의 제2 실시예에 따른 프로세스들의 흐름을 도시한 흐름도이다.
도 7은 본 발명의 제3 실시예에 따른 프로세스들(제2 패턴)의 흐름을 도시한 흐름도이다.
도 8은 본 발명의 제3 및 제4 실시예에 따른 프로세스들(제1 패턴)의 흐름을 도시한 흐름도이다.
도 9는 본 발명의 제4 실시예 및 기타 실시예에 따른 프로세스들(제2 패턴)의 흐름을 도시한 흐름도이다.
도 10a, 도 10b, 도 10c 및 도 10d는 본 발명의 제2, 제3 및 제4 실시예(제1 패턴)의 이미지 뷰를 도시한다.
도 11a, 도 11b, 도 11c 및 도 11d는 본 발명의 제2, 제3 및 제4 실시예(제2 패턴)의 이미지 뷰를 도시한다.
본 발명을 수행하기 위한 최선의 모드는 실시예를 이용하여 후술될 것이다. 후술되는 본 발명의 실시예 각각은, 필요한 경우 또는 단일 실시예 내에서 개별 실시예들로부터의 요소 또는 특징부의 조합이 유리한 경우, 단독으로 또는 본 발명의 복수의 실시예 또는 특징부의 조합으로서 구현될 수 있다. 웹 서비스는 서비스 시스템을 구축하는 서버 컴퓨터 상에서 구동하는 웹 애플리케이션에 의해 제공되는 기능 또는 기능 그룹이다. 본 발명에 따르면, 웹 서비스는 가상 서버 상에서 구현된다. 가상 서버는, 각각이 독립 OS를 포함하고 물리적 서버 컴퓨터 그룹이 가상화 기술에 의해 분할되는 논리적 컴퓨터들이다.
본 발명의 네트워크를 구성하는 본 실시예 및 디바이스에 따른 서비스 시스템(140)이 도 1을 참조로 기술될 것이다. 도 1은 클라이언트 시스템(110), 다른 서비스 시스템(120) 또는 단말(130)이 인터넷(100)을 통해 서비스 시스템(140)을 구축하는 서버 컴퓨터 도는 서버 컴퓨터 그룹에 연결되는 상태를 도시한다. 클라이언트 시스템(110)은 서비스 시스템(140)에 의해 릴리즈되는 API를 실행하는 서비스 시스템이다. 서비스 시스템(120)은 각 API를 통해 수행되는 웹 서비스에 의해 사용되는 서비스 시스템이며, 매시업 중 서비스 시스템을 이용하는 웹 서비스와 연계하는 웹 서비스를 제공한다. 단말(130)은 웹 브라우저가 설치되는 PC, 스마트 폰 또는 태블릿과 같은 휴대용 단말, 또는 화상-형성 장치인 것으로 상정한다. 하기에서, API로 간단하게 지칭된 용어는 서비스 시스템(140)에 의해 릴리즈된 API를 나타내며, 외부 API로 지칭된 용어는 서비스 시스템(120)에 의해 릴리즈되는 API를 나타낸다.
도 1에 도시된 서비스 시스템(140)을 구축하는 서버 컴퓨터인 정보-처리 장치(200)의 내부 구조가 이제 도 2를 참조로 기술될 것이다. 도 2는 정보-처리 장치(200)의 내부 구조를 도시하는 블록도이다. 사용자 인터페이스(201)는 예컨대 디스플레이, 키보드 또는 마우스를 이용하여 정보를 입력 및 출력하는 하드웨어이다. 이 하드웨어를 포함하지 않는 컴퓨터는 예컨대 원격 데스크톱을 이용하여 다른 컴퓨터에 연결되어 그로부터 동작될 수 있다.
네트워크 인터페이스(202)는, LAN과 같은 네트워크에 연결되고 다른 컴퓨터 또는 네트워크 디바이스와 통신하는 하드웨어이다. CPU(203)는 ROM(204), RAM(205) 또는 보조 저장 장치(206)로부터 프로그램을 로딩하고 정보-처리 장치(200)를 제어하기 위해 상기 프로그램의 명령어를 실행하는 유닛이다.
ROM(204)은, 예컨대 애플리케이션 프로그램, OS를 포함하는 임베드된 프로그램, 및 데이터가 저장되는 저장 장치이다. RAM(205)은 CPU(203)가 명령어를 실행할 때 사용되는 작업 메모리이다. ROM(204)에 저장된 프로그램은 RAM(205) 내로 로딩된다. CPU(203)는 순차적으로 프로그램의 명령어를 판독하고 그 명령어를 실행한다. 보조 저장 장치(206)는 HDD로 표현되는 외부 저장 장치이다. 이러한 구성요소들은 그들 사이에 개재된 입력/출력 인터페이스(207)에 의해 서로 연결된다.
서비스 시스템(140)의 정보-처리 장치(200)가 상술되었다. 서비스 시스템(120)을 구축하는 서버 컴퓨터 및 단말(130)은 정보-처리 장치(200)와 동일한 구조를 갖는다.
여기서 주목할 것은 보조 저장 장치(206) 내에 저장된 애플리케이션 프로그램이 RAM(205) 내로 로딩되어, 단말(130)이 웹 브라우저의 기능을 구현한다는 것이다. 사용자는 웹 브라우저를 이용하여 웹 서비스에 액세스하고 웹 브라우저가 API를 실행하도록 웹 서비스의 스크린을 동작한다. 그 결과, 사용자는 단말(130)을 이용하여 서비스 시스템(140)의 웹 서비스를 이용할 수 있다. 즉, 웹 서비스는 매시업이 아닌 다른 방식으로도 사용된다.
웹 서비스의 구현 기능이 도 3을 참조로 이제 설명될 것이다. 후속하는 설명에서, 가상 서버는 자동 스케일링 기능을 각각 갖는다. 하지만, 본 발명에 따르면, 각각의 가상 서버는 자동 스케일링 기능을 갖지 않을 수도 있다. 자동 스케일링 기능은 서비스 시스템(140)의 부하에 따라 가상 서버의 수를 자동으로 증가 또는 감소시키는 기능이다. 자동 스케일링 기능은, 서비스 시스템의 부하가 사전에 결정된 부하 이상으로 증가될 때 가상 서버의 수를 증가시키는 방식으로 성능 저하를 방지하고, 부하가 사전에 결정된 부하 이하일 때 가상 서버의 수를 감소시키는 방식으로 가상 서버의 동작 비용을 감소시킨다. 실시예에 따르면, 후술되는 자동 스케일링 그룹(303)은 자동 스케일링 기능을 구현한다.
도 3은 자동 스케일링 그룹(303)이 관리하는 가상 서버(302), DB 서버(305) 및 부하-분산 장치(350) 내의 모듈 그룹을 도시하는 블록도이다. 가상 서버(302)는, ROM(204) 내에 임베드된 가상 서버(302)를 구현하기 위한 프로그램이 RAM(205)에 로딩되는 방식으로 구현된다. RAM(205)의 일부 또는 전체가 가상 서버(302)를 구현하는데 이용된다. 가상 서버(302)의 각각은 가상 보조 저장 장치, 가상 RAM 및 가상 ROM을 포함하고, 가상 보조 저장 장치 내에 저장된 프로그램을 가상 RAM에 로딩하여 애플리케이션 모듈(300) 및 API 실행 제어 모듈(301)을 구현한다. 애플리케이션 모듈(300) 및 API 실행 제어 모듈(301)이 웹 서비스를 구현한다.
일부 경우, 가상 서버(302)는 단일 서버 컴퓨터에 의해 구현된다. 또한, 서버 컴퓨터가 단일 가상 서버를 구현하는 것으로도 간주될 수 있다. 도 3에서, 자동 스케일링 그룹(303)은 2개의 가상 서버(302)를 포함한다. 하지만, 자동 스케일링 그룹(303)은 단일 가상 서버(302) 또는 3개 이상의 가상 서버(302)를 포함하는 것으로 고려될 수 있다.
각각의 애플리케이션 모듈(300)은 웹 서비스를 수행하는 기능을 가지며, 외부에 웹 서비스를 구현하기 위한 API를 릴리즈하고, 클라이언트 시스템(110) 또는 단말(130)로부터의 실행 요청에 응답하여 웹 서비스를 제공한다. 제1 실시예에 따른 웹 서비스는, 클라우드 시스템 상에서 구현되는 다른 웹 서비스가 이용될 때 인증 및 승인 프로세스를 수행하는 인증 및 승인 서비스이다. 하지만, 웹 서비스는 이에 제한되지 않는다. 웹 서비스는 비즈니스 폼 데이터를 생성하기 위해 데이터를 처리하는 비즈니스 폼 서비스, 인쇄 데이터를 생성하기 위해 데이터를 처리하는 인쇄 서비스, 프린터에 대한 정보를 관리하고 보고 데이터를 생성하기 위해 데이터를 처리하는 프린터 관리 서비스 또는 다른 서비스인 것으로 간주된다. 애플리케이션 모듈(300)에 의해 구현되는 웹 서비스는 DB 서버(305) 또는 서비스 시스템(120)에 의해 릴리즈되는 외부 API를 실행할 수 있다. 애플리케이션 모듈(300)은 매시업을 가능하게 하기 위해 외부 API의 실행 결과를 이용함으로써 그 자체의 웹 서비스를 수행한다.
자동 스케일링 그룹(303)은 가상 서버(302)의 수를 모니터링하는 기능이며, 필요한 경우 가상 서버(302)의 수를 증가 또는 감소시키며, 이러한 증가 또는 감소의 결과를 관리한다. 자동 스케일링 그룹(303)은 ROM(204) 내에 저장된 프로그램이 RAM(205)에 로딩되고, 명령어가 RAM(205)에 로딩된 프로그램으로부터 연속적으로 판독되고, 그 명령어가 실행되는 방식으로 구현된다.
자동 스케일링 그룹(303)은 자동 스케일링 그룹(303)이 관리하는 가상 서버(302)의 부하를 모니터링하고, 부하가 증가할 때 가상 서버(302)의 수를 증가시키고, 부하가 감소할 때 가상 서버(302)의 수를 감소시킨다. 부하의 모니터링 결과를 기초로 가상 서버(302)의 수를 증가 또는 감소시키는 것은 자동 스케일링으로 지칭된다. 본 발명에 따르면, 부하를 확인하는 것은, 부하의 상태를 파악하기 위해 가상 서버(302)에 의해 접수될 수 있는 액세스의 수 및 가상 서버(302) 내의 CPU 활용 및 메모리 활용과 같은 리소스의 소비를 모니터링하는 것을 의미한다. 자동 스케일링 그룹(303)이 가상 서버(302)의 수를 변경할 때 결정 방법은 가상 서버(302)의 부하를 모니터링하는 방법에 제한되지 않는다. 예컨대, 가상 서버(302)에 의해 취급되는 요청이 큐에 저장되는 경우, 후술되는 부하-분산 모듈(304)에 대한 액세스의 수를 모니터링하는 것에 부가하여 상기 큐에 저장된 작업의 수를 모니터링하는 방법이 고려된다.
부하-분산 모듈(304)은 인터넷(100)을 통해 송신된 요청을 가상 서버(302)에 분배 및 전달하는 기능을 제공한다. 부하-분산 모듈(304)의 특정 예는 SLB(Server Load Balancer)이다. 하지만, 부하-분산 모듈(304)은 서비스 시스템(140)과 상이한 서비스 시스템 상에서 구현될 수도 있다. 서비스 시스템(140)은 부하-분산 장치(350)와 동일한 기능을 가질 수 있다. 부하-분산 모듈(304)은 보조 저장 장치(206) 내에 저장된 프로그램이 RAM(205)에 로딩되는 방식으로 구현된다. DB(Data Base) 서버(305)는 가상 서버(302)가 이용하는 데이터를 관리한다. DB 서버(305)는 가상 서버(302) 상에 제공될 수 있거나, 또는 도시되지 않은 인터넷을 통해 연결되는 다른 서비스 시스템에 의해 제공될 수 있다.
DB 서버(305)는 데이터 관리 모듈(310)을 포함한다. DB 서버(305)는 데이터 관리 모듈(310)을 구현하기 위해 보조 저장 장치(206) 내에 저장된 프로그램을 RAM(205)에 로딩한다. 데이터 관리 모듈(310)은 웹 서비스에 의해 이용되는 데이터를 관리하고, 액세스 허용, 즉 액세스를 요청하는 웹 서비스가 데이터에 액세스할 수 있는지를 결정하도록 구현된다. DB 서버(305)는 필수적인 것은 아니다. API의 기능을 구현하는데 요구되는 데이터는 DB 서버(305) 대신에 서비스 시스템(120)으로부터 취득될 수 있다.
API 실행 제어 모듈(301)은 웹 서비스에 의해 릴리즈된 API가 실행 요청에 응답하여 실행가능한지를 결정하고, 그 결과를 기초로 API의 실행을 제어하는 API 스로틀링 기능을 제공한다. API 실행 제어 모듈(301)은 제공되는 API 스로틀링 기능을 구현하기 위해 보조 저장 장치(206) 내에 저장된 프로그램을 RAM(205)에 로딩한다. API 실행 제어 모듈(301)은 단위 시간당 각 API의 API-실행-횟수 제한 값을 관리한다. 본 발명에 따르면, API 실행 횟수는 API가 실행된 후 계수된 횟수의 총 수이다. 예컨대, API가 실행되었을 때, "1"이 저장된다. API 실행 제어 모듈(301)은 API-실행-횟수 제한 값과 API 실행 횟수를 비교하고, API 실행 횟수가 API-실행-횟수 제한 값 미만일 때 API의 실행을 준비하고, API 실행 횟수가 API-실행-횟수 제한 값을 초과할 때 API의 호출이 오류로 처리된다. API 실행 횟수를 결정하는 방법이 도 5를 참조하여 후술될 것이다. API 실행 횟수 및 API-실행-횟수 제한 값은 웹 서비스에 의해 릴리즈되는 모든 API에 대해 비교되지 않을 수도 있다. 일부의 경우, 특정 API가 호출될 때, 특정 API의 API 실행 횟수 및 API-실행-횟수 제한 값이 비교된다. 후술되는 실시예에 따라 기술되는 예에서, API 실행 횟수 및 API-실행-횟수 제한 값은 웹 서비스에 의해 릴리즈되는 모든 API에 대해 비교된다.
웹 서비스가 DB 서버(305) 또는 외부 API를 실행하는 경우, DB 서버(305) 또는 서비스 시스템(120)이 요청된 프로세스의 수행을 완료하지 못할 가능성이 있다. 이러한 경우를 위한 준비로서, 웹 서비스의 API 실행 횟수 자체가 제한된다. 외부와의 연계만을 상정하고 API 실행의 제한이 필요한 것은 아니다. 본 발명에 따르면, 가상 서버(302)는 가상 서버(302)의 수가 자동 스케일링에 의해 변경될 때에도 API 실행 횟수가 API-실행-횟수 제한 값을 초과하는 것을 방지하고 API 실행 횟수의 상당한 잉여를 방지하도록 API 스로틀링을 수행한다.
API-실행-횟수 제한 값은, DB 서버(305) 및 서비스 시스템(120)이 허용할 수 있는 상한을 고려한 값일 필요도 없고 상한 자체일 필요도 없다. 예컨대, 단위 시간당 실행가능한 API의 실행 횟수가 서비스 시스템(120)의 사양을 고려할 때 100회인 경우, API-실행-횟수 제한 값은 "100"이 아니라 "75"일 수 있다. API-실행-횟수 제한 값이 그대로 "100"의 API-실행-횟수 제한 값인 경우, API 실행 횟수가 "100"의 API-실행-횟수 제한 값을 초과하면, 서비스 시스템(120)은 웹 서비스에 패널티를 부가한다. 따라서, 제한 값이 마진을 갖는다. 하지만, 본 발명은 API-실행-횟수 제한 값이 그대로 "100"인 경우에도 실행될 수 있다.
본 발명의 기본 실시예인 제1 실시예가 설명될 것이다. API가 실행될 때의 흐름이 도 4를 참조로 이제 기술될 것이다. API의 프로세스는 가상 서버(302)에서 독립적으로 실행된다. 웹 서비스가 기능 그룹인 일부의 경우에, 복수의 API가 릴리즈된다. 제1 실시예에 따라 고려된 경우, 각각의 애플리케이션 모듈(300)에 의해 제공되는 웹 서비스는 3개의 API, "API 1", "API 2", 및 "API 3"을 릴리즈한다. 표 1은 API 실행 제어 모듈(301)이 관리하는 API-실행-횟수 제한 값을 도시한다. 표 1에 도시된 API-실행-횟수 제한 값은 서비스 시스템(140)이 구축될 때 DB 서버(305)의 실행 제한 값을 고려하여 사용자에 의해 사전 결정되고, API 실행 제어 모듈(301)은 이 사전 결정된 값을 저장한다.
[표 1]
Figure pat00001
도 4의 흐름은, 각각의 가상 서버(302)가 기동할 때, 각각의 가상 서버(302)가 클라이언트 시스템(110) 또는 단말(130)로부터의 API 실행 요청을 접수할 때, 또는 각각의 가상 서버(302)가 도 4의 흐름을 주기적으로 수행할 때 시작한다. 도 4에 도시된 예에서, 흐름은 각각의 가상 서버(302)가 S400에서 API 실행 요청을 접수할 때 시작한다.
S401에서, 가상 서버의 현재 수가 취득된다. 이제, API 실행 제어 모듈(301)은, 자동 스케일링 그룹(303)이 관리하는 작동 중인 가상 서버(302)의 수를 취득하고 그 수를 확인한다. 가상 서버(302)의 현재 수를 취득하는 방법은 그에 제한되지 않는다. 예컨대, 부하-분산 모듈(304)이 분배 목표로서 관리하는 가상 서버(302)의 수는 부하-분산 모듈(304)로부터 취득될 수 있으며 확인될 수 있다. 가상 서버(302)의 수는 가상 서버(302) 당 API-실행-횟수 제한 값이 결정(또는 업데이트)될 때 확인될 수 있거나 또는 그 수는 주기적으로 확인될 수 있는데, 이는 문제되지 않는다.
제1 실시예에 따르면, 가상 서버(302)는 현재 2개의 가상 서버, "가상 서버(A302)" 및 "가상 서버(B302)"이다. 표 2는 API 실행 제어 모듈(301)이 관리하는 가상 서버(302)의 수를 도시한다.
[표 2]
Figure pat00002
S402에서, API 실행 제어 모듈(301)은 가상 서버(302)의 수 및 API-실행-횟수 제한 값을 기초로 각각의 가상 서버(302)에 할당되는 새로운 API-실행-횟수 제한 값을 계산 및 결정한다. 구체적으로, 표 1에 도시된 API-실행-횟수 제한 값은 표 2에 도시된 가상 서버(302)의 수로 나누어지고, 그 결과 값이 새로운 API-실행-횟수 제한 값으로 결정된다. 제1 실시예에 따라 기술된 예에서, API 실행 제어 모듈(301)은 자동 스케일링 그룹(303)으로부터 가상 서버(302)의 수를 취득하여, 그 수를 확인하고 가상 서버(302)의 수를 계산한다.
하지만, 자동 스케일링 그룹(303)은 새로운 API-실행-횟수 제한 값을 계산하기 위해 가상 서버(302)의 수를 관리할 수 있으며, API 실행 제어 모듈(301)은 계산된 결과를 이용할 수 있다.
이제, 가상 서버(302)의 수는 2이며, 표 3에 도시된 바와 같이 가상 서버당 API-실행-횟수 제한 값은 API 1에 대해 50회, API 2에 대해 25회 그리고 API 3에 대해 50회이며, 이 값들은 API 실행 제어 모듈(301)에서 설정된다.
제1 실시예에 따르면, 표 1에 도시된 API-실행-횟수 제한 값은 표 2에 도시된 가상 서버(302)의 수에 의해 나누어져서 가상 서버당 API-실행-횟수 제한 값을 계산 및 결정한다. 하지만, API-실행-횟수 제한 값을 결정하는 방법은 이 계산 방법에 제한되지 않는다. 동일하지 않은 API-실행-횟수 제한 값들이 가상 서버(302)에 할당될 수 있으며, 새로운 API-실행-횟수 제한 값으로 설정될 수 있다. 이 경우, 가상 서버(302)의 수가 파악되어 동일하지 않은 API-실행-횟수 제한 값들이 할당되고, 적어도 1 이상의 API-실행-횟수 제한 값이 각각의 가상 서버(302)에 할당된다.
[표 3]
Figure pat00003
S403에서, API 실행 제어 모듈(301)은 S402의 결과를 기초로 API 실행 결정을 수행한다. S403의 세부사항은 도 5를 참조로 후술될 것이다.
S404에서, API 실행 제어 모듈(301)은 API가 실행 가능한지를 결정한다. API가 S403의 결과로부터 실행가능한 것으로 결정되는 경우, 흐름은 S405로 진행하고, 애플리케이션 모듈(300)은 요청된 API의 프로세스를 실행한다. API가 S403의 결과로부터 실행불능인 것으로 결정되는 경우, 흐름은 S407로 진행한다.
S407에서, 애플리케이션 모듈(300)은 API 실행 오류와 함께 응답한다. 구체적으로, S404에서 애플리케이션 모듈(300)이, API 실행 횟수가 API-실행-횟수 제한 값을 초과했다고 결정한 경우, 오류가 API를 호출한 클라이언트 시스템(110) 또는 단말(130)에 응답된다.
요청된 API의 프로세스가 S405에서 실행된 후, S406에서 애플리케이션 모듈(300)은 실행이 처리되었는지를 결정한다. S406에서 애플리케이션 모듈(300)이 실행이 실패했다고 결정한 경우, 애플리케이션 모듈(300)은 S409에서 클라이언트 시스템(110) 또는 단말(130)에 실행의 실패를 응답한다. 실행이 처리된 경우, 흐름은 S408로 진행하고, 애플리케이션 모듈(300)은 클라이언트 시스템(110) 또는 단말(130)에 실행 결과를 응답한다.
S403에서의 API 실행 결정이 도 5를 참조하여 상세하게 설명될 것이다. API 실행 결정은 API-실행-횟수 제한 값을 이용하여 수행된다. 제1 실시예에 따른 설명에서, 단위 시간은 1분이다. 하지만, 단위 시간은 이 값에 제한되지 않으며, 예컨대 30초 또는 1시간일 수도 있다. 결정 흐름을 위한 몇몇 방법이 존재한다. 제1 실시예에 따르면, 그 대표 방법이 기술될 것이다.
도 5는 현재 시간이 API 실행 횟수가 계수되는 기준 시간인 경우 API 실행 결정의 흐름을 도시한다. S501에서, API 실행 제어 모듈(301)은 API 실행 이력으로부터 단위 시간당 각각의 API의 실행 횟수를 취득한다. 이제, API 실행 제어 모듈(301)은 현재 시간으로부터 1분 전까지의 API 실행 횟수를 취득한다. 표 4는 API 실행 이력을 도시한다. API 실행 이력은 애플리케이션 모듈(300)이 각각의 API를 실행할 때 기록되고 실행된 API 및 실행 시간을 포함한다.
제1 실시예에 따르면, 예컨대 API 실행은 2016년 10월 1일 10:00:10에 요청된다. API 실행 제어 모듈(301)은, API 실행이 요청된 시간으로부터 1분 전까지 실행된 API 1의 실행 횟수를 계산한다. 표 4로부터, API 실행이 요청되기 1분 전인 2016년 10월 1일 09:59:10로부터 2016년 10월 1일 10:00:10까지 API 1이 3회 실행되었기 때문에 API 1의 실행 횟수는 "3"인 것으로 결정된다.
[표 4]
Figure pat00004
S502에서, API 실행 제어 모듈(301)은 S501의 결과와 S402에서 계산된 API n의 API-실행-횟수 제한 값을 비교하고, API n의 API 실행 횟수가 API n의 API-실행-횟수 제한 값 미만인지를 결정한다. S502의 결과가, API 1의 API 실행 횟수가 API 1의 API-실행-횟수 제한 값 미만인 경우, 흐름은 S503으로 진행한다. API 1의 API 실행 횟수가 API 1의 API-실행-횟수 제한 값 이상인 경우, 흐름은 S504로 진행한다. API 1의 경우, API 1의 API 실행 횟수는 S501의 결과로부터 "3"이고, "50"인(표 3 참조) API 1의 API-실행-횟수 제한 값 미만이고, 흐름은 S503으로 진행한다.
S503에서, API 실행 제어 모듈(301)은 API n이 실행가능하다고 결정한다. S504에서, API 실행 제어 모듈(301)은 API n이 실행불능이라고 결정한다. 모든 API의 실행 결정이 S505에서 이루어질 때까지 S502 내지 S505가 반복된다.
후속하는 기술은 단위 시간이 사전 결정된 간격으로 분할되고 API 실행 횟수가 상기 분할된 간격에서 계수되는 경우 API 실행 결정의 흐름을 도시한다. 상기 흐름에서는, 도 5의 S501 대신에, API 실행 제어 모듈(301)이 일정 간격으로 각각의 API의 API 실행 횟수 이력으로부터 지난 1분 동안의 API 실행 횟수를 취득한다. 표 5는 이 경우 API 1의 API 실행 횟수 이력의 일 예를 도시한다. 이제, API-실행-횟수 제한 값을 위한 단위 시간이 1분으로 설정되기 때문에, 이 경우의 기술에서, API 1의 API 실행 횟수는 15초 간격으로 계수된다. 이 경우, API 실행 횟수의 간격은 15초로 제한되지 않으며, 간격이 단위 시간 분할에 의해 취득된다면 임의의 간격이 될 수 있다.
예컨대, 제1 실시예에 따르면, API 실행 제어 모듈(301)은 2016년 10월 1일 10:00:10에 API 1의 실행 요청을 접수한다. API 실행 제어 모듈(301)은 API 1의 실행이 요청된 시간을 기초로 지난 1분 동안 API 1의 API 실행 횟수를 계수한다. 구체적으로, API 실행 제어 모듈(301)은 실행 횟수를 2016년 10월 1일 09:59:15-29, 2016년 10월 1일 09:59:30-44, 2016년 10월 1일 09:59:45-59, 및 2016년 10월 1일 10:00:00-14에 추가한다. 표 5로부터, API 1의 API 실행 횟수는 "45"인 것으로 결정된다. 실행 횟수는 1분 주기에 대해 결정되지만, 이는 예에서 주어진 것과 같이 실행 요청 접수까지 1분 주기일 필요는 없다.
[표 5]
Figure pat00005
S502로부터 S505까지의 흐름은 도 5를 참조하여 기술된 흐름과 동일하며, 그 상세한 설명은 생략된다. 이제, API 1의 API 실행 횟수는 API 1의 API-실행-횟수 제한 값 미만이며, 그에 따라 API 1은 실행가능인 것으로 결정된다.
도 4 및 도 5를 참조한 후속하는 구체적 기술은 자동 스케일링 기능이 가상 서버(302) 수의 증가 또는 감소를 수행하는 경우를 도시한다. 예컨대, 웹 서비스는 2개의 가상 서버(302), 가상 서버(A302) 및 가상 서버(B302)에 의해 제공되고, 이 상태에서 가상 서버(C302)가 자동 스케일링 기능에 의해 추가된다.
API 실행 제어 모듈(301)은 S400에서 API 실행 요청을 접수한 후, API 실행 제어 모듈(301)은 S401에서 가상 서버(302)의 수를 취득한다. 이제, 가상 서버(302)의 수가 자동 스케일링 기능에 의해 3으로 증가되고, 가상 서버(302)의 취득된 수는 "3"이다. S402에서, 표 1의 API-실행-횟수 제한 값은 "3"에 의해 나누어지고, 가상 서버당 API-실행-횟수 제한 값은 API 1에 대해 33회, API 2에 대해 16회 및 API 3에 대해 33회로 결정된다. API-실행-횟수 제한 값은 새로운 API-실행-횟수 제한 값으로서 작동 중인 가상 서버의 수를 기초로 임의의 비율로 각각의 가상 서버(302)에 분배될 수 있다. 이제, 표 1의 API-실행-횟수 제한 값은 가상 서버(302)의 수인 "3"으로 나누어질 수 없다. 따라서, 표 6에서는 그 나머지가 제외된다. 상기 나머지는 가상 서버(302) 중 임의의 하나로 분배될 수 있다. 표 6은 가상 서버당 API-실행-횟수 제한 값을 도시한다.
[표 6]
Figure pat00006
후속하여, S501에서 API 실행 제어 모듈(301)은 API 실행 횟수 이력으로부터 API 실행 횟수를 취득한다. 이제, API 1의 API 실행 횟수의 예가 기술될 것이다. 표 7a, 표 7b 및 표 7c는 가상 서버(A302), 가상 서버(B302) 및 가상 서버(C302)의 API 1의 실행 이력을 도시한다. 제1 실시예에 따르면, 예컨대 API 1의 실행은 2016년 10월 1일 10:00:10에 각각의 가상 서버(302)에 요청된다. 실행 요청으로부터 1분 후까지의 API 1의 API 실행 횟수는 표 7a로부터 가상 서버(A302)에 대해 22회, 표 7b로부터 가상 서버(B302)에 대해 40회인 것을 알 수 있다. 가상 서버(C302)는 표 7c로부터 API 1을 실행하지 않았다는 것을 알 수 있다.
[표 7a]
Figure pat00007
[표 7b]
Figure pat00008
[표 7c]
Figure pat00009
S502 내지 S505를 통해, API 실행 제어 모듈(301)은 표 6의 API-실행-횟수 제한 값과 표 7a 내지 표 7c의 API 실행 횟수를 비교하여, 가상 서버(A302)가 API를 실행할 수 있으며, 가상 서버(B302)가 API를 실행할 수 없으며, 가상 서버(C302)가 API를 실행할 수 있다는 것을 결정한다.
후속하는 기술은 자동 스케일링 기능이 웹 서비스에 대한 액세스 수의 감소에 기인하여 수행되고 가상 서버(302)의 수가 감소되는 것을 도시한다. 예컨대, 가상 서버의 수는, 웹 서비스가 3개의 가상 서버(302), 가상 서버(A302), 가상 서버(B302) 및 가상 서버(C302)에 의해 제공되는 상태로부터 자동 스케일링 기능에 의해 2개(가상 서버(A302) 및 가상 서버(B302))로 감소된다.
S400에서, API 실행 제어 모듈(301)은 API 실행 요청을 접수한다. 후속하여, S401에서 API 실행 제어 모듈(301)은 가상 서버(302)의 수를 취득한다. 가상 서버(302)의 수는 2이고, 따라서 가상 서버(302)의 취득된 수는 "2"이다.
S402에서, API 실행 제어 모듈(301)은 가상 서버(302)의 수 및 API-실행-횟수 제한 값에 기초하여 각각의 가상 서버(302)에 할당되는 새로운 API-실행-횟수 제한 값을 계산한다. 표 1의 API-실행-횟수 제한 값은 가상 서버의 수인 "2"로 나누어 지고, 새로운 API-실행-횟수 제한 값은 API 1에 대해 50회, API 2에 대해 25회 그리고 API 3에 대해 50회로 결정된다.
후속하여, S501에서 API 실행 제어 모듈(301)은 API 실행 횟수 이력으로부터 API 실행 횟수를 취득한다. 표 8a는 가상 서버(A302)의 API 1의 API 실행 횟수 이력을 도시한다. 표 8b는 가상 서버(B302)의 API 1의 API 실행 횟수 이력을 도시한다. 예컨대, API 1의 실행은 2016년 10월 1일 10:01:40에 가상 서버(A302) 및 가상 서버(B302)에 대해 요청된다. 표 8a로부터, 실행 요청으로부터 1분 후까지의 API 1의 API 실행 횟수는 가상 서버(A302)에 대해 35회인 것으로 결정된다. 표 8a에서 API 실행 횟수 "35"와 API 1의 API-실행-횟수 제한 값 "50"이 비교되고, 가상 서버(A302)가 API를 실행할 수 있다고 결정된다.
가상 서버(B302)의 경우, 표 8b로부터, 실행 요청으로부터 1분 후까지의 API 1의 API 실행 횟수가 30회인 것으로 결정된다. 표 8b의 API 실행 횟수 "30"과 API 1의 API-실행-횟수 제한 값 "50"이 비교되고, 가상 서버(B302)가 API를 실행할 수 있다고 결정된다.
[표 8a]
Figure pat00010
[표 8b]
Figure pat00011
제1 실시예에 따르면, 자동 스케일링 기능이 수행될 때, 가상 서버(302)당 새로운 API-실행-횟수 제한 값이 계산될 수 있으며, API-실행-횟수 제한 값이 업데이트될 수 있다. 따라서, 많은 릴리즈된 API가 실행되고 서비스 시스템(140)의 부하가 증가될 때에도, 자동 스케일링 기능이 웹 서비스를 중지하지 않은 상태에서 요청들이 처리될 수 있게 하고, 스로틀링 기능은 작동 중인 가상 서버(302)로 하여금 API 실행을 제한하게 한다. 릴리즈된 API의 API 실행 횟수가 감소하는 경우, 웹 서비스는 가상 서버(302)의 API 실행 능력이 충분하게 이용되는 상태에서 구현될 수 있다.
자동 스케일링 기능이 제공되지 않는 경우에도, 본 발명을 이용하면, 각각의 가상 서버(302)의 새로운 API-실행-횟수 제한 값(표 3 참조)이 가상 서버의 수(표 2 참조) 및 사전 결정된 API-실행-횟수 제한 값(표 1)에 기초하여 결정되게 할 수 있다.
후속하는 기술은, API를 통해 수행되는 웹 서비스가 외부 API를 실행하는 경우에 API 실행 제어 모듈(301)이 새로운 API-실행-횟수 제한 값을 설정하는 제2 실시예를 도시한다.
외부-API-실행-횟수 제한 값이 서비스 시스템(120) 내에 설정되고 외부 API 중 하나가 상기 값보다 큰 횟수로 실행되는 경우, 서비스 시스템(120)의 기능은 이용불능이 된다. 외부-API-실행-횟수 제한 값은 외부 API가 실행된 후 계수된 총 횟수(이하, 외부 API 실행 횟수로 지칭됨)를 제한하기 위한 값이다. 외부 API 실행 횟수가 외부-API-실행-횟수 제한 값을 초과하고, 서비스 시스템(120)의 기능이 이용불능이 될 때, 외부 API를 이용하는 API 역시 패널티의 결과로서 이용불능이 되고 서비스 시스템(140)이 정지된다. 이러한 이유로, 외부 API를 이용하는 경우에 API-실행-횟수 제한 값이 외부-API-실행-횟수 제한 값에 따라 설정될 필요가 있다.
본 실시예에 따르면, API-실행-횟수 제한 값을 설정하는 방법이 도 6을 참조하여 기술될 것이다.
클라이언트 서비스(400)에 의해 실행되는 API 1, API 2 및 API 3은 웹 서비스를 수행한다. 웹 서비스는 외부 API 1, 외부 API 2 및 외부 API 3을 실행한다. 도 10a는 본 발명의 이미지 뷰를 도시한다. 클라이언트 시스템(110)에 의해 구현되는 웹 서비스는 클라이언트 서비스(400)로 이하 지칭된다. 서비스 시스템(140)에 의해 구현되는 웹 서비스는 리소스 서비스(401)로 이하 지칭된다. 서비스 시스템(120)에 의해 구현되는 웹 서비스는 외부 웹 서비스(402)로 이하 지칭된다(도 10a 내지 도 10d 및 도 11a 내지 도 11d 참조). 이제, 예로서, 클라이언트 서비스(400)가 API를 실행한다. 하지만, 단말(130)에 의해 구현되는 웹 브라우저의 기능이 API를 실행한다고 간주될 수도 있다.
도 6의 흐름은, 각각의 가상 서버(302)가 기동할 때, 각각의 가상 서버(302)가 클라이언트 시스템(110) 또는 단말(130)로부터의 API 실행 요청을 접수할 때, 또는 각각의 가상 서버(302)가 도 6의 흐름을 주기적으로 수행할 때 시작한다. 도 6의 예에서, 흐름은 S400에서 API 실행 요청이 접수될 때 시작한다.
S601에서, API 실행 제어 모듈(301)은 각각의 API를 통해 수행되는 웹 서비스에 의해 실행되는 외부 API에 대한 정보를 취득 및 관리한다. 이 예에서, 각각의 API를 통해 수행되는 리소스 서비스(401)에 의해 실행되는 외부 API에 대한 정보가 취득된다. 구체적으로, API 실행 제어 모듈(301)은 API 1을 통해 수행되는 리소스 서비스(401)에 의한 외부 API 1의 실행, API 2를 통해 수행되는 리소스 서비스(401)에 의한 외부 API 2의 실행 및 API 3을 통해 수행되는 리소스 서비스(401)에 의한 외부 API 3의 실행에 대한 정보를 취득 및 관리한다.
S602에서, API 실행 제어 모듈(301)은 외부-API-실행-횟수 제한 값을 취득 및 관리한다. 이제, 외부-API-실행-횟수 제한 값 "600"은 표 9에 도시된 바와 같이 API 실행 제어 모듈(301)에 의해 취득되어 API 실행 제어 모듈(301)에 의해 관리된다.
[표 9]
Figure pat00012
S603에서, API 실행 제어 모듈(301)은 외부-API-실행-횟수 제한 값을 API의 수로 나눠서 API-실행-횟수 제한 값을 계산한다. 각각의 API의 API-실행-횟수 제한 값의 계산은 외부-API-실행-횟수 제한 값으로서 S602에서 취득된 외부-API-실행-횟수 제한 값 그 자체를 이용하는 방법에 제한되지 않는다. 방법은, 외부 API가 외부-API-실행-횟수 제한 값을 초과하는 횟수로 실행된 후에 외부 API가 실행가능하도록 값을 설정할 수 있다. 이제, 후자의 방법이 이용되고, 외부-API-실행-횟수 제한 값은 외부-API-실행-횟수 제한 값의 75%인 "450"이다. 외부-API-실행-횟수 제한 값이 설정될 때의 백분율은 75%가 아닐 수도 있다. 후술되는 실시예에 대해서도 동일한 사항이 적용된다. 이제, 리소스 서비스(401)는 3개의 API를 릴리즈하고, API의 수는 "3"이다. 외부-API-실행-횟수 제한 값 "450"은 API의 수인 "3"으로 나누어지고, 각각의 API의 API-실행-횟수 제한 값은 "150"의 계산 값이 되도록 결정된다.
S604에서, 미리 서비스 시스템에 저장된 API-실행-횟수 제한 값 및 계산된 API-실행-횟수 제한 값이 비교되어, 새로운 API-실행-횟수 제한 값으로서 더 작은 값이 설정된다. 이제, 서비스 시스템(140)의 API 실행 제어 모듈(301)에 저장된 API-실행-횟수 제한 값(표 1) 및 S603에서 계산된 각각의 API의 API-실행-횟수 제한 값 "150"이 비교되어, 새로운 API-실행-횟수 제한 값으로 더 작은 값이 설정된다. 표 10은 S604에서의 비교 후 결과를 도시한다.
[표 10]
Figure pat00013
표 1에 도시된 API-실행-횟수 제한 값 및 S603에서의 계산 결과가 DB 서버(305)의 제한 값을 고려하여 비교된다. DB 서버(305)가 이용되지 않는 경우, S603에서 획득된 API-실행-횟수 제한 값 "150"이 새로운 API-실행-횟수 제한 값으로 설정될 수 있다. API-실행-횟수 제한 값이 표 1의 API-실행-횟수 제한 값을 초과하는 경우에도, 적어도 패널티로서 외부 웹 서비스(402)의 이용불능 상태가, 외부-API-실행-횟수 제한 값을 고려한 API-실행-횟수 제한 값(S603)을 API 실행 횟수가 초과하지 않는 경우에 발생하지 않는다. 따라서, S603에서 계산된 API-실행-횟수 제한 값을 표 1의 값과 비교하는 단계는 필수적이지는 않다. DB 서버(305)를 이용하는 일부 API의 API-실행-횟수 제한 값이 설정되는 경우, 단지 API-실행-횟수 제한 값이 설정될 때에만 표 1의 값과의 비교가 이루어질 필요가 있다. 후술되는 실시예에 대해서도 동일한 사항이 적용된다.
외부-API-실행-횟수 제한 값이 표 9에 도시된 바와 같이 서비스 시스템(120)에 의해 릴리즈된 외부 API의 외부-API-실행-횟수 제한 값의 합으로 표현되는 경우(이하 제1 패턴으로 지칭됨)에 부가하여, 외부-API-실행-횟수 제한 값이 각각의 외부 API에 대해 설정되는 경우(이하 제2 패턴으로 지칭됨)도 고려될 수 있다. 제2 패턴에서 새로운 API-실행-횟수 제한 값을 설정하는 방법이 도 6 내지 도 11a를 참조하여 기술될 것이다. 이제, 예로서, 클라이언트 서비스(400)가 API를 실행한다. 하지만, 단말(130)에 의해 구현되는 웹 브라우저의 기능이 API를 실행한다고 간주될 수도 있다. 이제, 제2 패턴이 도 6의 S603이 후술되는 바와 같이 대체되는 방식으로 구현된다.
S400 및 S601은 제2 실시예에 따른 제1 패턴의 경우에서와 동일한 방식으로 동일한 결과를 획득하며, 그 상세한 설명은 생략된다.
S602에서, API 실행 제어 모듈(301)은 각각의 API를 통해 수행되는 리소스 서비스(401)에 의해 실행되는 외부 API에 대한 정보를 취득 및 관리한다. 구체적으로, API 실행 제어 모듈(301)은 외부 API 1, 외부 API 2 및 외부 API 3의 외부-API-실행-횟수 제한 값을 취득하고, 외부-API-실행-횟수 제한 값을 "200"으로 설정하고 표 11에 도시된 바와 같이 정보를 관리한다.
[표 11]
Figure pat00014
상술된 S603 대신에, 각각의 외부 API의 외부-API-실행-횟수 제한 값은 API-실행-횟수 제한 값으로 설정된다. API-실행-횟수 제한 값은, S602에서 취득한 외부-API-실행-횟수 제한 값(표 11 참조)의 75%인 "150"인 것으로 결정된다. 제한 값이 설정되는 백분율은 75%가 아닐 수도 있다. 제2 패턴의 경우, 각각의 외부 API의 외부-API-실행-횟수 제한 값은 미리 결정된다. 따라서, S603의 경우에서와 같이 각각의 API의 API-실행-횟수 제한 값을 계산하기 위해 API의 수로 외부-API-실행-횟수 제한 값을 나눌 필요가 없다. S604는 제2 실시예에 따른 제1 패턴과 동일한 방식으로 동일한 결과(표 10 참조)를 획득한다.
가상 서버(302)당 API-실행-횟수 제한 값은, 제2 실시예에 따라 설정된 API-실행-횟수 제한 값(표 10 참조)이 가상 서버(302)의 수로 나누어지는 방식으로 획득된다. 제2 실시예에 따르면, 2개의 가상 서버(302)가 존재하는 경우, S604에서 획득된 API-실행-횟수 제한 값(표 10 참조)은 가상 서버(302)의 수인 "2"로 나누어진다. 가상 서버당 API 1 및 API 3의 API-실행-횟수 제한 값은 "50"의 획득 값이며, 가상 서버당 API 2의 API-실행-횟수 제한 값은 "25"의 획득 값이다.
하지만, API-실행-횟수 제한 값을 결정하는 방법은 이 계산 방법에 제한되지 않는다. 동일하지 않은 API-실행-횟수 제한 값들이 가상 서버(302)에 할당될 수 있으며, 새로운 API-실행-횟수 제한 값으로 설정될 수 있다. 동일하지 않은 API-실행-횟수 제한 값이 할당될 때, 적어도 1 이상의 API-실행-횟수 제한 값이 각각의 가상 서버(302)에 할당된다.
제2 실시예에 따르면, 가상 서버당 API-실행-횟수 제한 값은, 가상 서버(302)가 자동 스케일링 기능을 갖는지와 무관하게 외부-API-실행-횟수 제한 값에 따라 설정될 수 있다. 이 방법은 각각의 API의 기능이 대응하는 외부 API를 실행할 수 있게 하고, 외부 웹 서비스(402)가 외부-API-실행-횟수 제한 값으로 인해 정지하는 것을 방지하고, 패널티로 인해 리소스 서비스(401)가 정지하는 것을 방지한다. 외부-API-실행-횟수 제한 값이 변경되는 경우, API-실행-횟수 제한 값은 자동적으로 변경될 수 있으며, 그 적절한 값이 유지될 수 있다.
제3 실시예 이후의 실시예에 따라 고려된 경우, 클라이언트 서비스(400) 또는 단말(130)에 의해 구현되는 웹 브라우저의 기능이 API를 1회 실행할 때, API를 통해 수행되는 리소스 서비스(401)는 1회보다 많이 외부 API를 실행할 수 있다. 이 경우, 실행 횟수는 "API 실행 횟수당 외부 API 실행 횟수"로 지칭된다(클라이언트 서비스(400) 또는 단말(130)에 의해 구현되는 웹 브라우저의 기능이 API를 실행하는 횟수가 "API 실행 횟수"로 지칭되고, API를 통해 수행되는 리소스 서비스(401)가 외부 API를 실행하는 횟수가 "외부 API 실행 횟수"로 지칭된다.
제2 실시예에 따르면, API 실행 횟수당 외부 API 실행 횟수는 1회이다. API 실행 횟수당 외부 API 실행 횟수가 "2" 이상일 때 제2 실시예에 따라 설정된 외부-API-실행-횟수 제한 값 "200"이 이용되는 경우, 외부 API 실행 횟수는 "400" 이상이되고, 외부-API-실행-횟수 제한 값은 API 실행 횟수가 "200"일 때에도 "200"을 초과한다. 그 결과, 서비스 시스템(120)은 이용불능이되고, 외부 API를 사용하는 API 역시 패널티로 인해 이용불능이되고, 서비스 시스템(140)은 정지된다. 이러한 이유로, API 실행 횟수당 외부 API 실행 횟수를 고려하여 API-실행-횟수 제한 값이 설정될 필요가 있다.
제1 패턴과 관련하여, API-실행-횟수 제한 값을 설정하는 방법이 도 8을 참조하여 기술될 것이다. 클라이언트 서비스(400)에 의해 실행되는 API 1, API 2 및 API 3은 리소스 서비스(401)를 수행하고, 리소스 서비스(401)는 외부 API 1, 외부 API 2 및 외부 API 3을 실행한다. 도 10b는 본 발명의 이미지 뷰를 도시한다.
도 8의 흐름은, 각각의 가상 서버(302)가 기동할 때, 각각의 가상 서버(302)가 클라이언트 시스템(110) 또는 단말(130)로부터의 API 실행 요청을 접수할 때, 또는 각각의 가상 서버(302)가 도 8의 흐름을 주기적으로 수행할 때 시작한다. 도 8의 예에서, 흐름은 S400에서 API 실행 요청이 접수될 때 시작한다.
S601은 제2 실시예에 따른 제1 패턴의 경우에서와 동일한 방식으로 획득하며, 그 상세한 설명은 생략된다. 이제, API 1에 의해 실행되는 리소스 서비스(401)가 외부 API 1을 2회 실행하고, 리소스 서비스(401)는 API 2의 경우 외부 API 2를 1회 실시하고, 리소스 서비스(401)는 API 3의 경우 외부 API 3을 2회 실행한다. API 실행 제어 모듈(301)은 이들에 관한 정보를 취득 및 관리한다.
S602에서, API 실행 제어 모듈(301)은 외부-API-실행-횟수 제한 값을 취득 및 관리한다. 구체적으로, 외부-API-실행-횟수 제한 값 "600"은 API 실행 제어 모듈(301)에 의해 취득되고, 제2 실시예에 따른 제1 패턴의 경우에서와 같이 동일한 정보(표 9 참조)가 API 실행 제어 모듈(301)에 의해 관리된다.
S801에서, API 실행 제어 모듈(301)은 API 실행 횟수당 외부 API 실행 횟수의 합을 취득 및 관리한다. 이제, API 실행 횟수당 API 1, API 2 및 API 3의 외부 API 실행 횟수의 합은 5회이고, API 실행 제어 모듈(301)은 표 12에 도시된 바와 같이 API 실행 횟수당 외부 API 실행 횟수의 합을 관리한다.
[표 12]
Figure pat00015
S802에서, API 실행 제어 모듈(301)은 외부-API-실행-횟수 제한 값을 API 실행 횟수당 외부 API 실행 횟수로 나눠서, API 실행 횟수당 외부 API 실행 횟수에 대해 외부-API-실행-횟수 제한 값을 계산한다. 구체적으로, S602에서 취득된 외부-API-실행-횟수 제한 값(표 9 참조)을 S801에서 취득된 API 실행 횟수당 외부 API 실행 횟수의 합(표 12 참조)으로 나눔으로써, API 실행 횟수당 외부 API 실행 횟수에 대해 외부-API-실행-횟수 제한 값을 계산한다. 이때, S602에서 취득된 외부-API-실행-횟수 제한 값은 외부-API-실행-횟수 제한 값을 그 자체로 이용할 수 있다. 외부 API가 외부-API-실행-횟수 제한 값을 초과하는 횟수로 실행된 후에 외부 API가 실행가능하도록 값이 설정될 수 있다. 이제, 후자의 방법이 이용되고, 외부-API-실행-횟수 제한 값은 외부-API-실행-횟수 제한 값의 75%인 "450"이다. 값 "450"은 API 실행 횟수당 외부 API 실행 횟수의 합인 "5"로 나누어지고, API 실행 횟수당 외부 API 실행 횟수에 대한 외부-API-실행-횟수 제한 값은 "90"의 획득 값인 것으로 결정된다. 그 결과, API 실행 제어 모듈(301)은 외부-API-실행-횟수 제한 값을 표 13에 도시된 바와 같이 설정한다.
[표 13]
Figure pat00016
S703에서, 미리 서비스 시스템에 저장된 API-실행-횟수 제한 값과 외부-API-실행-횟수 제한 값이 비교되어 더 작은 값을 새로운 API-실행-횟수 제한 값으로 설정한다. 이제, API 실행 제어 모듈(301) 내에 저장된 API-실행-횟수 제한 값(표 1 참조) 및 S802에서 계산된 외부-API-실행-횟수 제한 값(표 13 참조)이 비교된다. 표 14는 그 결과를 도시한다.
[표 14]
Figure pat00017
표 1에 도시된 API-실행-횟수 제한 값 및 S802에서 계산된 결과가 DB 서버(305)의 제한 값을 고려하여 비교된다. DB 서버(305)가 이용되지 않는 경우, S802에서 획득된 API-실행-횟수 제한 값 "90"은 각각의 API의 API-실행-횟수 제한 값으로 설정될 수 있다. 후술되는 실시예에 대해서도 동일한 사항이 적용된다.
제3 실시예의 제2 패턴에서 API-실행-횟수 제한 값을 설정하는 방법이 도 7 및 도 11b를 참조로 이제 기술될 것이다. 이제, 예로서, 클라이언트 서비스(400)가 API를 실행한다. 하지만, 단말(130)에 의해 구현되는 웹 브라우저의 기능이 API를 실행한다고 간주될 수도 있다.
도 7의 흐름은, 각각의 가상 서버(302)가 기동할 때, 각각의 가상 서버(302)가 클라이언트 시스템(110) 또는 단말(130)로부터의 API 실행 요청을 접수할 때, 또는 각각의 가상 서버(302)가 도 7의 흐름을 주기적으로 수행할 때 시작한다. 도 7의 예에서, 흐름은 S400에서 API 실행 요청이 접수될 때 시작한다.
S601은 제3 실시예에 따른 제1 패턴의 경우에서와 동일한 방식으로 동일한 결과를 획득하며, 그 상세한 설명은 생략된다.
S602에서, API 실행 제어 모듈(301)은 외부-API-실행-횟수 제한 값을 취득 및 관리한다. 이제, API 실행 제어 모듈(301)은 외부 API 1, 외부 API 2 및 외부 API 3의 외부-API-실행-횟수 제한 값을 취득하고, 외부-API-실행-횟수 제한 값으로 "200"이 설정된다. 제2 실시예에 따른 제2 패턴의 경우에서와 동일한 정보(표 11 참조)가 API 실행 제어 모듈(301)에 의해 관리된다.
S701에서, API 실행 제어 모듈(301)은 API 실행 횟수당 외부 API 실행 횟수를 취득 및 관리한다. 이제, API 1을 통해 수행되는 리소스 서비스(401)가 외부 API 1을 2회 실행하고, 리소스 서비스(401)는 API 2의 경우에 외부 API 2를 1회 실행하고, 리소스 서비스(401)는 API 3의 경우에 외부 API 3을 2회 실행하고, API 실행 제어 모듈(301)은 표 15에 도시된 바와 같이 API 실행 횟수당 외부 API 실행 횟수를 관리한다.
[표 15]
Figure pat00018
S702에서, 외부 API n의 외부-API-실행-횟수 제한 값은 API 실행 횟수당 외부 API 실행 횟수로 나누어져서, API 실행 횟수당 외부 API 실행 횟수에 대한 외부 API n의 외부-API-실행-횟수 제한 값을 계산한다. 이때, API-실행-횟수 제한 값은 상기 실시예에서와 같이 S602에서 취득된 외부-API-실행-횟수 제한 값(표 10 참조)의 75%인 "150"이다. API 1 (n = 1)의 경우, S602에서 취득된 외부 API 1의 외부-API-실행-횟수 제한 값 "150"은, S701에서 취득된 API 실행 횟수당 외부 API 실행 횟수인 "2"로 나누어지고, API 1을 통해 수행된 리소스 서비스(401)에 의해 실행되는 외부 API의 일 실행 횟수에 대한 API 1의 API-실행-횟수 제한 값이 획득 값 "75"인 것으로 결정된다.
S703은 제3 실시예에 따른 제1 패턴에서와 동일한 프로세스이고, 그 설명은 생략된다. API 1의 경우, API 실행 제어 모듈(301)에 저장된 API 1의 API-실행-횟수 제한 값 "100"과, S702에서 설정된 API 1의 API-실행-횟수 제한 값 "75"가 비교되어, API 1의 새로운 API-실행-횟수 제한 값으로 더 작은 값인 "75"가 설정된다.
S704에서, 모든 API의 API-실행-횟수 제한 값이 설정되었는지 가 결정된다. S702 내지 S704의 프로세스는 모든 API-실행-횟수 제한 값이 설정되도록 결정될 때까지 반복된다. 표 16은 제3 실시예에 따른 제2 패턴으로 설정된 API-실행-횟수 제한 값을 도시한다.
[표 16]
Figure pat00019
가상 서버(302)당 새로운 API-실행-횟수 제한 값은, 제3 실시예에 따라 설정된 API-실행-횟수 제한 값(표 14 및 표 16 참조)이 가상 서버(302)의 수로 나누어지는 방식으로 획득된다. 2개의 가상 서버(302)가 존재하는 경우, 제3 실시예에 다른 제1 패턴에서, 표 14의 API-실행-횟수 제한 값은 가상 서버(302)의 수인 "2"로 나누어진다. 가상 서버당 API 1 및 API 3의 API-실행-횟수 제한 값은 획득 값 "45"이고, 가상 서버당 API 2의 API-실행-횟수 제한 값은 획득 값 "25"이다.
제3 실시예에 다른 제2 패턴에서, 표 16의 API-실행-횟수 제한 값은 가상 서버(302)의 수인 "2"로 나누어진다. 가상 서버당 API 1 및 API 3의 API-실행-횟수 제한 값은 획득 값 "37"이고, 가상 서버당 API 2의 API-실행-횟수 제한 값은 획득 값 "25"이다. 가상 서버당 API 1 및 API 3의 API-실행-횟수 제한 값이 계산될 때 나머지는 가상 서버(302) 중 임의의 하나에 분배될 수 있다.
API-실행-횟수 제한 값을 결정하는 방법은 이 계산 방법에 제한되지 않는다. 동일하지 않은 API-실행-횟수 제한 값들이 가상 서버(302)에 할당될 수 있으며, 새로운 API-실행-횟수 제한 값으로 설정될 수 있다. 동일하지 않은 API-실행-횟수 제한 값이 할당될 때, 적어도 1 이상의 API-실행-횟수 제한 값이 각각의 가상 서버(302)에 할당된다.
제3 실시예에 따르면, 가상 서버당 API-실행-횟수 제한 값은 각각의 API를 통해 수행되는 리소스 서비스(401)가 가상 서버(302)가 자동 스케일링 기능을 갖는지 여부와 무관하게 대응하는 외부 API를 실행하는 횟수에 따라 설정될 수 있다. 이 방법은, 각각의 API의 기능이 대응하는 외부 API를 실행할 수 있게 하고, 외부-API-실행-횟수 제한 값으로 인해 리소스 서비스(401) 및 외부 웹 서비스(402)가 정지하는 것을 방지한다. 외부-API-실행-횟수 제한 값이 변경되는 경우, API-실행-횟수 제한 값은 자동적으로 변경될 수 있으며, 그 적절한 값이 유지될 수 있다.
후속하는 기술은 각각의 API를 통해 수행되는 리소스 서비스(401)가 외부 API를 실행하는 경우 API-실행-횟수 제한 값이 설정되는 제4 실시예를 도시한다.
제1 패턴과 관련하여, API-실행-횟수 제한 값을 설정하는 방법은 도 8을 참조하여 기술될 것이다. 클라이언트 서비스(400)에 의해 실행되는 API 1 및 API 2는 리소스 서비스(401)를 수행하고, 리소스 서비스(401)는 외부 API 1, 외부 API 2 및 외부 API 3을 실행한다. 도 10c는 본 발명의 이미지 뷰를 도시한다. 이제, 예로서, 클라이언트 서비스(400)가 API를 실행한다. 하지만, 단말(130)에 의해 구현되는 웹 브라우저의 기능이 API를 실행한다고 간주될 수도 있다.
도 8의 흐름은, 각각의 가상 서버(302)가 기동할 때, 각각의 가상 서버(302)가 클라이언트 시스템(110) 또는 단말(130)로부터의 API 실행 요청을 접수할 때, 또는 각각의 가상 서버(302)가 도 8의 흐름을 주기적으로 수행할 때 시작한다. 도 8의 예에서, 흐름은 S400에서 API 실행 요청이 접수될 때 시작한다.
S601에서, API 실행 제어 모듈(301)은 각각의 API를 통해 수행되는 웹 서비스에 의해 호출 및 실행되는 외부 API에 대한 정보를 취득한다. 이제, API 1을 통해 수행되는 리소스 서비스(401)가 외부 API 1을 1회 실행하고, 외부 API 2를 2회 실시하고, 리소스 서비스(401)는 API 2의 경우 외부 API 3을 2회 실행한다.
S602에서, API 실행 제어 모듈(301)은 외부-API-실행-횟수 제한 값을 취득 및 관리한다. 이제, 외부-API-실행-횟수 제한 값 "600"은 API 실행 제어 모듈(301)에 의해 취득되고, 제2 실시예에 따른 제1 패턴의 경우에서와 동일한 정보(표 9 참조)가 API 실행 제어 모듈(301)에 의해 관리된다.
S801에서, API 실행 제어 모듈(301)은 API 실행 횟수당 외부 API 실행 횟수의 합을 취득 및 관리한다. 이제, API 1 및 API 2를 통해 수행되는 리소스 서비스(401)는 외부 API를 총 5회 실행한다. 그 결과, API 실행 제어 모듈(301)의 관리는 표 17에 도시된 바와 같다.
[표 17]
Figure pat00020
S802는 제3 실시예에 따른 제1 패턴의 경우에서와 동일한 방식으로 동일한 결과(표 13 참조)를 획득한다. 후속하여, S703에서, 미리 서비스 시스템 내에 저장된 API-실행-횟수 제한 값 및 외부-API-실행-횟수 제한 값이 비교되어, 더 작은 값이 새로운 API-실행-횟수 제한 값으로 설정된다. 이제, API 실행 제어 모듈(301) 내에 저장된 API-실행-횟수 제한 값(표 1 참조)과 S802에서 계산된 외부-API-실행-횟수 제한 값이 비교되어, 더 작은 값이 새로운 API-실행-횟수 제한 값으로 설정된다. 표 18은 비교 후 결과를 도시한다.
[표 18]
Figure pat00021
표 1에 도시된 API-실행-횟수 제한 값 및 S802에서 계산된 결과가 DB 서버(305)의 제한 값을 고려하여 비교된다. DB 서버(305)가 이용되지 않는 경우, S802에서 획득된 외부-API-실행-횟수 제한 값이 API-실행-횟수 제한 값으로 설정될 수 있다.
제4 실시예의 제2 패턴에서 API-실행-횟수 제한 값을 설정하는 방법이 도 9 및 도 11c를 참조로 기술될 것이다. 이제, 예로서, 클라이언트 서비스(400)가 API를 실행한다. 하지만, 단말(130)에 의해 구현되는 웹 브라우저의 기능이 API를 실행한다고 간주될 수도 있다.
도 9의 흐름은, 각각의 가상 서버(302)가 기동할 때, 각각의 가상 서버(302)가 클라이언트 시스템(110) 또는 단말(130)로부터의 API 실행 요청을 접수할 때, 또는 각각의 가상 서버(302)가 도 9의 흐름을 주기적으로 수행할 때 시작한다. 도 9의 예에서, 흐름은 S400에서 API 실행 요청이 접수될 때 시작한다.
S601은 제4 실시예에 따른 제1 패턴의 경우에서와 동일한 방식으로 동일한 결과를 획득하며, 그 상세한 설명은 생략된다.
S602에서, API 실행 제어 모듈(301)은 외부-API-실행-횟수 제한 값을 취득 및 관리한다. 이제, API 실행 제어 모듈(301)은 외부 API 1, 외부 API 2 및 외부 API 3의 외부-API-실행-횟수 제한 값을 취득하고, 외부-API-실행-횟수 제한 값으로 "200"이 설정된다. 제2 실시예에 따른 제2 패턴의 경우에서와 동일한 정보(표 11 참조)가 API 실행 제어 모듈(301)에 의해 관리된다.
S701에서, API 실행 제어 모듈(301)은 API 실행 횟수당 외부 API 실행 횟수를 취득 및 관리한다. 이제, API 1을 통해 수행되는 리소스 서비스(401)가 외부 API 1을 1회 실행하고 외부 API 2를 2회 실행하고, 리소스 서비스(401)는 API 2의 경우에 외부 API 3을 2회 실행하고, API 실행 제어 모듈(301)은 표 19에 도시된 바와 같이 API 실행 횟수당 외부 API 실행 횟수를 관리한다.
[표 19]
Figure pat00022
S901에서, 각각의 외부 API의 외부-API-실행-횟수 제한 값은 API 실행 횟수당 외부 API 실행 횟수에 의해 나누어져서, API 실행 횟수당 외부 API 실행 횟수에 대한 각각의 외부 API의 외부-API-실행-횟수 제한 값을 계산한다. 이제, S602에서 취득된 외부-API-실행-횟수 제한 값 및 S701에서 취득된 API 실행 횟수당 외부 API 실행 횟수는 API 실행 횟수당 외부 API 실행 횟수에 대한 각각의 외부 API의 외부-API-실행-횟수 제한 값을 계산하는데 이용된다. 계산에서, API-실행-횟수 제한 값은, S602에서 취득된 외부-API-실행-횟수 제한 값의 75%인 "150"이다. 구체적으로, 외부 API 1은 API 1에 의해 수행되는 리소스 서비스(401)에 의해 1회 실행되고, API 실행 횟수당 외부 API 실행 횟수에 대한 외부 API 1의 외부-API-실행-횟수 제한 값은 S602에서 설정된 외부-API-실행-횟수 제한 값 "150"이다. 외부 API 2는 API 1에 의해 수행되는 리소스 서비스(401)에 의해 2회 실행되고, API 실행 횟수당 외부 API 실행 횟수에 대한 외부 API 2의 외부-API-실행-횟수 제한 값은 S602에서 설정된 외부-API-실행-횟수 제한 값 "150"을, API 실행 횟수당 외부 API 실행 횟수인 "2"로 나눔으로써 획득된 "75"이다. 표 20은 API 실행 제어 모듈(301)에서 설정되는 API 실행 횟수당 외부 API 실행 횟수에 대한 외부-API-실행-횟수 제한 값을 도시한다.
[표 20]
Figure pat00023
S902에서, API 실행 횟수당 외부 API 실행 횟수에 대한 각각의 외부 API의 외부-API-실행-횟수 제한 값의 최소 값은 API n의 API-실행-횟수 제한 값으로 설정된다. 구체적으로, API 1(n = 1)의 경우에, API 1에 의해 수행되는 리소스 서비스(401)는 외부 API 1 및 외부 API 2를 실행하고, S901에서의 계산 결과(표 20 참조)인 "150" 및 "75"가 비교되어, API 1의 API-실행-횟수 제한 값으로 더 작은 값인 "75"가 설정된다.
S604는 제4 실시예에 따른 제1 패턴에서와 동일한 프로세스이고, 그 설명은 생략된다. API 1의 경우, API 실행 제어 모듈(301)에 저장된 API 1의 API-실행-횟수 제한 값 "100" 및 S902에서 설정된 API 1의 API-실행-횟수 제한 값 "75"가 비교되어, API 1의 API-실행-횟수 제한 값으로 더 작은 값인 "75"가 설정된다.
S903에서, 모든 API의 API-실행-횟수 제한 값이 설정되었는지가 결정된다. S902 내지 S903의 프로세스는 모든 API-실행-횟수 제한 값이 설정된 것으로 결정될 때까지 반복된다. 표 21은 제4 실시예에 따른 제2 패턴으로 설정된 API-실행-횟수 제한 값을 도시한다.
[표 21]
Figure pat00024
제4 실시예에 따르면, 상이한 API들을 통해 수행되는 리소스 서비스(401)는 동일한 외부 API를 실행하지 않는다. 후술되는 다른 실시예에서, 일부 API를 통해 수행되는 리소스 서비스(401)는 동일한 외부 API를 실행하고, API-실행-횟수 제한 값이 설정된다. 구체적으로, 도 10d 및 도 11d에 도시된 바와 같이, API를 통해 수행된 리소스 서비스(401)는 하나의 외부 API를 실행한다.
다른 실시예의 제1 패턴(도 10d 참조)과 관련하여, API-실행-횟수 제한 값은 도 10b 및 도 10c의 경우에서와 같이 도 8을 참조하여 설정된다. 제1 패턴(도 10b 참조)의 제3 실시예 및 본 실시예에 따르면, 외부-API-실행-횟수 제한 값, API 실행 횟수당 외부 API 실행 횟수의 합 및 API의 수는 동일하다. 이러한 이유로, 제3 실시예에 따른 제1 패턴과 동일한 결과(표 14 참조)가 동일한 외부 API가 실행되는지 여부와 무관하게 획득된다. 따라서, 도 10d의 경우에 API-실행-횟수 제한 값을 설정하는 방법의 설명은 생략된다.
다른 실시예의 제2 패턴(도 11d 참조)과 관련하여, API-실행-횟수 제한 값은 제4 실시예에 따른 제2 패턴(도 11c)의 경우에서와 같이 도 9를 참조하여 설정된다. 따라서, 도 11c의 경우에서와 동일한 단계의 상세한 설명은 생략되며, 상이한 결과를 얻는 단계(S701 및 S901)가 후술된다.
S701에서, API 실행 제어 모듈(301)은 API 실행 횟수당 외부 API 실행 횟수를 취득 및 관리한다. 이제, 도 11d로부터, API 실행 제어 모듈(301)은 표 22에 도시된 바와 같이 API 실행 횟수당 외부 API 실행 횟수를 관리한다.
[표 22]
Figure pat00025
S901에서, API 실행 횟수당 외부 API 실행 횟수에 대한 각각의 외부 API의 외부-API-실행-횟수 제한 값이 계산된다. 이제, S602에서 취득된 외부-API-실행-횟수 제한 값(표 11 참조) 및 S701에서 취득된 API 실행 횟수당 외부 API 실행 횟수가 이용되어, API 실행 횟수당 외부 API 실행 횟수에 대한 각각의 외부 API의 외부-API-실행-횟수 제한 값을 계산한다. 외부-API-실행-횟수 제한 값은 상기 실시예에서와 같이 외부-API-실행-횟수 제한 값 "200"의 75%인 "150"이다.
도 11d에서, 외부 API 1은 API 1 및 API 3을 통해 수행되는 리소스 서비스(401)에 의해 2회 실행되고, API 실행 횟수당 외부 API 실행 횟수에 대한 외부 API 1의 외부-API-실행-횟수 제한 값은 API 실행 횟수당 외부 API 실행 횟수의 합인 "2"로 외부-API-실행-횟수 제한 값 "150"을 나눔으로써 획득되는 "75"이다. 외부 API 3은 API 1 및 API 3을 통해 수행되는 리소스 서비스(401)에 의해 2회 실행되고, API 실행 횟수당 외부 API 실행 횟수에 대한 외부 API 3의 외부-API-실행-횟수 제한 값은 API 실행 횟수당 외부 API 실행 횟수의 합인 "2"로 외부-API-실행-횟수 제한 값 "150"을 나눔으로써 획득되는 "75"이다. 외부 API 2는 API 2를 통해 수행되는 리소스 서비스(401)에 의해 1회 실행되고, API 실행 횟수당 외부 API 실행 횟수에 대한 외부 API 2의 외부-API-실행-횟수 제한 값은 API 실행 횟수당 외부 API 실행 횟수의 합인 "1"로 S602에서 설정된 외부-API-실행-횟수 제한 값 "150"을 나눔으로써 획득되는 "150"이다. 표 23은 API 실행 횟수당 외부 API 실행 횟수에 대한 각각의 외부 API의 외부-API-실행-횟수 제한 값을 도시한다. 표 23의 값은 API 실행 제어 모듈(301)에서 설정된다.
[표 23]
Figure pat00026
S902 내지 S903의 프로세스는 모든 API-실행-횟수 제한 값이 S903에서 설정된 것으로 결정될 때까지 반복된다. 그 결과, 도 11d에 도시된 실시예에 따라 설정된 API-실행-횟수 제한 값은 제3 실시예에 따른 제2 패턴(표 16 참조)의 경우에서와 동일하다.
가상 서버(302)당 API-실행-횟수 제한 값은 제4 실시예에 따라 설정된 API-실행-횟수 제한 값(표 16 참조)이 가상 서버(302)의 수로 나누어지는 방식으로 획득된다.
예컨대, 2개의 가상 서버(302)가 존재한다. 제4 실시예에 따른 계산 결과는 가상 서버(302)의 수인 "2"로 나누어지고, 가상 서버(302)당 API-실행-횟수 제한 값이 획득 값이 되도록 결정된다. 제4 실시예에 다른 제1 패턴(도 10c 참조)의 경우에, 표 18의 API-실행-횟수 제한 값은 가상 서버(302)의 수인 "2"로 나누어지고, 가상 서버당 API 1의 API-실행-횟수 제한 값은 획득 값 "45"이고, 가상 서버당 API 2의 API-실행-횟수 제한 값은 획득 값 "25"이다. API-실행-횟수 제한 값이 가상 서버(302)의 수로 나누어질 수 없는 경우, 그 나머지는 가상 서버(302) 중 임의의 하나에 분배될 수 있다. 다른 패턴에도 동일 사항이 적용된다.
API-실행-횟수 제한 값을 결정하는 방법은 이 계산 방법에 제한되지 않는다. 동일하지 않은 API-실행-횟수 제한 값들이 가상 서버(302)에 할당될 수 있으며, 새로운 API-실행-횟수 제한 값으로 설정될 수 있다. 동일하지 않은 API-실행-횟수 제한 값이 할당될 때, 적어도 1 이상의 API-실행-횟수 제한 값이 각각의 가상 서버(302)에 할당된다.
제4 실시예에 따르면, 가상 서버당 API-실행-횟수 제한 값은, 하나의 API에 의해 수행되는 리소스 서비스(401)가 외부 API를 실행하는 경우 및 API에 의해 수행되는 리소스 서비스(401)가 하나의 외부 API를 실행하는 경우에도, 가상 서버(302)가 자동 스케일링 기능을 갖는지 여부와 무관하게 설정될 수 있다. 이 방법은, 각각의 API의 기능이 대응하는 외부 API를 실행시킬 수 있게 하고, 외부-API-실행-횟수 제한 값으로 인해 외부 웹 서비스(402)가 정지되는 것을 방지하고, 패널티로 인해 리소스 서비스(401)가 정지되는 것을 방지한다. 외부-API-실행-횟수 제한 값이 변경되는 경우, API-실행-횟수 제한 값은 자동적으로 변경될 수 있으며, 그 적절한 값이 유지될 수 있다.
상기 실시예에 따르면, API의 수는 2 또는 3이고, 외부 API의 수는 3이다. 하지만, 상기 흐름은 API의 수, 외부 API의 수 및 API 실행 횟수당 외부 API 실행 횟수가 예컨대 이러한 값으로부터 변경되는 경우에도 효과적이다. 제2 내지 제4 실시예에 기술되지 않은 발명의 요지는 제1 실시예에서와 동일하다.
제3 및 제4 실시예에 따른 제1 패턴에서, 도 8의 흐름도를 이용하여 API-실행-횟수 제한 값을 계산하는 방법이 기술된다. 하지만, 이 방법에 제한되지 않는다. API-실행-횟수 제한 값은 외부-API-실행-횟수 제한 값은 API의 수로 나누어 외부-API-실행-횟수 제한 값을 우선 설정하도록 도 7 및 도 9의 제2 패턴에서 기술된 것과 동일한 방식으로 계산될 수 있다.
본 발명의 실시예들은, 본 발명의 전술한 실시예(들) 중 하나 이상의 기능을 수행하기 위해 저장 매체(예컨대, 비-일시적 컴퓨터-판독가능 저장 매체) 상에 기록된 컴퓨터 실행가능 명령어를 판독 및 실행하는 시스템 또는 장치의 컴퓨터에 의해 실현될 수 있으며, 예컨대, 전술한 실시예(들) 중 하나 이상의 기능을 수행하기 위해 저장 매체로부터 컴퓨터 실행가능 명령어를 판독 및 실행함으로써 상기 시스템 또는 장치의 컴퓨터에 의해 수행되는 방법에 의해 실현될 수 있다. 컴퓨터는 CPU(central processing unit), MPU(micro processing unit) 또는 다른 회로 중 하나 이상을 포함할 수 있으며, 분리된 컴퓨터들 또는 분리된 컴퓨터 프로세서의 네트워크를 포함할 수 있다. 컴퓨터 실행가능 명령어는, 예컨대, 네트워크 또는 저장 매체로부터 컴퓨터에 제공될 수 있다. 저장 매체는, 예컨대 RAM(random-access memory), ROM(read only memory), 분산식 컴퓨팅 시스템의 스토리지, 광 디스크(예컨대, CD(compact disc), DVD(digital versatile disc), 또는 BD™(Blu-ray Disc)), 플래시 메모리 디바이스, 메모리 카드 등 중 하나 이상을 포함할 수 있다.
(기타의 실시예)
본 발명은, 상기의 실시형태의 1개 이상의 기능을 실현하는 프로그램을, 네트워크 또는 기억 매체를 개입하여 시스템 혹은 장치에 공급하고, 그 시스템 혹은 장치의 컴퓨터에 있어서 1개 이상의 프로세서가 프로그램을 읽어 실행하는 처리에서도 실현가능하다.
또한, 1개 이상의 기능을 실현하는 회로(예를 들어,ASIC)에 의해서도 실행가능하다.
본 발명을 예시적인 실시예를 참조하여 기술되었지만, 본 발명은 기술된 예시적인 실시예로 제한되지 않는다. 물론, 본 발명이 단지 예로서 기술되었으며, 상세한 변형예는 본 발명의 범주 내에서 이루어질 수 있다는 것이 이해될 것이다.

Claims (16)

  1. 가상 서버 상에 웹 서비스를 구현하고 클라이언트 서비스로부터의 릴리즈된 API의 호출에 응답하여 상기 웹 서비스를 제공하는 서비스 시스템이며,
    상기 웹 서비스가 구현되는 가상 서버의 수 및 상기 API가 실행되는 횟수를 제한하는 데 사용되는 API-실행-횟수 제한 값을 기초로 가상 서버당 API-실행-횟수 제한 값을 결정하도록 구성되는 결정 수단과,
    상기 API가 실행된 횟수가 상기 API-실행-횟수 제한 값을 초과하는지 여부에 따라, 상기 웹 서비스를 제공하거나 상기 API의 호출을 오류로서 처리하도록 구성되는 제어기를 포함하는, 서비스 시스템.
  2. 제1항에 있어서,
    상기 서비스 시스템의 부하에 따라 상기 웹 서비스가 구현되는 상기 가상 서버의 수를 변경하도록 구성되는 자동 스케일링 수단과,
    상기 자동 스케일링 수단에 의해 변경되는 상기 가상 서버의 수를 확인하도록 구성되는 확인 수단을 더 포함하며,
    상기 결정 수단은, 상기 API-실행-횟수 제한 값 및 상기 확인 수단에 의해 확인되는 상기 가상 서버의 수에 기초하여 가상 서버당 새로운 API-실행-횟수 제한 값을 결정하도록 구성되는, 서비스 시스템.
  3. 제2항에 있어서,
    상기 확인 수단은 상기 가상 서버당 새로운 API-실행-횟수 제한 값을 결정하는 상기 결정 수단에 응답하여 상기 자동 스케일링 수단에 의해 변경되는 상기 가상 서버의 수를 확인하도록 구성되는, 서비스 시스템.
  4. 제2항 또는 제3항에 있어서,
    상기 서비스 시스템의 상기 자동 스케일링 수단에 의해 변경되는 상기 가상 서버의 수를 관리하고, 상기 서비스 시스템의 부하에 따라 상기 웹 서비스가 구현되는 새로운 가상 서버를 기동하는 관리기를 더 포함하고,
    상기 확인 수단은 상기 가상 서버의 수를 확인하기 위해 상기 관리기에 상기 가상 서버의 수를 문의하도록 구성되는, 서비스 시스템.
  5. 제2항 또는 제3항에 있어서,
    상기 자동 스케일링 수단은, 사전 결정된 부하 이상으로의 상기 서비스 시스템의 부하 증가에 응답하여 상기 가상 서버의 수를 증가시키고, 사전 결정된 부하 이하로의 상기 서비스 시스템의 부하 감소에 응답하여 상기 가상 서버의 수를 감소시키도록 구성되는, 서비스 시스템.
  6. 제2항 또는 제3항에 있어서,
    상기 자동 스케일링 수단은 큐 내에 저장된 작업 및 상기 가상 서버의 각각에 의해 이용되는 리소스 중 하나 이상에 기초하여 상기 서비스 시스템의 부하를 결정하도록 구성되는, 서비스 시스템.
  7. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 서비스 시스템에 의해 구현되는 상기 웹 서비스는 복수의 API를 릴리즈하고,
    상기 결정 수단은 상기 웹 서비스가 구현되는 상기 가상 서버의 수 및 상기 API의 각각에 대해 결정된 상기 API-실행-횟수 제한 값을 기초로 상기 가상 서버당 API-실행-횟수 제한 값을 결정하도록 구성되는, 서비스 시스템.
  8. 제7항에 있어서,
    호출되고 있는 특정 API에 응답하여, 상기 제어기는 상기 결정 수단에 의해 결정된 상기 특정 API에 대응하는 상기 API-실행-횟수 제한 값을 기초로 상기 웹 서비스를 제공하거나 또는 상기 특정 API의 실행을 오류로 처리하는, 서비스 시스템.
  9. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 웹 서비스는 인증 및 승인에 관련된 데이터를 처리하는 인증 및 승인 서비스, 비즈니스 폼 데이터를 생성하기 위한 데이터를 처리하는 비즈니스 폼 서비스, 인쇄 데이터를 생성하기 위한 데이터를 처리하는 인쇄 서비스, 및 프린터에 대한 정보를 관리하고 보고 데이터를 생성하기 위한 데이터를 처리하는 프린터 관리 서비스 중 임의의 하나인, 서비스 시스템.
  10. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 결정 수단은 상기 API-실행-횟수 제한 값을 상기 가상 서버의 수로 나누는 방식으로 상기 가상 서버당 API-실행-횟수 제한 값을 결정하도록 구성되는, 서비스 시스템.
  11. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 결정 수단은, 수치 값이 상기 가상 서버의 각각에 할당되고 상기 수치 값의 합계가 상기 API-실행-횟수 제한 값과 동일하게 하는 방식으로, 상기 가상 서버당 API-실행-횟수 제한 값을 결정하도록 구성되는, 서비스 시스템.
  12. 제1항 내지 제3항 중 어느 한 항에 있어서,
    다른 서비스 시스템과 연계하도록 구성되는 연계 수단을 더 포함하고,
    상기 결정 수단은, 상기 웹 서비스가 다른 서비스 시스템에 의해 제공되는 외부 웹 서비스에 의해 릴리즈되는 외부 API를 실행하는 횟수를 제한하는데 이용되는 외부-API-실행-횟수 제한 값, 상기 API-실행-횟수 제한 값 및 상기 가상 서버의 수를 기초로 상기 가상 서버당 API-실행-횟수 제한 값을 결정하도록 구성되는, 서비스 시스템.
  13. 제12항에 있어서,
    상기 결정 수단은, API 실행 횟수당 외부 API 실행 횟수로 상기 외부-API-실행-횟수 제한 값을 나눔으로써 새로운 외부-API-실행-횟수 제한 값을 계산하고, 상기 새로운 외부-API-실행-횟수 제한 값, 상기 API-실행-횟수 제한 값, 및 상기 가상 서버의 수를 기초로 상기 가상 서버당 API-실행-횟수 제한 값을 결정하도록 구성되는, 서비스 시스템.
  14. 제13항에 있어서,
    상기 API 실행 횟수는 상기 API가 상기 클라이언트 서비스에 의해 실행되는 횟수이며,
    상기 외부 API 실행 횟수는 상기 외부 API가 상기 웹 서비스에 의해 실행되는 횟수인, 서비스 시스템.
  15. 가상 서버 상에 웹 서비스를 구현하고 클라이언트 서비스로부터의 릴리즈된 API의 호출에 응답하여 상기 웹 서비스를 제공하기 위한 제어 방법이며,
    상기 웹 서비스가 구현되는 상기 가상 서버의 수 및 상기 API가 실행되는 횟수를 제한하는 데 이용되는 API-실행-횟수 제한 값을 기초로 가상 서버당 API-실행-횟수 제한 값을 결정하는 단계와,
    호출되고 있는 상기 API에 응답하여, 결정된 상기 API-실행-횟수 제한 값을 기초로 상기 웹 서비스를 제공하거나 상기 API의 호출을 오류로서 처리하는 단계를 포함하는, 제어 방법.
  16. 하나 이상의 프로세서에 의해 실행될 때, 가상 서버 상에 웹 서비스를 구현하고 클라이언트 서비스로부터의 릴리즈된 API의 호출에 응답하여 상기 웹 서비스를 제공하는 제어 방법을 구현하기 위해 상기 하나 이상의 프로세서를 제어하는 명령어를 저장하는 컴퓨터 판독가능 저장 매체이며,
    상기 제어 방법은,
    상기 웹 서비스가 구현되는 상기 가상 서버의 수 및 상기 API가 실행되는 횟수를 제한하는 데 이용되는 API-실행-횟수 제한 값을 기초로 가상 서버당 API-실행-횟수 제한 값을 결정하는 단계와,
    호출되고 있는 상기 API에 응답하여, 결정된 상기 API-실행-횟수 제한 값을 기초로 상기 웹 서비스를 제공하거나 상기 API의 호출을 오류로서 처리하는 단계를 포함하는, 컴퓨터 판독가능 저장 매체.
KR1020170169895A 2016-12-13 2017-12-12 서비스 시스템 및 서비스 시스템의 제어 방법, 및 컴퓨터 판독가능 저장 매체 KR102227061B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2016-241706 2016-12-13
JP2016241706 2016-12-13

Publications (2)

Publication Number Publication Date
KR20180068300A true KR20180068300A (ko) 2018-06-21
KR102227061B1 KR102227061B1 (ko) 2021-03-15

Family

ID=60915167

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170169895A KR102227061B1 (ko) 2016-12-13 2017-12-12 서비스 시스템 및 서비스 시스템의 제어 방법, 및 컴퓨터 판독가능 저장 매체

Country Status (5)

Country Link
US (1) US11303546B2 (ko)
EP (1) EP3336700A1 (ko)
JP (1) JP6957194B2 (ko)
KR (1) KR102227061B1 (ko)
CN (1) CN108228346B9 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200120476A (ko) * 2019-04-11 2020-10-21 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 자원 분배를 위한 방법 및 장치

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110971637B (zh) * 2018-09-30 2022-02-08 武汉斗鱼网络科技有限公司 一种调用第三方服务接口的方法、调度器以及存储介质
US12033007B2 (en) * 2022-04-25 2024-07-09 Docusign, Inc. Enforcing application programming interface limits in a document management system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150180863A1 (en) * 2013-12-25 2015-06-25 Canon Kabushiki Kaisha Authority management server and authority management method
US20160323187A1 (en) * 2015-04-30 2016-11-03 Amazon Technologies, Inc. Managing load balancers associated with auto-scaling groups

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3543441B2 (ja) * 1995-09-19 2004-07-14 株式会社日立製作所 大域的なリソースキャッピング方法
US8489995B2 (en) * 2008-03-18 2013-07-16 Rightscale, Inc. Systems and methods for efficiently managing and configuring virtual servers
US8225325B2 (en) 2008-06-06 2012-07-17 Apple Inc. Multi-dimensional thread grouping for multiple processors
US8301761B2 (en) 2009-03-31 2012-10-30 International Business Machines Corporation Determining server load capacity with virtual users
JP2010267009A (ja) 2009-05-13 2010-11-25 Canon Inc ライセンス管理システム、ライセンス管理方法及びコンピュータプログラム
JP5378946B2 (ja) * 2009-10-26 2013-12-25 株式会社日立製作所 サーバ管理装置およびサーバ管理方法
US9495227B2 (en) 2012-02-10 2016-11-15 Twilio, Inc. System and method for managing concurrent events
US9665410B2 (en) 2013-03-12 2017-05-30 Google Inc. Processing of application programming interface traffic
CN103618758B (zh) 2013-10-31 2017-01-11 新浪网技术(中国)有限公司 Web服务器及其系统资源访问控制方法
JP6312536B2 (ja) 2014-06-13 2018-04-18 キヤノン株式会社 システム、方法、サーバーシステム、およびプログラム
CN104168133B (zh) 2014-07-11 2017-07-18 广州联智信息科技有限公司 一种动态配置api访问量的方法和网关及系统
US9582301B2 (en) 2014-09-17 2017-02-28 International Business Machines Corporation Method of defining javascript objects
US9766818B2 (en) 2014-12-31 2017-09-19 Samsung Electronics Co., Ltd. Electronic system with learning mechanism and method of operation thereof
CN104580489A (zh) 2015-01-20 2015-04-29 浪潮电子信息产业股份有限公司 一种云环境下的Web应用弹性扩展方法
CN105740376A (zh) 2016-01-27 2016-07-06 北京铭万智达科技有限公司 一种微服务中api调用统计和监控的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150180863A1 (en) * 2013-12-25 2015-06-25 Canon Kabushiki Kaisha Authority management server and authority management method
US20160323187A1 (en) * 2015-04-30 2016-11-03 Amazon Technologies, Inc. Managing load balancers associated with auto-scaling groups

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200120476A (ko) * 2019-04-11 2020-10-21 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 자원 분배를 위한 방법 및 장치

Also Published As

Publication number Publication date
US20180167288A1 (en) 2018-06-14
KR102227061B1 (ko) 2021-03-15
JP6957194B2 (ja) 2021-11-02
CN108228346B9 (zh) 2022-04-22
US11303546B2 (en) 2022-04-12
CN108228346B (zh) 2022-01-18
EP3336700A1 (en) 2018-06-20
CN108228346A (zh) 2018-06-29
JP2018097837A (ja) 2018-06-21

Similar Documents

Publication Publication Date Title
US11360793B2 (en) Stateful virtual compute system
US8819683B2 (en) Scalable distributed compute based on business rules
US10091126B2 (en) Cloud system, control method thereof, management server and control method thereof
US11093280B2 (en) Automatic reconfiguration of high performance computing job schedulers based on user behavior, user feedback, and job performance monitoring
WO2012056596A1 (ja) 計算機システム及び処理制御方法
US20100076925A1 (en) System for managing data collection processes
US11829796B2 (en) Automated rollback
US10944581B2 (en) Increasing processing capacity of processor cores during initial program load processing
CN104937584A (zh) 基于共享资源的质量向经优先级排序的虚拟机和应用程序提供优化的服务质量
US9185189B2 (en) Distributed control over client-side requests for server resources
WO2022132233A1 (en) Multi-tenant control plane management on computing platform
US11327767B2 (en) Increasing resources for partition to compensate for input/output (I/O) recovery event
US11347724B2 (en) System and method of allocation and centralized transaction handling across multiple micro service clients
KR102227061B1 (ko) 서비스 시스템 및 서비스 시스템의 제어 방법, 및 컴퓨터 판독가능 저장 매체
US9851988B1 (en) Recommending computer sizes for automatically scalable computer groups
US10754368B1 (en) Method and system for load balancing backup resources
US20200151021A1 (en) Increasing processing capacity of virtual machines
US10375161B1 (en) Distributed computing task management system and method
US10922120B2 (en) System and method for guided system restoration
JP5939620B2 (ja) コンピュータシステム、サーバ装置、負荷分散方法、及びプログラム
KR101955715B1 (ko) 복수의 자가적응형 어플리케이션들을 포함하는 임베디드 시스템
KR20230063015A (ko) 가상화 서버에서 가상머신 cpu 자원을 관리하는 장치 및 방법
JP6885441B2 (ja) ライセンス管理装置、ライセンス管理方法、及び、ライセンス管理プログラム
US10942779B1 (en) Method and system for compliance map engine
US20200249974A1 (en) Increasing processing capacity of virtual machines for an abnormal event

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