KR20170077182A - 제공자 네트워크에서의 규칙 기반 트리거들 중 특정한 하나의 트리거 - Google Patents

제공자 네트워크에서의 규칙 기반 트리거들 중 특정한 하나의 트리거 Download PDF

Info

Publication number
KR20170077182A
KR20170077182A KR1020177014234A KR20177014234A KR20170077182A KR 20170077182 A KR20170077182 A KR 20170077182A KR 1020177014234 A KR1020177014234 A KR 1020177014234A KR 20177014234 A KR20177014234 A KR 20177014234A KR 20170077182 A KR20170077182 A KR 20170077182A
Authority
KR
South Korea
Prior art keywords
actions
triggers
action
rules
rule
Prior art date
Application number
KR1020177014234A
Other languages
English (en)
Other versions
KR101999458B1 (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
Priority claimed from US14/529,097 external-priority patent/US10567476B2/en
Priority claimed from US14/529,096 external-priority patent/US10397128B2/en
Application filed by 아마존 테크놀로지스, 인크. filed Critical 아마존 테크놀로지스, 인크.
Publication of KR20170077182A publication Critical patent/KR20170077182A/ko
Application granted granted Critical
Publication of KR101999458B1 publication Critical patent/KR101999458B1/ko

Links

Images

Classifications

    • 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/0893Assignment of logical groups to network elements
    • 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/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5041Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
    • H04L41/5045Making service definitions prior to deployment
    • 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/0894Policy-based network configuration management
    • H04L67/16
    • H04L67/327
    • 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
    • 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/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • 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/16Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using machine learning or artificial intelligence
    • 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/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5041Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
    • H04L41/5054Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
    • 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/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5061Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the interaction between service providers and their network customers, e.g. customer relationship management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Databases & Information Systems (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computer And Data Communications (AREA)
  • Air Bags (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Vending Machines For Individual Products (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

제공자 네트워크에서 규칙 기반 트리거링을 구현하기 위한 방법, 시스템, 및 컴퓨터 판독가능 매체가 개시된다. 하나 이상의 트리거에 대한 조건이 충족되면, 그 하나 이상의 트리거를 포함하는 하나 이상의 규칙이 결정된다. 조건들은 복수의 자원을 포함하는 제공자 네트워크에서 결정된다. 하나 이상의 액션은 그 하나 이상의 트리거를 포함하는 하나 이상의 규칙에서 결정된다. 제공자 네트워크에서 자원들 중 하나 이상을 수정하는 것을 포함하는 하나 이상의 액션이 수행된다.

Description

제공자 네트워크에서의 규칙 기반 트리거들 중 특정한 하나의 트리거{RULE-BASED ACTION TRIGGERING IN A PROVIDER NETWORK}
많은 회사 및 기타 조직은,(예를 들어, 로컬 네트워크의 일부로서) 공동 위치하거나 여러 개의 별도의 지리적 위치에 있는(예를 들어, 하나 이상의 개인 또는 공중 중간 네트워크를 통해 접속된) 컴퓨팅 시스템들 등의 각자의 동작을 지원하도록 많은 컴퓨팅 시스템들을 상호 접속하는 컴퓨터 네트워크들을 운영한다. 예를 들어, 상당수의 상호 접속된 컴퓨팅 시스템들을 갖춘 분산 시스템들이 보편화되었다. 이러한 분산 시스템은 클라이언트와 상호 작용하는 웹 서버에 백엔드 서비스를 제공할 수도 있다. 이러한 분산 시스템은, 또한, 컴퓨팅 자원들을 고객에게 제공하도록 엔티티에 의해 운영되는 데이터 센터를 포함할 수도 있다. 일부 데이터 센터 운영자들은 다양한 고객이 소유한 하드웨어에 네트워크 액세스, 전력, 및 보안 설치 시설을 제공하는 한편, 다른 데이터 센터 운영자들은 고객이 사용할 수 있는 하드웨어 자원들을 또한 포함하는 "풀 서비스" 시설을 제공한다.
분산 시스템의 규모와 범위가 증가함에 따라, 자원들을 프로비저닝, 운영, 및 관리하는 작업들이 점차 복잡해졌다. 예를 들어, 분산 시스템의 다양한 구성요소에 문제가 발생할 때 유지 보수가 종종 필요하다. 시스템 관리자는 수동 및 임시 방식으로 이러한 유지 보수 작업을 수행하는 경우가 많다. 유지 보수 작업을 수동으로 수행하면, 결과가 불필요하게 비싸고 오류가 발생할 수도 있다. 또한, 시스템 관리자는 유지 보수 작업 수행을 위한 맞춤형 시스템을 개발하고 배치해야 할 수도 있다.
도 1은 일부 실시예들에 따라 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 일례를 도시한다.
도 2는 일부 실시예들에 따라 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다.
도 3은 일부 실시예들에 따라 큐(queue) 서비스를 포함한 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다.
도 4a는 일부 실시예들에 따라 액션에 대한 트리거의 일대일 맵핑을 포함하는 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다.
도 4b는 일부 실시예들에 따라 액션에 대한 트리거의 일대다 맵핑을 포함하는 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다.
도 4c는 일부 실시예들에 따라 액션에 대한 트리거의 다대일 맵핑을 포함하는 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다.
도 4d는 일부 실시예들에 따라 액션에 대한 트리거의 다대다 맵핑을 포함하는 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다.
도 5a는 일부 실시예들에 따라 액션에 대한 또한 큐 교환에 대한 트리거의 맵핑을 포함하는 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다.
도 5b는 일부 실시예들에 따라 액션이 아닌 큐 교환에 대한 트리거의 맵핑을 포함하는 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다.
도 6은 일부 실시예들에 따라 제공자 네트워크에서의 규칙 기반 액션 트리거링 방법을 예시하는 흐름도이다.
도 7은 일부 실시예들에 따라 제공자 네트워크에서의 규칙 기반 메시지 트리거링 방법을 예시하는 흐름도이다.
도 8은 일부 실시예들에 따라 제공자 네트워크에서의 스케줄 기반 액션 트리거링 방법을 예시하는 흐름도이다.
도 9는 일부 실시예들에 따라 규칙 기반 액션 트리거링을 위한 라우팅 핸들러의 시스템 환경의 예를 도시하는 흐름도이다.
도 10은 일부 실시예들에 따라 동적으로 로딩된 라우팅 맵의 사용을 포함하는 규칙 기반 액션 트리거링을 위한 라우팅 핸들러를 위한 시스템 환경의 예의 추가 양태들을 도시한다.
도 11은 일부 실시예들에 따라 특정 서브서비스를 위한 HTTP 클라이언트의 사용을 포함하는 규칙 기반 액션 트리거링을 위한 라우팅 핸들러를 위한 시스템 환경의 예의 추가 양태들을 도시한다.
도 12는 일부 실시예들에 따라 서브서비스의 예를 포함하는 규칙 기반 액션 트리거링을 위한 라우팅 핸들러를 위한 시스템 환경의 예의 추가 양태들을 도시한다.
도 13은 일부 실시예들에 따라 라우팅 맵을 업데이트하여 업데이트를 서브서비스에 반영하는 것을 포함하는 규칙 기반 액션 트리거링을 위한 라우팅 핸들러를 위한 시스템 환경의 예의 추가 양태들을 도시한다.
도 14는 일부 실시예들에 따라 라우팅 핸들러와 서브서비스에서의 메트릭 수집을 포함하는 규칙 기반 액션 트리거링을 위한 라우팅 핸들러를 위한 시스템 환경의 예의 추가 양태들을 도시한다.
도 15는 일부 실시예들에 따라 규칙 기반 액션 트리거링을 위한 라우팅 핸들러를 사용하는 방법을 예시하는 흐름도이다.
도 16은 일부 실시예들에서 사용될 수도 있는 컴퓨팅 장치의 일례를 도시한다.
실시예들은 몇몇 실시예들 및 예시적인 도면들에 대해 예로서 본원에 설명되지만, 통상의 기술자는 실시예들이 설명된 실시예들 또는 도면들로 한정되지 않는다는 것을 인식할 것이다. 도면들 및 이에 대한 상세한 설명은 실시예들을 개시된 특정 형태로 한정하려는 것이 아니라, 오히려, 본 발명이 청구범위에 의해 정의된 바와 같은 사상과 범위 내에 있는 모든 변경, 등가물, 및 대안을 포함하려는 것임을 이해해야 한다. 본원에 사용된 표제는 단지 조직적인 목적을 위한 것이며 청구범위 또는 상세한 설명의 범위를 한정하는 데 사용하려는 것이 아니다. 본원 전반에 걸쳐 사용되는 바와 같이, "수도 있다"라는 단어는, 의무적인 의미(즉, "해야 한다")라기보다는 관대한 의미로 사용된다(즉, "할 가능성이 있다"를 의미한다). 유사하게, "포함하다"(include), "포함하는"(including), 및 "포함하다"(includes)라는 단어들은 "포함하지만 이에 한정되지 않는다"를 의미한다.
제공자 네트워크에서 규칙 기반 액션 트리거링을 위한 방법 및 시스템의 다양한 실시예를 설명한다. 본원에 설명된 기술들을 사용하여, 규칙들은 트리거들 및 액션들에 기초하여 정의될 수도 있다. 일 실시예에서, 규칙은 하나 이상의 트리거 및 하나 이상의 액션을 포함할 수도 있다. 제공자 네트워크의 자원들은 자신들의 동작 중에 감시될 수도 있다. 트리거들 중 임의의 트리거에 대한 조건들이 충족되면, 규칙들의 트리거들에 연관된 모든 액션들이 수행될 수도 있다. 액션을 시작하기 위해, 액션을 설명하는 메시지가 생성되어 메시징 서비스(messaging service)에 송신될 수도 있다. 예를 들어, 메시징 서비스는 큐 서비스가 포함할 수도 있고, 메시지는 하나 이상의 큐에 배치될 수도 있다. 메시지는, 메시징 서비스로부터 메시지에 설명된 액션들을 수행하는 하나 이상의 액션 핸들러(action handler)로 전달될 수도 있다. 이러한 식으로, 제공자 네트워크의 유지 보수 작업 또는 다른 작업이 자동화될 수도 있다.
규칙 기반 액션 트리거링을 위한 라우팅 핸들러를 위한 방법 및 시스템의 다양한 실시예를 설명한다. 본원에 설명된 기술들을 사용하여, 라우팅 핸들러는 요청들을 다양한 서브서비스로 라우팅할 수도 있다. 라우팅 핸들러는, 외부 데이터 저장소에서 검색된 라우팅 맵을 사용하여 요청의 특정 동작을 특정 서브서비스에 맵핑할 수도 있다. 서브서비스는, 규칙 기반 액션 트리거링, 스케줄링 액션, 규칙에 기초한 액션 수행, 및/또는 임의의 다른 적절한 작업을 위한 서브서비스를 포함할 수도 있다. 특정 서브서비스에서의 하나 이상의 동작이 업데이트되면, 라우팅 핸들러 자체 대신에 라우팅 맵이 업데이트될 수도 있다. 라우팅 핸들러는 라우팅 핸들러들의 무리 중 일부일 수도 있다. 라우팅 핸들러 무리 전체 대신 라우팅 맵을 업데이트함으로써, 서브서비스에 대한 업데이트를 효율적으로 구현할 수도 있다.
제공자 네트워크에서의 규칙 기반 액션 트리거링
도 1은 일부 실시예들에 따라 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 일례를 도시한다. 규칙 기반 액션 트리거링 시스템(100)은, 규칙들에 기초하여 액션들을 트리거하고 수행하기 위한 복수의 구성요소를 포함할 수도 있다. 일 실시예에서, 규칙 기반 액션 트리거링 시스템(100)은, 트리거 정의 기능부(110A), 액션 정의 기능부(110B), 및 규칙 정의 기능부(110C)를 포함할 수도 있다. 데이터 저장소(115)는, 트리거 정의 기능부(110A), 액션 정의 기능부(110B), 및/또는 규칙 정의 기능부(110C)를 사용하여 정의된 트리거들(111A), 액션들(111B), 및 규칙들(111C)에 연관된 정보를 저장할 수도 있다. 데이터 저장소(115)는 데이터베이스 관리 기술과 같은 임의의 적합한 저장 기술을 사용하여 구현될 수도 있다.
규칙 기반 액션 트리거링 시스템(100)은, 또한, 사용자 인터페이스(105)를 포함할 수도 있다. 일 실시예에서, 사용자 인터페이스(105)는, 사용자가 트리거 정의 기능부(110A), 액션 정의 기능부(110B), 및/또는 규칙 정의 기능부(110C)를 사용하여 트리거(111A), 액션(111B), 및/또는 규칙(111C)을 정의 및/또는 선택하게 할 수도 있다. 예를 들어, 사용자 인터페이스(105)는 사용자가 하나 이상의 미리 정의된 트리거를 선택하게 하고 및/또는 하나 이상의 맞춤 트리거를 정의하게 할 수도 있다. 유사하게, 사용자 인터페이스(105)는, 사용자가 하나 이상의 미리 정의된 액션을 선택하게 하고 및/또는 하나 이상의 관행 액션(custom action)을 정의하게 할 수도 있다. 사용자 인터페이스(105)는 사용자가 하나 이상의 규칙을 정의하게 할 수도 있다. 일 실시예에서, 규칙은 하나 이상의 트리거와 하나 이상의 액션을 포함하도록 정의될 수도 있다. 일 실시예에서, 규칙은 트리거와 메시지 교환을 포함하도록 정의될 수도 있다. 트리거(111A), 액션(111B), 및 규칙(111C)의 정의는 도 4a, 도 4b, 도 4c, 도 4d, 도 5a 및 도 5b와 관련하여 아래에서 더욱 상세하게 설명한다.
규칙 기반 액션 트리거링 시스템(100)은 하나 이상의 컴퓨팅 장치를 사용하여 구현될 수도 있으며, 이들 중 임의의 컴퓨팅 장치는 도 16에 도시된 예시적인 컴퓨팅 장치(3000)에 의해 구현될 수도 있다. 다양한 실시예에서, 규칙 기반 액션 트리거링 시스템(100)의 기능의 부분들은 동일한 컴퓨팅 장치에 의해 또는 임의의 적절한 개수의 서로 다른 컴퓨팅 장치들에 의해 제공될 수도 있다. 서로 다른 컴퓨팅 장치들을 사용하여 규칙 기반 액션 트리거링 시스템(100)의 구성요소들 중 임의의 것이 구현되면, 구성요소들 및 이들의 각 컴퓨팅 장치들은 예를 들어 네트워크를 통해 통신 가능하게 결합될 수도 있다. 예시된 구성요소들의 각각은, 각자의 기능을 수행하는 데 사용가능한 소프트웨어와 하드웨어의 임의의 조합을 나타낼 수도 있다. 규칙 기반 액션 트리거링 시스템(100)은, 도시되지 않은 추가 구성요소들, 도시된 것보다 적은 구성요소들, 또는 도시된 구성요소들의 상이한 조합, 구성, 또는 양을 포함할 수도 있다는 점을 고려한다.
규칙 기반 액션 트리거링 시스템(100)은 하나 이상의 네트워크(190) 또는 다른 상호접속부를 사용하여 제공자 네트워크(170)에 결합될 수도 있다. 제공자 네트워크(170)는 컴퓨팅 자원들(171A 및 171B 내지 171N)과 같은 복수의 컴퓨팅 자원을 포함할 수도 있다. 자원들(171A 내지 171N)은, 임의의 적절한 개수와 구성의 컴퓨팅 인스턴스 및/또는 기타 처리 자원, 저장 자원, 데이터베이스 자원, 네트워크 자원, 전력 자원, 및/또는 기타 적절한 유형의 컴퓨팅 자원을 포함할 수도 있다. 예시를 위해 3개의 컴퓨팅 자원(171A, 171B, 및 171N)이 도시되어 있지만, 임의의 적절한 개수 및 구성의 컴퓨팅 자원들이 사용될 수도 있다는 것을 고려한다. 제공자 네트워크(170)는, 액션들에 대한 트리거들의 소스들, 트리거된 액션들의 타겟들, 및/또는 트리거된 액션들을 수행하는 하나 이상의 액션 핸들러를 포함할 수도 있다.
제공자 네트워크(170)는, 자원(예를 들어, 자원(171A 내지 171N)) 및/또는 서비스(다양한 유형의 클라우드 기반 컴퓨팅 또는 저장 장치)를 인터넷 및/또는 다른 네트워크를 통해 분산된 클라이언트들의 세트에 제공하도록 회사 또는 공공 부문 조직과 같은 엔티티에 의해 동작될 수도 있다. 제공자 네트워크(170)는, 제공자에 의해 제공되는 인프라스트럭처와 서비스를 구현하고 분배하는 데 사용되는 물리적 및/또는 가상화된 컴퓨터 서버들의 집합, 저장 장치들 및 네트워킹 장비 등의 다양한 자원 풀을 호스팅하는 다수의 데이터 센터를 포함할 수도 있다. 일부 실시예들에서, 자원들은, 가상 또는 물리적 컴퓨팅 인스턴스 또는 저장 인스턴스와 같은 "인스턴스"라고 하는 단위로 클라이언트에 제공될 수도 있다. 가상 컴퓨팅 인스턴스는, 예를 들어, (CPU의 유형과 개수, 메인 메모리 크기 등을 나타냄으로써 특정 될 수도 있는) 특정 된 컴퓨팅 용량 및 특정 된 소프트웨어 스택(예를 들어, 하이퍼바이저 상에서 실행될 수도 있는 운영 시스템의 특정 버전)을 갖는 하나 이상의 서버를 포함할 수도 있다. 다수의 상이한 유형의 컴퓨팅 장치들은, 범용 또는 특수 목적 컴퓨터 서버, 저장 장치, 네트워크 장치 등을 포함하는 상이한 실시예들에서 제공자 네트워크(170)의 자원들을 구현하도록 단독으로 또는 조합하여 사용될 수도 있다.
일 실시예에서, 제공자 네트워크(170)는 클라이언트들에 대한 자원 예약, 제어, 및 액세스 인터페이스의 유연한 세트를 구현할 수도 있다. 예를 들어, 제공자 네트워크(170)는, 클라이언트가 자원들에 대해 학습하고, 선택하고, 액세스를 구매하고, 및/또는 예약할 수 있게 하는 프로그래밍 자원 예약 인터페이스를 (예를 들어, 웹 사이트 또는 웹 페이지들의 세트를 통해) 구현할 수도 있다. 일 실시예에서, 자원들은 클라이언트 액세스가능 서비스를 사용하는 클라이언트를 대신하여 예약될 수도 있다. 일 실시예에서, 제공자 네트워크(170)는 제공자 네트워크의 선택된 자원 풀의 하나 이상의 자원을 사용하여 클라이언트를 대신하여 작업을 실행할 수도 있다. 일 실시예에서, 자원 풀은 다양한 작업의 예상 컴퓨팅 필요성에 기초하여 자동으로 선택될 수도 있다. 일 실시예에서, 자원 풀은 클라이언트가 제출한 특정 자원 요청 또는 예약에 기초하여 선택될 수도 있다.
제공자 네트워크(170)는 또한 감시 기능부(180)를 포함할 수도 있다. 감시 기능부(180)는, 예를 들어, 동작 동안 및/또는 자원의 사용 동안 자원들 중 임의의 것을 감시할 수도 있다. 감시 기능부(180)는 에이전트 소프트웨어 또는 다른 임의의 적절한 기술을 사용하여 개별적인 자원들을 감시할 수도 있다. 일 실시예에서, 제공자 네트워크 내의 자원들을 감시하는 것은, 하나 이상의 서비스 로그를 감시하는 것, 하나 이상의 서비스 메트릭을 감시하는 것, 및/또는 임의의 적합한 데이터 스트림을 감시하는 것을 포함할 수도 있다. 일 실시예에서, 감시는, 성능 메트릭, 사용 메트릭, 및/또는 자원들(171A 내지 171N)의 동작에 관한 다른 적절한 데이터를 소정의 임계값 및/또는 알람과 비교할 수도 있다. 임의의 적절한 소정의 임계값 및/또는 알람은 특정 트리거에 대한 하나 이상의 조건을 나타낼 수도 있다. 컴퓨팅 자원들의 감시가 트리거에 대한 임의의 조건이 충족됨을 나타내는 경우, 감시 기능부(180)는 트리거를 발화하거나 활성화할 수도 있다. 감시 기능부(180)는 임계값 및/또는 알람에 기초하여 트리거에 대한 조건들이 충족되었다고 결정할 수도 있다. 예를 들어, 감시 기능부(180)는 알람 상태 변화를 검출할 수도 있고, 트리거를 결과로서 발화시킬 수도 있다. 일 실시예에서, 외부 에이전트는 감시 기능부(180) 및 발화 트리거를 구현할 수도 있다. 일 실시예에서, 제공자 네트워크(170) 내의 서비스들은 감시 기능부(180) 및 발화 트리거를 구현할 수도 있다. 일 실시예에서, 감시 기능부(180)는, 적절한 애플리케이션 프로그래밍 인터페이스(API)를 통해 요청을 규칙 기반 액션 트리거링 시스템(100)에 송신함으로써 트리거를 발화할 수도 있다.
일 실시예에서, 규칙 기반 액션 트리거링 시스템(100)은 규칙 시행 기능부(120)를 포함할 수도 있다. 규칙 시행 기능부(120)는, 예를 들어, 발화 트리거에 대한 요청을 수신한 후에 발화된 트리거에 작용할 수도 있다. 트리거를 발화하라는 요청이 수신되면, 규칙 시행 기능부(120)는 트리거를 포함하는 규칙(존재하는 경우)을 결정할 수도 있다. 트리거를 포함하는 규칙을 결정하기 위해, 규칙 시행 기능부(120)는 데이터 저장소(115) 내의 저장된 규칙, 트리거, 및/또는 다른 적절한 데이터를 참조할 수도 있다. 발화된 트리거를 포함하는 임의의 규칙을 검색한 후에, 규칙 시행 기능부(120)는 검색된 규칙에 정의된 임의의 액션을 결정할 수도 있다. 이어서, 규칙 시행 기능부(120)는 검색된 규칙들에 정의된 임의의 액션들을 개시할 수도 있고 또는 그 외에는 액션들이 수행되게 할 수도 있다. 액션을 개시할 때, 규칙 시행 기능부(120)는, 예를 들어, 발화 트리거에 대한 요청에서 수신된 바와 같은 액션에 대한 메타데이터 또는 파라미터를 제공할 수도 있다. 이러한 식으로, 규칙 기반 액션 트리거링 시스템(100)은, 특정 트리거들이 활성화되면, 정의된 규칙들을 사용하여 특정 액션을 수행할 수도 있다.
도 2는 일부 실시예들에 따라 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다. 규칙 기반 액션 트리거링 시스템(100)은 메시지 생성 기능부(130)를 포함할 수도 있다. 메시지 생성 기능부(130)는, 규칙 시행 기능부(120)에 의해 호출되면, 예를 들어, 액션에 연관된 트리거가 발화될 때 수행될 액션을 설명하는 메시지(145)를 생성할 수도 있다. 메시지 생성 기능부(130)는 메시지(145)를 메시징 서비스(140)에 송신할 수도 있다. 메시지는, 액션에 연관된 기본 파라미터 및/또는 임의의 발화된 트리거와 함께 공급된 런타임 입력 파라미터에 기초하여 생성될 수도 있다. 일 실시예에서, 잡(job) 디스패처(150)는 메시징 서비스(140)와 상호 작용하여 메시지(145)에 기초하여 잡을 배정할 수도 있다.
일 실시예에서, 액션 실행 환경(160)은, 메시지(145)에 기술되고 잡 디스패처(150)에 의해 배정된 액션을 수행할 수도 있다. 액션 실행 환경(160)은, 스크립트, 워크플로우, 및/또는 컴파일된 프로그램 코드를 포함하는 명령어를 실행하기 위한 하나 이상의 환경을 포함할 수도 있다. 액션 실행 환경(160)은 액션 핸들러(161A 및 161B 내지 161N) 등의 하나 이상의 액션 핸들러를 포함할 수도 있다. 설명을 위해 3개의 액션 핸들러(161A, 161B, 161N)가 도시되어 있지만, 임의의 적절한 개수의 액션 핸들러가 사용될 수도 있다는 점을 고려한다. 액션 핸들러(161A 내지 161N)에 의해 수행되는 액션들은 자원들(171A 내지 171N) 및/또는 이들의 구성요소 중 임의의 것의 임의의 적절한 수정 및/또는 구성을 포함할 수도 있다. 예를 들어, 액션은, 특정 트리거가 발화될 때 제공자 네트워크(170)에서 컴퓨팅 인스턴스를 자동으로 종료, 일시중지, 또는 재시작할 수도 있다. 다른 일례로, 이미지 파일이 특정 저장 위치, 디렉토리, 또는 버킷에 추가될 때 이미지 파일의 크기를 미리 정의된 폭과 미리 정의된 높이로 자동으로 조정하는 액션을 수행할 수도 있다. 액션은, 발화되는 트리거에 기초하여, 스케줄에 기초하여, 또는 다른 컴퓨팅 구성요소나 사용자로부터의 요청에 기초하여 액션 핸들러에 의해 수행될 수도 있다.
일 실시예에서, 규칙 기반 액션 트리거링 시스템(100)은 추천 엔진을 포함할 수도 있다. 추천 엔진은, 머신 러닝 기술을 사용하여 고객 자원 사용 패턴 및/또는 자원 메타데이터를 기반으로 고객에게 자동화를 추천할 수도 있다. 추천 엔진은, 또한, 시간 경과에 따라 고객의 반응에 적응하고 추천을 개선할 수도 있다. 추천은, 규칙 기반 액션 트리거링 시스템(100)의 인기 있는 추세와 고객으로부터의 입력을 갖는 피드백 루프를 사용하여 개선될 수도 있다.
도 3은 일부 실시예들에 따라 큐 서비스를 포함한 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다. 일 실시예에서, 메시징 서비스(140)는 하나 이상의 큐를 관리하는 큐 서비스를 사용하여 구현될 수도 있다. 수행될 액션을 설명하는 메시지(145)는 메시징 서비스로 송신되거나 하나 이상의 큐에 배치될 수도 있다. 예시를 위해 3개의 큐(141A, 141B, 141N)가 도시되어 있지만, 임의의 적절한 개수의 큐가 사용될 수도 있다는 점을 고려한다. 일 실시예에서, 큐(141A)는 메시지 생성 기능부(130)에 의해 생성된 모든 메시지를 초기에 저장하는 프라이머리 큐일 수도 있고, 다른 큐들(141B-141N)은 프라이머리 큐가 모든 메시지를 처리하기 데 불충분한 경우에만 백업 큐로서 사용될 수도 있다.
일 실시예에서, 잡 디스패처(150)는 작업 폴러(task poller)(151)를 사용하여 구현될 수도 있다. 작업 폴러(151)는, 적절한 간격으로 하나 이상의 큐를 폴링하여 큐가 메시지, 예를 들어, 수행될 액션을 설명하는 메시지를 포함하는지 여부를 결정할 수도 있다. 작업 폴러(151)는, 프라이머리 큐(141A)로부터 적절한 에러 메시지를 수신할 때 백업 큐(141B-141N)의 사용을 개시할 수도 있다. 작업 폴러(151)는 특정 간격으로 다양한 큐(141A 내지 141N)의 각각을 폴링할 수도 있다. 일 실시예에서, 작업 폴러(151)는 백업 큐(141B 내지 141N)보다 프라이머리 큐(141A)를 자주 폴링할 수도 있다.
도 4a는, 일부 실시예들에 따라 액션에 대한 트리거의 일대일 맵핑을 포함하는 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다. 전술한 바와 같이, 데이터 저장소(115)는 트리거(111A), 액션(111B), 및 규칙(111C)을 저장할 수도 있다. 도 4a에 도시된 예에서, 트리거들(111A)은 트리거들(400A 및 400B 내지 400N)을 포함할 수도 있다. 그러나, 임의의 적절한 개수의 트리거가 데이터 저장소(115)에 저장될 수도 있다는 점을 고려한다.
도 4a에 도시된 예에서, 액션(111B)은 액션 구성(410A) 및 하나 이상의 추가 액션 구성(도시되지 않음)을 포함할 수도 있다. (액션 구성(410A)과 같은) 각 액션 구성은, (액션(411)과 같은) 액션, (기본 파라미터(412)와 같은) 액션에 대한 임의의 기본 파라미터, 및 (역할(들)(413)과 같은) 액션에 필요한 임의의 역할을 포함할 수도 있다. 액션은 하나 이상의 커맨드, 명령어, 또는 하나 이상의 작업을 수행하기 위한 기능의 다른 호출을 포함할 수도 있다. 액션은, 액션의 모든 호출에 적용되는 기본 파라미터들에 연관될 수도 있다. 일 실시예에서, 런타임 입력 파라미터는, 또한, 액션이 호출될 때 액션의 특정 인스턴스에 대해 특정 될 수도 있다. 일 실시예에서, 런타임 입력 파라미터는 기본 매개 변수를 보완할 수도 있지만 무효화하지 않을 수도 있다. 예를 들어, 액션이 이미지 파일이 추가될 때 이미지 파일을 리사이징하는 것을 포함하는 경우, 기본 파라미터는, 대상 폭과 높이를 포함할 수도 있고, 런타임 입력 파라미터는 이미지 파일의 저장 위치를 포함할 수도 있다. 역할은, 런타임시 액션이 자원들의 세트에 대한 액세스를 가질 수 있게 하는 허가 또는 다른 보안 증명서를 포함할 수도 있다. 역할은, 임의의 특정 사용자 또는 사용자들의 그룹과는 독립적일 수도 있으며, 연관된 액션에 대한 권한 위임을 나타낼 수도 있다.
도 4a에 도시한 예에서, 규칙(111C)은 규칙(420A) 및 하나 이상의 추가 규칙(도시되지 않음)을 포함할 수도 있다. 규칙(420A)은, 트리거(400A)와 같은 트리거들 중 하나 및 액션 구성(410A)과 같은 액션 구성들 중 하나를 특정 할 수도 있다. 트리거(400A)가 발화될 때, 규칙 시행 기능부(120)는 데이터 저장소(115)를 사용하여 트리거(400A)가 규칙(420A)의 부분임을 결정할 수도 있다. 규칙 시행 기능부(120)는, 또한, 데이터 저장소(115)를 사용하여 액션 구성(410A)도 규칙(420A)의 일부이고, 즉, 트리거(400A)에 결합되어 있음을 결정할 수도 있다. 이어서, 규칙 시행 기능부(120)는, 특정 된 액션(411)이 기본 파라미터들(412)(및 선택적으로 런타임 입력 파라미터들)을 사용하여 및 역할(들)(413)을 사용하여 수행되게 할 수도 있다. 일 실시예에서, 메시지 생성 기능부(130)는, 액션(411), 기본 파라미터(412), 임의의 런타임 입력 파라미터, 및 역할(들)(413)을 특정하는 메시지를 생성할 수도 있다.
도 4b는 일부 실시예들에 따라 액션에 대한 트리거의 일대다 맵핑을 포함하는 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다. 도 4b에 도시한 예에서, 트리거들(111A)은 트리거들(400A 및 400B 내지 400N)을 포함할 수도 있다. 그러나, 임의의 적절한 개수의 트리거가 데이터 저장소(115)에 저장될 수도 있다는 점을 고려한다. 도 4b에 도시한 예에서, 액션(111B)은 액션 구성들(410A 및 410B 내지 410N)을 포함할 수도 있다. 그러나, 임의의 적절한 개수의 액션 구성이 데이터 저장소(115)에 저장될 수도 있다는 점을 고려한다. 전술한 바와 같이, 액션 구성들(410A-410N)의 각각은, 액션, 액션에 대한 임의의 기본 파라미터들, 및 액션에 필요한 임의의 역할들을 포함할 수도 있다. 액션 구성들(410A-410N)의 개별적인 구성들은 (예를 들어, 상이한 기본 파라미터들을 갖는) 동일한 액션들 또는 상이한 액션들을 나타낼 수도 있다.
일 실시예에서, 규칙들(111C)은 액션들에 대한 트리거들의 일대다 맵핑을 포함할 수도 있다. 도 4b에 도시된 예에서, 규칙들(111C)은 규칙들(420A 및 420B)을 포함할 수도 있다. 규칙(420A)은 액션 구성(410A)에 대한 트리거(400A)의 결합을 나타낼 수도 있다. 규칙(420B)은 동일한 트리거(400A)를 다른 액션 구성(410B)에 결합하는 것을 나타낼 수도 있다. 트리거(400A)가 발화될 때, 규칙 시행 기능부(120)는 데이터 저장소(115)를 사용하여 트리거(400A)가 규칙들(420A 및 420B)의 일부라고 결정할 수도 있다. 규칙 시행 기능부(120)는, 또한, 데이터 저장소(115)를 사용하여 액션 구성(410A)이 규칙 (420A)의 일부이고 액션 구성(410B)이 규칙(420B)의 일부라고 결정할 수도 있다. 이어서, 규칙 시행 기능부(120)는 액션 구성들(410A 및 410B) 모두에 특정 된 액션들이 수행되게 할 수도 있다. 일 실시예에서, 메시지 생성 기능부(130)는, 액션, 액션에 연관된 기본 파라미터, 임의의 런타임 입력 파라미터, 및 임의의 필요한 역할(들)을 특정하는 하나 이상의 메시지를 생성할 수도 있다.
도 4c는 일부 실시예들에 따라 액션에 대한 트리거의 다대일 맵핑을 포함하는 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다. 도 4c에 도시된 예에서, 트리거들(111A)은 트리거들(400A 및 400B 내지 400N)을 포함할 수도 있다. 그러나, 임의의 적절한 개수의 트리거가 데이터 저장소(115)에 저장될 수도 있다는 점을 고려한다. 도 4c에 도시된 예에서, 액션(111B)은 액션 구성들(410A 및 410B 내지 410N)을 포함할 수도 있다. 그러나, 임의의 적절한 개수의 액션 구성이 데이터 저장소(115)에 저장될 수도 있다는 점을 고려한다. 전술한 바와 같이, 액션 구성들(410A-410N)의 각각은 액션, 액션에 대한 임의의 기본 파라미터들, 및 액션에 필요한 임의의 역할들을 포함할 수도 있다.
일 실시예에서, 규칙들(111C)은 액션들에 대한 트리거들의 다대일 맵핑을 포함할 수도 있다. 도 4c에 도시된 예에서, 규칙들(111C)은 규칙들(420A 및 420C)을 포함할 수도 있다. 규칙(420A)은 액션 구성(410A)에 대한 트리거(400A)의 결합을 나타낼 수도 있다. 규칙(420C)은 동일한 액션 구성(410A)에 대한 다른 트리거(400B)의 결합을 나타낼 수도 있다. 트리거(400A)가 발화될 때, 규칙 시행 기능부(120)는 데이터 저장소(115)를 사용하여 트리거(400A)가 규칙(420A)의 일부라고 결정할 수도 있다. 유사하게, 트리거(400B)가 발화될 때, 규칙 시행 기능부(120)는 데이터 저장소(115)를 사용하여 트리거(400B)가 규칙(420C)의 일부라고 결정할 수도 있다. 트리거들(400A 및/또는 400B) 중 하나 또는 모두가 발화될 때, 규칙 시행 기능부(120)는 데이터 저장소(115)를 사용하여 액션 구성(410A)이 규칙(420A)의 일부이고 액션 구성(410A)이 또한 규칙(420C)의 일부라고 결정할 수도 있다. 트리거들(400A 또는 400B) 중 하나가 발화되거나 또는 모두가 발화되었다면, 규칙 시행 기능부(120)는 액션 구성(410A)에서 특정 된 액션이 수행되게 할 수도 있다. 일 실시예에서, 메시지 생성 기능부(130)는, 액션, 액션에 연관된 기본 파라미터들, 임의의 런타임 입력 파라미터들, 및 임의의 필요한 역할(들)을 특정하는 메시지를 생성할 수도 있다.
도 4d는 일부 실시예들에 따라 액션에 대한 트리거의 다대다 맵핑을 포함하는 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다. 도 4d에 도시한 예에서, 트리거들(111A)은 트리거들(400A 및 400B 내지 400N)을 포함할 수도 있다. 그러나, 임의의 적절한 개수의 트리거가 데이터 저장소(115)에 저장될 수도 있다는 점을 고려한다. 도 4d에 도시된 예에서, 액션(111B)은 액션 구성(410A 및 410B 내지 410N)을 포함할 수도 있다. 그러나, 임의의 적절한 개수의 액션 구성이 데이터 저장소(115)에 저장될 수도 있다는 점을 고려한다. 전술한 바와 같이, 액션 구성들(410A-410N) 각각은, 액션, 액션에 대한 임의의 기본 파라미터들, 및 액션에 필요한 임의의 역할들을 포함할 수도 있다.
일 실시예에서, 규칙들(111C)은 액션들에 대한 트리거들의 다대다 맵핑을 포함할 수도 있다. 도 4d에 도시된 예에서, 규칙들(111C)은 규칙들(420A, 420B, 420C 및 420D)을 포함할 수도 있다. 규칙(420A)은 제1트리거(400A)를 제1액션 구성(410A)에 결합하는 것을 나타낼 수도 있다. 규칙(420B)은 제1트리거(400A)를 제2액션 구성(410B)에 결합하는 것을 나타낼 수도 있다. 규칙(420C)은 제2트리거(400B)를 제1액션 구성(410A)에 결합하는 것을 나타낼 수도 있다. 규칙(420D)은 제2트리거(400B)를 제2액션 구성(410B)에 결합하는 것을 나타낼 수도 있다. 트리거(400A)가 발화될 때, 규칙 시행 기능부(120)는 데이터 저장소(115)를 사용하여 트리거(400A)가 규칙(420A 및 420B)의 일부라고 결정할 수도 있다. 규칙 시행 기능부(120)는, 또한, 데이터 저장소(115)를 사용하여 액션 구성(410A)이 규칙(420A)의 일부이고 액션 구성(410B)이 규칙(420B)의 일부라고 결정할 수도 있다. 유사하게, 트리거(400B)가 발화될 때, 규칙 시행 기능부(120)는 데이터 저장소(115)를 사용하여 트리거(400B)가 규칙(420C 및 420D)의 일부라고 결정할 수도 있다. 규칙 시행 기능부(120)는, 또한, 데이터 저장소(115)를 사용하여 액션 구성(410A)이 규칙(420C)의 일부이고 액션 구성(410B)이 규칙(420D)의 일부라고 결정할 수도 있다. 트리거들(400A 또는 400B) 중 하나가 발화되거나 모두가 발화된 경우, 규칙 시행 기능부(120)는 액션 구성들(410A 및 410B)에 특정 된 액션들이 수행되도록 할 수도 있다. 일 실시예에서, 메시지 생성 기능부(130)는, 액션, 액션에 연관된 기본 파라미터들, 임의의 런타임 입력 파라미터, 및 임의의 필요한 역할(들)을 특정하는 하나 이상의 메시지를 생성할 수도 있다.
도 5a는 일부 실시예들에 따라 액션에 대한 또한 큐 교환에 대한 트리거의 맵핑을 포함하는 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다. 도 5a에 도시된 예에서, 트리거들(111A)은 트리거들(400A 및 400B 내지 400N)을 포함할 수도 있다. 그러나, 임의의 적절한 개수의 트리거가 데이터 저장소(115)에 저장될 수도 있다는 점을 고려한다. 도 5a에 도시된 예에서, 액션(111B)은 액션 구성(410A 및 410B 내지 410N)을 포함할 수도 있다. 그러나, 임의의 적절한 개수의 액션 구성이 데이터 저장소(115)에 저장될 수도 있다는 점을 고려한다. 전술한 바와 같이, 동작 구성들(410A-410N)의 각각은 액션, 액션에 대한 임의의 기본 파라미터들, 및 액션에 필요한 임의의 역할들을 포함할 수도 있다.
일 실시예에서, 규칙들(111C)은 액션들에 대한 트리거들의 맵핑 및 큐 교환들에 대한 트리거들의 맵핑을 포함할 수도 있다. 도 5a에 도시된 예에서, 규칙들(111C)은 규칙들(420A 및 420E)을 포함할 수도 있다. 규칙(420A)은 트리거(400A)를 액션 구성(410A)에 결합하는 것을 나타낼 수도 있다. 규칙(420E)은 동일한 트리거(400A)를 큐 교환(430)에 결합하는 것을 나타낼 수도 있다. 큐 교환(430)은 생성될 하나 이상의 큐 메시지를 특정 할 수도 있다. 트리거(400A)가 발화될 때, 규칙 시행 기능부(120)는 데이터 저장소(115)를 사용하여 트리거(400A)가 규칙(420A 및 420E)의 일부라고 결정할 수도 있다. 규칙 시행 기능부(120)는, 또한, 데이터 저장소(115)를 사용하여 액션 구성(410A)이 규칙(420A)의 일부이고 큐 교환(430)이 규칙(420B)의 일부라고 결정할 수도 있다. 이어서, 규칙 시행 기능부(120)는 액션 구성(410A)에서 특정 된 액션이 수행되게 할 수도 있다. 일 실시예에서, 메시지 생성 기능부(130)는, 액션, 액션에 연관된 기본 파라미터, 임의의 런타임 입력 파라미터, 및 임의의 필요한 역할(들)을 특정하는 하나 이상의 메시지를 생성할 수도 있다. 또한, 규칙 시행 기능부(120)는, 큐 교환(430)에 의해 특정 된 바와 같이 큐 메시지를 생성할 수도 있고, 큐에 그 메시지를 배치하거나 그 외에는 메시지를 메시징 서비스에 송신할 수도 있다. 예를 들어, 큐 메시지는, 트리거(400A)가 특정 시간에 발화되었다는 통지 또는 액션 구성(410A)의 액션이 특정 파라미터 및 특정 시간에 수행되었다는 통지를 (예를 들어, 관리자 또는 로그에) 나타낼 수도 있다.
도 5b는, 일부 실시예들에 따라 액션이 아닌 큐 교환에 대한 트리거의 맵핑을 포함하는 제공자 네트워크에서의 규칙 기반 액션 트리거링을 위한 시스템 환경의 예의 추가 양태들을 도시한다. 도 5b에 도시된 예에서, 트리거들(111A)은 트리거들(400A 및 400B 내지 400N)을 포함할 수도 있다. 그러나, 임의의 적절한 개수의 트리거가 데이터 저장소(115)에 저장될 수도 있다는 점을 고려한다. 도 5b에 도시된 예에서, 액션(111B)은 액션 구성(410A 및 410B 내지 410N)을 포함할 수도 있다. 그러나, 임의의 적절한 개수의 액션 구성들이 데이터 저장소(115)에 저장될 수도 있다는 점을 고려한다. 전술한 바와 같이, 액션 구성들(410A-410N) 각각은 액션, 액션에 대한 임의의 기본 파라미터들, 및 액션에 필요한 임의의 역할들을 포함할 수도 있다.
일 실시예에서, 규칙들(111C)은 큐 교환들에 대한 트리거들의 맵핑을 포함할 수도 있다. 도 5b에 도시된 예에서, 규칙들(111C)은 규칙(420F)을 포함할 수도 있다. 규칙(420F)은 트리거(400N)를 큐 교환(430)에 결합하는 것을 나타낼 수도 있다. 큐 교환(430)은 생성될 하나 이상의 큐 메시지를 특정 할 수도 있다. 동일한 트리거(400N)는 액션 구성들(410A-410N) 중 어느 것에도 결합하지 않을 수도 있다. 트리거(400N)가 발화될 때, 규칙 시행 기능부(120)는 데이터 저장소(115)를 사용하여 트리거(400N)가 규칙(420F)의 일부라고 결정할 수도 있다. 규칙 시행 기능부(120)는, 또한, 데이터 저장소(115)를 사용하여 큐 교환(430)이 규칙(420F)의 일부라고 결정할 수도 있다. 규칙 시행 기능부(120)는, 큐 교환(430)에 의해 특정 된 바와 같은 큐 메시지를 생성할 수도 있고, 그 메시지를 큐에 배치하거나 그렇지 않으면 메시지를 메시징 서비스에 송신할 수도 있다. 예를 들어, 큐 메시지는 트리거(400N)가 특정 시간에 발화되었다는 통지를 (예를 들어, 관리자 또는 로그에) 나타낼 수도 있다.
도 6은 일부 실시예들에 따라 제공자 네트워크에서의 규칙 기반 액션 트리거링 방법을 예시하는 흐름도이다. 단계 605에 도시된 바와 같이, 복수의 규칙은 복수의 트리거 및 복수의 액션에 기초하여 정의될 수도 있다. 일 실시예에서, 특정 규칙은 트리거들 중 하나 이상 및 액션들 중 하나 이상을 포함한다. 대안으로, 특정 규칙은 트리거와 큐 교환을 포함할 수도 있다. 트리거, 액션, 및/또는 규칙은 미리 정의된 요소들 및/또는 사용자 맞춤 요소들을 사용하여 사용자에 의해 정의되거나 선택될 수도 있다.
단계 610에 도시한 바와 같이, 제공자 네트워크 내의 복수의 자원이 감시될 수도 있다. 트리거들 중 임의의 것을 발화할지 여부를 결정하기 위해 자원들을 감시할 수도 있다. 다시 말해서, 제공자 네트워크 내의 조건들은, 그 조건들이 임의의 트리거들을 만족시키는지 여부를 결정하도록 자원들의 사용 또는 동작 중에 감시될 수도 있다. 일 실시예에서, 제공자 네트워크 내의 자원을 감시하는 것은, 하나 이상의 서비스 로그, 하나 이상의 서비스 메트릭, 및/또는 하나 이상의 다른 데이터 스트림을 감시하는 것을 포함할 수도 있다. 감시는, 외부 에이전트 및/또는 서비스 자체와 같은 임의의 적절한 구성요소(들)에 의해 수행될 수도 있다. 단계 615에 도시된 바와 같이, 감시에 기초하여, 하나 이상의 특정 트리거들에 대한 조건들이 충족되었음을 결정할 수도 있다. 단계 615에 도시된 동작은 임계값에 대한 메트릭의 비교, 로그 분석, 및/또는 알람 단계 변경의 검출을 포함할 수도 있다. 트리거에 대한 조건들이 충족되었다면, "트리거 발화" 요청이, 예를 들어, 감시를 수행하는 외부 에이전트, 서비스, 또는 다른 엔티티로부터 규칙 기반 액션 트리거링 시스템에 송신될 수도 있다.
단계 620에 도시한 바와 같이, 발화된 하나 이상의 특정 트리거를 포함하는 규칙들 중 하나 이상의 특정 규칙을 결정할 수도 있다. 하나 이상의 특정 규칙들은, 조건들이 하나 이상의 특정 트리거들에 대해 충족된다고 결정한 것에 응답하여 결정될 수도 있다. 하나 이상의 특정 규칙들은, 규칙들 내에 정의된 하나 이상의 특정 트리거에 기초하여 데이터 저장소로부터 규칙들을 검색함으로써 결정될 수도 있다. 특정 규칙(들) 각각은 또한 하나 이상의 특정 액션을 포함할 수도 있다.
단계 625에 도시한 바와 같이, 하나 이상의 메시지를 생성할 수도 있다. 하나 이상의 메시지는, 하나 이상의 특정 트리거를 또한 포함하는 하나 이상의 특정 규칙 내의 하나 이상의 특정 액션을 설명할 수도 있다. 단계 630에 도시한 바와 같이, 하나 이상의 메시지는 메시징 서비스로 송신될 수도 있다. 일 실시예에서, 메시징 서비스는 큐 서비스를 사용하여 구현될 수도 있고, 하나 이상의 메시지는 큐 서비스에 의해 관리되는 하나 이상의 큐에 배치될 수도 있다.
단계 635에 도시한 바와 같이, 하나 이상의 메시지가 메시징 서비스로부터 하나 이상의 액션 핸들러로 배정될 수도 있다. 액션 핸들러(들)는 액션 실행 환경의 일부일 수도 있다. 단계 640에 도시한 바와 같이, 하나 이상의 액션 핸들러는 하나 이상의 메시지에 설명된 하나 이상의 액션을 수행할 수도 있다. 일 실시예에서, 액션 수행에 따라 다른 트리거가 발화되어, 단계 610 내지 단계 640에 도시된 동작들이 다른 트리거, 다른 규칙, 및/또는 다른 액션에 대해 다시 수행될 수도 있다. 이러한 식으로, 트리거들은 다른 트리거들에 연결되어 복잡한 일련의 액션들을 수행할 수도 있다.
도 7은 일부 실시예들에 따라 제공자 네트워크에서의 규칙 기반 메시지 트리거링 방법을 예시하는 흐름도이다. 단계 605에 도시한 바와 같이, 복수의 규칙은 복수의 트리거 및 복수의 액션에 기초하여 정의될 수도 있다. 일 실시예에서, 특정 규칙은 트리거들 중 하나 이상과 액션들 중 하나 이상을 포함한다. 대안으로, 특정 규칙은 트리거 및 큐 교환을 포함할 수도 있다. 트리거, 액션, 및/또는 규칙은 미리 정의된 요소 및/또는 사용자 맞춤 요소를 사용하여 사용자에 의해 정의되거나 선택될 수도 있다.
단계 610에 도시한 바와 같이, 제공자 네트워크 내의 복수의 자원을 감시할 수도 있다. 트리거들 중 임의의 것을 발화할지 여부를 결정하도록 자원을 감시할 수도 있다. 다시 말해서, 제공자 네트워크 내의 조건들은, 그 조건들이 임의의 트리거들을 만족시키는지를 결정하도록 자원들의 동작 또는 사용 중에 감시될 수도 있다. 일 실시예에서, 제공자 네트워크 내의 자원들을 감시하는 것은, 하나 이상의 서비스 로그, 하나 이상의 서비스 메트릭, 및/또는 하나 이상의 다른 데이터 스트림을 감시하는 것을 포함할 수도 있다. 감시는, 외부 에이전트 및/또는 서비스 자체와 같은 임의의 적절한 구성요소(들)에 의해 수행될 수도 있다. 단계 615에 도시한 바와 같이, 감시에 기초하여, 하나 이상의 특정 트리거들에 대해 조건들이 충족되었음을 결정할 수도 있다. 단계 615에 도시된 동작은, 임계값에 대한 메트릭의 비교, 로그 분석, 및/또는 알람 단계 변경의 검출을 포함할 수도 있다. 트리거에 대한 조건들이 충족되었다면, "트리거 발화" 요청이, 예를 들어, 감시를 수행하는 외부 에이전트, 서비스, 또는 다른 엔티티로부터 규칙 기반 액션 트리거링 시스템에 송신될 수도 있다.
단계 720에 도시한 바와 같이, 발화된 특정 트리거를 포함하는 특정 규칙을 결정할 수도 있다. 특정 규칙은 특정 트리거에 대한 조건들이 충족되는 것으로 결정한 것에 응답하여 결정될 수도 있다. 특정 규칙은, 규칙 내에 정의된 특정 트리거에 기초하여 데이터 저장소에서 규칙을 검색하여 결정될 수도 있다. 특정 규칙은, 또한, 생성될 하나 이상의 큐 메시지를 특정하는 특정 큐 교환을 포함할 수도 있다.
단계 725에 도시한 바와 같이, 큐 메시지는 특정 규칙의 큐 교환에 기초하여 생성될 수도 있다. 단계 730에 도시한 바와 같이, 큐 메시지는 큐 서비스와 같은 메시징 서비스로 송신될 수도 있다. 일 실시예에서, 큐 메시지는, 큐 서비스에 의해 관리되고 궁극적으로 적절한 수신자에게 전달되는 하나 이상의 큐에 배치될 수도 있다.
도 8은 일부 실시예들에 따라 제공자 네트워크에서의 스케줄 기반 액션 트리거링 방법을 예시하는 흐름도이다. 단계 605에 도시된 바와 같이, 복수의 규칙은 복수의 트리거 및 복수의 액션에 기초하여 정의될 수도 있다. 일 실시예에서, 특정 규칙은 트리거들 중 하나 이상 및 액션들 중 하나 이상을 포함한다. 대안으로, 특정 규칙은 트리거와 큐 교환을 포함할 수도 있다. 트리거, 액션, 및/또는 규칙은 미리 정의된 요소들 및/또는 사용자 맞춤 요소들을 사용하여 사용자에 의해 정의되거나 선택될 수도 있다.
단계 807에 도시한 바와 같이, 트리거는 특정 시간 동안 스케줄링될 수도 있다. 트리거는, 일회성 이벤트 또는 재귀성 이벤트로서 스케줄링될 수도 있다. 예를 들어, 트리거는, 매일 특정 시간에, 7일마다 특정 시간에, 매월 특정 날에 또는 다른 적절한 간격으로 스케줄링될 수도 있다. 트리거는, 사용자 입력에 기초하여 또는 자동으로 스케줄링될 수도 있다. 단계 810에 도시한 바와 같이, 제공자 네트워크에서의 시간 경과가 감시하여 임의의 스케줄링된 트리거를 언제 발화할지를 결정할 수도 있다.
단계 815에 도시한 바와 같이, 감시에 기초하여, 특정 스케줄링된 트리거를 발화하기 위한 시간에 도달하였는지 여부를 결정할 수도 있다. 트리거를 위한 시간이 도달한 경우, "트리거 발화" 요청이, 예를 들어, 감시를 수행하는 외부 에이전트, 서비스 또는 다른 엔티티로부터의 규칙 기반 액션 트리거링 시스템에 송신될 수도 있다. 단계 620에 도시한 바와 같이, 발화된 하나 이상의 특정 스케줄링된 트리거를 포함하는, 규칙들 중 하나 이상의 특정 규칙을 결정할 수도 있다. 하나 이상의 특정 규칙들은, 조건들이 하나 이상의 특정 스케줄링된 트리거에 대해 충족된다고 결정한 것에 응답하여 결정될 수도 있다. 하나 이상의 특정 규칙들은, 규칙들 내에 정의된 하나 이상의 특정 스케줄링된 트리거에 기초하여 데이터 저장소로부터 규칙들을 검색함으로써 결정될 수도 있다. 특정 규칙(들) 각각은 또한 하나 이상의 특정 액션을 포함할 수도 있다.
단계 625에 도시한 바와 같이, 하나 이상의 메시지를 생성할 수도 있다. 하나 이상의 메시지는, 하나 이상의 특정 스케줄링된 트리거를 또한 포함하는 하나 이상의 특정 규칙 내의 하나 이상의 특정 액션을 설명할 수도 있다. 단계 630에 도시한 바와 같이, 하나 이상의 메시지는 메시징 서비스로 송신될 수도 있다. 일 실시예에서, 메시징 서비스는 큐 서비스를 사용하여 구현될 수도 있고, 하나 이상의 메시지는 큐 서비스에 의해 관리되는 하나 이상의 큐에 배치될 수도 있다.
단계 635에 도시한 바와 같이, 하나 이상의 메시지가 메시징 서비스로부터 하나 이상의 액션 핸들러로 배정될 수도 있다. 액션 핸들러(들)는 액션 실행 환경의 일부일 수도 있다. 단계 640에 도시한 바와 같이, 하나 이상의 액션 핸들러는 하나 이상의 메시지에 설명된 하나 이상의 액션을 수행할 수도 있다. 일 실시예에서, 액션 수행에 따라 다른 트리거가 발화되어, 단계 610 내지 단계 640에 도시된 동작들이 다른 트리거, 다른 규칙, 및/또는 다른 액션에 대해 다시 수행될 수도 있다. 이러한 식으로, 트리거들은 다른 트리거들에 연결되어 복잡한 일련의 액션들을 수행할 수도 있다.
규칙 기반 액션 트리거링을 위한 라우팅 핸들러
도 9는 일부 실시예들에 따라 규칙 기반 액션 트리거링을 위한 라우팅 핸들러의 시스템 환경의 예를 도시하는 흐름도이다. 라우팅 핸들러(900)는, 규칙 기반 액션 트리거링 시스템(100)의 구성요소들 및 규칙 기반 액션 트리거링 시스템(100)에 의해 사용되는 다른 구성 요소들을 포함하는 전술한 구성 요소들 중 다양한 구성요소에 요청들을 라우팅할 수도 있다. 라우팅 핸들러(900)는, 또한, 규칙 기반 액션 트리거링 시스템(100)과 이에 관련된 구성요소들을 위한 프록시라고 칭할 수도 있다. 라우팅 핸들러(900)가 요청들을 라우팅하는 구성요소들은 본원에서 서브서비스라고 칭할 수도 있다. 라우팅 핸들러(900)는, 개별적인 요청을 서브서비스들(950A 및 950B 내지 950N) 등의 복수의 서브서비스 중 선택된 서브서비스에 라우팅할 수도 있다. 예시를 위해 3개의 서브서비스(950A, 950B 및 950N)가 도시되어 있지만, 임의의 적절한 개수 및 구성의 서브서비스가 사용될 수도 있다는 점을 고려한다. 서브서비스들(950A 내지 950N)은 상이한 서브서비스들 또는 동일한 서브서비스의 상이한 버전을 나타낼 수도 있다. 도 9의 예에 도시한 바와 같이, 서브서비스(950A) 등의 서브서비스들 중 하나 이상은 규칙 기반 액션 트리거링 시스템(100)의 기능의 양태들을 구현할 수도 있다. 서브서비스들(950B 및 950N)과 같은 서브서비스들 중 다른 것들은 규칙 기반 액션 트리거링 시스템(100)에 의해 호출되거나 그 외에는 그 시스템에 연관된 기능을 구현할 수도 있다. 이러한 식으로, 라우팅 핸들러(900)는, 전술한 규칙 기반 액션 트리거링 및/또는 스케줄 기반 액션 트리거링에 연관된 다양하고 상이한 서브서비스(950A 내지 950N)의 상호 작용을 위한 통일된 고객 경험을 제공할 수도 있다. 또한, 라우팅 정보는, 라우팅 핸들러 자체를 업데이트 및/또는 재배치하지 않고 라우팅 핸들러들의 무리에 대해 업데이트될 수도 있다.
라우팅 핸들러(900)는, 예를 들어, 네트워크를 통해 하나 이상의 클라이언트(990)로부터 요청(901)을 수신할 수도 있다. 클라이언트들(990)은, 라우팅 핸들러(900)를 유지하는 조직의 외부 고객들, 라우팅 핸들러(900)를 유지하는 조직의 내부 고객들, 또는 서브서비스들(950A 내지 950N) 중 임의의 적합한 서브서비스를 유지하는 조직을 나타낼 수도 있다. 개별 요청은 개별 서브서비스에 의해 수행될 동작을 특정 할 수도 있다. 더욱 상세히 후술하는 바와 같이, 라우팅 핸들러(900)는 서브서비스들 중 어느 것이 임의의 특정 요청의 타겟인지를 결정할 수도 있다. 이어서, 라우팅 핸들러(900)는, 예를 들어, 네트워크를 통해 요청을 그 특정 서브서비스(예를 들어, 서브서비스를 구현하는 하나 이상의 호스트)로 라우팅할 수도 있다. 요청에 대한 응답이 수신인 서브서비스에 의해 생성되면, 라우팅 핸들러는 그 응답을 수신하여 요청을 보낸 클라이언트에 라우팅할 수도 있다. 도 9의 예에 도시한 바와 같이, 라우팅 핸들러(900)는, 요청(951A)을 송신하고 서브서비스(950A)로부터 응답(952A)을 수신할 수도 있고, 요청(951B)을 송신하고 서브서비스(950B)로부터 응답(952B)을 수신할 수도 있고, 요청(951N)을 송신하고 서브서비스(950N)로부터 응답(952N)을 수신할 수도 있다. 클라이언트로부터 수신된 요청들(901)은 서브서비스들(950A 내지 950N)에 라우팅된 요청들(951A 내지 951N)을 집합적으로 나타낼 수도 있다. 클라이언트에 라우팅된 응답들(902)은 서브서비스들(950A 내지 950N)로부터 수신된 응답들(952A 내지 952N)을 집합적으로 나타낼 수도 있다.
라우팅 핸들러(900)는, 하나 이상의 컴퓨팅 장치를 사용하여 구현될 수도 있으며, 이러한 컴퓨팅 장치들 중 임의의 컴퓨팅 장치는 도 16에 도시된 예시적인 컴퓨팅 장치(3000)에 의해 구현될 수도 있다. 다양한 실시예에서, 라우팅 핸들러(900)의 기능의 부분들은 동일한 컴퓨팅 장치에 의해 또는 임의의 적절한 개수의 상이한 컴퓨팅 장치들에 의해 제공될 수도 있다. 라우팅 핸들러(900)의 구성요소들 중 임의의 구성요소가 상이한 컴퓨팅 장치들을 사용하여 구현되는 경우, 구성요소들 및 이들의 각 컴퓨팅 장치들은, 예를 들어, 네트워크를 통해 통신가능하게 결합될 수도 있다. 라우팅 핸들러(900)는 다수의 라우팅 핸들러의 무리 중 일부일 수도 있다. 라우팅 핸들러들의 무리 중 다른 일부는 유사하게 구성될 수도 있고 및/또는 유사한 기능을 제공할 수도 있다.
서브서비스들(950A 내지 950N) 각각은, 또한, 하나 이상의 컴퓨팅 장치들을 사용하여 구현될 수도 있으며, 이러한 컴퓨팅 장치들 중 임의의 컴퓨팅 장치는 도 16에 도시된 예시적인 컴퓨팅 장치(3000)에 의해 구현될 수도 있다. 다양한 실시예에서, 서브서비스들(950A 내지 950N) 중 임의의 서브서비스의 기능은 동일한 컴퓨팅 장치에 의해 또는 임의의 적절한 개수의 상이한 컴퓨팅 장치들에 의해 제공될 수도 있다. 서브서비스들(950A 내지 950N) 중 하나의 서브서비스의 구성요소들 중 임의의 구성요소가 상이한 컴퓨팅 장치들을 사용하여 구현되는 경우, 구성요소들 및 이들의 각 컴퓨팅 장치는, 예를 들어, 네트워크를 통해 통신가능하게 결합될 수도 있다.
도 10은 일부 실시예들에 따라 동적으로 로딩된 라우팅 맵의 사용을 포함하는 규칙 기반 액션 트리거링을 위한 라우팅 핸들러를 위한 시스템 환경의 예의 추가 양태들을 도시한다. 라우팅 핸들러(900)는, 외부 데이터 저장소(915)로부터 검색된 라우팅 맵(916)을 이용하여 요청 내의 특정 동작을 특정 서브서비스에 맵핑할 수도 있다. 데이터 저장소(915)는 임의의 적합한 저장 기술을 사용하여 구현될 수도 있다. 일 실시예에서, 라우팅 핸들러(900)는, 요청 분석 기능부(910), 동적 라우팅 구성 기능부(920), 및 서브서비스 맵핑 기능부(930)를 포함할 수도 있다. 라우팅 핸들러(900)는 도시되지 않은 추가 구성요소들, 도시된 것보다 적은 구성요소들, 또는 도시된 구성요소들의 상이한 조합, 구성 또는 양을 포함할 수도 있다는 점을 고려한다.
일 실시예에서, 요청 분석 기능부(910)는 인입 요청들(901)에 대한 요청 분석을 수행할 수도 있다. 임의의 적절한 기술(들)을 사용하여, 요청 분석 기능부(910)는 인입 요청에서 특정 된 하나 이상의 동작을 결정할 수도 있다. 예를 들어, 인입 요청은 HTTP(하이퍼텍스트 트랜스포트 프로토콜) 요청으로서 수신될 수도 있으며, 동작(들)은 HTTP 요청의 특정 부분에 특정 될 수도 있다. 다양한 동작은 다양한 서브서비스에 의해 제공되는 다양한 API(애플리케이션 프로그래밍 인터페이스)를 나타낼 수도 있다.
일 실시예에서, 동적 라우팅 구성 기능부(920)는 최신 라우팅 맵(916)을 유지할 수도 있다. 라우팅 맵(916)은, 적절한 간격으로 외부 데이터 저장소(915)로부터 검색될 수도 있고 동적 라우팅 구성 기능부(920)에 의해 캐싱될 수도 있다. 라우팅 맵(916)은, 라우팅 핸들러(900)에서 동적으로 로딩될 수도 있는데, 예를 들어, 라우팅 핸들러에 대한 프로그램 코드를 업데이트하고 라우팅 핸들러를 재배치하고 또는 라우팅 핸들러를 재시작할 필요 없이, 라우팅 핸들러의 실행 중에 로딩될 수도 있다. 라우팅 맵(916)은, 특정 동작 이름(또는 다른 식별자)을 이들 동작을 제공하는 특정 서브서비스에 맵핑하는 것을 나타낼 수도 있다. 라우팅 맵(916)은, 키들이 동작 이름(또는 다른 식별자)을 나타내고 연관된 값들이 서브서비스 이름(또는 다른 식별자)을 나타내는 키-값 데이터 저장소를 사용하여 구현될 수도 있다. 일 실시예에서, (예를 들어, 라우팅 핸들러들의 무리에 있는) 복수의 라우팅 핸들러는, 예를 들어, 라우팅 맵의 상이한 복사본들을 캐싱함으로써 동일한 라우팅 맵(916)을 참조할 수도 있다.
일 실시예에서, 서브서비스 맵핑 기능부(930)에 대한 동작은, 라우팅 맵(916)을 사용하여 인입 요청이 라우팅되어야 하는 특정 서브서비스를 결정할 수도 있다. 서브서비스 맵핑 기능부(930)에 대한 동작은, (동적 라우팅 구성 기능부(920)에 의해 제공되는 바와 같은) 라우팅 테이블(916)에서 (요청 분석 기능부(910)에 의해 결정된 바와 같은) 특정 동작을 검색하여 요청에서 지명된 동작을 제공하는 특정 서브서비스를 결정할 수도 있다. 이어서, 라우팅 핸들러(900)는, 서브서비스 맵핑 기능부(930)에 대한 동작에 의해 결정된 바와 같이 적절한 서브서비스에 요청을 라우팅할 수도 있다. 서브서비스로부터 라우팅 핸들러(900)에 의해 수신된 임의의 응답은 요청을 보낸 클라이언트로 라우팅될 수도 있다. 호스트들의 무리는 특정 서브서비스를 구현할 수도 있고, 서브서비스에 요청을 라우팅하는 것은 서브서비스에 연관된 로드 밸런서에 요청을 라우팅하는 것을 포함할 수도 있다. 로드 밸런서는 요청을 특정 호스트로 라우팅할 수도 있다.
도 11은, 일부 실시예들에 따라 특정 서브서비스를 위한 HTTP 클라이언트의 사용을 포함하는 규칙 기반 액션 트리거링을 위한 라우팅 핸들러를 위한 시스템 환경의 예의 추가 양태들을 도시한다. 일 실시예에서, 요청들(901)은, HTTP 요청들로서 표현될 수도 있고, 라우팅 핸들러(900)는, 복수의 HTTP 클라이언트를 이용하여 서브서비스들(950A 내지 950N)과 통신할 수도 있다. 일 실시예에서, 라우팅 핸들러(900)는 서브서비스당 또는 서브서비스 호스트당 하나의 HTTP 클라이언트를 사용할 수도 있다. 도 11의 예에 도시한 바와 같이, 라우팅 핸들러(900)는, 서브서비스(950A)와 통신하기 위한 하나의 HTTP 클라이언트(940A), 서브서비스(950B)와 통신하기 위한 다른 HTTP 클라이언트(940B), 및 서브서비스(950N)와 통신하기 위한 또 다른 HTTP 클라이언트(940N)를 사용할 수도 있다. 그러나, 임의의 적절한 개수 및 구성의 HTTP 클라이언트가 사용될 수도 있다는 점을 고려한다. HTTP 클라이언트들(940A-940N) 중 임의의 클라이언트는, 라우팅 핸들러(900)가 서브서비스들(950A 내지 950N) 중 대응하는 서브서비스에 요청을 라우팅하려고 할 때 생성(예를 들어, 인스턴스화)되거나 재사용될 수도 있다.
일 실시예에서, HTTP 클라이언트는, HTTP 클라이언트가 서브서비스들 중 하나에 요청을 포워딩한 후 응답을 기다리는 동기 모드에서 동작할 수도 있다. 일 실시예에서, HTTP 클라이언트들 중 하나 이상은 대신 비동기 모드에서 동작할 수도 있다. 비동기 모드에서, HTTP 클라이언트의 하나 이상의 스레드는, 그 하나 이상의 스레드를 사용하여 요청을 서브서비스로 라우팅한 후에 스레드 풀로 리턴될 수도 있다. 서브서비스들로부터 응답들을 수신하기 위해 하나 이상의 큐가 라우팅 핸들러(900)에 의해 사용될 수도 있다. 이러한 식으로 비동기 입출력(I/O)을 사용함으로써, 라우팅 핸들러(900)의 자원들을 보다 효율적으로 사용할 수도 있다.
도 12는 일부 실시예들에 따라 서브서비스의 예를 포함하는 규칙 기반 액션 트리거링을 위한 라우팅 핸들러를 위한 시스템 환경의 예의 추가 양태들을 도시한다. 다양한 실시예에서, 서브서비스들은, 규칙 기반 액션 트리거링, 스케줄링 액션, 규칙에 기초한 액션 수행, 및/또는 다른 임의의 적절한 작업을 위한 서브서비스들을 포함할 수도 있다. 도 12의 예에 도시한 바와 같이, 라우팅 핸들러(900)는, 규칙 서브서비스(950C), 스케줄링 서브서비스(950D), 및 액션 서브서비스(950E)로 요청들을 라우팅할 수도 있다. 규칙 서브서비스(950C)는, 예를 들어, 도 1, 도 2, 및 도 3과 관련하여 전술한 바와 같이 규칙 기반 액션 트리거링 시스템(100)에 대해 전술한 기능을 나타낼 수도 있다. 예를 들어, 규칙 서브서비스(950C)는 트리거를 액션에 결합하는 규칙들을 정의할 수도 있고 액션들이 규칙에 기초하여 수행되게 하는 트리거를 점화할 수도 있다. 규칙 서브서비스(950C)는 라우팅 핸들러(900)로부터 라우팅된 요청(951C)을 수신할 수 있고고 응답(952C)을 라우팅 핸들러에 송신할 수도 있다. 스케줄링 서브서비스(950D)는 예를 들어 도 8과 관련하여 전술한 바와 같이 특정 시간에 수행될 액션들을 스케줄링할 수도 있다. 스케줄링 서브서비스(950D)는 라우팅 핸들러(900)로부터 라우팅된 요청(951D)을 수신할 수도 있고 응답(952D)을 라우팅 핸들러에 송신할 수도 있다. 액션 서브서비스(950E)는, 예를 들어, 도 1, 도 2, 및 도 3과 관련하여 전술한 바와 같이 액션 핸들러(161A-161N) 및/또는 액션 실행 환경(160)에 대하여 전술한 기능을 나타낼 수도 있다. 예를 들어, 동작 서브서비스(950E)는, 제공자 네트워크(170) 내의 자원들(171A 내지 171N)에 대하여 규칙 기반 및/또는 스케줄 기반 액션들을 수행할 수도 있다. 액션 서브서비스(950E)는, 라우팅 핸들러(900)로부터 라우팅된 요청(951E)을 수신할 수 있고 라우팅 핸들러에 응답(952E)을 송신할 수도 있다.
도 13은 일부 실시예들에 따라 라우팅 맵을 업데이트하여 업데이트를 서브서비스에 반영하는 것을 포함하는 규칙 기반 액션 트리거링을 위한 라우팅 핸들러를 위한 시스템 환경의 예의 추가 양태들을 도시한다. 특정 서브서비스에서 하나 이상의 동작이 업데이트되면, 라우팅 핸들러 자체 대신 라우팅 맵이 업데이트될 수도 있다. 라우팅 핸들러는 라우팅 핸들러들의 무리 중 일부일 수도 있다. 라우팅 핸들러들의 무리 전체 대신 라우팅 맵을 업데이트함으로써, 서브서비스들에 대한 업데이트를 효율적으로 구현할 수도 있다. 이에 따라, 도 13에 도시한 바와 같이, 업데이트된 서브서비스(950)는 다른 서브서비스(예를 들어, 서브서비스(950B))를 대체하거나 보완할 수도 있다. 라우팅 핸들러(900)와 함께 사용되는 이전 버전과 비교할 때, 업데이트된 서브서비스(950)는, 클라이언트에 하나 이상의 추가 동작, 하나 이상의 동작 감소, 및/또는 하나 이상의 수정된 동작을 구현하고 제공할 수도 있다. 수정된 동작은, 동작 이름(또는 다른 식별자) 및/또는 동작에 연관된 파라미터의 차이를 반영할 수도 있다. 일 실시예에서, 서비스 소유자(960)는, 업데이트된 서브서비스(950)를 업데이트하고 라우팅 핸들러(900)에 의해 트래픽이 관리되는 서브서비스들의 세트에 업데이트된 서브서비스(950)를 추가하는 것을 담당할 수도 있다. 업데이트된 서브서비스(950F)가 라우팅 핸들러(900)에 의해 관리되는 서브서비스들의 세트에 추가될 때, 서비스 소유자(960)는 또한 업데이트된 라우팅 맵(917)을 생성할 수도 있다. 업데이트된 라우팅 맵(917)은, 업데이트된 서브서비스(950F)에 대한 업데이트된 동작을 포함하여 특정 동작 이름(또는 다른 식별자)을 이들 동작을 제공하는 특정 서브서비스에 맵핑하는 것을 나타낼 수도 있다. 서비스 소유자(960)는 업데이트된 라우팅 맵(917)을 데이터 저장소(915)에 저장할 수도 있다. 일 실시예에서, 서비스 소유자(960)는, 오래된 라우팅 맵(916)을 데이터 저장소(915) 내의 업데이트된 라우팅 맵(917)으로 덮어쓰기 위해 임의의 적절한 증명서를 제공할 수도 있다.
도 14는 일부 실시예들에 따라 라우팅 핸들러와 서브서비스에서의 메트릭 수집을 포함하는 규칙 기반 액션 트리거링을 위한 라우팅 핸들러를 위한 시스템 환경의 예의 추가 양태들을 도시한다. 일 실시예에서, 개별 서브서비스(950A 내지 950N)는 요청(901)의 수신 및/또는 처리에 관련된 성능 메트릭을 수집할 수도 있다. 도 14의 예에 도시한 바와 같이, 서브서비스(950A)는 메트릭 수집 기능부(955A)를 포함할 수도 있고, 서브서비스(950B)는 메트릭 수집 기능부(955B)를 포함할 수도 있고, 서브서비스(950N)는 메트릭 수집 기능부(955N)를 포함할 수도 있다. 라우팅 핸들러(900)는, 또한, 라우팅 요청들(901) 및 응답들(902)을 포함하여, 자신이 수행하는 다양한 작업에 관련된 성능 메트릭들을 수집하는 메트릭 수집 기능부(945)를 포함할 수도 있다. 수집된 메트릭은 네트워크 사용량, 프로세서 사용량, 메모리 사용량, 스토리지 사용량, 전력 사용량, 및/또는 기타 자원 사용량과 관련될 수도 있다. 다양한 메트릭 수집 기능부(955A 내지 955N 및 945)은 수집된 메트릭을 집합 및/또는 분석을 위해 임의의 적절한 구성요소에 보고할 수도 있다. 예를 들어, 요청의 라우팅과 처리를 위한 엔드투엔드 지연을 측정하기 위해, 요청에 대한 대기 시간 메트릭은 라우팅 핸들러(900)와 수신자 서브서비스 모두로부터 수집될 수도 있다.
일 실시예에서, 서브서비스들(950A 내지 950N)의 개별 서브서비스들은 동일한 서브서비스의 상이한 버전들을 나타낼 수도 있다. 예를 들어, 서브서비스들(950A 내지 950N) 중 2개는 규칙 서브서비스의 이전 버전 및 규칙 서브서비스의 새로운 버전을 나타낼 수도 있다. 라우팅 핸들러(900)는, 일부 요청들을 하나의 버전으로 라우팅하고 다른 요청들을 다른 버전으로 라우팅함으로써 동일한 서브서비스의 두 개 버전의 A/B 테스트를 지원할 수도 있다. 요청들은 클라이언트 화이트리스트 및/또는 클라이언트 블랙리스트를 기반으로 라우팅될 수도 있다. 일 실시예에서, 라우팅 서브 루틴(900)에서의 메트릭 수집 기능부(945)뿐만 아니라 대응하는 서브서비스들에서의 메트릭 수집 기능부들을 사용하여, 예를 들어 동일한 서브서비스의 두 개의 서로 다른 버전의 상대 성능을 결정함으로써, 테스트의 결과를 평가할 수도 있다.
도 15는 일부 실시예들에 따라 규칙 기반 액션 트리거링을 위한 라우팅 핸들러를 사용하는 방법을 예시하는 흐름도이다. 단계 1505에 도시한 바와 같이, 요청 라우터에서 클라이언트로부터의 요청이 수신될 수도 있다. 요청은 특정 서브서비스에서 특정 동작을 특정 할 수도 있다. 단계 1510에 도시한 바와 같이, 요청의 특정 동작이 결정될 수도 있다. 일 실시예에서, 특정 동작은, 요청 분석을 사용하여, 예를 들어, HTTP 요청의 동작 이름(또는 다른 식별자)을 식별하여, 결정될 수도 있다.
단계 1515에 도시한 바와 같이, 서브서비스들 중 특정한 하나는 특정 동작에 기초하여 결정될 수도 있다. 서브서비스들 중 특정한 하나의 서브서비스는, 동작 이름들(또는 다른 식별자들) 및 서브서비스 이름들(또는 다른 식별자들) 간의 연관성을 나타내는 라우팅 맵을 사용하여 결정될 수도 있다. 라우팅 맵은, 무리에 있는 각 라우팅 핸들러가 최신 라우팅 정보를 갖도록 데이터 저장소로부터 동적으로 로딩될 수도 있다.
단계 1520에 도시한 바와 같이, 요청은 라우팅 핸들러로부터 특정 서브서비스로 라우팅될 수도 있다. 단계 1525에 도시한 바와 같이, 요청에 대한 응답은 특정 서브서비스로부터 라우팅 핸들러에서 수신될 수도 있다. 단계 1530에 도시한 바와 같이, 응답은 라우팅 핸들러로부터 클라이언트로 리턴될 수도 있다.
전술한 바는 다음에 따르는 절들을 고려할 때 더욱 잘 이해할 수도 있다:
1. 시스템으로서,
복수의 자원을 포함하는 제공자 네트워크와 규칙 기반 액션 트리거 시스템을 구현하도록 구성된 복수의 컴퓨팅 장치를 포함하되, 상기 규칙 기반 액션 트리거 시스템은,
복수의 트리거와 복수의 액션에 적어도 부분적으로 기초하여 복수의 규칙을 정의하되, 상기 복수의 규칙의 각각은 상기 트리거들 중 개개의 하나 이상의 트리거 및 상기 액션들 중 개개의 하나 이상의 액션을 포함하고;
상기 트리거들 중 특정한 하나의 트리거를 발화하기 위한 요청을 수신하되, 상기 트리거들 중 특정한 하나의 트리거를 발화하기 위한 하나 이상의 조건은 상기 제공자 네트워크에서의 상기 복수의 자원의 감시에 적어도 부분적으로 기초하여 결정되는 것인, 상기 요청을 수신하고;
상기 트리거들 중 특정한 하나의 트리거를 포함하는 상기 규칙들 중 특정한 하나 이상의 규칙을 결정하고;
상기 트리거들 중 특정한 하나의 트리거를 포함하는 상기 규칙들 중 특정한 하나 이상의 규칙에서의 상기 액션들 중 특정한 하나 이상의 액션을 설명하는 하나 이상의 메시지를 생성하고;
상기 하나 이상의 메시지를 메시징 서비스에 송신하고; 그리고
상기 메시징 서비스로부터 하나 이상의 액션 핸들러로 상기 하나 이상의 메시지를 전달하도록 구성되되, 상기 하나 이상의 액션 핸들러는 상기 하나 이상의 메시지에 설명된 상기 액션들 층 상기 특정한 하나 이상의 액션을 수행하도록 구성된, 시스템.
2. 제1절에 있어서, 상기 규칙 기반 액션 트리거링 시스템은,
상기 트리거들 중 특정한 하나를 포함하는, 상기 규칙들 중 하나의 추가 규칙을 결정하고, 상기 규칙들 중 상기 하나의 추가 규칙은 큐 교환을 포함하는, 상기 하나의 추가 규칙을 결정하고; 그리고
상기 규칙들 중 상기 하나의 추가 규칙의 큐 교환에 적어도 부분적으로 기초하여 큐 서비스에 큐 메시지를 송신하도록 더 구성된, 시스템.
3. 제1절에 있어서, 상기 규칙 기반 액션 트리거 시스템은,
상기 트리거들 중 하나의 추가 트리거를 발화하기 위한 요청을 수신하되, 상기 트리거들 중 상기 하나의 추가 트리거는 특정 시간에 대하여 스케줄링된 것인, 상기 요청을 수신하고;
상기 트리거들 중 상기 하나의 추가 트리거를 포함하는 상기 규칙들 중 하나 이상의 추가 규칙에서의 상기 액션들 중 하나 이상의 추가 액션을 설명하는 하나 이상의 추가 메시지를 생성하고;
상기 하나 이상의 추가 메시지를 상기 메시징 서비스에 송신하고; 그리고
상기 메시징 서비스로부터 상기 하나 이상의 액션 핸들러로 상기 하나 이상의 추가 메시지를 전달하도록 더 구성되되, 상기 하나 이상의 액션 핸들러는 상기 하나 이상의 추가 메시지에 설명된 상기 액션들 중 상기 하나 이상의 추가 액션을 수행하도록 구성된, 시스템.
4. 제1절에 있어서, 상기 하나 이상의 메시지에 설명된 상기 액션들 중 특정한 하나 이상에 응답하여, 상기 규칙 기반 액션 트리거링 시스템은,
상기 트리거들 중 하나 이상의 추가 트리거를 발화하기 위한 요청을 수신하고;
상기 트리거들 중 상기 하나 이상의 추가 트리거를 포함하는 규칙들 중 하나 이상의 추가 규칙을 결정하고;
상기 트리거들 중 상기 하나 이상의 추가 트리거를 포함하는 상기 규칙들 중 상기 하나 이상의 추가 규칙의 상기 액션들 중 하나 이상의 추가 액션을 설명하는 하나 이상의 추가 메시지를 생성하고;
상기 하나 이상의 추가 메시지를 상기 메시징 서비스에 송신하고; 그리고
상기 하나 이상의 추가 메시지를, 상기 메시징 서비스로부터, 상기 하나 이상의 추가 메시지에 설명된 상기 하나 이상의 추가 액션을 수행하도록 구성된 상기 하나 이상의 액션 핸들러로 전달하도록 더 구성된, 시스템.
5. 컴퓨터 구현 방법으로서,
하나 이상의 트리거를 포함하는 하나 이상의 규칙을 결정하는 단계로서, 상기 하나 이상의 트리거를 위한 하나 이상의 조건은 복수의 자원을 포함하는 제공자 네트워크에서 결정되는, 상기 하나 이상의 규칙을 결정하는 단계;
상기 하나 이상의 트리거를 포함하는 상기 하나 이상의 규칙의 하나 이상의 액션을 결정하는 단계; 및
상기 제공자 네트워크의 상기 복수의 자원 중 하나 이상을 수정하는 것을 포함하는 상기 하나 이상의 액션을 수행하는 단계를 포함하는, 컴퓨터 구현 방법.
6. 제5절에 있어서,
상기 하나 이상의 액션을 설명하는 하나 이상의 메시지를 생성하는 단계;
상기 하나 이상의 메시지를 메시징 서비스에 송신하는 단계; 및
상기 하나 이상의 메시지를 상기 메시징 서비스로부터 하나 이상의 액션 핸들러로 전달하는 단계를 더 포함하는, 컴퓨터 구현 방법.
7. 제6절에 있어서, 상기 메시징 서비스는 큐 서비스를 포함하되, 상기 하나 이상의 메시지는 상기 큐 서비스에 의해 관리되는 하나 이상의 큐에 배치되고, 상기 하나 이상의 메시지는 잡 디스패처에 의해 상기 하나 이상의 큐로부터 제거되는, 컴퓨터 구현 방법.
8. 제5절에 있어서, 상기 하나 이상의 트리거 중 적어도 하나를 포함하고 큐 교환을 포함하는 추가 규칙을 결정하는 단계; 및
상기 추가 규칙의 큐 교환에 적어도 부분적으로 기초하여 큐 서비스에 큐 메시지를 송신하는 단계를 더 포함하는, 컴퓨터 구현 방법.
9. 제5절에 있어서,
특정 시간 동안 추가 트리거를 스케줄링하는 단계;
상기 특정 시간의 도달에 응답하여, 상기 추가 트리거를 포함하는 하나 이상의 추가 규칙의 하나 이상의 추가 액션을 결정하는 단계; 및
상기 하나 이상의 추가 액션을 수행하는 단계를 더 포함하는, 컴퓨터 구현 방법.
10. 제5절에 있어서, 상기 하나 이상의 액션을 수행하는 것에 응답하여, 상기 방법은,
하나 이상의 추가 트리거를 발화하는 단계;
상기 하나 이상의 추가 트리거를 포함하는 하나 이상의 추가 규칙을 결정하는 단계;
상기 하나 이상의 추가 트리거를 포함하는 상기 하나 이상의 추가 규칙의 하나 이상의 추가 액션을 결정하는 단계; 및
상기 하나 이상의 추가 액션을 수행하는 단계를 더 포함하는, 컴퓨터 구현 방법.
11. 제5절에 있어서, 상기 하나 이상의 조건은 상기 제공자 네트워크의 상기 복수의 자원의 감시에 적어도 부분적으로 기초하여 결정되되, 상기 감시는, 하나 이상의 서비스 로그의 감시, 하나 이상의 서비스 메트릭의 감시, 하나 이상의 데이터 스트림의 감시, 하나 이상의 알람 상태 변경의 감시, 또는 이들의 조합을 포함하는, 컴퓨터 구현 방법.
12. 제5절에 있어서, 복수의 트리거와 복수의 액션에 적어도 부분적으로 기초하여 복수의 규칙을 정의하는 사용자 입력을 수신하는 단계를 더 포함하되, 상기 복수의 규칙의 각각은 상기 트리거들 중 각각의 하나 이상과 상기 액션들 중 각각의 하나 이상을 포함하는, 컴퓨터 구현 방법.
13. 컴퓨터 실행가능 프로그램 명령어들을 저장하는 컴퓨터 판독가능 저장 매체로서, 상기 프로그램 명령어들은,
복수의 트리거와 복수의 액션에 적어도 부분적으로 기초하여 복수의 규칙을 정의하되, 상기 복수의 규칙의 각각은 상기 트리거들 중 개개의 하나 이상의 트리거 및 상기 액션들 중 개개의 하나 이상의 액션을 포함하고;
상기 트리거들 중 특정한 하나 이상의 트리거에 대하여 하나 이상의 조건이 충족되는지를 결정하되, 상기 하나 이상의 조건은 복수의 자원을 포함하는 제공자 네트워크에서 결정되는 것인, 상기 조건이 충족된다고 결정하고;
상기 트리거들 중 특정한 하나 이상의 트리거를 포함하는 상기 규칙들 중 특정한 하나 이상의 규칙을 결정하고;
상기 트리거들 중 특정한 하나 이상의 트리거를 포함하는 상기 규칙들 중 특정한 하나 이상의 규칙에서의 상기 액션들 중 특정한 하나 이상의 액션을 설명하는 하나 이상의 메시지를 송신하는 것을 수행하도록 컴퓨터 실행가능하되, 하나 이상의 액션 핸들러는, 상기 하나 이상의 메시지를 수신하고 상기 하나 이상의 메시지에 설명된 상기 액션들 중 특정한 하나 이상의 액션을 수행하도록 구성된, 컴퓨터 판독가능 저장 매체.
14. 제13절에 있어서, 상기 하나 이상의 메시지를 송신함에 있어서, 상기 프로그램 명령어들은,
상기 하나 이상의 메시지를 메시징 서비스에 송신하고; 그리고
상기 하나 이상의 메시지를 상기 메시징 서비스로부터 상기 하나 이상의 액션 핸들러에 전달하도록 추가로 컴퓨터 실행가능한, 컴퓨터 판독가능 저장 매체.
15. 제13절에 있어서, 상기 규칙들 중 적어도 하나는 상기 트리거들 중 하나를 상기 복수의 액션에 결합하는, 컴퓨터 판독가능 저장 매체.
16. 제13절에 있어서, 상기 프로그램 명령어들은,
상기 트리거들 중 특정한 하나 이상의 트리거를 포함하는 상기 규칙들 중 하나의 추가 규칙을 결정하되, 상기 규칙들 중 상기 하나의 추가 규칙은 큐 교환을 포함하고; 그리고
상기 규칙들 중 상기 하나의 추가 규칙에서의 상기 큐 교환에 적어도 부분적으로 기초하여 큐 메시지를 큐 서비스에 송신하는 것을 수행하도록 추가로 컴퓨터 실행가능한, 컴퓨터 판독가능 저장 매체.
17. 제13절에 있어서, 상기 프로그램 명령어들은,
특정 시간 동안 상기 트리거들 중 하나의 추가 트리거를 스케줄링하고; 그리고
상기 트리거들 중 상기 하나의 추가 트리거를 포함하는 상기 규칙들 중 하나 이상의 추가 규칙의 상기 액션들 중 하나 이상의 추가 액션을 설명하는 하나 이상의 추가 메시지를 송신하는 것을 수행하도록 추가로 컴퓨터 실행가능하고, 상기 하나 이상의 액션 핸들러는, 상기 하나 이상의 추가 메시지를 수신하고 상기 하나 이상의 추가 메시지에 설명된 상기 액션들 중 상기 하나 이상의 추가 액션을 수행하도록 구성된, 컴퓨터 판독가능 저장매체.
18. 제13절에 있어서, 상기 하나 이상의 메시지에 설명된 상기 액션들 중 구 체적인 하나 이상을 수행하는 것에 응답하여, 상기 프로그램 명령어들은,
상기 트리거들 중 하나 이상의 추가 트리거를 발화하고,
상기 트리거들 중 상기 하나 이상의 추가 트리거를 포함하는 상기 규칙들 중 하나 이상의 추가 규칙을 결정하고,
상기 트리거들 중 상기 하나 이상의 추가 트리거를 포함하는 상기 규칙들 중 하나 이상의 규칙의 상기 액션들 중 하나 이상의 추가 액션을 설명하는 하나 이상의 추가 메시지를 송신하는 것을 수행하도록 추가로 컴퓨터 실행가능하고, 상기 하나 이상의 액션 핸들러는, 상기 하나 이상의 추가 메시지를 수신하고 상기 하나 이상의 추가 메시지에 설명된 상기 액션들 중 하나 이상의 추가 액션을 수행하도록 구성된, 컴퓨터 판독가능 저장 매체.
19. 제13절에 있어서, 상기 하나 이상의 조건은 상기 제공자 네트워크의 복수의 자원들의 감시에 적어도 부분적으로 기초하여 결정되되, 상기 감시는, 하나 이상의 서비스 로그의 감시, 하나 이상의 서비스 메트릭의 감시, 하나 이상의 데이터 스트림의 감시, 하나 이상의 알람 상태 변경의 감시, 또는 이들의 조합을 포함하는, 컴퓨터 판독가능 저장 매체.
20. 제13절에 있어서, 상기 복수의 규칙을 정의하는 데 있어서, 상기 프로그램 명령어들은,
상기 복수의 규칙을 정의하는 사용자 입력을 수신하도록 컴퓨터 실행가능하고, 상기 사용자 입력은, 하나 이상의 미리 정의된 액션, 하나 이상의 관행 액션, 또는 하나 이상의 미리 정의된 액션과 하나 이상의 관행 액션 중의 선택을 포함하는, 컴퓨터 판독가능 저장 매체.
게다가, 전술한 바는 다음에 따르는 추가 절들을 고려할 때 더욱 잘 이해할 수도 있다:
1. 시스템으로서,
복수의 서브서비스와 라우팅 핸들러를 구현하도록 구성된 복수의 컴퓨팅 장치를 포함하되, 상기 라우팅 핸들러는,
상기 복수의 서브서비스 중 특정한 하나에서의 특정 동작을 특정하는 요청을 클라이언트로부터 수신하고, 상기 복수의 서브서비스는 규칙 서브서비스 및 액션 서브서비스를 포함하고, 상기 규칙 서브서비스는 복수의 트리거와 복수의 액션을 사용하여 복수의 규칙을 정의하기 위한 하나 이상의 동작을 포함하고, 상기 규칙들의 개별적인 규칙들은 상기 트리거들 중 하나 이상을 상기 액션들 중 하나 이상에 각각 결합하도록 정의되고, 상기 액션 서브서비스는 복수의 자원을 포함하는 제공자 네트워크에서 상기 액션들을 수행하기 위한 하나 이상의 동작을 포함하고;
상기 요청의 특정 동작을 결정하고;
상기 특정 동작에 적어도 부분적으로 기초하여 상기 서브서비스들 중 특정한 하나를 결정하되, 상기 서브서비스들 중 특정한 하나는 라우팅 맵을 사용하여 결정되고, 상기 라우팅 맵은 데이터 저장소로부터 상기 라우팅 핸들러로 동적으로 로딩되고;
상기 요청을 상기 서브서비스들 중 특정한 하나로 라우팅하고;
상기 서브서비스들 중 특정한 하나로부터 상기 요청에 대한 응답을 수신하고; 그리고
상기 응답을 상기 클라이언트에 리턴하도록 구성된, 시스템.
2. 제1절에 있어서, 상기 복수의 서브서비스는 스케줄링 서브서비스를 포함하고, 상기 스케줄링 서브서비스는 특정 시간에서 상기 액션들의 개별 액션을 스케줄링하기 위한 하나 이상의 동작을 포함하는, 시스템.
3. 제1절에 있어서, 상기 규칙 서브서비스에서의 상기 하나 이상의 동작의 수정 또는 상기 액션 서브서비스에서의 상기 하나 이상의 동작의 수정에 응답하여, 상기 라우팅 맵에 적어도 부분적으로 기초하여 업데이트된 라우팅 맵이 생성되고,
상기 업데이트된 라우팅 맵은, 상기 서브서비스들 중 특정한 하나에 대한 하나 이상의 새롭거나 수정된 동작의 맵핑을 포함하고, 상기 데이터 저장소에 저장되는, 시스템.
4. 제1절에 있어서, 상기 특정 서브서비스는 규칙 서브서비스를 포함하고, 상기 특정 동작은 특정 트리거를 발화하기 위한 동작을 포함하고, 상기 특정 트리거를 발화하기 위한 동작의 수행 시, 상기 규칙 서브서비스는,
상기 특정 트리거를 포함하는 상기 규칙 중 특정한 하나 이상을 결정하고; 그리고
상기 특정 트리거를 포함하는 상기 규칙 중 특정한 하나 이상에서 상기 액션들 중 특정한 하나 이상을 설명하는 하나 이상의 메시지를 생성하도록 구성된, 시스템.
5. 컴퓨터 구현 방법으로서,
복수의 서브서비스 중 특정한 하나에서의 특정 동작을 특정하는 요청을 클라이언트로부터의 라우팅 핸들러에서 수신하는 단계로서, 상기 복수의 서브서비스는 복수의 규칙을 정의하기 위한 하나 이상의 동작을 포함하고, 상기 규칙들의 개별적인 규칙들은 복수의 트리거 중 개개의 하나 이상을 복수의 액션 중 개개의 하나 이상에 각각 결합하도록 정의되고, 상기 복수의 서브서비스는 복수의 자원을 포함하는 제공자 네트워크에서 상기 복수의 액션을 수행하기 위한 하나 이상의 동작을 포함하는, 상기 수신하는 단계;
상기 라우팅 핸들러에서 상기 요청의 특정 동작을 결정하는 단계;
상기 라우팅 핸들러에서, 상기 특정 동작에 적어도 부분적으로 기초하여 상기 서브서비스들 중 특정한 하나를 결정하는 단계로서, 상기 서브서비스들 중 특정한 하나는 상기 라우팅 핸들러와 하나 이상의 추가 라우팅 핸들러에 의해 공유되는 라우팅 맵을 사용하여 결정되는, 상기 서브서비스들 중 특정한 하나를 결정하는 단계; 및
상기 요청을 상기 서브서비스들 중 특정한 하나로 라우팅하는 단계를 포함하는, 컴퓨터 구현 방법.
6. 제5절에 있어서, 상기 복수의 서브서비스는 규칙 서브서비스를 포함하되, 상기 규칙 서브서비스는 상기 복수의 규칙을 정의하기 위한 상기 하나 이상의 동작을 포함하고, 상기 규칙 서브서비스는 상기 트리거들 중 하나 이상을 발화하기 위한 하나 이상의 동작을 포함하는, 컴퓨터 구현 방법.
7. 제5절에 있어서, 상기 복수의 서브서비스는 액션 서브서비스를 포함하되, 상기 액션 서브서비스는, 상기 복수의 자원을 포함하는 제공자 네트워크에서 상기 복수의 액션을 수행하기 위한 하나 이상의 동작을 포함하는, 컴퓨터 구현 방법.
8. 제5절에 있어서, 상기 복수의 서브서비스는 스케줄링 서브서비스를 포함하되, 상기 스케줄링 서브서비스는 특정 시간에서 상기 액션들의 개별 액션을 스케줄링하기 위한 하나 이상의 동작을 포함하는, 컴퓨터 구현 방법.
9. 제5절에 있어서, 상기 라우팅 맵은 데이터 저장소로부터 상기 라우팅 핸들러로 동적으로 로딩되고, 상기 컴퓨터 구현 방법은,
상기 라우팅 맵에 적어도 부분적으로 기초하여 업데이트된 라우팅 맵을 생성하는 단계로서, 상기 업데이트된 라우팅 맵은 상기 서브서비스들 중 특정한 하나의 서브서비스에 대한 하나 이상의 새롭거나 수정된 동작의 맵핑을 포함하는, 상기 업데이트된 라우팅 맵을 생성하는 단계; 및
상기 업데이트된 라우팅 맵을 상기 데이터 저장소에 저장하는 단계를 더 포함하는, 컴퓨터 구현 방법.
10. 제5절에 있어서, 상기 특정 서브서비스는 규칙 서브서비스를 포함하고, 상기 특정 동작은 특정 트리거를 발화하기 위한 동작을 포함하고, 상기 특정 트리거를 발화하기 위한 동작의 수행 시, 상기 방법은,
상기 특정 트리거를 포함하는 규칙들 중 특정한 하나 이상의 규칙을 결정하는 단계; 및
상기 특정 트리거를 포함하는 규칙들 중 특정한 하나 이상의 규칙에서 상기 액션들 중 특정한 하나 이상의 액션을 설명하는 하나 이상의 메시지를 생성하는 단계를 더 포함하는, 방법.
11. 제5절에 있어서, 상기 라우팅 핸들러에서, 상기 서브서비스들 중 특정한 하나의 서브서비스로부터 상기 요청에 대한 응답을 수신하는 단계; 및
상기 응답을 상기 클라이언트에 리턴하는 단계를 더 포함하는, 컴퓨터 구현 방법.
12. 제5절에 있어서, 상기 요청은 특정 HTTP 클라이언트를 사용하여 상기 서브서비스들 중 특정한 하나의 서브서비스로 라우팅되고, 추가 요청은 추가 HTTP 클라이언트를 사용하여 상기 서브서비스들 중 다른 하나의 서브서비스로 라우팅되는, 컴퓨터 구현 방법.
13. 프로그램 명령어들을 저장하는 컴퓨터 판독가능 저장 매체로서, 상기 프로그램 명령어들은,
복수의 서브서비스 중 특정한 하나의 서브서비스에서의 특정 동작을 특정하는 요청을 클라이언트로부터 라우팅 핸들러에서 수신하고, 상기 복수의 서브서비스는 복수의 규칙을 정의하기 위한 하나 이상의 동작을 포함하고, 상기 규칙들의 개별적인 규칙들은 복수의 트리거 중 개개의 하나 이상을 복수의 액션 중 개개의 하나 이상에 각각 결합하도록 정의되고, 상기 복수의 서브서비스는 복수의 자원을 포함하는 제공자 네트워크에서 상기 복수의 액션을 수행하기 위한 하나 이상의 동작을 포함하고;
상기 라우팅 핸들러에서 상기 요청의 특정 동작을 결정하고;
상기 라우팅 핸들러에서, 상기 특정 동작에 적어도 부분적으로 기초하여 상기 서브서비스들 중 특정한 하나의 서브서비스를 결정하고, 상기 서브서비스들 중 특정한 하나의 서브서비스는 상기 라우팅 핸들러와 하나 이상의 추가 라우팅 핸들러에 의해 공유되며 데이터 저장소로부터 로딩되는 라우팅 맵을 사용하여 결정되는 것인, 상기 특정한 하나의 서브서비스를 결정하고; 그리고
상기 요청을 상기 서브서비스들 중 특정한 하나의 서브서비스로 라우팅하도록 컴퓨터 실행가능한, 컴퓨터 판독가능 저장 매체.
14. 제13절에 있어서, 상기 복수의 서브서비스는 규칙 서브서비스를 포함하고, 상기 규칙 서브서비스는 상기 복수의 규칙을 정의하기 위한 상기 하나 이상의 동작을 포함하되, 상기 규칙 서브서비스는 상기 트리거들 중 하나 이상의 트리거를 발화하기 위한 하나 이상의 동작을 포함하는, 컴퓨터 판독가능 저장 매체.
15. 제13절에 있어서, 상기 복수의 서브서비스는 액션 서브서비스를 포함하되, 상기 액션 서브서비스는, 상기 복수의 자원을 포함하는 제공자 네트워크에서 상기 복수의 액션을 수행하기 위한 하나 이상의 동작을 포함하는, 컴퓨터 판독가능 저장 매체.
16. 제13절에 있어서, 상기 복수의 서브서비스는 스케줄링 서브서비스를 포함하고, 상기 스케줄링 서브서비스는 특정 시간에 상기 액션들의 개별 액션을 스케줄링하기 위한 하나 이상의 동작을 포함하는, 컴퓨터 판독가능 저장 매체.
17. 제13절에 있어서, 상기 프로그램 명령어들은,
상기 라우팅 맵에 적어도 부분적으로 기초하여 업데이트된 라우팅 맵을 생성하고, 상기 업데이트된 라우팅 맵은 상기 서브서비스들 중 특정한 하나의 서브서비스에 대한 하나 이상의 새롭거나 수정된 동작의 맵핑을 포함하고; 그리고
상기 업데이트된 라우팅 맵을 상기 데이터 저장소에 저장하도록 추가로 컴퓨터 실행가능한, 컴퓨터 판독가능 저장 매체.
18. 제13절에 있어서, 상기 특정 서브서비스는 규칙 서브서비스를 포함하고, 상기 특정 동작은 특정 트리거를 발화하기 위한 동작을 포함하고, 상기 특정 트리거를 발화하기 위한 동작의 수행 시, 상기 규칙 서브서비스는,
상기 특정 트리거를 포함하는 상기 규칙들 중 하나 이상의 특정 규칙을 결정하고; 그리고
상기 특정 트리거를 포함하는 상기 규칙들 중 하나 이상의 특정 규칙의 액션들 중 하나 이상의 특정 액션을 설명하는 하나 이상의 메시지를 생성하도록 구성된, 컴퓨터 판독가능 저장 매체.
19. 제13절에 있어서, 상기 프로그램 명령어들은,
상기 라우팅 핸들러에서, 상기 서브서비스들 중 특정한 하나의 서브서비스로부터 상기 요청에 대한 응답을 수신하고'
상기 응답을 상기 클라이언트에 리턴하도록 추가로 컴퓨터 실행가능한, 컴퓨터 판독가능 저장 매체.
20. 제13절에 있어서, 상기 요청은 특정 HTTP 클라이언트를 사용하여 상기 서브서비스들 중 특정한 하나의 서브서비스로 라우팅되고, 추가 요청은 추가 HTTP 클라이언트를 사용하여 상기 서브서비스들 중 다른 하나의 서브서비스로 라우팅되고, 상기 특정 HTTP 클라이언트는 비동기 입력/출력을 이용하여 상기 요청을 라우팅하도록 구성된, 컴퓨터 판독가능 저장 매체.
예시적 컴퓨터 시스템
적어도 일부 실시예들에서, 본원에서 기술된 하나 이상의 기술들 중 일부 또는 전부를 구현하는 컴퓨터 시스템은, 하나 이상의 컴퓨터 판독가능 매체를 포함하거나 또는 이러한 컴퓨터 판독 가능 매체에 액세스하도록 구성된 범용 컴퓨터 시스템을 포함할 수도 있다. 도 16은 이러한 범용 컴퓨팅 장치(3000)를 도시한다. 도시한 실시예에서, 컴퓨팅 장치(3000)는, 입력/출력(I/O) 인터페이스(3030)를 통해 시스템 메모리(3020)에 결합된 하나 이상의 프로세서(3010)를 포함한다. 컴퓨팅 장치(3000)는 I/O 인터페이스(3030)에 결합된 네트워크 인터페이스(3040)를 더 포함한다.
다양한 실시예에서, 컴퓨팅 장치(3000)는, 하나의 프로세서(3010)를 포함하는 유니프로세서 시스템, 또는 여러 프로세서들(3010)(예를 들어, 2, 4, 8 또는 다른 적절한 수)을 포함하는 멀티 프로세서 시스템일 수도 있다. 프로세서(3010)는 명령어들을 실행할 수 있는 임의의 적절한 프로세서들을 포함할 수도 있다. 예를 들어, 다양한 실시예에서, 프로세서(3010)는, x86, PowerPC, SPARC, 또는 MIPS ISA, 또는 다른 임의의 적절한 ISA와 같은 다양한 명령어 세트 아키텍처(ISA) 중 임의의 것을 구현하는 범용 또는 내장 프로세서일 수도 있다. 멀티프로세서 시스템에서, 각각의 프로세서(3010)는 동일한 ISA를 공통적으로 구현할 수도 있지만, 반드시 그런 것은 아니다.
시스템 메모리(3020)는 프로세서(들)(3010)에 의해 액세스가능한 프로그램 명령어들 및 데이터를 저장하도록 구성될 수도 있다. 다양한 실시예에서, 시스템 메모리(3020)는, SRAM, SDRAM, 비휘발성/플래시 유형 메모리, 또는 다른 임의의 유형의 메모리와 같은 임의의 적절한 메모리 기술을 이용하여 구현될 수도 있다. 도시된 실시예에서, 상술한 방법, 기술, 및 데이터와 같은 하나 이상의 원하는 기능을 구현하는 프로그램 명령어와 데이터는 시스템 메모리(3020) 내에 코드(즉, 프로그램 명령어)(3025) 및 데이터(3026)로서 저장된 것으로 도시되어 있다.
일 실시예에서, I/O 인터페이스(3030)는, 프로세서(3010), 시스템 메모리(3020), 및 네트워크 인터페이스(3040) 또는 다른 주변 장치 인터페이스를 포함하는 장치의 임의의 주변 장치들 간의 I/O 트래픽을 조정하도록 구성될 수도 있다. 일부 실시예들에서, I/O 인터페이스(3030)는, 하나의 구성요소(예를 들어, 시스템 메모리(3020))로부터 다른 구성요소(예를 들어, 프로세서(3010))에 의한 사용에 적합한 포맷으로 데이터 신호를 변환하기 위해 임의의 필요한 프로토콜, 타이밍, 또는 다른 데이터 변환을 수행할 수도 있다. 일부 실시예들에서, I/O 인터페이스(3030)는, 예를 들어, 주변 구성요소 상호접속(PCI) 버스 표준 또는 유니버설 시리얼 버스(USB) 표준의 변형 등의 다양한 유형의 주변 장치 버스들을 통해 부착된 장치들에 대한 지원을 포함할 수도 있다. 일부 실시예들에서, I/O 인터페이스(3030)의 기능은, 예를 들어, 노스 브릿지 및 사우스 브릿지와 같은 2개 이상의 개별적인 구성요소들로 분할될 수도 있다. 또한, 일부 실시예들에서, 시스템 메모리(3020)에 대한 인터페이스와 같은 I/O 인터페이스(3030)의 기능의 일부 또는 전부는 프로세서(3010)에 직접 통합될 수도 있다.
네트워크 인터페이스(3040)는, 컴퓨팅 장치(3000)와 네트워크 또는 네트워크들(3050)에 부착된 다른 장치들(3060) 사이에서 데이터가 교환될 수 있도록 구성될 수도 있다. 다양한 실시예에서, 네트워크 인터페이스(3040)는, 예를 들어, 이더넷 네트워크의 유형과 같은 임의의 적합한 유선 또는 무선 일반 데이터 네트워크를 통한 통신을 지원할 수도 있다. 또한, 네트워크 인터페이스(3040)는, 아날로그 음성 네트워크 또는 디지털 섬유 통신 네트워크와 같은 원격통신/전화 통신 네트워크, 파이버 채널 SAN과 같은 저장 영역 네트워크, 또는 다른 임의의 적합한 유형의 네트워크, 및/또는 프로토콜을 통한 통신을 지원할 수도 있다.
일부 실시예들에서, 시스템 메모리(3020)는, 상응하는 방법 및 장치의 실시예들을 구현하도록 전술한 바와 같은 프로그램 명령어와 데이터를 저장하도록 구성된 컴퓨터 판독가능(즉, 컴퓨터 액세스가능) 매체의 일 실시예일 수도 있다. 그러나, 다른 실시예들에서, 프로그램 명령어들 및/또는 데이터는 상이한 유형의 컴퓨터 판독가능 매체들에 수신, 송신, 또는 저장될 수도 있다. 일반적으로 말해서, 컴퓨터 판독가능 매체는, I/O 인터페이스(3030)를 통해 컴퓨팅 장치(3000)에 결합된 디스크 또는 DVD/CD와 같은 자기 또는 광학 매체 등의 비일시적 저장 매체 또는 메모리 매체를 포함할 수도 있다. 또한, 비일시적 컴퓨터 판독가능 저장 매체는, 컴퓨팅 장치(3000)의 일부 실시예들에 포함될 수도 있는 RAM (예를 들어, SDRAM, DDR SDRAM, RDRAM, SRAM 등), ROM 등과 같은 임의의 휘발성 또는 비휘발성 매체를 시스템 메모리 (3020) 또는 다른 유형의 메모리로서 포함할 수도 있다. 또한, 컴퓨터 판독가능 매체는, 네트워크 인터페이스(3040)를 통해 구현될 수도 있는 것과 같은 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 전달되는 전기 신호, 전자기 신호, 또는 디지털 신호와 같은 송신 매체 또는 신호를 포함할 수도 있다. 도 16에 도시된 것과 같은 다수의 컴퓨팅 장치들 중 일부 또는 전부는 다양한 실시예에서 기술된 기능을 구현하는 데 사용될 수도 있으며, 예를 들어, 다양한 서로 다른 장치과 서버에서 실행되는 소프트웨어 구성요소들이 협력하여 기능을 제공할 수도 있다. 일부 실시예들에서, 설명된 기능의 일부는, 범용 컴퓨터 시스템을 사용하여 구현되는 것에 더하여 또는 그 구현 대신에 저장 장치, 네트워크 장치, 또는 특수 용도 컴퓨터 시스템을 사용하여 구현될 수도 있다. 본 명세서에서 사용되는 바와 같은 "컴퓨팅 장치"라는 용어는, 적어도 이러한 유형의 장치들 모두를 지칭하며, 이러한 유형의 장치들로 한정되지 않는다.
다양한 실시예는, 또한, 컴퓨터 판독 가능 매체 상에 전술한 설명에 따라 구현된 명령어 및/또는 데이터를 수신, 송신, 또는 저장하는 단계를 포함할 수도 있다. 일반적으로 말해서, 컴퓨터 판독 가능 매체는, 예를 들어, 디스크 또는 DVD/CD-ROM인 자기 또는 광학 매체, RAM(SDRAM, DDR, RDRAM, SRAM 등), ROM 등과 같은 휘발성 또는 비휘발성 매체 등의 저장 매체 또는 메모리 매체를 포함할 수도 있다. 일부 실시예들에서, 컴퓨터 판독 가능 매체는, 또한, 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 전달되는 전기 신호, 전자기 신호, 또는 디지털 신호와 같은 전송 매체나 신호를 포함할 수도 있다.
도면에 도시되고 본 명세서에 설명된 바와 같은 다양한 방법은 방법들의 실시예들을 나타낸다. 방법들은 소프트웨어, 하드웨어, 또는 이들의 조합으로 구현될 수도 있다. 다양한 방법에서, 단계들의 순서는 변경될 수도 있고, 다양한 요소에 대하여 부가, 재정렬, 결합, 생략, 수정 등이 행해질 수도 있다. 다양한 단계는, (예를 들어, 사용자 입력에 의해 직접 프롬프트(prompt)되지 않고) 자동으로 그리고/또는 (예를 들어, 프로그램 명령들에 따라) 프로그래밍식으로 수행될 수도 있다.
본원에서 본 발명의 설명에 사용되는 용어는, 특정 실시예들만을 설명하기 위한 것이며, 본 발명을 한정하려는 것이 아니다. 본 발명의 설명 및 첨부된 청구범위에서 사용되는 바와 같이, 단수 형태 "하나", "한" 및 "그"는 문맥상 달리 명시하지 않는 한 복수 형태도 포함하고자 하는 것이다. 또한, 본원에서 사용되는 바와 같은 "및/또는"이라는 용어는 열거되어 있는 연관된 항목들 중 하나 이상의 임의의 모든 가능한 조합을 가리키며 이러한 조합을 포함한다는 점을 이해할 것이다. 또한, "포함한다"(includes), "포함하는"(including), "포함하다"(comprises) 및/또는 "포함하는"(comprising)이라는 용어들은, 본원에서 사용되는 경우, 명시된 특징부, 정수, 단계, 동작, 요소, 및/또는 구성요소의 존재를 특정 하지만, 하나 이상의 다른 특징부, 정수, 단계, 동작, 요소, 구성요소, 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는다는 점을 이해할 것이다.
본원에서 사용되는 바와 같이, "라면"이라는 용어는, 문맥에 따라, "할 때" 또는 "~에 대한" 또는 "결정에 대한 응답으로" 또는 "검출에 대한 응답으로"를 의미하는 것으로 해석될 수도 있다. 유사하게, "결정되는 경우" 또는 "[언급된 조건 또는 이벤트가 검출되는 경우]"라는 문구는, 문맥에 따라, "결정할 때" 또는 "결정된 것에 응답하여" 또는 "[명시된 조건 또는 이벤트]의 검출시", 또는 "[명시된 조건 또는 이벤트]의 검출에 응답하여"를 의미하는 것으로 해석될 수도 있다.
또한, 제1, 제2등의 용어들은 본원에서 다양한 구성요소를 설명하기 위해 사용될 수도 있지만, 이러한 구성요소들은 이들 용어에 의해 제한되어서는 안 된다는 점을 이해할 것이다. 이러한 용어들은 하나의 요소를 다른 요소와 구별하기 위해서만 사용된 것이다. 예를 들어, 제1접촉부는 제2접촉부로 지칭될 수도 있고, 유사하게, 제2접촉부는 본 발명의 범위를 벗어나지 않고 제1접촉부로 지칭될 수도 있다. 제1접촉부와 제2접촉부는 모두 접촉부이지만, 동일한 접촉부가 아니다.
다수의 특정 한 세부 사항들이 청구 대상을 완전하게 이해하도록 본원에 설명된다. 그러나, 통상의 기술자라면, 청구 대상이 이러한 특정 한 세부 사항들 없이 실시될 수도 있음을 이해할 것이다. 다른 예에서, 통상의 기술자에게 알려진 방법, 장치 또는 시스템은 청구 대상을 불명료하게 하지 않도록 상세히 설명되지 않았다. 본 개시 내용의 이점을 갖는 통상의 기술자에게는 명백한 바와 같이 다양한 수정 및 변경이 이루어질 수도 있다. 이러한 모든 수정과 변경을 포함하고자 하는 것이며, 이에 따라 상기한 설명은 제한적인 의미라기보다는 예시적인 것으로 간주되어야 한다.

Claims (15)

  1. 시스템으로서,
    복수의 자원을 포함하는 제공자 네트워크와 규칙 기반 액션 트리거 시스템을 구현하도록 구성된 복수의 컴퓨팅 장치를 포함하되, 상기 규칙 기반 액션 트리거 시스템은,
    복수의 트리거와 복수의 액션에 적어도 부분적으로 기초하여 복수의 규칙을 정의하되, 상기 복수의 규칙의 각각은 상기 트리거들 중 개개의 하나 이상의 트리거 및 상기 액션들 중 개개의 하나 이상의 액션을 포함하고;
    상기 트리거들 중 특정한 하나의 트리거를 발화하기 위한 요청을 수신하되, 상기 트리거들 중 특정한 하나의 트리거를 발화하기 위한 하나 이상의 조건은 상기 제공자 네트워크에서의 상기 복수의 자원의 감시에 적어도 부분적으로 기초하여 결정되고;
    상기 트리거들 중 특정한 하나의 트리거를 포함하는 상기 규칙들 중 특정한 하나 이상의 규칙을 결정하고;
    상기 트리거들 중 특정한 하나의 트리거를 포함하는 상기 규칙들 중 특정한 하나 이상의 규칙에서의 상기 액션들 중 특정한 하나 이상의 액션을 설명하는 하나 이상의 메시지를 생성하고;
    상기 하나 이상의 메시지를 메시징 서비스(messaging service)에 송신하고; 그리고
    상기 메시징 서비스로부터 하나 이상의 액션 핸들러(action handler)로 상기 하나 이상의 메시지를 전달하도록 구성되되, 상기 하나 이상의 액션 핸들러는 상기 하나 이상의 메시지에 설명된 상기 액션들 중 특정한 하나 이상의 액션을 수행하도록 구성된, 시스템.
  2. 제1항에 있어서, 상기 규칙 기반 액션 트리거 시스템은,
    상기 트리거들 중 하나의 추가 트리거를 발화하기 위한 요청을 수신하되, 상기 트리거들 중 상기 하나의 추가 트리거는 특정 시간에 대하여 스케줄링되고;
    상기 트리거들 중 상기 하나의 추가 트리거를 포함하는 상기 규칙들 중 하나 이상의 추가 규칙에서의 상기 액션들 중 하나 이상의 추가 액션을 설명하는 하나 이상의 추가 메시지를 생성하고;
    상기 하나 이상의 추가 메시지를 상기 메시징 서비스에 송신하고; 그리고
    상기 메시징 서비스로부터 상기 하나 이상의 액션 핸들러로 상기 하나 이상의 추가 메시지를 전달하도록 더 구성되되, 상기 하나 이상의 액션 핸들러는 상기 하나 이상의 추가 메시지에 설명된 상기 액션들 중 상기 하나 이상의 추가 액션을 수행하도록 구성된, 시스템.
  3. 컴퓨터 실행가능 프로그램 명령어들을 저장하는 컴퓨터 판독가능 저장 매체로서, 상기 프로그램 명령어들은,
    복수의 트리거와 복수의 액션에 적어도 부분적으로 기초하여 복수의 규칙을 정의하되, 상기 복수의 규칙의 각각은 상기 트리거들 중 개개의 하나 이상의 트리거 및 상기 액션들 중 개개의 하나 이상의 액션을 포함하고;
    상기 트리거들 중 특정한 하나 이상의 트리거에 대하여 하나 이상의 조건이 충족되는지를 결정하되, 상기 하나 이상의 조건은 복수의 자원을 포함하는 제공자 네트워크에서 결정되고;
    상기 트리거들 중 특정한 하나 이상의 트리거를 포함하는 상기 규칙들 중 특정한 하나 이상의 규칙을 결정하고; 그리고
    상기 트리거들 중 특정한 하나 이상의 트리거를 포함하는 상기 규칙들 중 특정한 하나 이상의 규칙에서의 상기 액션들 중 특정한 하나 이상의 액션을 설명하는 하나 이상의 메시지를 송신하는 것을 수행하도록 컴퓨터 실행가능하되, 하나 이상의 액션 핸들러는, 상기 하나 이상의 메시지를 수신하고 상기 하나 이상의 메시지에 설명된 상기 액션들 중 특정한 하나 이상의 액션을 수행하도록 구성된, 컴퓨터 판독가능 저장 매체.
  4. 제3항에 있어서, 상기 하나 이상의 메시지를 송신함에 있어서, 상기 프로그램 명령어들은,
    상기 하나 이상의 메시지를 메시징 서비스에 송신하고; 그리고
    상기 하나 이상의 메시지를 상기 메시징 서비스로부터 상기 하나 이상의 액션 핸들러에 전달하는 것을 수행하도록 추가로 컴퓨터 실행가능한, 컴퓨터 판독가능 저장 매체.
  5. 제3항에 있어서, 상기 프로그램 명령어들은,
    상기 트리거들 중 특정한 하나 이상의 트리거를 포함하는 상기 규칙들 중 하나의 추가 규칙을 결정하되, 상기 규칙들 중 상기 하나의 추가 규칙은 큐 교환(queue exchange)을 포함하고; 그리고
    상기 규칙들 중 상기 하나의 추가 규칙에서의 상기 큐 교환에 적어도 부분적으로 기초하여 큐 메시지를 큐 서비스에 송신하는 것을 수행하도록 추가로 컴퓨터 실행가능한, 컴퓨터 판독가능 저장 매체.
  6. 제3항에 있어서, 상기 프로그램 명령어들은,
    특정 시간 동안 상기 트리거들 중 하나의 추가 트리거를 스케줄링하고; 그리고
    상기 트리거들 중 상기 하나의 추가 트리거를 포함하는 상기 규칙들 중 하나 이상의 추가 규칙의 상기 액션들 중 하나 이상의 추가 액션을 설명하는 하나 이상의 추가 메시지를 송신하는 것을 수행하도록 추가로 컴퓨터 실행가능하되, 상기 하나 이상의 액션 핸들러는, 상기 하나 이상의 추가 메시지를 수신하고 상기 하나 이상의 추가 메시지에 설명된 상기 액션들 중 상기 하나 이상의 추가 액션을 수행하도록 구성된, 컴퓨터 판독가능 저장 매체.
  7. 제3항에 있어서, 상기 하나 이상의 조건은, 상기 제공자 네트워크의 상기 복수의 자원의 감시에 적어도 부분적으로 기초하여 결정되되, 상기 감시는, 하나 이상의 서비스 로그의 감시, 하나 이상의 서비스 메트릭의 감시, 하나 이상의 데이터 스트림의 감시, 하나 이상의 경고 상태 변화의 감시, 또는 이들의 조합을 포함하는, 컴퓨터 판독가능 저장 매체.
  8. 제3항에 있어서, 상기 복수의 규칙을 정의하는 데 있어서, 상기 프로그램 명령어들은, 상기 복수의 규칙을 정의하는 사용자 입력을 수신하는 것을 수행하도록 추가로 컴퓨터 실행가능하되, 상기 사용자 입력은, 하나 이상의 미리 정의된 액션, 하나 이상의 관행 액션, 또는 하나 이상의 미리 정의된 액션과 하나 이상의 관행 액션 중의 선택을 포함하는, 컴퓨터 판독가능 저장 매체.
  9. 시스템으로서,
    복수의 서브서비스와 라우팅 핸들러를 구현하도록 구성된 복수의 컴퓨팅 장치를 포함하되, 상기 라우팅 핸들러는,
    상기 복수의 서브서비스 중 특정한 하나에서의 특정 동작을 특정하는 요청을 클라이언트로부터 수신하되, 상기 복수의 서브서비스는 규칙 서브서비스 및 액션 서브서비스를 포함하고, 상기 규칙 서브서비스는 복수의 트리거와 복수의 액션을 사용하여 복수의 규칙을 정의하기 위한 하나 이상의 동작을 포함하고, 상기 규칙들의 개별적인 규칙들은 상기 트리거들 중 하나 이상을 상기 액션들 중 하나 이상에 각각 결합하도록 정의되고, 상기 액션 서브서비스는 복수의 자원을 포함하는 제공자 네트워크에서 상기 액션들을 수행하기 위한 하나 이상의 동작을 포함하고;
    상기 요청의 특정 동작을 결정하고;
    상기 특정 동작에 적어도 부분적으로 기초하여 상기 서브서비스들 중 특정한 하나를 결정하되, 상기 서브서비스들 중 특정한 하나는 라우팅 맵을 사용하여 결정되고, 상기 라우팅 맵은 데이터 저장소로부터 상기 라우팅 핸들러로 동적으로 로딩되고;
    상기 요청을 상기 서브서비스들 중 특정한 하나로 라우팅하고;
    상기 서브서비스들 중 특정한 하나로부터 상기 요청에 대한 응답을 수신하고; 그리고
    상기 응답을 상기 클라이언트에 리턴하도록 구성된, 시스템.
  10. 제9항에 있어서, 상기 규칙 서브서비스에서의 상기 하나 이상의 동작의 수정 또는 상기 액션 서브서비스에서의 상기 하나 이상의 동작의 수정에 응답하여, 상기 라우팅 맵에 적어도 부분적으로 기초하여 업데이트된 라우팅 맵이 생성되되, 상기 업데이트된 라우팅 맵은 상기 서브서비스들 중 특정한 하나에 대한 하나 이상의 새롭거나 수정된 동작의 맵핑을 포함하고, 상기 업데이트된 라우팅 맵은 상기 데이터 저장소에 저장되는, 시스템.
  11. 제9항에 있어서, 상기 특정 서브서비스는 규칙 서브서비스를 포함하고, 상기 특정 동작은 특정 트리거를 발화하기 위한 동작을 포함하되, 상기 특정 트리거를 발화하기 위한 동작의 수행 시, 상기 규칙 서브서비스는,
    상기 특정 트리거를 포함하는 상기 규칙 중 특정한 하나 이상을 결정하고; 그리고
    상기 특정 트리거를 포함하는 상기 규칙 중 특정한 하나 이상에서 상기 액션들 중 특정한 하나 이상을 설명하는 하나 이상의 메시지를 생성하도록 구성된, 시스템.
  12. 컴퓨터 구현 방법으로서,
    복수의 서브서비스 중 특정한 하나에서의 특정 동작을 특정하는 요청을 클라이언트로부터의 라우팅 핸들러에서 수신하는 단계로서, 상기 복수의 서브서비스는 복수의 규칙을 정의하기 위한 하나 이상의 동작을 포함하고, 상기 규칙들의 개별적인 규칙들은 복수의 트리거 중 개개의 하나 이상을 복수의 액션 중 개개의 하나 이상에 결합하도록 정의되고, 상기 복수의 서브서비스는 복수의 자원을 포함하는 제공자 네트워크에서 상기 복수의 액션을 수행하기 위한 하나 이상의 동작을 포함하는, 상기 수신하는 단계;
    상기 라우팅 핸들러에서 상기 요청의 특정 동작을 결정하는 단계;
    상기 라우팅 핸들러에서, 상기 특정 동작에 적어도 부분적으로 기초하여 상기 서브서비스들 중 특정한 하나를 결정하는 단계로서, 상기 서브서비스들 중 특정한 하나는 상기 라우팅 핸들러와 하나 이상의 추가 라우팅 핸들러에 의해 공유되는 라우팅 맵을 사용하여 결정되는, 상기 서브서비스들 중 특정한 하나를 결정하는 단계; 및
    상기 요청을 상기 서브서비스들 중 특정한 하나로 라우팅하는 단계를 포함하는, 컴퓨터 구현 방법.
  13. 제9항에 있어서, 상기 복수의 서브서비스는 규칙 서브서비스를 포함하고, 상기 규칙 서브서비스는 상기 복수의 규칙을 정의하기 위한 상기 하나 이상의 동작을 포함하고, 상기 규칙 서브서비스는 상기 트리거들 중 하나 이상을 발화하기 위한 하나 이상의 동작을 포함하는, 컴퓨터 구현 방법.
  14. 제9항에 있어서, 상기 복수의 서브서비스는 액션 서브서비스를 포함하고, 상기 액션 서브서비스는, 상기 복수의 자원을 포함하는 제공자 네트워크에서 상기 복수의 액션을 수행하기 위한 하나 이상의 동작을 포함하는, 컴퓨터 구현 방법.
  15. 제5항에 있어서, 상기 특정 서브서비스는 규칙 서브서비스를 포함하고, 상기 특정 동작은 특정 트리거를 발화하기 위한 동작을 포함하고, 상기 특정 트리거를 발화하기 위한 동작의 수행 시, 상기 방법은,
    상기 특정 트리거를 포함하는 규칙들 중 특정한 하나 이상의 규칙을 결정하는 단계; 및
    상기 특정 트리거를 포함하는 규칙들 중 특정한 하나 이상의 규칙에서 상기 액션들 중 특정한 하나 이상의 액션을 설명하는 하나 이상의 메시지를 생성하는 단계를 더 포함하는, 컴퓨터 구현 방법.
KR1020177014234A 2014-10-30 2015-10-30 제공자 네트워크에서의 규칙 기반 트리거들 중 특정한 하나의 트리거 KR101999458B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/529,097 US10567476B2 (en) 2014-10-30 2014-10-30 Rule-based action triggering in a provider network
US14/529,096 2014-10-30
US14/529,097 2014-10-30
US14/529,096 US10397128B2 (en) 2014-10-30 2014-10-30 Routing handler for rule-based action triggering
PCT/US2015/058432 WO2016070108A1 (en) 2014-10-30 2015-10-30 Rule-based action triggering in a provider network

Publications (2)

Publication Number Publication Date
KR20170077182A true KR20170077182A (ko) 2017-07-05
KR101999458B1 KR101999458B1 (ko) 2019-07-11

Family

ID=54540237

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177014234A KR101999458B1 (ko) 2014-10-30 2015-10-30 제공자 네트워크에서의 규칙 기반 트리거들 중 특정한 하나의 트리거

Country Status (8)

Country Link
EP (2) EP3588860A1 (ko)
JP (1) JP6588544B2 (ko)
KR (1) KR101999458B1 (ko)
CN (2) CN112688816B (ko)
AU (4) AU2015338947A1 (ko)
CA (1) CA2965520A1 (ko)
SG (1) SG11201703476TA (ko)
WO (1) WO2016070108A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10521280B2 (en) 2017-12-29 2019-12-31 Futurewei Technologies, Inc. Event-driven serverless function orchestration
US10565034B2 (en) * 2017-12-29 2020-02-18 Futurewei Technologies, Inc. Event-driven serverless function orchestration
CN109272400A (zh) * 2018-09-28 2019-01-25 阿里巴巴集团控股有限公司 资源处理方法及装置
US20230112996A1 (en) * 2020-04-30 2023-04-13 Intel Corporation Compilation for function as a service implementations distributed across server arrays
KR102560230B1 (ko) * 2023-02-16 2023-07-27 나무기술 주식회사 클라우드 기반의 클라이언트 운영 분석 결과를 기반으로 하는 모니터링 정책의 자동 처리 및 배포 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100037088A1 (en) * 2008-08-08 2010-02-11 Innopath Software, Inc. Intelligent Mobile Device Management Client
US20110158090A1 (en) * 2009-12-31 2011-06-30 Yusun Kim Riley Methods, systems, and computer readable media for condition-triggered policies

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7930340B2 (en) * 1995-11-13 2011-04-19 Lakshmi Arunachalam Network transaction portal to control multi-service provider transactions
US6308216B1 (en) * 1997-11-14 2001-10-23 International Business Machines Corporation Service request routing using quality-of-service data and network resource information
US6631363B1 (en) * 1999-10-11 2003-10-07 I2 Technologies Us, Inc. Rules-based notification system
EP1350176A2 (en) * 2000-07-06 2003-10-08 Homeportal, Inc. Method and system for controlling and coordinating devices and appliances, such as from a central portal and via a wide/area communications network
US8060587B2 (en) * 2001-10-05 2011-11-15 International Business Machines Corporation Methods and apparatus for launching device specific applications on storage area network components
US7702724B1 (en) * 2004-05-27 2010-04-20 Oracle America, Inc. Web services message broker architecture
JP4110129B2 (ja) * 2004-09-24 2008-07-02 株式会社日立製作所 コンピュータシステムの制御方法、コンピュータシステム、および、制御プログラム
US8635596B2 (en) * 2006-04-21 2014-01-21 Microsoft Corporation Model-based event processing
US20080115192A1 (en) * 2006-11-07 2008-05-15 Rajandra Laxman Kulkarni Customizable authentication for service provisioning
CN101615015A (zh) * 2009-07-20 2009-12-30 南京联创科技股份有限公司 由监控告警自动触发控制动作的实现方法
US9373246B2 (en) * 2010-02-04 2016-06-21 Schneider Electric It Corporation Alarm consolidation system and method
US8296411B2 (en) * 2010-03-01 2012-10-23 International Business Machines Corporation Programmatically determining an execution mode for a request dispatch utilizing historic metrics
US8484659B2 (en) * 2010-04-20 2013-07-09 Management Systems Resources, Inc. Distributed processing of binary objects via message queues including a failover safeguard
JP5731223B2 (ja) * 2011-02-14 2015-06-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 異常検知装置、監視制御システム、異常検知方法、プログラムおよび記録媒体
US8612599B2 (en) * 2011-09-07 2013-12-17 Accenture Global Services Limited Cloud service monitoring system
WO2014147692A1 (ja) * 2013-03-18 2014-09-25 株式会社日立製作所 監視対象装置、エージェントプログラム及び監視システム
CN103500094A (zh) * 2013-09-25 2014-01-08 北京大学 一种支持用户可视化自定义的服务平台监控模型

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100037088A1 (en) * 2008-08-08 2010-02-11 Innopath Software, Inc. Intelligent Mobile Device Management Client
US20110158090A1 (en) * 2009-12-31 2011-06-30 Yusun Kim Riley Methods, systems, and computer readable media for condition-triggered policies

Also Published As

Publication number Publication date
KR101999458B1 (ko) 2019-07-11
AU2015338947A1 (en) 2017-05-18
JP2017533513A (ja) 2017-11-09
EP3213463B1 (en) 2019-08-14
CA2965520A1 (en) 2016-05-06
AU2020223693B2 (en) 2022-02-24
CN112688816A (zh) 2021-04-20
AU2019200198A1 (en) 2019-01-31
AU2019200198B2 (en) 2020-05-28
CN107148767A (zh) 2017-09-08
WO2016070108A1 (en) 2016-05-06
AU2022203400B2 (en) 2023-07-06
EP3588860A1 (en) 2020-01-01
CN112688816B (zh) 2023-04-28
EP3213463A1 (en) 2017-09-06
AU2020223693A1 (en) 2020-09-10
JP6588544B2 (ja) 2019-10-09
CN107148767B (zh) 2021-01-12
SG11201703476TA (en) 2017-05-30
AU2022203400A1 (en) 2022-06-09

Similar Documents

Publication Publication Date Title
KR101999458B1 (ko) 제공자 네트워크에서의 규칙 기반 트리거들 중 특정한 하나의 트리거
US20240039984A1 (en) Rule-based action triggering in a provider network
CN102202078B (zh) 一种用于配置服务器场的多个异类角色的方法和系统
US8843914B1 (en) Distributed update service
US9208476B2 (en) Counting and resetting broadcast system badge counters
Gutierrez-Aguado et al. Iaasmon: Monitoring architecture for public cloud computing data centers
WO2013063098A2 (en) Federated, policy-driven service meshes for distributed software systems
CN105760240A (zh) 分布式任务处理方法及装置
US20180176289A1 (en) Information processing device, information processing system, computer-readable recording medium, and information processing method
US8543680B2 (en) Migrating device management between object managers
CN115812298A (zh) 供应故障的区块链管理
US8694462B2 (en) Scale-out system to acquire event data
US11068487B2 (en) Event-stream searching using compiled rule patterns
US10397128B2 (en) Routing handler for rule-based action triggering
Grozev et al. Regulations and latency-aware load distribution of web applications in Multi-Clouds
Stackowiak et al. Azure iot hub
Battula Efficient resource management for fog computing
TW201833771A (zh) 通知裝置、通知方法及記錄媒體

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)