KR102634058B1 - 입력 및 출력 스키마 매핑 - Google Patents
입력 및 출력 스키마 매핑 Download PDFInfo
- Publication number
- KR102634058B1 KR102634058B1 KR1020207031628A KR20207031628A KR102634058B1 KR 102634058 B1 KR102634058 B1 KR 102634058B1 KR 1020207031628 A KR1020207031628 A KR 1020207031628A KR 20207031628 A KR20207031628 A KR 20207031628A KR 102634058 B1 KR102634058 B1 KR 102634058B1
- Authority
- KR
- South Korea
- Prior art keywords
- event
- service
- data
- schema
- event data
- Prior art date
Links
- 238000013507 mapping Methods 0.000 title claims abstract description 102
- 238000000034 method Methods 0.000 claims abstract description 71
- 238000001914 filtration Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 230000001131 transforming effect Effects 0.000 claims description 2
- 239000000284 extract Substances 0.000 abstract description 2
- 238000005457 optimization Methods 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 37
- 230000008569 process Effects 0.000 description 20
- 230000000875 corresponding effect Effects 0.000 description 18
- 238000006243 chemical reaction Methods 0.000 description 17
- 230000009466 transformation Effects 0.000 description 12
- 230000008901 benefit Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241000669003 Aspidiotus destructor Species 0.000 description 1
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000003292 glue Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/2854—Wide area networks, e.g. public data networks
- H04L12/2856—Access arrangements, e.g. Internet access
- H04L12/2858—Access network architectures
- H04L12/2859—Point-to-point connection between the data network and the subscribers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/224—Monitoring or handling of messages providing notification on incoming messages, e.g. pushed notifications of received messages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/562—Brokering proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1859—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast adapted to provide push services, e.g. data channels
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Navigation (AREA)
Abstract
이벤트 소스와 구독자에 의해 사용되는 기본 포매팅/스키마 방법론이 기본적으로 수정될 필요가 없도록 하는, 이벤트 소스와 이벤트 구독자를 끊김 없는 방식으로 상호 접속하기 위해 최적화가 제공된다. 이벤트 그리드 서비스는 라우팅 및 매핑 서비스로서 제공된다. 이 이벤트 그리드 서비스는 모든 종류의 포맷으로 구성될 수 있는 이벤트 데이터를 수신한다. 포맷을 분석함으로써, 이벤트 그리드 서비스는 포맷이 해당 이벤트 데이터의 소비자에 의해 사용되는 포맷과 상관하는지 여부를 결정한다. 포맷이 적합한 경우, 이벤트 그리드 서비스는 이벤트 데이터로부터 관련된 데이터를 추출하여 이를 구독자에게 푸시한다. 포맷이 적합하지 않은 경우, 이벤트 그리드 서비스는 두 포맷을 함께 매핑하는 매핑을 지능적으로 생성한다.
Description
컴퓨팅 시스템의 상호 접속(interconnection)은 소위 "클라우드" 컴퓨팅 시스템과 같은 분산 컴퓨팅 시스템을 가능하게 했다. 본 설명에서, "클라우드 컴퓨팅"은 관리 노력 또는 서비스 제공자의 상호 작용을 줄이면서 제공되고 릴리즈될 수 있는 구성 가능 컴퓨팅 리소스(예를 들어, 네트워크, 서버, 스토리지, 애플리케이션, 서비스 등)의 공유 풀(shared pool)에 대한 유비쿼터스(ubiquitous) 환경의, 편리한 주문형 네트워크 액세스를 가능하게 하는 시스템 또는 리소스일 수 있다. 클라우드 모델은 다양한 특성(예를 들어, 주문형 셀프 서비스, 광범위한 네트워크 액세스, 리소스 풀링, 빠른 탄력성, 측정된 서비스 등)과 서비스 모델(예를 들어, SaaS(Software as a Service), PaaS(Platform as a Service), IaaS(Infrastructure as a Service) 및 배포 모델(예를 들어, 개인용 클라우드, 커뮤니티 클라우드, 공용 클라우드, 하이브리드 클라우드 등)로 구성될 수 있다.
클라우드 및 원격 기반 서비스 애플리케이션이 널리 활용되고 있다. 이러한 애플리케이션은 (클라우드와 같은) 공용 및 개인용 원격 시스템에서 호스팅될 수 있고 일반적으로 클라이언트와 서로 통신하기 위한 웹 기반 서비스의 세트를 제공한다.
(예를 들어, 클라우드에서) 컴퓨팅 시스템을 상호 접속하는 것의 하나의 이점은 특정 이벤트가 발생할 때 일부 엔티티가 통지받을 수 있다는 것이다. 예를 들어, 시스템은 현재 인간 구독자가 뉴스와 같은 정보를 자동으로 수신할 수 있도록 마련되어 있다. 현재 일부 통지 시스템이 사용 가능하지만, 이러한 시스템은 많은 단점과 결함을 갖고 있다. 예를 들어, 서비스와 애플리케이션은 종종 이들 자체의 포매팅(formatting) 또는 통신 프로토콜을 사용하기 때문에, 복수의 애플리케이션과 서비스를 상호 접속하는데 시간이 많이 걸리고 힘든 처리가 될 수 있다. 따라서, 이들 애플리케이션과 서비스를 연결하는 종래 기술은 매우 완고하고 확장에 대한 유연성, 확장성 및 향후 상호 접속을 제공하지 못한다. 또한, 많은 종래의 이벤트 통지 방법론은 주로 인간 구독자를 위해 구성된다. 그 결과, 모든 타입의 구독자에게 통지하고 확장성 기능을 포함하는 유연하고 신뢰성을 갖는 시스템을 제공하는 것이 매우 필요하다.
여기에서 청구되는 대상은 임의의 단점을 해결하거나 또는 전술한 것과 같은 환경에서만 동작하는 실시예로 한정되지 않는다. 오히려, 본 배경은 여기에서 설명된 일부 실시예가 실시될 수 있는 하나의 예시적인 기술 영역을 설명하기 위해서만 제공된다.
개시된 실시예는 이벤트를 관리하는 시스템 및 방법에 관한 것으로, 특히 애플리케이션, 서비스 및 엔티티를 상호 접속하는 시스템 및 방법에 관한 것이다. 일부 경우에서, 이것은 부적합한(non-conforming) 데이터를 적합한 것으로 프로그램적으로 처리하는 것을 포함한다. 다른 경우에서, 이것은 하나 이상의 게시 서비스로부터 이벤트 데이터를 하나 이상의 구독자에게 푸시하는 것을 포함한다.
예를 들어, 일부 실시예에서, 부적합한 데이터를 처리하는 방법 및 시스템이 제공된다. 이러한 실시예는 이벤트 그리드 서비스를 통해 등록 정보를 수신하는 초기 동작과 같은 다양한 동작을 포함한다. 이 정보는 게시 서비스와 이벤트 그리드 서비스 사이의 관계를 설정(즉, 등록)하는데 유용하다. 등록 처리를 돕기 위해, 등록 정보는 게시 서비스가 자신의 데이터를 포맷하는 방법(예를 들어, 게시 서비스가 포매팅에 사용하는 스키마)에 대한 세부 정보를 포함한다. 이 정보는 또한 구독자가 청취하고 있는 토픽(topic)과 관련된다. 이후, 이벤트 그리드 서비스는 게시 서비스의 이벤트 스키마를 분석하여 해당 스키마가 토픽에 대해 사용되는 기본 스키마와 상관하는지 여부를 결정한다. 상관하지 않거나 또는 부분적으로만 상관하는 경우, 이벤트 그리드 서비스는 게시 서비스의 스키마를 토픽의 기본 스키마에 매핑하려는 매핑을 자동으로 도출할 수 있다. 이 매핑이 도출된 이후, 이벤트 그리드 서비스는 게시 서비스로부터 이벤트 게시를 수신한다. 이후, 이벤트 그리드 서비스는 매핑을 사용하여 게시의 데이터가 토픽의 기본 이벤트 스키마에 포함된 이벤트 필드에 올바르게 매핑되는 방식으로 게시의 데이터를 변환한다. 이 처리는, 게시 서비스가 구독자 포맷에 부적합한 콘텐츠를 게시하는 경우에도, 이들 엔티티의 어느 쪽도 자신의 원래 포매팅 기술을 변경하거나 또는 수정하는 것이 요구되지 않고, 게시 서비스와 구독자가 서로 연결되도록 할 수 있다.
일부 실시예에서, 이벤트 그리드 서비스를 통해 이벤트 데이터를 하나 이상의 게시 서비스로부터 해당 이벤트 데이터의 하나 이상의 구독자에게 푸시하는 시스템 및 방법이 제공된다. 특히, 토픽과 관련된 이벤트 게시를 수신한 이후, 해당 토픽에 관심이 있는 구독자가 식별될 수 있다. 일부 경우에서, (1) 구독자는 이벤트 그리드 서비스를 구독하고 있고, (2) 구독이 구독자가 통지받기를 원하는 이벤트 데이터의 타입을 식별하고, (3) 게시에 포함된 이벤트 데이터는 실제로 구독자에 대한 관련 정보를 포함한다. 일부 경우에서, 이벤트 데이터가 구독자에 대해 적합한 스키마로 되어 있는지 여부에 대해서도 결정된다. 적합한 스키마로 되어 있는 경우, 매핑은 수행되지 않는다. 그렇지 않은 경우, 이벤트 데이터에 대해 매핑 처리가 수행된다. 이후, 관련 데이터는 이벤트 데이터의 다른 부분으로부터 필터링/추출되고, 이후 이는 구독자에게 푸시된다.
일부 실시예에서, 시스템 및 방법은 게시 서비스로부터 이벤트 게시를 수신하고 특정 정보를 해당 정보의 구독자에게 푸시하는데 이용 가능하다. 초기에, 이벤트 그리드 서비스는 (예를 들어, 게시 서비스로부터) 설정된 토픽에 대응하고 이벤트 데이터를 포함하는 이벤트 게시를 수신한다. 매핑을 사용하여, 이벤트 그리드 서비스는 이벤트 데이터의 일부가 토픽에 대해 설정된 이벤트 스키마의 필드에 매핑될 수 있도록 이벤트 데이터의 일부를 매핑할 수 있다. 이 매핑이 완료된 이후, (전술된 데이터와 같은) 관련된 이벤트 데이터가 수신될 때, 이 정보의 구독자는 통지받을 수 있다. 여기에서, 구독자는 이벤트 그리드 서비스를 구독하고 있고, 구독은 구독자가 통지받기를 원하는 데이터의 타입을 식별한다. 매핑된 데이터는 구독자가 수신하기를 원하는 정보에 대응하는 특정 데이터를 포함한다. 후속하여, 관련된 데이터는 관련이 없는 데이터와 분리되어, 이후 구독자에게 푸시될 수 있다.
이 요약은 상세한 설명에서 더 후술되는 설명의 단순화된 형태로 개념의 일부를 소개하기 위해 제공된다. 이 요약은 청구되는 대상의 주요 특징 또는 필수적인 특징을 식별하기 위한 것이 아니고, 또한 청구된 대상의 범위를 결정하는데 도움이 되도록 사용되기 위한 것도 아니다.
추가적인 특징 및 이점은 이하의 설명에서 설명될 것이고, 부분적으로 설명으로부터 명백할 것이며, 또는 여기에서 교시된 내용의 실시에 의해 학습될 수 있다. 본 발명의 특징 및 이점은 첨부된 청구 범위에서 특히 지적된 기구 및 조합에 의해 실현되고 획득될 수 있다. 본 발명의 특징은 이하의 설명 및 첨부된 청구 범위로부터 보다 완전히 명백하게 될 것이고, 또는 이하에서 설명되는 것과 같이 본 발명의 실시에 의해 학습될 수 있다.
전술된 것 및 다른 이점과 특징이 획득될 수 있는 방식을 설명하기 위해, 간략하게 전술된 대상에 대한 보다 구체적인 설명을 첨부된 도면에 도시된 특정 실시예를 참조하여 제공할 것이다. 이들 도면은 전형적인 실시예만을 도시하고 따라서 범위를 한정하는 것으로 간주되지 않는다는 것을 이해하면, 실시예는 첨부된 도면을 사용함으로써 추가적으로 구체적이고 자세하게 설명되고 해설될 것이다.
도 1은 클라이언트가 취할 수 있는 다양한 형태를 도시한다.
도 2는 클라이언트가 서비스(예를 들어, 클라우드 기반 서비스)와 상호 작용할 수 있는 방법을 도시한다. 도 2는 또한 서비스가 그 자신의 입력/출력 스키마를 사용하여 동작할 수 있음을 도시한다.
도 3은 서비스의 입력/출력 스키마의 포맷에 대한 추가 세부 사항을 제공한다.
도 4는 다른 클라이언트가 중앙 집중식 이벤트 그리드 서비스에 서비스를 등록하고 있는 예시적인 아키텍처를 도시한다.
도 5는 부적합한 스키마일 수 있는 서비스의 스키마를 이벤트 그리드 서비스 및/또는 특정 구독자에 의해 적합하고 동작 가능한 새로운 스키마로 변환/상관/매핑하기 위해 매핑이 도출되는 방법을 도시한다.
도 6a는 구독자가 임의의 개수의 서비스에 의해 발행된 이벤트 게시를 수신하기 위해 이벤트 그리드 서비스에 구독을 설정할 수 있는 예시적인 아키텍처를 도시한다.
도 6b는 매핑 및 토픽 관리와 관련된 처리를 제공하기 위해 함께 작동하는 컴퓨팅 및 스토리지 리소스의 클러스터 세트를 제공함으로써 사용자에게 투명한 확장(scale out) 및 장애 복구 능력을 제공하는 예시적인 아키텍처를 도시한다.
도 7은 서비스가 이벤트 게시를 이벤트 그리드 서비스에 푸시하고, 이벤트 게시가 특정 토픽으로 특정되고, 구독자가 해당 이벤트 게시에 대한 정보를 수신하고 있는 예시적인 아키텍처를 도시한다. 도 7은 또한 이벤트 그리드 서비스가 프런트-엔드 변환/상관 처리를 수행할 수 있음을 도시한다.
도 8은 서비스가 이들의 이벤트 게시를 이벤트 그리드 서비스에게 푸시하기 이전에 변환 처리를 수행하고 있는 예시적인 아키텍처를 도시한다.
도 9는 이벤트 그리드 서비스가 이벤트 데이터를 구독자에게 푸시하기 이전에 백-엔드 변환 처리를 수행할 수 있는 예시적인 아키텍처를 도시한다.
도 10은 이벤트 그리드 서비스가 프론트-엔드 변환 처리와 백-엔드 변환 처리를 모두 수행할 수 있음을 도시한다.
도 11은 단일 구독자가 복수의 다른 토픽에 대응하는 이벤트 데이터를 수신할 수 있음을 도시한다.
도 12는 복수의 다른 서비스가 동일한 토픽에 대한 이벤트 데이터를 게시할 수 있고 복수의 다른 구독자가 해당 동일한 토픽에 대한 이벤트 데이터를 수신할 수 있음을 도시한다.
도 13은 부적합한 데이터 스키마로 컴파일된 수신된 데이터를 적합한 데이터 스키마에 포함된 이벤트 필드에 매핑하는 예시적인 방법의 흐름도를 도시한다.
도 14는 하나 이상의 게시 서비스로부터 수신된 이벤트 데이터를 이벤트 데이터에 대응하는 토픽의 하나 이상의 구독자에게 푸시하는 예시적인 방법의 흐름도를 도시한다.
도 15는 하나 이상의 게시 서비스로부터 이벤트 게시를 수신하고 이벤트 게시 내에 포함된 정보를 하나 이상의 구독자에게 푸시하는 예시적인 방법의 흐름도를 도시한다.
도 16은 여기에서 설명된 임의의 동작을 수행하도록 구성된 예시적인 컴퓨터 시스템을 도시한다.
도 1은 클라이언트가 취할 수 있는 다양한 형태를 도시한다.
도 2는 클라이언트가 서비스(예를 들어, 클라우드 기반 서비스)와 상호 작용할 수 있는 방법을 도시한다. 도 2는 또한 서비스가 그 자신의 입력/출력 스키마를 사용하여 동작할 수 있음을 도시한다.
도 3은 서비스의 입력/출력 스키마의 포맷에 대한 추가 세부 사항을 제공한다.
도 4는 다른 클라이언트가 중앙 집중식 이벤트 그리드 서비스에 서비스를 등록하고 있는 예시적인 아키텍처를 도시한다.
도 5는 부적합한 스키마일 수 있는 서비스의 스키마를 이벤트 그리드 서비스 및/또는 특정 구독자에 의해 적합하고 동작 가능한 새로운 스키마로 변환/상관/매핑하기 위해 매핑이 도출되는 방법을 도시한다.
도 6a는 구독자가 임의의 개수의 서비스에 의해 발행된 이벤트 게시를 수신하기 위해 이벤트 그리드 서비스에 구독을 설정할 수 있는 예시적인 아키텍처를 도시한다.
도 6b는 매핑 및 토픽 관리와 관련된 처리를 제공하기 위해 함께 작동하는 컴퓨팅 및 스토리지 리소스의 클러스터 세트를 제공함으로써 사용자에게 투명한 확장(scale out) 및 장애 복구 능력을 제공하는 예시적인 아키텍처를 도시한다.
도 7은 서비스가 이벤트 게시를 이벤트 그리드 서비스에 푸시하고, 이벤트 게시가 특정 토픽으로 특정되고, 구독자가 해당 이벤트 게시에 대한 정보를 수신하고 있는 예시적인 아키텍처를 도시한다. 도 7은 또한 이벤트 그리드 서비스가 프런트-엔드 변환/상관 처리를 수행할 수 있음을 도시한다.
도 8은 서비스가 이들의 이벤트 게시를 이벤트 그리드 서비스에게 푸시하기 이전에 변환 처리를 수행하고 있는 예시적인 아키텍처를 도시한다.
도 9는 이벤트 그리드 서비스가 이벤트 데이터를 구독자에게 푸시하기 이전에 백-엔드 변환 처리를 수행할 수 있는 예시적인 아키텍처를 도시한다.
도 10은 이벤트 그리드 서비스가 프론트-엔드 변환 처리와 백-엔드 변환 처리를 모두 수행할 수 있음을 도시한다.
도 11은 단일 구독자가 복수의 다른 토픽에 대응하는 이벤트 데이터를 수신할 수 있음을 도시한다.
도 12는 복수의 다른 서비스가 동일한 토픽에 대한 이벤트 데이터를 게시할 수 있고 복수의 다른 구독자가 해당 동일한 토픽에 대한 이벤트 데이터를 수신할 수 있음을 도시한다.
도 13은 부적합한 데이터 스키마로 컴파일된 수신된 데이터를 적합한 데이터 스키마에 포함된 이벤트 필드에 매핑하는 예시적인 방법의 흐름도를 도시한다.
도 14는 하나 이상의 게시 서비스로부터 수신된 이벤트 데이터를 이벤트 데이터에 대응하는 토픽의 하나 이상의 구독자에게 푸시하는 예시적인 방법의 흐름도를 도시한다.
도 15는 하나 이상의 게시 서비스로부터 이벤트 게시를 수신하고 이벤트 게시 내에 포함된 정보를 하나 이상의 구독자에게 푸시하는 예시적인 방법의 흐름도를 도시한다.
도 16은 여기에서 설명된 임의의 동작을 수행하도록 구성된 예시적인 컴퓨터 시스템을 도시한다.
개시된 실시예 중 일부는 이벤트 그리드 서비스가 지능적으로 매핑을 도출하여 하나의 포맷으로 구성된 이벤트 데이터가 다른 포맷으로 변환될 수 있도록 하는 시스템 및 방법에 관한 것이다. 이와 관련하여, 이벤트 그리드 서비스는 복수의 다른 타입의 입력 포맷을 식별하고 복수의 다른 타입의 출력 포맷으로 변환할 수 있다. 이러한 동작을 수행함으로써, 임의의 개수의 다른 애플리케이션 및 서비스가 그들의 원래의 포매팅 방법론을 변경하거나 또는 수정하는 것을 요구하지 않고 임의의 개수의 다른 애플리케이션 및 서비스가 상호 접속될 수 있기 때문에 상당한 이점이 생긴다.
일부 실시예에서, 이벤트 그리드 서비스는 특정 포맷으로 구성된 이벤트 데이터가 수신될 때를 감지하고 해당 포맷이 기존 포맷에 적합한지 여부를 결정한다. 기존 포맷에 적합한 경우, 이벤트 그리드 서비스는 도출된 매핑을 사용하여 변환 처리를 수행할 필요가 없다. 그러나, 특정 포맷이 적합하지 않거나 또는 부분적으로만 적합한 경우, 이벤트 그리드 서비스는 이벤트 데이터가 기존 포맷의 데이터 필드에 대응하도록 이후 이벤트 데이터를 변환하는데 사용되는 매핑을 지능적으로 도출한다. 후술되는 것과 같이, 이 매핑을 도출하고 이 변환을 수행하는 것은 모두 지능적인 방식으로 수행되고 복수의 다른 요인을 기반으로 할 수 있다.
일부 실시예에서, 이벤트 데이터는 해당 이벤트 데이터의 구독자에게 푸시될 수 있다. 예를 들어, 특정 토픽에 대한 이벤트 데이터가 수신될 수 있다. 토픽과 데이터를 식별한 이후, 적절한 구독자(즉, 등록 처리를 통해 이 토픽에 관심을 표시한 구독자)는 이벤트 데이터에 대해 통지받을 수 있다. 이벤트 데이터가 구독자에게 적합한 스키마로 배열되는 경우, 매핑은 수행되지 않을 것이다. 그러나, 그렇지 않은 경우, 구독자의 요구 사항에 따라 데이터가 포맷되도록 매핑 처리가 이벤트 데이터에 대해 수행될 것이다. 이후, 일부(또는 모든) 관련 데이터가 구독자에게 푸시된다.
일부 실시예에서, 시스템 및 방법은 게시 서비스로부터 이벤트 게시를 수신하고 특정 정보를 해당 정보의 구독자에게 푸시하는데 이용 가능하다. 초기에, 이벤트 그리드 서비스는 (예를 들어, 게시 서비스로부터) 설정된 토픽에 대응하고 이벤트 데이터를 포함하는 이벤트 게시를 수신한다. 매핑을 사용하여, 이벤트 그리드 서비스는 일부 이벤트 데이터가 토픽에 대해 설정된 이벤트 스키마의 필드에 매핑되도록 매핑할 수 있다. 이 매핑이 완료된 이후, (전술된 데이터와 같은) 관련 이벤트 데이터가 수신될 때, 이 정보의 구독자는 통지받을 수 있다. 여기에서, 구독자는 이벤트 그리드 서비스를 구독한다. (자세하게 후술되는 것과 같이) 이 구독은 구독자가 통지받기를 원하는 데이터 타입을 식별한다. 매핑된 데이터는 구독자가 수신하기를 원하는 정보에 대응하는 특정 데이터를 포함한다. 후속하여, 관련된 데이터는 관련이 없는 데이터와 분리되어 구독자에게 푸시될 수 있다.
전술된 것과 같이, 전통적인 통지 및 매핑 기술은 다른 애플리케이션 및 시스템과의 상호 운용성을 갖지 못하는 정적인 스키마를 필요로 하기 때문에 매우 완고하고 유연하지 않다. 반대로, 개시된 실시예는 매우 동적이고, 구독자를 게시 서비스와 상호 접속하기 위한 유연한 옵션을 제공한다. 결과적으로, 엔티티가 변경되거나 또는 수정되는 것이 요구되지 않고 끊김 없는 방식으로 임의의 개수의 엔티티가 상호 접속될 수 있다. 또한, 이벤트 그리드 서비스는 이전 매핑을 저장할 수 있기 때문에, 이벤트 그리드 서비스는 새로운 매핑을 도출할 때 해당 기존 매핑으로부터 학습할 수 있다. 이와 관련하여, 이벤트 그리드 서비스는 머신 학습을 활용하여 매핑 도출 처리를 향상 또는 개선시킬 수 있다.
일부 실시예 및 일부 이점이 대략 전술되었으므로, 이제 도 1에 대해 살펴보면, 도 1은 클라이언트가 취할 수 있는 다양한 형태 중 일부를 도시한다. 이 설명에 이어서, 게시 서비스의 일부 속성을 도시하는 도 2 및 도 3에 대해 살펴본다. 다음으로, 도 4 내지 도 12가 설명될 것이다. 이들 도면은 이벤트 그리드 서비스가 동작하는 방식과 관련된 다양한 아키텍처 및 지원 예를 도시한다. 이 설명에 이어서, 이벤트 그리드가 이벤트 게시를 처리할 수 있는 다양한 예시적인 방법을 도시하는 도 13 내지 도 15에 대해 살펴본다. 마지막으로, 도 16이 설명될 것이다. 이 도면은 개시된 동작 중 임의의 것을 수행하도록 구성될 수 있는 예시적인 컴퓨터 시스템을 도시한다.
클라이언트 및 서비스
클라우드 동작은 일반적으로 복수의 다른 서비스 또는 애플리케이션을 구성하거나 또는 상호 접속함으로써 구축된다. 예를 들어, 애플리케이션은 서비스를 사용하여 파일을 저장하고, 빠른 키 값 조회를 수행하고, 특정 비즈니스 로직을 호스팅하도록 구성될 수 있다. 일부 경우에서, 임의의 개수의 이러한 서비스 또는 애플리케이션은 자신의 사용자 지정 애플리케이션 로직, 데이터 포매팅 기술 또는 통신 프로토콜을 가질 수 있다. 이들 상이한 구성으로 인해, 이들 엔티티를 서로 연결하는 것은 종종 매우 힘들고 시간이 많이 소요되는 작업이다. 개시된 실시예는 임의의 개수의 서비스 및 애플리케이션 사이에 높은 수준의 상호 운용성을 제공할 수 있는 유연하고 매우 동적인 이벤트 구동 아키텍처를 제공함으로써 이러한 요구(뿐만 아니라 다른 것)를 만족시킨다.
이러한 서비스 및 애플리케이션이 작업을 수행할 때, 이들은 종종 이벤트의 생성을 트리거한다. 이벤트는 시스템에서 발생하는 일부 행동 또는 동작을 완전히 설명하는 가장 적은 양의 정보이다. 이벤트의 예는(예를 들어, 컴퓨터 상에서, 내부 네트워크에서 또는 클라우드에서) 파일, 테이블, 디렉터리 또는 데이터베이스의 생성, 해당 구성(즉, 파일, 테이블 등)의 수정, 이러한 구성의 임의의 것의 삭제 또는 하드웨어 또는 소프트웨어에 의해 인식될 수 있는 임의의 다른 감지 가능한 발생(예를 들어, 클라우드에서 구동하는 서비스는 이벤트를 실행 및/또는 감지할 수 있음)을 포함하지만, 이에 한정되는 것은 아니다. 이벤트는 일반적으로 이벤트를 생성한 소스의 식별, 이벤트가 발생하거나 또는 생성된 시간 또는 이벤트에 대한 고유한 식별자와 같은 정보를 포함하지만, 이에 한정되는 것은 아니다.
일부 실시예에서, 이벤트는 또한 이벤트를 생성한 특정 행동 또는 동작에만 관련된 특정 정보를 포함한다. 예를 들어, 파일 디렉토리 또는 스토리지에서 새로운 파일이 생성될 때 이벤트가 트리거되는 경우, 해당 이벤트는 파일, 파일의 메타데이터, 파일의 위치 등에 대한 특정 세부 사항을 포함할 수 있다. VM(virtual machine)이 재부팅할 때(또는 다른 타입의 작업을 수행할 때) 이벤트가 트리거되는 경우, 해당 이벤트는 문제의 VM에 대한 특정 정보(예를 들어, 주소, 소프트웨어 정보, 하드웨어 정보 등), 재부팅의 이유 및/또는 다른 관련 정보를 포함할 수 있다.
클라우드 우선 및 서버리스(serverless) 분야에서, 이벤트는 애플리케이션 또는 복수의 애플리케이션의 다양한 다른 측면을 접속하는 상징적인 "접착제"이다. 이벤트는 마이크로서비스, 클라우드 서비스, 네트워크 에지 또는 사물 인터넷(IoT) 장치에서 발생할 수 있다. 이벤트는 인프라스트럭처 자동화 또는 애플리케이션 통신으로부터 발생한다. 이벤트는 데이터 플랫폼으로부터의 트리거 또는 복잡한 분석 및 인공 지능(AI) 서비스를 연결하는 수단으로서 발생될 수 있다. 이벤트의 소스와 소비자(즉, 구독자)는 많고 다양하며, (예를 들어, 공용 및 개인용) 클라우드와 네트워크 에지에 걸쳐 확장하고 있다.
"이벤트 소스"는 일반적으로 행동, 동작 또는 다른 타입의 발생(즉, "이벤트")이 일어나는 시스템이거나, 또는 오히려 이벤트가 발생하는 시스템이다. 자세하게 후술되는 것과 같이, 이벤트는 토픽으로 분류되어 이벤트 구독자는 관심이 있는 이벤트의 타입에 따라 구독할 토픽을 적절하게 결정할 수 있다. 토픽은 또한 구독자가 이벤트를 소비하는 방법을 발견할 수 있도록 이벤트 스키마를 제공한다.
전술된 것과 같이, 관심이 있는 엔티티(즉, 구독자 또는 소비자)가 이벤트에 대한 정보를 수신하기를 원하는 상황이 있을 수 있다. 이벤트 구독자는 해당 이벤트에 대한 통지를 수신할 때 이벤트에 반응하는 것에 관심이 있는 다른 애플리케이션 또는 서비스이다. 예를 들어, 이벤트 구독자는 특정 엔드포인트(endpoint)에서 특정 타입의 스토리지 파일이 생성될 때 게시를 수신하는 것에 관심이 있음을 초기에 표시할 수 있다. 이후, 구독자는 이벤트에 대한 통지를 수신한 이후에 특정 방식으로 반응할 수 있고, 이는 더 자세하게 후술될 것이다. 이벤트는 일반적으로 비동기 방식으로 생성되기 때문에, 이벤트의 구독자는 이벤트가 발생할 때를 정확하게 알지 못할 수 있다. 여기에서 사용되는 것과 같이, 이벤트 핸들러, 핸들러, 이벤트 구독자 및 구독자라는 용어는 상호 교환적으로 사용될 것이다.
개시된 실시예에 따르면, 이벤트 그리드는 소스를 구독자와 상호 접속하는 구성이다. 이벤트 그리드의 관점에서, 구독자는 이벤트가 향하고 이벤트를 성공적으로 처리하기 위해 몇몇 추가 행동이 발생할 수 있는 최종 장소이다. 기초적인 소개로서, 이벤트 그리드는 복수의 구독자 타입을 지원하고 이벤트 그리드는 이벤트의 전달을 보장하기 위해 (구독자에 따라) 다른 메커니즘을 따를 것이다. 예를 들어, 이벤트를 전달하는 것은 핸들러가 상태 코드(예를 들어, 상태 코드 200-OK)를 반환할 때까지 반복적으로 재시도될 수 있다. 스토리지 큐잉의 경우, 큐 서비스가 메시지를 성공적으로 처리할 수 있을 때까지 이벤트가 재시도될 수 있다.
해당 이벤트를 외부의 파티에게 알리기 위해, 이벤트의 소스는 이벤트 게시를 통해 해당 이벤트를 게시할 수 있다. 이벤트 게시는 하나 이상의 엔티티에 전송되는 브로드캐스트이다. 전술한 예를 사용하면, 이벤트 게시는 파일이 생성되었음을 표시하는 게시일 수 있다. 이벤트 게시는, 예를 들어 이벤트가 발생한 시기 또는 게시가 생성된 시기, 발생한 이벤트의 타입, 이벤트를 개시한 엔티티(예를 들어, 게시 서비스의 식별 또는 이벤트 게시와 관련된 고객 계정의 식별), 이벤트에 의해 영향을 받는 엔티티, 이벤트 게시의 타입 및/또는 이벤트와 관련된 임의의 다른 정보를 포함하는, 이벤트에 대한 세부 사항을 포함할 수 있다. 이벤트 게시는 이벤트 자체이거나 또는 이벤트의 요약된 버전일 수 있다.
이와 관련하여, 외부 엔티티는 이벤트에 대한 세부 사항 또는 특정 사항을 제공하는 이벤트 게시를 수신함으로써 이벤트에 대해 학습할 수 있다. 예를 들어, 클라우드에서 구동하는 파일 서비스를 고려한다. 파일 서비스에 의해 새로운 파일이 생성될 때, 이벤트(즉, 새로운 파일의 생성)가 발생하고 파일 서비스는 해당 이벤트에 대한 이벤트 게시를 생성할 수 있다. 이 파일 서비스는 이벤트 게시를 파일 생성에 대해 학습하는 것에 관심이 있을 수 있는 임의의 다른 서비스, 애플리케이션 또는 엔티티에 전송할 수 있다.
실제 예로서, 자동차가 손상되었을 때 클라이언트가 자신의 자동차의 사진을 업로드할 수 있도록 구성된 자동차 보험 애플리케이션을 고려한다. 이 사진은 청구를 할 때 도움이 될 것이다. 자동차 보험 애플리케이션은 사용자의 휴대 장치 상에서 실행 가능한 프런트-엔드 클라이언트 애플리케이션을 가질 수 있다. 사용자가 자신의 자동차의 사진을 찍어서 해당 사진을 프런트-엔드 클라이언트 애플리케이션을 사용하여 업로드할 때, 프런트-엔드 클라이언트 애플리케이션은 사진 파일이 클라우드에 생성되는 사진 업로드 이벤트를 실행한다. 보류 중인 청구를 자동차 보험 애플리케이션에 통지하기 위해, 사진 업로드 이벤트에 대응하는 이벤트 게시가 자동차 보험 애플리케이션에 전달될 수 있다. 이러한 방식으로, 청구가 보류 중일 때, 자동차 보험 애플리케이션은 통지받고 "청구 처리" 단계를 시작할 수 있다.
이제, 도 1을 살펴보면, 도 1은 (이후 도면에 도시되는) 서비스를 구성하여 서비스가 이벤트 게시를 생성할 수 있는 클라이언트(100)의 예를 도시한다. 도 1에 도시된 것과 같이, 클라이언트(100)는 많은 다른 형태를 취할 수 있다. 예를 들어, 클라이언트(100)는 인간 사용자가 서비스를 구성하기 위해 상호 작용할 수 있는 사용자 포털(105)(즉, 사용자 인터페이스)일 수 있다. 클라이언트(100)는 또한 커맨드 라인 도구(110)일 수 있다. 이와 달리, 클라이언트(100)는 독립적으로 통신하고 서비스를 구성할 수 있는 소프트웨어 애플리케이션(115)일 수 있다. 줄임표(120)는 클라이언트(100)가 다른 형태를 취할 수 있고, 단순히 도 1에 도시된 형태에 한정되지 않음을 보여준다.
도 2는 도 1의 클라이언트(100)의 예시적인 구현예인 클라이언트(200)를 도시한다. 여기에서, 클라이언트(200)는 서비스(205)와 통신하고 있다. 서비스(205)는 임의의 타입의 서비스일 수 있음이 이해될 것이다. 단지 예로서, 서비스(205)는 이메일 서비스, 캘린더 서비스, 데이터 스토리지 서비스, 소셜 네트워킹 서비스, 문서 서비스, 백업 서비스, 금융 서비스, 건강 관리 서비스, 정부 서비스, 또는 다른 타입의 서비스일 수 있다.
도시된 것과 같이, 서비스(205)는 자신의 데이터 포매팅 스키마(즉, 스키마(210))를 포함한다. 여기에서 사용되는 것과 같이, "스키마"(예를 들어, 스키마(210))는 엔티티(예를 들어, 서비스(205))가 동작하는 데이터를 구성하고 포맷하는 방법을 나타낸다. 예를 들어, 스키마(210)는 서비스(205)의 데이터 청사진(blueprint) 또는 데이터베이스 구조를 상징적으로 나타낸다.
도 3은 스키마(일명 포매팅 기술)에 대한 더 자세한 사항을 도시한다. 특히, 도 3은 도 2의 서비스(205)의 예시적인 구현예일 수 있는 서비스(300) 및 스키마(210)의 예시적인 구현예일 수 있는 스키마(305)를 도시한다. 도시된 것과 같이, 스키마(305)는 복수의 데이터 필드(예를 들어, "이름", "타입" 및 "시간")를 포함한다. 줄임표(310)는 스키마(305)가 임의의 개수의 데이터 필드를 가질 수 있고, 단순히 도 3에 도시된 것에 한정되지 않음을 보여준다.
이 예시적 시나리오에서, 서비스(300)는 "이름" 데이터 필드가 이름 "Foo"로 채워지고, "타입" 데이터 필드가 타입 "파일 생성"으로 채워지고, "시간" 데이터 필드가 시간 "5-21-2018 @ 13:51:23"으로 채워진 데이터에 대해 동작한다. 물론, 이는 예시적인 데이터 값이고 한정적인 것으로 간주되어서는 안된다. 서비스(300)는 스키마(305)의 많은 다른 경우를 사용하여 동작할 수 있으므로 각각의 경우는 구분된 데이터를 포함하지만 그럼에도 불구하고 스키마(305)에 의해 요구되는 방식으로 포맷된다.
서비스 등록
많은 경우에, 이벤트 게시를 중앙 집중식 서비스(즉, 이벤트 그리드)에 푸시하여 중앙 집중식 서비스가 (1) 해당 이벤트 게시를 구성하고, (2) 임의의 특히 관련된 정보를 필터링하고, (3) 관련된 정보를 관심이 있는 엔티티에 푸시하도록 하는 것이 바람직하다. 이러한 구성은 아키텍처(400)로써 도 4에 도시되어 있다.
특히, 아키텍처(400)는 클라우드(405) 및 클라우드(405)에서 동작하는 중앙 집중식 이벤트 그리드 서비스(410)를 포함한다. 이벤트 그리드 서비스(410)는, 예를 들어 API(415) 및 API(420)와 같은 임의의 개수의 API(application program interface)를 포함한다. API(415, 420)는, 자세하게 후술되는 것과 같이, 클라이언트가 초기에 게시 서비스를 이벤트 그리드 서비스(410)에 등록할 수 있도록 클라이언트에게 노출될 수 있는 동작 구성(예를 들어, 도구, 루틴, 프로토콜 등)이다.
이벤트 그리드 서비스(410)는 또한 구독 데이터베이스(425)와 관련된다. 구독 데이터베이스(425)는 이벤트 그리드 서비스(410)를 동작시키는 동일한 노드에 포함될 수 있거나, 또는 구독 데이터베이스(425)는 다른 노드에 위치될 수 있지만, 이벤트 그리드 서비스(410)에 의해 액세스 가능하다. 구독 데이터베이스(425)가 위치하는 곳에 관계 없이, 이벤트 그리드 서비스(410)는 저장을 위해 등록 데이터(430)를 구독 데이터베이스(425)에 전달할 수 있다. 간단히 소개하면, 구독은 구독자가 수신하는데 관심이 있는 토픽에 대한 이벤트에 대한 지시를 제공한다. 구독은 또한 이벤트가 구독자에게 전달되어야 하는 방법에 대한 구성 데이터를 보유하는 아티팩트이다.
아키텍처(400)는 또한 클라이언트(435) 및 클라이언트(440)를 포함한다. 클라이언트(435, 440)는 도 2의 클라이언트(200)의 예시적인 구현예일 수 있다. 아키텍처(400)는 또한 대응하는 스키마(450)를 갖는 서비스(445) 및 대응하는 스키마(460)를 갖는 서비스(455)를 포함한다. 이들 서비스 및 스키마는 도 3의 서비스(300) 및 스키마(305)의 예시적인 구현예일 수 있다.
전술된 것과 같이, 서비스가 이벤트 게시를 외부 엔티티에 전송하도록 서비스를 구성하는 것이 종종 바람직하다. 이 경우, 서비스(445, 455)는 클라이언트(435, 440)에 의해 각각 구성되어 서비스(445, 455)는 이벤트 게시를 이벤트 그리드 서비스(410)에 전송하거나 또는 "푸시"할 것이다. 그렇게 하기 위해, 이벤트 그리드 서비스(410)는 초기에 자신의 API(415, 420)를 클라이언트(435, 440)에 각각 노출시켜 이벤트 게시를 구성하기 위해 토픽이 생성될 수 있다.
개시된 실시예에 따르면, 서비스는 설정된 "토픽"에 근거하여 이벤트 게시를 이벤트 그리드 서비스(410)에 푸시한다. 여기에서 사용된 것과 같이, "토픽"은 이벤트가 관련된 것을 이해하기 위한 초기 근거를 제공하는 구성 가능한 주제 영역이다. 토픽의 예는, 몇 개만을 언급하면, 특정 서비스에 대한 토픽(예를 들어, 해당 서비스에 대한 모든 이벤트가 해당 토픽으로 분류됨(또는 속함)), 특정 고객에 대한 토픽(예를 들어, 고객으로부터의 모든 이벤트가 해당 토픽으로 분류됨), 특정 타입의 이벤트에 대한 토픽(예를 들어, 특정 타입의 모든 이벤트가 해당 이벤트가 발생한 때 또는 장소에 관계없이 해당 토픽으로 분류됨), 서비스, 고객, 및/또는 이벤트의 그룹에 대한 토픽을 포함하지만, 이에 한정되는 것은 아니다. 이는 단지 예일 뿐이고, 더 넓은 원칙이 적용되어야 한다.
클라이언트(435)를 예로 들면, 서비스(445)가 이벤트 그리드 서비스(410)에 초기 등록하는 동안, 클라이언트(435)는 API(415)를 사용하여 이벤트 그리드 서비스(410)가 동작하는 방법을 학습할 수 있다. 예를 들어, 클라이언트(435)는 이벤트 그리드 서비스(410)가 특정 토픽에 대해 어떤 타입의 스키마를 사용하는지 학습할 수 있다. 서비스(445)가 스키마(450)를 포함하는 방식과 유사하게, 이벤트 그리드 서비스(410)는 또한 각각의 토픽에 대해 하나 이상의 다른 스키마를 사용하여 동작하도록 구성된다. 이벤트 그리드 서비스(410)는 중앙 집중식 서비스이기 때문에, 이벤트 그리드 서비스(410)가 많은 다른 스키마(예를 들어, 각 토픽에 대해 하나(가능한 더 많이))를 사용하여 동작할 수 있도록 하는 것이 바람직하다. 이러한 방식으로, 이벤트 그리드 서비스(410)는, 예를 들어 클라우드 이벤트 스키마, 이벤트 그리드 스키마, 또는 임의의 다른 타입의 스키마와 같은 다른 적합한 스키마를 사용하여 동작할 수 있다.
일부 예에서, 이벤트 그리드 서비스(410)에 의해 사용되는 스키마는 서비스(445)의 스키마(450)와 다를 수 있다. 그러한 경우, 클라이언트(435)는 서비스(445)로부터 스키마 정보(465)를 획득하고 스키마 정보(465)를 이벤트 그리드 서비스(410)에 전송할 수 있다. 클라이언트(440)는 스키마 정보(475)를 이벤트 그리드 서비스(410)에 전송함으로써 유사한 동작을 수행할 수 있다.
이벤트 그리드 서비스(410)가 스키마 정보(465 및/또는 475)를 획득하면, 이벤트 그리드 서비스(410)는 많은 다른 동작을 수행하여 스키마(450, 460)를 이벤트 그리드 서비스(410)에 의해 사용되는 스키마 중 하나(또는 새로운 스키마)에 매핑할 수 있다.
첫 번째 예에서, 인간 개발자는 수동으로 매핑을 수행하여 서비스에 의해 사용되는 스키마를 이벤트 그리드 서비스(410)에 의해 사용되는 스키마에 매핑하거나 또는 상관시킬 수 있다. 도 3을 예로 들면, 인간 개발자는 "이름", "타입" 및 "시간" 데이터 필드를 이벤트 그리드 서비스(410)에 의해 사용되는 비교 가능한 필드에 매핑할 수 있다.
다른 예에서, 이벤트 그리드 서비스(410)는 인간 개발자가 이 상관을 수행할 수 있는 방법과 유사하게 서비스의 스키마의 데이터 필드를 지능적으로 분석하고 프로그램에 의해/자동으로 매핑을 도출할 수 있다. 일부 실시예에서, 매핑을 자동으로 도출하는 것은 게시 서비스의 하나 이상의 속성을 분석한 다음, 적어도 부분적으로 이러한 속성에 근거하도록 매핑을 구성함으로써 수행될 수 있다. 이러한 처리는 매우 효율적이기 때문에 특히 유용하다. 이벤트 그리드 서비스(410)가 지능형 매핑을 수행할 때, 매핑된 데이터 필드의 각각에 대한 신뢰도 메트릭을 생성할 수도 있다. 이러한 확률 메트릭(즉, 신뢰도 메트릭)은 검토를 위해 인간 개발자에게 제공되어 매핑의 정확성을 확인하거나 또는 승인할 수 있다.
다른 예에서, 이벤트 그리드 서비스(410)는 데이터 필드의 서브세트에 대한 초기 매핑을 수행할 수 있다. 이후, 이벤트 그리드 서비스(410)가 (1) 매핑할 수 없거나 또는 (2) 매핑했지만 확률 메트릭이 미리 결정된 허용 가능한 임계 값 미만인 데이터 필드에 대해, 이벤트 그리드 서비스(410)는 해당 데이터 필드를 인간 개발자에게 전달하여 매핑 처리를 종료한다. 따라서, 이벤트 그리드 서비스(410)는 확률 메트릭에 의존하여 추가적인 협의가 필요한 때를 결정할 수 있다.
또 다른 예에서, 이벤트 그리드 서비스(410)는 획득하는 임의의 새로운 스키마뿐만 아니라 임의의 기존 스키마에 대해 머신 학습을 수행할 수 있다. 즉, 매핑을 자동으로 도출하는 것은 (1) (사전에 도출된) 하나 이상의 기존 매핑이 현재 사용 가능한지 결정하고, (2) 해당 기존 매핑의 속성을 학습하고, 이후 (3) 학습된 정보에 근거하여 새로운 매핑을 도출함으로써 수행될 수 있다.
예를 들어, 구독 데이터베이스(425)는 이벤트 그리드 서비스(410)가 이전에 사용했거나 알았던 모든 과거 스키마에 대한 정보를 갖는 테이블을 포함할 수 있다. 이 정보에 대해 머신 학습을 수행함으로써, 이벤트 그리드 서비스(410)는 서비스의 스키마와 이벤트 그리드 서비스(410)에 의해 사용되는 스키마 사이에 보다 직관적인 및/또는 더 정확한 매핑을 제공할 수 있다. 이러한 방식으로, 생성된 임의의 새로운 매핑은 추후의 행동 및/또는 추후의 학습 상황을 위한 템플릿으로 사용될 수 있다.
도 4에 도시된 시나리오는 클라이언트(예를 들어, 클라이언트(435, 440))가 이벤트 그리드 서비스(410)와 특정 엔드포인트 서비스(예를 들어, 서비스(445, 455)) 사이에서 중개자로서 동작하는 것으로 설명하지만, 항상 그러한 것은 아니다. 예를 들어, 일부 상황에서, 서비스는 이벤트 그리드 서비스(410)와 직접 통신하여 이 초기 등록 처리를 수행함으로써 매핑을 도출할 수 있다. 따라서, 이러한 시나리오에서, 중개자 클라이언트는 배제될 수 있고, 등록 처리는 더 최적화될 수 있다.
(일반적으로 도 4에 도시된) 등록 처리의 최종 결과는 서비스에 의해 사용되는 스키마를 이벤트 그리드 서비스에 의해 사용되는 스키마에 매핑하는 매핑이다. 물론, 서비스의 스키마가 이벤트 그리드 서비스의 스키마에 적합한 경우, 이러한 매핑 도출 절차는 배제될 수 있음은 이해될 것이다. 그럼에도 불구하고, 도 5는 이러한 최종 결과의 예를 도시한다.
특히, 도 5는 토픽 별 최종 맵(500)을 도시한다. 등록 처리 동안, 새로운 토픽이 생성될 수 있고, 이벤트 그리드 서비스는 그 새로운 토픽에 대해 특정 스키마를 사용할 수 있음은 이해될 것이다. 따라서, 등록 처리 동안, 해당 새로운 토픽에 대해 새로운 매핑이 형성될 수 있으므로 서비스의 스키마가 해당 특정 토픽에 대해 이벤트 그리드 서비스에 의해 사용되는 스키마에 적절하게 매핑된다.
이와 달리, 등록 처리 동안, 이벤트 그리드 서비스가 이미 기존 토픽에 대해 특정 스키마를 갖고 있으므로 해당 기존 토픽이 (예를 들어, 복수의 기존 토픽을 나열하는 드롭 다운 박스를 통해) 선택될 수 있다. 새로운 서비스가 해당 토픽에 대해 이벤트 게시를 게시할 때, 등록 처리 동안, 새로운 또는 기존 매핑이 생성되거나 또는 선택되어 서비스의 스키마가 이벤트 그리드의 스키마에 적절하게 매핑되도록 할 수 있다.
토픽 별 최종 맵(500)은 "이름" 데이터 필드가 "id" 데이터 필드에 매핑되었고, "타입" 데이터 필드가 "eventType" 데이터 필드에 매핑되었고, "시간" 데이터 필드가 "time" 데이터 필드에 매핑되었음을 보여준다. "이름", "타입" 및 "시간" 데이터 필드는 서비스의 특정 스키마에 대응하고, "id", "eventType" 및 "time" 데이터 필드는 이벤트 그리드 서비스에 의해 사용되는 스키마에 대응한다. 도시된 것과 같이, 이들 데이터 필드는 서로 상관(즉, 매핑)되므로 "이름" 데이터 필드에 할당되었던 실제 이벤트 데이터는 이제 "id" 데이터 필드에 매핑될 것이다. 줄임표(505, 510)는 임의의 개수의 매핑 또는 상관이 발생할 수 있음을 보여준다. 또한, 이러한 데이터 필드를 매핑하는 처리는 전술된 것과 같이 임의의 다양한 방식으로 수행될 수 있다.
라우팅 아키텍처
도 6a을 살펴보면, 도 6a는 이벤트 게시를 관심이 있는 외부 엔티티에게 푸시하는데 사용될 수 있는 예시적인 아키텍처(600)를 도시한다. 아키텍처(600)는 도 4의 이벤트 그리드 서비스(410)의 예시적인 구현예일 수 있는 이벤트 그리드 서비스(605), 및 구독 데이터베이스(425)의 예시적인 구현예일 수 있는 구독 데이터베이스(610)를 포함한다. 아키텍처(600)는 또한 각각 스키마(450) 및 서비스(445)의 예시적인 구현예일 수 있는 스키마(620)를 갖는 서비스(615)를 포함한다.
이러한 엔티티/구성에 추가하여, 아키텍처(600)는 또한 구독자(630)(즉, 이벤트 데이터의 최종 소비자)를 포함한다. 여기에서, 구독자(630)는 하나 이상의 토픽에 대한 정보를 수신하는데 관심이 있는 엔티티이다. 서비스(615)는 이벤트 게시(625)를 이벤트 그리드 서비스(605)에게 푸시하고, 이벤트 게시(625)는 설정된 토픽과 관련되어 있다. 이 예에서, 구독자(630)는 이 토픽에 대응하는 특정 이벤트 데이터를 획득하는데 관심이 있다.
즉, 구독자(630)는 토픽에 대해 구독하고 있다. 이벤트 데이터를 구독자(630)에 푸시하는 처리를 가능하게 하기 위해, 이벤트 그리드 서비스(605)는 구독에 대한 정보를 구독 데이터베이스(610)에 보유하고 있다. 이러한 방식으로, 이벤트 그리드 서비스(605)는 관련된 이벤트 데이터만을 구독자(630)에게 푸시할 수 있다. 여기에서 사용된 것과 같이, "관련된" 이벤트 데이터는 구독자(630)가 학습에 관심이 있는 특정 이벤트 데이터 타입에 적합한 데이터이다. 명확히 하기 위해, 구독자(630)는 토픽에 대해 게시된 이벤트 데이터의 전부를 수신하는데는 관심이 없을 수 있다. 대신, 구독자(630)는 이벤트 데이터의 서브세트만을 원할 수 있다. 따라서, 구독자(630)의 구독은 구독자(630)가 어떤 타입의 이벤트 데이터가 통지받기 원하는지를 특정할 수 있고, 이러한 기준은 구독 데이터베이스(610)에 저장된다.
더 자세히 후술되는 것과 같이, 이벤트 게시(625)의 이벤트 데이터는 특정 토픽에 대해 이벤트 그리드 서비스(605)에 의해 사용되는 스키마에 적합하도록 서비스(615)에 의해 또는 이벤트 그리드 서비스(605)에 의해서도 변환될 수 있다. 어느 경우에도, 이벤트 그리드 서비스(605)는 결국 대응하는 토픽에 대해 선택된 적절한 포맷/스키마로 되어 있는 이벤트 데이터를 수신한다.
후속하여, 데이터(635)로 도시된 것과 같이, 수신된 이벤트 데이터(625)의 하나 이상의 부분이 구독자(630)에게 푸시된다. 이러한 방식으로, 이벤트 그리드 서비스(605)는 (이벤트 데이터를 포함하는) 이벤트 게시를 수신하고, 해당 게시를 처리한 다음, 해당 게시로부터의 관련 정보를 특정 토픽에 대응하는 이벤트 데이터를 수신하는 것에 관심이 있는 하나 이상의 구독자에게 전달할 수 있는 중앙 집중식 이벤트 게시 저장소로서 행동한다.
도 6a는 임의의 개수의 구독자에 대한 구독 정보를 보유할 수 있다는 점에 중점을 둔 아키텍처를 도시하였다. 도 6b는 도 6a의 아키텍처를 대표하는 전체 아키텍처의 확장 또는 확대된 버전을 도시한다. 특히, 도 6b의 아키텍처는 소스를 구독자와 상호 접속하는 것뿐만 아니라 구독 데이터가 적절하게 보안/보호되어 장애 발생시 구독 정보가 손실되지 않도록 하는데 중점을 둔다.
도시된 것과 같이, 도 6b는 도 6a에 도시된 아키텍처(600)와는 다른 구성을 포함하고, 아키텍처(600)에 의해 제공되는 기능과 유사한 기능을 제공할 수 있으며, 지역 이벤트 그리드(640)을 포함한다. 이와 관련하여, 지역 이벤트 그리드(640)는 도 6a의 이벤트 그리드 서비스(605)와 비슷하거나 또는 유사하다.
도시된 것과 같이, 지역 이벤트 그리드(640)는 트래픽 관리자 계층(645), 제 1 지역 클러스터(650A) 및 제 2 지역 클러스터(650B)와 같은 다양한 다른 컴포넌트를 포함한다. 제 1 지역 클러스터(650A)는 에지 계층(655A), 로컬 메타데이터 캐시(660A) 및 클러스터 리소스 관리자(655A)를 포함한다. 제 2 지역 클러스터(650B)는 에지 계층(655B), 로컬 메타데이터 캐시(660B) 및 클러스터 리소스 관리자(665B)와 같은 유사한 컴포넌트를 포함한다. 지역 이벤트 그리드(640)는 지역 이벤트 그리드(640)의 일부로서 포함되고 및/또는 개별/원격 엔티티에 통합되는 메타데이터 저장소(670)와 통신할 수 있다.
메타데이터 저장소(670)는 (1) 토픽에 대한 스키마를 포함하는 토픽 정보, (2) 이벤트 소스에 대한 인증 정보 및/또는 (3) 구독 및 그 구성 중 임의의 것을 안전하게 저장하는 컴포넌트이다. 일부 구현예에서, 메타데이터 저장소(670)는 자신의 모든 데이터가 임의의 개수의 다른 영역에 복제된 완전히 분할된 분산 서비스일 수 있다.
일부 실시예에서, 지역 클러스터(650A, 650B)는 자기 의존적/비상호 의존적인 복제된 데이터베이스를 포함하는 비공유 아키텍처를 활용한다. 그 결과, 지역 클러스터(650A, 650B)는 각각 자신의 로컬 메타데이터 캐시(660A, 660B)를 각각 가질 수 있다. 일부 실시예에서, 이들 캐시는 각각 에지 계층(655A, 655B)과 함께 배치된 메타데이터 저장소(670)의 전체 캐시를 갖는다. 이 영구적(durable) 캐시(즉, 로컬 메타데이터 캐시(660A, 660B))는 메타데이터 저장소(670)와 지속적으로 동기화될 수 있다. 로컬 메타데이터 캐시(660A, 660B)는 또한 에지 계층(655A, 655B)이 발행할 수 있는 임의의 개수의 쿼리로 확장되도록 분할될 수 있다. 또한, 로컬 메타데이터 캐시(660A, 660B)는 인덱싱되거나 또는 다른 방식으로 구성될 수 있으므로, 많은 수(예를 들어, 수백만)의 구독이 설정될 때에도 이벤트 라우팅은 가능한 빠르다.
일부 실시예에서, 에지 계층(655A, 655B)은 이벤트 소스(예를 들어, 이벤트 소스(680A, 680B, 680C, 680D))로부터 이벤트를 수신하고 이벤트를 임의의 관심이 있는 구독자에게 신뢰성 있게 전달할 책임이 있다. 일부 실시예에서, 에지 계층(655A, 655B)은, (1) 이벤트를 디스크 상에 안전하게 저장하고 이벤트를 복제하여 이벤트 손실을 방지하고, (2) 시스템에 존재하는 구독에 근거하여 이벤트를 라우팅 또는 필터링하고, 및/또는 (3) 이벤트를 관심이 있는 구독자에게 전달하는 동작의 임의의 조합을 수행함으로써 이벤트를 처리한다.
일부 경우에서, 트래픽 관리자 계층(645)은, 이벤트 소스(예를 들어, 이벤트 소스(680A, 680B, 680C, 680D))가 지역 클러스터(예를 들어, 지역 클러스터(650A, 650B))에 직접 게시하지 않을 때의 경우에서와 같이, 통신을 라우팅하는데 사용된다. 대신 이러한 경우에는, 이벤트 소스는 트래픽 관리자 계층(645)을 통해 통신한다. 이러한 정도의 간접성은 요구 또는 필요에 따라 다른 클러스터를 지역 이벤트 그리드(640)에 추가 및 제거하는데 있어서 유연성을 부여한다.
일부 실시예에서, 지역 클러스터(650A, 650B)의 에지 노드는 리소스 메트릭 및/또는 다른 통계를 클러스터 리소스 관리자(665A, 665B)에게 전송할 수 있다. 일부 실시예에서, 이러한 관리자는 서비스 품질을 가능한 높게 유지하거나 또는 기존 SLA(service level agreement)에 미리 정해진 서비스 품질을 적어도 충족하기 위해 적절한 행동(예를 들어, 시스템 컴포넌트의 성능을 변경)을 수행하기 위해 수신된 메트릭에 근거하여 미리 결정된 규칙 세트를 적용한다. 예를 들어, 몇 개를 언급하면, 메트릭의 일부는 CPU 사용량, 메모리 사용량 및 이벤트 큐 길이를 포함하지만, 이에 한정되는 것은 아니다. 클러스터 리소스 관리자(665A, 665B)가 취할 수 있는 일부 가능한 행동은, 접속의 균형을 맞추기 위해 개별 노드의 접속을 끊는 명령, 노드를 제거 및/또는 노드로 하여금 더 이상 새로운 작업을 수행하거나 또는 새로운 트래픽을 처리하지 않도록 하는 것을 포함하지만, 이에 한정되는 것은 아니다.
클러스터 리소스 관리자(665A, 665B)와 유사하게, 지역 리소스 관리자(675)는 임의의 지역 클러스터(예를 들어, 지역 클러스터(650A, 650B))로부터 수집된 메트릭을 수신한 다음, 수집된 메트릭에 근거하여, 기존 SLA를 만족시키기 위해 요구되는 것과 같이, 지역 클러스터(예를 들어, 지역 클러스터(650A, 650B)) 사이에서 부하의 균형을 맞추도록 트래픽 관리자 계층(645)을 구성할 수 있다.
복수의 비공유 지역 클러스터(예를 들어, 지역 클러스터(650A, 650B)) 및 트래픽 관리자 계층(645)의 설계에 의해, 지역 이벤트 그리드(640)는 임의의 지정학적 영역에서 로컬 장애에 대해 높은 가용성을 제공할 수 있다. 또한, 지역 이벤트 그리드(640)는 완전한 손실의 경우에 투명한 장애 복구를 제공하도록 설계된다.
일부 실시예에서, 이것은 하나의 지역 이벤트 그리드를 다른 지역 이벤트 그리드와 페어링함으로써 달성된다. 예를 들어, 미국 중남부 지역(USSC)에 지역 이벤트 그리드가 있고 미국 중북부 지역(USNC)에 지역 이벤트 그리드가 있다고 가정한다. 이 두 지역 이벤트 그리드를 함께 페어링함으로써, 실시예는 안전한 장애 복구 시스템을 보장할 수 있다.
하나의 지역 이벤트 그리드를 다른 지역 이벤트 그리드에 "페어링"하기 위해, 다음의 동작이 수행될 수 있다. 하나의 동작은 특정 메타데이터 저장소(예를 들어, 메타데이터 저장소(670))에 대한 범위가 더 이상 단순히 지역적이지 않도록 지리적 페어(geo-pair)가 된다는 것이다. 위의 예를 들면, USSC 및 USNC에 대한 모든(또는 일부) 구독은 다른 백업 메타데이터 저장소 서비스(예를 들어, 메타 데이터 저장소(USSC_USNC))로 결합될 수 있다.
또 다른 동작은 많은 지역 클러스터로부터의 구독을 결합된 메타데이터 저장소로부터의 "지리적 페어"에 동기화하는 것을 포함한다. 위의 예와 관련하여, USSC 및 USNC의 모든(또는 일부) 지역 클러스터(예를 들어, 지역 클러스터(650A, 650B))는 메타데이터 저장소(USSC_USNC)에 정의된 구독을 로컬적으로 캐시할 것이다.
다른 동작은 이벤트 소스(예를 들어, 이벤트 소스(680A, 680B, 680C, 680D))가 소스(예를 들어, 이벤트 소스(680A, 680B, 680C, 680D))와 동일한 지정학적 영역에 위치하는 지역 클러스터(예를 들어, 지역 클러스터(650A, 650B))와 통신하는 방식으로 트래픽 관리자 계층(645)을 구성하는 것을 포함한다. 그러나, 지역적 장애가 발생한 경우, 트래픽 관리자 계층(645)은 모든 트래픽을 지리적 페어의 가용 영역으로 리디렉션하도록 재구성될 수 있다. 이러한 방식으로, 모든 구독자의 구독 데이터가 보존될 수 있다.
따라서, 도 6a 및 6b에 도시된 이벤트 구동 아키텍처는 전술되고 후술되는 것과 같이 많은 이점을 제공한다. 하나의 이점은 이벤트 그리드 및 구독자 모두와 기본적으로 통합할 수 있는(즉, 기본 스키마를 변경할 필요가 없는) 서비스의 목록 또는 가용성을 확장하는 것을 포함한다. 또 다른 이점은 임의의 개수의 다른 표준을 수용할 수 있는 능력을 포함하고, 이는 클라우드 사이 및 구독자/게시자 사이의 상호 운용성을 직접적으로 부여한다.
개시된 실시예에 의해 제공되는 또 다른 특징은 데드-레터링(dead-lettering)에 관한 것이다. 예를 들어, 최선의 의도에도 불구하고, 이벤트 자체 또는 수신자/구독자의 문제로 인해 특정 목적지로 의도된 이벤트가 전달될 수 없는 시나리오가 발생할 수 있다. 이러한 "분실된" 이벤트(즉, "데드 레터")는 특히 이 전달에 의존하는 업무상 중요한 처리가 있는 경우 문제가 될 수 있다. 이를 완화하기 위해, 이벤트 그리드는 데드-레터링을 지원하고, 이는 구독자가 관심이 있는 이벤트를 최종적으로 수신할 수 있도록 하는데 도움을 준다. 예를 들어, 이벤트 그리드가 정해진 기간(예를 들어, 분, 시간, 일 등) 동안 재시도한 이후 이벤트를 전달할 수 없는 경우, 이벤트는 스토리지 계정에 배치될 수 있으므로 추후 분석될 수 있거나 또는 실패한 전달의 실시간 추적을 위해 모니터링될 수 있다.
이러한 방식으로, 이벤트 그리드는 애플리케이션 및 구독자에 대한 이벤트 라우터 또는 중개자 역할을 할 수 있다. 예를 들어, 애플리케이션은 이벤트 그리드를 (1) 이벤트를 게시하는 하나 이상의 토픽을 생성하고, (2) 이벤트에 반응하는데 필요한 구독을 생성하고, (3) 대응하는 토픽에 이벤트를 게시하고, (4) 이벤트 핸들러에서 이벤트를 적절하게 처리함으로써 애플리케이션 자신에 의해 생성된 이벤트의 스트림에 대한 이벤트 라우터로서 사용할 수 있다.
애플리케이션은 또한 클라우드 서비스로부터의 이벤트를 구독하기 위해 이벤트 그리드를 사용할 수 있다. 일부 실시예에서, 이것은 (1) 관심이 있는 리소스로부터 이벤트를 수신하기 위해 토픽을 구독하고, (2) 이벤트 핸들러에서 이벤트를 적절하게 처리함으로써 달성된다.
전술된 것과 같이, 일부 실시예에서, 이벤트 그리드는 사용자를 위한 투명한 확장 및 장애 복구 능력을 가진 지역 서비스이다. 일부 지역에서, 이벤트 그리드는 컴퓨팅 및 스토리지 리소스의 클러스터 세트로 표시된다. 이들 클러스터는 함께 작동하여 투명한 확장 및 장애 복구 모델을 제공한다. 따라서, 도 6a 및 6b에 도시된 예시적인 아키텍처는 소스를 구독자와 상호 접속할 수 있는 이벤트 그리드 서비스를 설명한다.
프런트-엔드 변환 아키텍처
도 7을 살펴보면, 도 7은 도 6a의 아키텍처(600)와 유사한 아키텍처(700)를 도시한다. 구체적으로, 아키텍처(700)는 이벤트 그리드 서비스(705)가 임의의 개수의 토픽을 핸들링할 수 있음을 도시한다. 예를 들어, 이벤트 그리드 서비스(705)는 토픽(710), 토픽(715) 및 토픽(720)에 대한 이벤트 데이터를 처리하고 있다. 줄임표(725)는 이벤트 그리드 서비스(705)가 임의의 개수의 다른 토픽(예를 들어, 1, 2, 3, 4, 5, 10, 20, 50, 100 또는 100개를 넘는 토픽)에 대한 정보를 핸들링할 수 있음을 보여준다. 토픽의 개념은 자세하게 전술하였으므로 반복하지 않는다.
이벤트 그리드 서비스(705)는 또한 많은 매핑 컴포넌트, 예를 들어 매핑 컴포넌트(730), 매핑 컴포넌트(735) 및 매핑 컴포넌트(740)를 포함하는 것으로 도시되어 있다. 여기에서 사용되는 것과 같이, 이들 매핑 컴포넌트는 서비스(745)(예를 들어, 서비스(745A, 745B, 745C), 및 줄임표(745D)는 임의의 개수의 서비스가 이벤트 게시를 게시할 수 있음을 보여줌)로부터 이벤트 게시를 수신한다. 이후, 매핑 컴포넌트는 각각의 서비스 및/또는 토픽에 대한 초기 등록 처리 동안 도출된 매핑을 사용하여 게시 내에 포함된 이벤트 데이터를 변환한다. 따라서, 각각의 매핑 컴포넌트는 특정 토픽과 관련될 수 있으므로 수신된 이벤트 데이터는 해당 특정 토픽에 대해 사용되는 스키마로 변환된다.
예를 들어, 서비스(745A)는 이벤트 게시(750A)를 매핑 컴포넌트(730)에 전송하고, 서비스(745B)는 이벤트 게시(750B)를 매핑 컴포넌트(735)에 전송하고, 서비스(745C)는 이벤트 게시(750C)를 매핑 컴포넌트(740)에 전송하고 있다. 매핑 컴포넌트가 서비스로부터 (이벤트 데이터를 포함하는) 이벤트 게시를 수신하면, 매핑 컴포넌트는 수신된 이벤트 데이터가 각각의 토픽의 스키마에 따라 처리되고 포맷되는지 확인한다.
아키텍처(700)는 또한 구독자(755)(예를 들어, 구독자(755A), 구독자(755B), 및 구독자(755C), 줄임표(755D)는 임의의 개수의 구독자가 이벤트 그리드 서비스(705)와 통신 상태에 있고 구독할 수 있음을 보여줌)를 도시한다. 서비스(745)로부터 (이벤트 데이터를 포함하는) 이벤트 게시를 수신한 이후, 이벤트 그리드 서비스(705)는 각각의 구독자(755)에 대한 이벤트 데이터의 관련 부분을 선택적으로 식별/필터링할 수 있다.
도시된 것과 같이, 이벤트 그리드 서비스(705)는 관련된 이벤트 데이터(760A, 760B, 760C)를 구독자(755A, 755B, 755C)에게 각각 전달하고 있다. 이러한 방식으로, 이벤트 그리드 서비스(705)는 이벤트 데이터를 수신하고, 해당 이벤트 데이터를 특정 토픽에 대해 원하는 스키마로 변환하고, 해당 이벤트 데이터를 필터링한 다음, 필터링된 이벤트 데이터를 관심이 있는 구독자에게 푸시할 수 있다. 또한, 이벤트 그리드 서비스(705)는 복수의 다른 게시 서비스로부터 복수의 이벤트 게시를 수신하고 원하는 방식으로 해당 게시를 핸들링할 수 있다. 예를 들어, 이벤트 그리드 서비스(705)는 각각 이벤트 그리드 서비스(705)를 구독하는 복수의 구독자와 관련될 수 있으므로 이벤트 그리드 서비스(705)는 복수의 이벤트 데이터를 복수의 구독자에게 푸시할 수 있다.
일부 실시예에서, 일부 데이터 필드는 초기에는 정해진 값으로 채워진 다음 나중에 자동으로 수정된 값으로 채워질 수 있다. 예를 들어, "시간" 필드는 초기에 정해져 있지만, 이벤트 게시가 전송될 준비가 될 때 필드는 실제 이벤트 게시의 시간을 포함하도록 자동으로 채워질 수 있다. 추가적으로 또는 이와 달리, 이벤트 타입이 자동으로 변경되거나 또는 채워질 수 있다. 이 자동 채우기는 모든 데이터 필드에 대해 수행될 필요는 없고, 대신 자동 채우기에 적합한 후보인 데이터 필드(예를 들어, 고유한 ID, 시간, 주소 등)에 대해 수행될 수 있다.
도 8은 도 7의 아키텍처(700)와 다소 유사한 또 다른 아키텍처(800)를 도시한다. 특히, 아키텍처(800)는 토픽(810A, 810B, 810C)을 갖는 이벤트 그리드 서비스(805)를 포함한다. 또한, 서비스(815)(예를 들어, 서비스(815A, 815B, 815C), 줄임표(815D)는 임의의 개수의 서비스가 존재할 수 있음을 보여줌)가 도시되어 있다. 이벤트 그리드 서비스(705)가 변환 처리를 수행하는 아키텍처(700)와 달리, 아키텍처(800)에서는 서비스(815)가 변환 처리를 수행하도록 구성된다.
초기 등록 처리 동안, 서비스의 스키마를 특정 토픽에 대해 이벤트 그리드 서비스(805)에 의해 사용되는 스키마에 매핑하기 위해 매핑이 개발되었음을 상기한다. 따라서, 서비스(815)는 맵을 생성하지 않고, 대신 단순히 변환 처리를 수행하여 이벤트 데이터가 이벤트 그리드 서비스(805)에 의해 사용되는 스키마의 데이터 필드와 적절하게 태그(tag)되도록 한다. 따라서, 일부 실시예에서는 서비스(815)가 변환 처리를 수행하도록 구성될 수 있는 반면, 다른 실시예에서는 이벤트 그리드 서비스가 변환 처리를 수행하도록 구성될 수 있다.
이벤트 데이터가 변환된 이후, 이벤트 그리드 서비스(805)는 관련된 이벤트 데이터를 구독자(830)(예를 들어, 구독자(830A, 830B, 830C), 줄임표(830D)는 임의의 개수의 구독자가 존재할 수 있음을 보여줌)에 전송할 수 있다. 이러한 동작은 각각의 구독자에게 전달되는 관련된 이벤트 데이터(835A, 835B, 835C)로 도시된다.
백-엔드 변환 아키텍처
전술된 것은 프론트-엔드 변환 처리를 수행한 실시예에 집중되었다. 프런트-엔드 변환을 수행하는 것 외에도, 일부 실시예는 또한, 도 9에 도시된 것과 같이, 추가적인 백-엔드 변환 처리를 수행하도록 구성된다.
여기에서, 아키텍처(900)는 도 8의 아키텍처(800)와 마찬가지로 토픽(910A, 910B, 910C)을 갖는 이벤트 그리드 서비스(905)를 포함한다. 서비스(915)(예를 들어, 서비스(915A, 915B, 915C))는 (각 토픽에 대응하는) 이벤트 게시(920A, 920B, 920C)를 이벤트 그리드 서비스(905)에 푸시한다. 도시되지는 않았지만, 서비스(915) 또는 이벤트 그리드 서비스(905) 중 임의의 것은 이벤트 데이터를 특정 토픽에 대해 이벤트 그리드 서비스(905)에 의해 사용되는 스키마로 변환하기 위해 프런트-엔드 변환 처리를 수행했을 수 있다.
도 9는 프론트-엔드 변환을 수행할 수 있는 것에 더하여 이벤트 그리드 서비스(905)가 또한 매핑 컴포넌트(925A, 925B, 925C)를 사용하여 백-엔드 변환을 수행할 수 있음을 도시한다. 이들 매핑 컴포넌트는, 관련된 이벤트 데이터(935A, 935B, 935C)로 도시된 것과 같이, 이벤트 데이터가 구독자(930)(예를 들어, 구독자(930A, 930B, 930C))에 푸시되기 이전에 이들 매핑 컴포넌트가 백-엔드에서 변환 처리를 수행한다는 점을 제외하면, 도 7의 매핑 컴포넌트(730, 735, 740)와 유사하다.
이벤트 그리드 서비스(905)는 특정 토픽에 대해 특정 스키마를 사용할 수 있지만, 일부 구독자는 이벤트 그리드 서비스(905) 또는 서비스(915) 중 임의의 것과는 완전히 다른 스키마로 포맷된 이벤트 데이터를 수신하기를 원할 수 있다. 따라서, 이벤트 그리드 서비스(905)는 이벤트 데이터를 특정 구독자가 판독할 수 있는 포맷으로 변환하기 위해 백-엔드 변환 처리를 수행할 수 있다. 백-엔드에서 사용되는 매핑은 프런트-엔드 매핑과 유사한 방식으로 도출될 수 있다.
이제, 도 10을 살펴보면, 도 10은 또 다른 예시적인 아키텍처(1000)를 도시한다. 여기에서, 이벤트 그리드 서비스(1005)는 토픽(1010A, 1010B, 1010C)을 관리하고 있다. 또한, 이는 프런트-엔드 매핑 컴포넌트(1015A, 1015B, 1015C)와 백-엔드 매핑 컴포넌트(1020A, 1020B, 1020C)를 포함한다.
여기에서, 서비스(1025)(예를 들어, 서비스(1025A, 1025B, 1025C))는 이벤트 게시(1030A, 1030B, 1030C)를 각각 프런트-엔드 매핑 컴포넌트(1015A, 1015B, 1015C)에 푸시하고 있다. 따라서, 각각의 이벤트 게시의 이벤트 데이터를 원하는 포맷/스키마로 변환하기 위해 프런트-엔드 변환 처리가 발생할 수 있다.
후속하여, 일부 구독자는 특정 토픽에 대해 이벤트 그리드 서비스(1005)에 의해 사용되는 스키마와 다른 스키마로 관련된 데이터를 수신하기를 원한다고 결정될 수 있다. 따라서, 백-엔드 매핑 컴포넌트(1020A, 1020B, 1020C)는 이벤트 데이터를 원하는 포맷으로 변환하기 위해 백-엔드 변환 처리를 수행할 수 있다. 또한, 이벤트 그리드 서비스(1005)는 특정 구독자와 관련된 데이터를 식별하기 위해 이벤트 데이터를 선택적으로 필터링할 수 있다. 도시된 것과 같이, 이벤트 그리드 서비스(1005)는 관련된 이벤트 데이터(1035A, 1035B, 1035C)를 구독자(1040)(예를 들어, 구독자(1040A, 1040B, 1040C))에 푸시하고 있다. 이러한 방식으로 이벤트 데이터에 대해 프런트-엔드 및/또는 백-엔드 변환이 발생할 수 있다.
따라서, 일부 상황에서, 이벤트 그리드 서비스(1005)는 설정된 토픽에 대응하는 이벤트 게시를 수신한다. 이후, 이벤트 그리드 서비스(1005)는 이벤트 데이터에 대해 프론트-엔드 변환을 수행할 수 있다. 또한, 이벤트 그리드 서비스(1005)는 이벤트 데이터가 특정 구독자에 대해 적합한 스키마로 되어 있는지 여부를 결정할 수 있다. 적합하지 않은 경우, 이벤트 그리드 서비스(1005)는 이벤트 데이터에 대해 백-엔드 변환을 수행할 수 있다. 이와 관련하여, 임의의 필터링된 이벤트 데이터를 구독자에게 푸시하기 이전에, 이벤트 그리드 서비스(1005)는 이벤트 데이터에 대해 제 2 변환을 수행할 수 있다.
구독의 변형된 형태
도 11은 단일 구독자가 복수의 다른 토픽에 대한 정보를 수신할 수 있는 시나리오를 도시한다. 특히, 도 11은 이벤트 그리드 서비스(1105)가 토픽(1110A, 1110B, 1110C)을 포함하는 아키텍처(1100)를 도시한다. 여기에서, 서비스(1115)(예를 들어, 서비스(1115A, 1115B, 1115C))는 전술된 원리에 따라 이벤트 게시(1120A, 1120B, 1120C)를 이벤트 그리드 서비스(1105)에 푸시하고 있다. 또한, 각각의 이벤트 게시(1120A, 1120B, 1120C)는 다른 토픽, 즉 토픽(1110A, 1110B, 1110C)에 각각 대응한다.
또한 단일 구독자(1125)가 도시되어 있다. 단일 구독자 만이 도시되어 있지만, 원리가 임의의 개수의 구독자에게 적용됨은 이해될 것이다. 여기에서, 구독자(1125)는 각각의 토픽(1110A, 1110B, 1110C)에 대해 하나씩 구독하는 방식으로, 이벤트 그리드 서비스(1105)를 복수 구독한다. 따라서, 구독자(1125)가 복수 구독하기 때문에, 이벤트 그리드 서비스(1105)는 구독자(1125)의 구독에 따라 관련된 데이터를 식별하기 위해 이벤트 게시(1120A, 1120B, 1120C)에서 수신된 이벤트 데이터를 선택적으로 필터링할 것이다. 이후, 이벤트 그리드 서비스(1105)는 토픽(1110A)에 대해 관련된 데이터(1130A), 토픽(1110B)에 대해 관련된 데이터(1130B) 및 토픽(1110C)에 대해 관련된 데이터(1130C)를 구독자(1125)에게 푸시할 것이다. 이러한 방식으로, 단일 구독자는 복수의 다른 토픽에 대응하는 복수의 통지를 수신할 수 있다.
도 12는 복수의 구독자가 모두 동일한 토픽에 대한 통지(즉, 이벤트 데이터)를 수신하는 아키텍처(1200)를 도시한다. 특히, 아키텍처(1200)는 이벤트 그리드 서비스(1205)가 토픽(1210A, 1210B, 1210C)을 포함하는 것을 도시한다. 서비스(1215)(예를 들어, 서비스(1215A, 1215B, 1215C))는 이벤트 게시(1220A, 1220B, 1220C)를 이벤트 그리드 서비스(1205)에 푸시한다. 여기에서, 각각의 이벤트 게시(1220A, 1220B, 1220C)는 동일한 토픽, 즉 토픽(1210A)에 대응한다.
이 예시적인 시나리오에서, 복수의 구독자(1225)(예를 들어, 구독자(1225A, 1225B, 1225C))는 토픽(1210A)에 대응하는 이벤트 데이터를 수신하기 위해 구독한다. 일부 경우에서, 구독자(1225)는 동일한 이벤트 데이터를 수신할 것이고, 다른 경우에서, 구독자(1225)는 토픽(1210A)에 대한 이벤트 데이터의 상이한 부분을 각각 수신할 것이다. 각각의 구독자가 수신할 부분은 구독자의 대응하는 구독에 따라 결정된다. 따라서, 두 구독자가 동일하게 구독하는 경우(즉, 구독자가 동일한 종류의 관련된 이벤트 데이터를 수신할 것을 선택한 것으로 구독이 표시하는 경우), 해당 두 구독자는 실제로 동일한 데이터를 수신할 것이다. 따라서, 이벤트 그리드 서비스(1205)는 관련된 이벤트 데이터(1230A, 1230B, 1230C)를 각각의 구독자(1225A, 1225B, 1225C)에게 푸시한다.
복수의 구독자가 동일한 토픽을 구독할 때, 해당 구독자는 또한 다른 스키마(즉, 구독자에 의해 사용되는 포맷에 적합한 스키마)를 사용할 수 있다. 이러한 시나리오에서, 비록 해당 구독자가 동일한 토픽을 구독하고 있더라도, 이벤트 그리드 서비스(1205)는 이벤트 데이터를 선택적으로 필터링하여 이벤트 데이터의 상이한 부분을 추출할 수 있다. 각각의 부분은 실제로 각각의 구독자와 관련이 있는지 확인하기 위해 분석된다. 이후, 이벤트 그리드 서비스(1205)는 이벤트 데이터의 추출된 부분을 구독자에게 푸시한다. 이러한 방식으로, 임의의 개수의 구독자가 동일한 설정된 토픽을 구독할 수 있으므로, 해당 구독자는 수신된 이벤트 게시에서 제공된 동일한 이벤트 데이터의 일부(또는 전부)를 수신할 것이다. 필요 또는 요구되는 경우, 이벤트 그리드 서비스(1205)는 또한 임의의 수신하는 구독자/소비자에 대해 데이터가 적절하게 포맷되도록 하기 위해 개별화된 매핑 처리를 수행할 수 있다.
이 시점에서, 예가 도움이 될 것이다. 전술된 보험 회사 애플리케이션과 같은 휴대 전화 애플리케이션이 있다고 가정한다. 일부 경우에, 클라이언트는 보험 청구를 위해 (예를 들어, 손상된 자동차의) 사진을 업로드할 것을 결정할 수 있다. 이미지는 휴대폰으로부터 클라우드에서 구동하는 서비스(예를 들어, 클라우드 스토리지 서비스)에 업로드된다. 사진 파일이 클라우드 스토리지 상에서 생성될 때, 클라우드 스토리지 서비스는 파일의 생성(즉, 이벤트)을 이벤트 그리드 서비스에 게시할 것이다. 게시는 고객 정보, 사진 및 기타 정보를 설명할 수 있다. 따라서, 클라우드 스토리지 서비스는 보험 회사의 메인 애플리케이션의 백-엔드 애플리케이션이 될 수 있다. 즉, 게시 서비스(예를 들어, 클라우드 스토리지 서비스)는 메인 애플리케이션(즉, 구독자)의 서브-컴포넌트이다.
백-엔드 애플리케이션이 이벤트 게시를 제출하면, 메인 애플리케이션에 클라이언트가 자동차의 이미지를 업로드했다는 것이 통지받을 수 있다. 이후, 메인 애플리케이션은 청구의 처리를 시작할 수 있다. 따라서, 서비스 및 구독자(즉, 메인 애플리케이션)는 동일한 기업 또는 동일한 테넌트(tenant)에 의해 소유될 수 있다.
다른 예로서, 기업이 새로운 직원을 고용하는 시나리오를 고려한다. 새로운 직원을 고용하는 것은 임의의 개수의 다른 이벤트의 실행을 트리거할 수 있다. 예를 들어, 새로운 직원은 새로운 의자, 책상 또는 컴퓨터가 필요할 수 있다. 따라서, 서비스는 새로운 직원의 고용에 반응하여 이벤트(예를 들어, 새로운 의자 이벤트, 새로운 책상 이벤트, 새로운 컴퓨터 이벤트 등)를 생성할 수 있다. 이 경우, 서비스는 인간이 아닌 이벤트를 생성하는 프로그램일 수 있다. 이후, 의자 구매 구독자는 의자 이벤트를 청취하고, 하나가 수신될 때 의자를 획득하는 처리를 수행할 수 있다. 유사한 구독자가 책상 및 컴퓨터 이벤트에 대해 사용 가능할 수 있다. 따라서, 이들은 일부 실시예가 어떻게 사용될 수 있는지에 대한 현실의 예이다.
또한, 서비스(예를 들어, 의자 서비스)가 이미 그들의 데이터를 포매팅하는 기존 스키마를 가지고 있는 경우, 실시예는 매핑을 생성함으로써 해당 기존 스키마에 동적으로 반응할 수 있으므로 해당 서비스는 다시 코딩되거나 또는 다르게 수정될 필요가 없다. 대신, 간단한 등록(예를 들어, 구성 업데이트)을 통해 해당 서비스가 정상적인 절차/프로토콜에 따라 계속 동작할 수 있도록 할 수 있고, 이벤트 그리드 서비스는 새로 도출된 매핑을 사용하여 동적으로 적응할 수 있다. 따라서, 실시예는 이벤트 데이터를 수신하고 게시하는 고도로 확장 가능한 모델을 제공한다.
방법
도 13 내지 15를 살펴보면, 이들 도면은 수행될 수 있는 많은 방법 단계를 도시한다. 방법 단계는 특정 순서로 논의되거나 또는 특정 순서로 발생하는 것으로 흐름도에 도시될 수 있지만, 구체적으로 언급되지 않는 한 특정 순서는 요구되지 않거나 또는 단계는 그 단계가 수행되기 전에 완료되는 다른 단계에 의존하기 때문에 특정 순서는 요구되지 않는다.
도 13은 부적합한 데이터 스키마로 컴파일링된 수신된 이벤트 데이터를 적합한 데이터 스키마에 포함된 이벤트 필드에 매핑하는 예시적인 방법의 흐름도(1300)를 도시한다. 이 방법은 여기에서 설명된 이벤트 그리드 서비스 중 하나에 의해 수행될 수 있다.
먼저, 등록 정보가 수신된다(단계(1305)). 이 정보는 게시 서비스(예를 들어, 도 12의 임의의 서비스(1215), 도 11의 서비스(1115), 도 10의 임의의 서비스(1025) 등)를 이벤트 그리드 서비스에 등록하는데 사용된다. 일부 경우에서, 이 등록 정보는 게시 서비스에 의해 사용되는 현재 이벤트 스키마를 포함한다. 또한, 이 등록 정보는 구독자가 해당 토픽에 대해 수신되는 이벤트 게시에 반응하기 위해 구독하는 토픽에 대응할 수 있다.
후속하여, 게시 서비스의 현재 이벤트 스키마가 분석되어 현재 이벤트 스키마가 토픽에 의해 사용되는 기본 이벤트 스키마에 대응하는지 여부를 결정한다(단계(1310)). 게시 서비스의 현재 이벤트 스키마가 토픽의 기본 이벤트 스키마에 대응하지 않는 경우, 게시 서비스의 현재 이벤트 스키마를 토픽의 기본 이벤트 스키마에 매핑하려는 매핑이 자동으로 도출된다(단계(1315)).
매핑이 도출된 이후, 이벤트 게시가 게시 서비스로부터 수신된다(단계(1320)). 특히, 이 이벤트 게시는 서비스가 등록되었고 구독자가 청취하고 있는 있는 토픽에 대응한다.
이후, 매핑은 이벤트 데이터가 토픽의 기본 이벤트 스키마에 포함된 이벤트 필드에 매핑되는 방식으로 이벤트 게시에 포함된 적어도 일부의 이벤트 데이터를 변환하는데 사용된다(단계(1325)). 이러한 방식으로, 프런트-엔드 변환이 수행되어 이벤트 데이터가 원하는 포맷에 적합하도록 할 수 있다.
도 13은 서비스와 이벤트 그리드 서비스 사이에서 수행될 수 있는 복수의 단계를 도시한 반면, 도 14는 하나 이상의 게시 서비스로부터 수신된 이벤트 데이터를 해당 이벤트 데이터의 하나 이상의 구독자에게 푸시하는 방법의 흐름도(1400)를 도시한다. 즉, 이들 방법 단계는 이벤트 그리드 서비스와 이벤트 데이터에 반응할 구독자 사이에서 발생한다. 도 13의 방법과 유사하게, 도 14의 방법은 또한 컴퓨터 시스템(예를 들어, 도 16에서 후술되는 컴퓨터 시스템) 상에서 실행될 수 있는 이벤트 그리드 서비스에 의해 수행된다.
먼저, 적어도 하나의 구독자가 식별된다(단계(1405)). 이 단계는 설정된 토픽에 대응하고 이벤트 데이터를 포함하는 이벤트 게시를 수신한 이후에 수행될 수 있다. 이 시나리오에서, 구독자는 설정된 토픽에 대응하는 임의의 이벤트 게시 내에 포함된 특정 타입의 이벤트 데이터를 수신할 때 통지받게 된다. 따라서, 구독자는 이벤트 그리드 서비스를 구독하고, 구독은 특정 타입의 이벤트 데이터를 식별한다. 그러므로, 수신된 이벤트 게시에서 제공되는 이벤트 데이터는 특정 타입의 이벤트 데이터에 대응하는 특정 이벤트 데이터를 포함하게 된다.
후속하여, 수신된 이벤트 게시에서 제공되는 이벤트 데이터가 구독자에 대해 적합한 스키마로 되어 있는지 여부에 대해 결정된다(단계(1410)). 이벤트 데이터가 적합한 스키마로 되어 있는 경우(단계(1415A)), 이벤트 데이터에 대해서 매핑이 수행되지 않는다. 그러나, 이와 달리 이벤트 데이터가 적합한 스키마로 되어 있지 않거나(단계(1415B)) 또는 부분적으로만 적합한 스키마로 되어 있는 경우, 이벤트 데이터를 매핑하기 위해 매핑이 수행된다.
다음으로, 이벤트 데이터는 필터링되어 원하는 특정 타입의 이벤트 데이터에 대응하는 임의의 이벤트 데이터가 추출된다(단계(1420)). 마지막으로, 추출된 이벤트 데이터(즉, 원하는 특정 타입의 이벤트 데이터에 대응하는 이벤트 데이터)가 구독자에게 푸시된다(단계(1425)).
도 15를 살펴보면, 도 15는 하나 이상의 게시 서비스로부터 이벤트 게시를 수신하고 이벤트 게시 내에 포함된 정보를 하나 이상의 구독자에게 푸시하는 예시적인 방법의 흐름도(1500)를 도시한다. 즉, 흐름도(1500)에서 개략적으로 설명된 방법 단계는 도 13 및 14에 설명된 방법 단계의 혼합체를 구성한다.
먼저, 이벤트 게시가 수신된다(단계(1505)). 이 게시는 설정된 토픽에 대응하고 게시 서비스로부터 수신된다. 전술한 것과 유사하게, 이 이벤트 게시는 또한 이벤트 데이터를 포함한다.
이후, 매핑을 사용하여 이벤트 데이터의 적어도 일부를 변환한다(단계(1510)). 이 매핑은 토픽 및 게시 서비스 모두와 관련된다. 이 변환 처리를 수행함으로써, 이벤트 데이터는 이제 토픽에 대한 이벤트 스키마 내에 포함된 필드에 매핑/상관될 것이다.
이벤트 데이터를 변환한 이후, 구독자가 식별된다(단계(1515)). 이 구독자는 설정된 토픽에 대응하는 이벤트 게시 내에 포함된 특정 타입의 이벤트 데이터가 수신될 때 통지받도록 선택하였다. 전술한 것과 유사하게, 이 구독자는 이벤트 그리드 서비스를 구독하고, 구독은 특정 타입의 이벤트 데이터를 식별한다. 또한, 변환된 이벤트 데이터는 설명된 특정 타입의 이벤트 데이터에 대응하는 특정 이벤트 데이터를 포함한다.
이후, 특정 이벤트 데이터가 이벤트 데이터로부터 필터링되고(단계(1520)) 구독자에게 푸시/라우팅된다(단계(1525)). 이러한 방식으로, 이벤트 그리드 서비스는 이벤트 데이터를 수신하고, 이벤트 데이터가 선택된/원하는 포맷 또는 스키마에 적합하도록 할 수 있다. 이후, 이벤트 그리드 서비스는 이벤트 데이터를 선택적으로 필터링하여 특히 관련된 데이터를 식별한다. 이벤트 그리드 서비스는 구독자에 의해 이전에 제공된 정보를 사용하여 관련된 데이터를 식별할 수 있고, 이 정보는 구독자가 중요하거나 또는 관련성이 있다고 보는 이벤트 데이터의 타입을 표시한다. 따라서, 이 정보를 사용하여 이벤트 그리드 서비스는 임의의 관련된 이벤트 데이터를 추출한 다음 해당 이벤트 데이터를 구독자에게 전달/라우팅할 수 있다.
예시적인 컴퓨터 시스템
개시된 실시예 중 일부의 다양한 특징 및 기능을 방금 설명하였고, 이제 도 16을 살펴보면, 도 16은 여기에서 설명된 동작을 가능하게 하기 위해 사용될 수 있는 예시적인 컴퓨터 시스템(1600)을 도시한다. 컴퓨터 시스템(1600)은 다양한 형태를 취할 수 있다. 예를 들어, 컴퓨터 시스템(1600)은 서버, 분산 시스템, 데스크톱, 랩톱, 모바일 전화, 데이터 센터 및/또는 임의의 다른 컴퓨팅 장치로 실시될 수 있다.
가장 기본적인 구성에서, 컴퓨터 시스템(1600)은 다양한 다른 컴포넌트를 포함한다. 예를 들어, 도 16은 컴퓨터 시스템(1600)이 적어도 하나의 프로세서(1605)(일명 "하드웨어 처리 장치") 및 실행 가능 명령어(1615)를 포함할 수 있는 스토리지(1610)를 포함하는 것을 도시한다. 프로세서(1605)는 전술된 임의의 방법 단계를 수행하도록 구성될 수 있다. 도시되지 않았지만, 컴퓨터 시스템(1600)은 ASIC, GPU, 또는 다른 타입의 하드웨어 로직 유닛을 포함할 수 있다.
스토리지(1610)는 물리적 시스템 메모리일 수 있고, 이는 휘발성, 비휘발성 또는 둘의 조합의 일부일 수 있다. "메모리"라는 용어는 여기에서 또한 물리적 스토리지 매체와 같은 비휘발성 대용량 스토리지를 지칭하기 위해 사용될 수 있다. 컴퓨터 시스템(1600)이 분산되면, 처리, 메모리 및/또는 스토리지 능력도 분산될 수 있다. 여기에서 사용되는 것과 같이, "실행 가능 모듈", "실행 가능 컴포넌트" 또는 심지어 "컴포넌트"라는 용어는 컴퓨터 시스템(1600) 상에서 실행될 수 있는 소프트웨어 객체, 루틴 또는 방법을 지칭할 수 있다. 다른 컴포넌트, 모듈, 엔진 및 여기에서 설명된 서비스는 컴퓨터 시스템(1600) 상에서 실행되는 객체 또는 프로세서(예를 들어, 별도의 스레드)로 구현될 수 있다.
개시된 실시예는, 자세하게 후술되는 것과 같이, 예를 들어 하나 이상의 (프로세서(1605)와 같은) 프로세서 및 (스토리지(1610)와 같은) 시스템 메모리와 같은 컴퓨터 하드웨어를 포함하는 특수 목적 또는 범용 컴퓨터를 포함하거나 또는 활용할 수 있다. 실시예는 또한 컴퓨터 실행 가능 명령어 및/또는 데이터 구조를 전달하거나 또는 저장하는 물리적 및 다른 컴퓨터 판독 가능 매체를 포함한다. 이러한 컴퓨터 판독 가능 매체는 범용 또는 특수 목적 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 이용 가능 매체일 수 있다. 데이터 형태로 컴퓨터 실행 가능 명령어를 저장하는 컴퓨터 판독 가능 매체는 물리적 컴퓨터 스토리지 매체이다. 컴퓨터 실행 가능 명령어를 전달하는 컴퓨터 판독 가능 매체는 전송 매체이다. 따라서, 한정이 아닌 예시로서, 현재 실시예는 컴퓨터 스토리지 매체 및 전송 매체의 적어도 2개의 별개의 다른 종류의 컴퓨터 판독 가능 매체를 포함할 수 있다.
컴퓨터 스토리지 매체는, RAM, ROM, EEPROM, CD-ROM, RAM에 기반한 SSD(Solid State Drive), 플래시 메모리, PCM(phase-change memory), 또는 다른 타입의 메모리, 또는 다른 광 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 장치, 또는 컴퓨터 실행 가능 명령어, 데이터 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 저장하는데 사용될 수 있고, 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체와 같은 하드웨어 스토리지 장치이다.
컴퓨터 시스템(1600)은 또한 (유선 또는 무선 접속을 통해) 외부 센서(예를 들어, 하나 이상의 원격 카메라, 가속도계, 자이로스코프, 음향 센서, 자력계, 데이터 획득 장치 등)에 접속될 수 있다. 또한, 컴퓨터 시스템(1600)은 또한 하나 이상의 유선 또는 무선 네트워크(1620)를 통해 컴퓨터 시스템(1600)과 관련하여 설명된 임의의 처리를 수행하도록 구성된 원격 시스템(들)에 접속될 수 있다. 컴퓨터 시스템은 또한 디스플레이 상에 하나 이상의 사용자 인터페이스 요소를 렌더링하도록 프로세서(1605)와 함께 구성된 그래픽 렌더링 엔진을 또한 포함할 수 있다.
도 16에 도시된 네트워크(1620)와 같은 "네트워크"는 컴퓨터 시스템, 모듈 및/또는 다른 전자 장치 사이에서 전자적 데이터의 전송을 가능하게 하는 하나 이상의 데이터 링크 및/또는 데이터 스위치로 정의된다. 정보가 네트워크(유선, 무선 또는 유선과 무선의 조합)를 통해 컴퓨터로 전송되거나 또는 제공될 때, 컴퓨터는 접속을 전송 매체로 적절하게 인식한다. 컴퓨터 시스템(1600)은 네트워크(1620)와 통신하는데 사용되는 하나 이상의 통신 채널을 포함할 것이다. 전송 매체는 컴퓨터 실행 가능 명령어의 형태 또는 데이터 구조의 형태인 데이터 또는 원하는 프로그램 코드 수단을 전달하는데 사용될 수 있는 네트워크를 포함한다. 또한, 이러한 컴퓨터 실행 가능 명령어는 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있다. 위의 조합은 또한 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
다양한 컴퓨터 시스템 컴포넌트에 도달하면, 컴퓨터 실행 가능 명령어 또는 데이터 구조의 형태인 프로그램 코드 수단이 전송 매체로부터 컴퓨터 저장 매체로(또는 그 반대로) 자동으로 전송될 수 있다. 예를 들어, 네트워크 또는 데이터 링크를 통해 수신되는 컴퓨터 실행 가능 명령어 또는 데이터 구조는 네트워크 인터페이스 모듈(예를 들어, 네트워크 인터페이스 카드 또는 "NIC") 내의 RAM에 버퍼링된 다음 결국 컴퓨터 시스템 RAM 및/또는 컴퓨터 시스템의 덜 휘발성 컴퓨터 스토리지 매체에 전송될 수 있다. 따라서, 컴퓨터 스토리지 매체는 또한 전송 매체를 사용하는 컴퓨터 시스템 컴포넌트에 포함될 수 있음이 이해되어야 한다.
컴퓨터 실행 가능(또는 컴퓨터 해석 가능) 명령어는, 예를 들어 범용 컴퓨터, 특수 목적 컴퓨터 또는 특수 목적 처리 장치로 하여금 특정 기능 또는 기능의 그룹을 수행하도록 하는 명령어를 포함한다. 컴퓨터 실행 가능 명령어는, 예를 들어 바이너리, 어셈블리 언어와 같은 중간 포맷 명령어 또는 소스 코드일 수 있다. 대상이 구조적 특징 및/또는 방법론적 단계에 특정한 언어로 설명되었지만, 첨부되는 청구항에서 정의되는 대상은 반드시 전술된 특징 또는 단계로 한정되는 것은 아니라는 점이 이해되어야 한다. 오히려, 설명된 특징 및 동작은 청구 범위를 구현하는 예시적인 형태로서 개시된다.
통상의 기술자는 개인용 컴퓨터, 데스크탑 컴퓨터, 랩톱 컴퓨터, 메시지 프로세서, 휴대용 장치, 다중 프로세서 시스템, 마이크로프로세서 기반 또는 프로그래밍 가능 소비자 전자 제품, 네트워크 PC, 미니 컴퓨터, 메인프레임 컴퓨터, 휴대폰, PDA, 호출기, 라우터, 스위치 등을 포함하는 많은 타입의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경에서 실시예가 실시될 수 있음을 이해할 것이다. 실시예는 또한 네트워크를 통해 (유선 데이터 링크, 무선 데이터 링크 또는 유선 및 무선 데이터 링크의 조합에 의해) 연결되는 로컬 및 원격 컴퓨터 시스템이 각각 작업(예를 들어, 클라우드 컴퓨팅, 클라우드 서비스 등)을 수행하는 분산 시스템 환경에서 실시될 수 있다. 분산 시스템 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 스토리지 장치 모두에 위치할 수 있다.
추가적으로 또는 이와 달리, 여기에서 설명된 기능은 적어도 부분적으로 하나 이상의 하드웨어 로직 컴포넌트(예를 들어, 프로세서(2105))에 의해 수행될 수 있다. 예를 들어, 사용될 수 있는 예시적인 타입의 하드웨어 로직 컴포넌트는 FPGA(Field-Programmable Gate Array), ASIC(Program-Specific or Application-Specific Integrated Circuits), ASSP(Program-Specific Standard Products), SOC(System-On-A-Chip Systems), CPLD(Complex Programmable Logic Devices), CPU(Central Processing Unit) 및 기타 타입의 프로그래밍 가능 하드웨어를 포함하지만, 이에 한정되는 것은 아니다.
실시예는 그 사상 또는 특성에서 벗어나지 않고 다른 특정 형태로 제시될 수 있다. 설명된 실시예는 모든 면에서 제한적이지 않고 예시적인 것으로 간주되어야 한다. 따라서, 개시된 범위는 전술한 설명보다는 첨부된 청구 범위에 의해 표시된다. 청구 범위의 균등성의 의미 및 범위 내에 있는 모든 변경은 청구 범위 내에 포함된다.
Claims (18)
- 부적합한 데이터 스키마(non-conforming data schema)로 컴파일된 수신된 이벤트 데이터를 적합한 데이터 스키마(conforming data schema)에 포함된 이벤트 필드에 매핑하는 방법으로서,
상기 매핑 방법은 컴퓨터 시스템 상에서 실행되는 이벤트 그리드 서비스에 의해 수행되고, 상기 방법은,
등록 정보를 수신하여 게시 서비스를 상기 이벤트 그리드 서비스에 등록하는 것 - 상기 등록 정보는 상기 게시 서비스에서 사용되는 현재 이벤트 스키마를 포함하고, 상기 등록 정보는 토픽에 대해 수신된 이벤트 게시에 반응하기 위해 구독자(subscriber)가 구독하는 상기 토픽에 대응함 - 과,
상기 게시 서비스의 현재 이벤트 스키마를 분석하여 상기 현재 이벤트 스키마가 상기 토픽에 의해 사용되는 기본(default) 이벤트 스키마에 대응하는지 여부를 결정하는 것과,
상기 게시 서비스의 현재 이벤트 스키마가 상기 토픽의 기본 이벤트 스키마에 대응하지 않는다는 결정에 응답하여, 상기 게시 서비스의 현재 이벤트 스키마를 상기 토픽의 기본 이벤트 스키마에 매핑하려는 매핑을 자동으로 도출하는 것과,
상기 매핑이 도출된 이후, 상기 게시 서비스로부터 상기 토픽에 대응하는 이벤트 게시를 수신하는 것과,
상기 매핑을 사용하여, 상기 이벤트 게시에 포함된 이벤트 데이터의 적어도 일부를, 상기 이벤트 데이터의 적어도 일부가 상기 토픽의 기본 이벤트 스키마에 포함된 이벤트 필드에 매핑되도록 하는 방식으로 변환하는 것과,
상기 토픽을 구독하는 구독자의 구독자 스키마를 분석하는 것과,
상기 구독자 스키마가 상기 토픽의 기본 이벤트 스키마에 대응하지 않는다는 결정에 응답하여, 상기 토픽의 기본 이벤트 스키마를 상기 구독자 스키마에 매핑하려고 시도하는 제2 매핑을 자동으로 도출하는 것을 포함하는,
매핑 방법.
- 제 1 항에 있어서,
상기 매핑을 자동으로 도출하는 것은, 상기 게시 서비스의 하나 이상의 속성을 분석하고 상기 매핑이 상기 하나 이상의 속성에 적어도 부분적으로 근거하게 함으로써 수행되는, 매핑 방법.
- 제 1 항에 있어서,
상기 등록 정보를 수신하여 상기 게시 서비스를 등록하는 것은, 상기 게시 서비스를 등록하는데 사용하기 위해 하나 이상의 API(application program interface)를 노출시킴으로써 수행되는, 매핑 방법.
- 제 1 항에 있어서,
상기 이벤트 그리드 서비스는 상기 등록 정보를 저장하는 구독 데이터베이스를 유지하는, 매핑 방법.
- 제 1 항에 있어서,
상기 매핑을 자동으로 도출하는 것은, 기존 매핑이 현재 사용 가능함을 결정하는 것을 포함하고, 상기 기존 매핑은 사전에 도출된 것인, 매핑 방법.
- 제 1 항에 있어서,
상기 게시 서비스로부터 상기 이벤트 게시를 수신하는 것은, 상기 게시 서비스가 상기 이벤트 게시를 상기 이벤트 그리드 서비스에 푸시하는 것에 의해 수행되는, 매핑 방법.
- 제 1 항에 있어서,
상기 이벤트 게시는 파일이 생성되었음을 표시하는 게시인, 매핑 방법.
- 제 1 항에 있어서,
상기 이벤트 그리드 서비스는 복수의 다른 게시 서비스로부터 복수의 이벤트 게시를 수신하는, 매핑 방법.
- 하나 이상의 게시 서비스로부터 수신된 이벤트 데이터를 상기 이벤트 데이터의 하나 이상의 구독자에게 푸시하는 방법으로서,
상기 푸시 방법은 컴퓨터 시스템 상에서 실행되는 이벤트 그리드 서비스에 의해 수행되고, 상기 방법은,
설정된 토픽에 대응하고 이벤트 데이터를 포함하는 이벤트 게시를 수신하는 것 - 상기 수신하는 것은 상기 수신된 이벤트 게시 내에 포함된 상기 이벤트 데이터에 대해 프런트-엔드 매핑(front-end mapping)을 수행하는 것을 포함함 - 과,
상기 설정된 토픽에 대응하는 임의의 이벤트 게시 내에 포함된 특정 타입의 이벤트 데이터가 수신될 때 통지받는 적어도 하나의 구독자를 식별하는 것 - 상기 적어도 하나의 구독자는 상기 이벤트 그리드 서비스를 구독하고, 상기 구독은 상기 특정 타입의 이벤트 데이터를 식별하고, 상기 수신된 이벤트 게시에 포함된 상기 이벤트 데이터는 상기 특정 타입의 이벤트 데이터에 대응하는 특정 이벤트 데이터를 포함함 - 과,
상기 수신된 이벤트 게시에 포함된 상기 이벤트 데이터가 상기 적어도 하나의 구독자에 대해 적합한 스키마로 되어 있지 않다고 결정하는 것과,
상기 이벤트 데이터에 대해 백-엔드 매핑(back-end mapping)을 수행하는 것과,
상기 이벤트 데이터를 필터링하여 상기 특정 타입의 이벤트 데이터에 대응하는 상기 특정 이벤트 데이터를 추출하는 것과,
상기 특정 타입의 이벤트 데이터에 대응하는 상기 추출된 특정 이벤트 데이터를 상기 적어도 하나의 구독자에게 푸시하는 것을 포함하는,
푸시 방법.
- 제 9 항에 있어서,
상기 적합한 스키마는 클라우드 이벤트 스키마인, 푸시 방법.
- 제 9 항에 있어서,
복수의 구독자는 상기 이벤트 그리드 서비스가 복수의 이벤트 데이터를 상기 복수의 구독자에게 푸시하도록 상기 이벤트 그리드 서비스를 구독하는, 푸시 방법.
- 제 9 항에 있어서,
제 2 구독자가 또한 상기 수신된 이벤트 게시 내에 포함된 일부 이벤트 데이터를 수신하도록 상기 제 2 구독자 또한 상기 설정된 토픽을 구독하는, 푸시 방법.
- 제 12 항에 있어서,
상기 적어도 하나의 구독자에 대한 상기 적합한 스키마는 상기 제 2 구독자에 대한 제 2 적합 스키마와 다르고, 상기 이벤트 그리드 서비스는 상기 이벤트 데이터를 필터링하여 상기 제 2 구독자와 관련된 다른 이벤트 데이터 타입에 대응하는 상기 이벤트 데이터의 다른 부분을 추출하고, 상기 이벤트 그리드 서비스는 상기 이벤트 데이터의 상기 추출된 다른 부분을 상기 제 2 구독자에게 푸시하는, 푸시 방법.
- 하나 이상의 게시 서비스로부터 이벤트 게시를 수신하고 상기 이벤트 게시 내에 포함된 정보를 하나 이상의 구독자에게 푸시하는 방법으로서, 상기 방법은 컴퓨터 시스템 상에서 실행되는 이벤트 그리드 서비스에 의해 수행되고,
설정된 토픽에 대응하고 게시 서비스로부터 수신된 이벤트 게시를 수신하는 것 - 상기 이벤트 게시는 이벤트 데이터를 포함함 - 과,
상기 토픽 및 상기 게시 서비스 모두와 관련된 매핑을 사용하여 상기 이벤트 데이터의 적어도 일부가 상기 토픽에 대한 이벤트 스키마 내에 포함된 필드에 매핑되도록 상기 이벤트 데이터의 적어도 일부를 매핑하는 것과,
상기 이벤트 데이터의 적어도 일부를 매핑한 이후, 상기 설정된 토픽에 대응하는 임의의 이벤트 게시 내에 포함된 특정 타입의 이벤트 데이터가 수신될 때 통지받는 적어도 하나의 구독자를 식별하는 것 - 상기 적어도 하나의 구독자는 상기 이벤트 그리드 서비스를 구독하고, 상기 구독은 상기 특정 타입의 이벤트 데이터를 식별하며, 상기 매핑된 이벤트 데이터의 적어도 일부는 설명된 특정 타입의 이벤트 데이터에 대응하는 특정 이벤트 데이터를 포함함 - 과,
상기 이벤트 데이터로부터 상기 특정 이벤트 데이터를 필터링하는 것과,
상기 매핑된 이벤트 데이터의 적어도 일부에 대해 제2 매핑을 수행하는 것과,
상기 필터링된 특정 이벤트 데이터를 상기 적어도 하나의 구독자에게 푸시하는 것을 포함하는,
방법.
- 제14항에 있어서,
상기 이벤트 그리드 서비스는 복수의 게시 서비스로부터 복수의 이벤트 게시를 수신하고, 상기 이벤트 그리드 서비스는 복수의 이벤트 데이터를 복수의 가입자에게 푸시하는, 방법.
- 제14항에 있어서,
상기 게시 서비스는 상기 적어도 하나의 구독자의 서브-컴포넌트인, 방법.
- 제14항에 있어서,
상기 이벤트 그리드 서비스는 구독 데이터베이스를 유지하고, 상기 구독은 상기 구독 데이터베이스에서 유지되는, 방법.
- 제14항에 있어서,
상기 이벤트 데이터는 상기 이벤트 게시에 대한 타입, 상기 게시 서비스의 식별, 상기 이벤트 게시가 생성된 시기, 및 상기 이벤트 게시가 관련된 고객 계정을 포함하는, 방법.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862666477P | 2018-05-03 | 2018-05-03 | |
US62/666,477 | 2018-05-03 | ||
US15/991,350 US10681164B2 (en) | 2018-05-03 | 2018-05-29 | Input and output schema mappings |
US15/991,350 | 2018-05-29 | ||
PCT/US2019/028598 WO2019212792A1 (en) | 2018-05-03 | 2019-04-22 | Input and output schema mappings |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210005043A KR20210005043A (ko) | 2021-01-13 |
KR102634058B1 true KR102634058B1 (ko) | 2024-02-05 |
Family
ID=68385411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207031628A KR102634058B1 (ko) | 2018-05-03 | 2019-04-22 | 입력 및 출력 스키마 매핑 |
Country Status (13)
Country | Link |
---|---|
US (2) | US10681164B2 (ko) |
EP (1) | EP3788486A1 (ko) |
JP (1) | JP7360395B2 (ko) |
KR (1) | KR102634058B1 (ko) |
CN (1) | CN112074815B (ko) |
AU (1) | AU2019262823B2 (ko) |
BR (1) | BR112020020760A2 (ko) |
CA (1) | CA3103838A1 (ko) |
IL (1) | IL278303B2 (ko) |
MX (1) | MX2020011497A (ko) |
PH (1) | PH12020551844A1 (ko) |
SG (1) | SG11202010465PA (ko) |
WO (1) | WO2019212792A1 (ko) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10637946B2 (en) | 2017-08-15 | 2020-04-28 | Microsoft Technology Licensing, Llc | Subscription based event notifications |
US10740151B1 (en) * | 2018-08-27 | 2020-08-11 | Amazon Technologies, Inc. | Parallelized forensic analysis using cloud-based servers |
JP7430174B2 (ja) * | 2018-09-14 | 2024-02-09 | ジェイピーモルガン・チェース・バンク,ナショナル・アソシエーション | トランザクション処理エコシステムを実施するためのシステムおよび方法 |
US11663114B2 (en) * | 2020-07-15 | 2023-05-30 | Jpmorgan Chase Bank, N.A. | Method and system for automatically testing event-driven microservices |
KR102300938B1 (ko) | 2020-12-28 | 2021-09-13 | 쿠팡 주식회사 | 데이터 적재 방법 및 이를 위한 전자 장치 |
US11861425B2 (en) * | 2021-05-19 | 2024-01-02 | Red Hat, Inc. | Runtime mapping of asynchronous application programming interface messaging topics and schemas |
US11836120B2 (en) | 2021-07-23 | 2023-12-05 | Oracle International Corporation | Machine learning techniques for schema mapping |
US11522976B1 (en) | 2021-10-06 | 2022-12-06 | Bgc Partners, L.P. | Method, apparatus and system for subscription management |
US11928161B2 (en) | 2022-03-04 | 2024-03-12 | Humane, Inc. | Structuring and presenting event data for use with wearable multimedia devices |
WO2023168073A1 (en) * | 2022-03-04 | 2023-09-07 | Humane, Inc. | Structuring and presenting event data for use with wearable multimedia devices |
CN115208764A (zh) * | 2022-07-27 | 2022-10-18 | 济南浪潮数据技术有限公司 | 一种基于资源池的请求响应方法、装置及其介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170244799A1 (en) | 2016-02-24 | 2017-08-24 | Verisign, Inc. | Feeding networks of message brokers with compound data elaborated by dynamic sources |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020035482A1 (en) * | 2000-08-28 | 2002-03-21 | Coble Keith A. | Business to business information environment with subscriber-publisher model |
US8495163B2 (en) * | 2004-03-18 | 2013-07-23 | Avaya, Inc. | Method and apparatus for a publish-subscribe system with templates for role-based view of subscriptions |
US7177859B2 (en) * | 2002-06-26 | 2007-02-13 | Microsoft Corporation | Programming model for subscription services |
US7756815B2 (en) * | 2004-08-03 | 2010-07-13 | International Business Machines Corporation | Apparatus and method of semantic-based publish-subscribe system |
EP1851646A2 (en) | 2005-01-06 | 2007-11-07 | Tervela Inc. | Intelligent messaging application programming interface |
US8700681B2 (en) * | 2005-09-28 | 2014-04-15 | Sap Ag | Method and system for generating schema to java mapping descriptors |
US7996488B1 (en) * | 2006-11-27 | 2011-08-09 | Disney Enterprises, Inc. | Systems and methods for interconnecting media applications and services with automated workflow orchestration |
EP2160867B1 (en) * | 2007-06-29 | 2011-08-10 | Telefonaktiebolaget LM Ericsson (publ) | Method of processing event notifications and event subscriptions |
US20110307603A1 (en) * | 2009-02-05 | 2011-12-15 | Nec Corporation | Broker node and event topic control method in distributed event distribution system |
US8738704B2 (en) * | 2010-09-07 | 2014-05-27 | Xerox Corporation | Publish/subscribe broker messaging system and method |
US20120284331A1 (en) * | 2011-05-03 | 2012-11-08 | Karthik Shashank Kambatla | Processing Notifications |
US8694462B2 (en) | 2011-09-12 | 2014-04-08 | Microsoft Corporation | Scale-out system to acquire event data |
US20130067024A1 (en) | 2011-09-12 | 2013-03-14 | Microsoft Corporation | Distributing multi-source push notifications to multiple targets |
EP2845116A4 (en) * | 2012-04-30 | 2016-05-11 | Hewlett Packard Development Co | AUTOMATED EVENT MANAGEMENT |
CN103458033B (zh) * | 2013-09-04 | 2016-05-11 | 北京邮电大学 | 事件驱动、面向服务的物联网服务提供***及其工作方法 |
US9684532B2 (en) * | 2014-08-22 | 2017-06-20 | Netapp, Inc. | Virtual machine reboot information persistence into host memory |
US10684998B2 (en) * | 2014-11-21 | 2020-06-16 | Microsoft Technology Licensing, Llc | Automatic schema mismatch detection |
US10944685B2 (en) * | 2017-11-29 | 2021-03-09 | International Business Machines Corporation | Abstracted, extensible cloud access of resources |
US11249960B2 (en) * | 2018-06-11 | 2022-02-15 | International Business Machines Corporation | Transforming data for a target schema |
-
2018
- 2018-05-29 US US15/991,350 patent/US10681164B2/en active Active
-
2019
- 2019-04-22 BR BR112020020760-8A patent/BR112020020760A2/pt unknown
- 2019-04-22 AU AU2019262823A patent/AU2019262823B2/en active Active
- 2019-04-22 EP EP19726790.9A patent/EP3788486A1/en not_active Ceased
- 2019-04-22 WO PCT/US2019/028598 patent/WO2019212792A1/en active Application Filing
- 2019-04-22 CA CA3103838A patent/CA3103838A1/en active Pending
- 2019-04-22 JP JP2020560914A patent/JP7360395B2/ja active Active
- 2019-04-22 KR KR1020207031628A patent/KR102634058B1/ko active IP Right Grant
- 2019-04-22 IL IL278303A patent/IL278303B2/en unknown
- 2019-04-22 SG SG11202010465PA patent/SG11202010465PA/en unknown
- 2019-04-22 CN CN201980029854.3A patent/CN112074815B/zh active Active
- 2019-04-22 MX MX2020011497A patent/MX2020011497A/es unknown
-
2020
- 2020-06-04 US US16/892,890 patent/US11201936B2/en active Active
- 2020-11-03 PH PH12020551844A patent/PH12020551844A1/en unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170244799A1 (en) | 2016-02-24 | 2017-08-24 | Verisign, Inc. | Feeding networks of message brokers with compound data elaborated by dynamic sources |
Non-Patent Citations (1)
Title |
---|
A knowledge-based platform for Big Data analytics based on publish/subscribe services and stream processing, (2015.05.31.) |
Also Published As
Publication number | Publication date |
---|---|
MX2020011497A (es) | 2020-12-07 |
US20200304583A1 (en) | 2020-09-24 |
US20190342412A1 (en) | 2019-11-07 |
US11201936B2 (en) | 2021-12-14 |
AU2019262823B2 (en) | 2024-02-29 |
WO2019212792A1 (en) | 2019-11-07 |
JP7360395B2 (ja) | 2023-10-12 |
CN112074815B (zh) | 2024-07-23 |
IL278303B1 (en) | 2024-01-01 |
EP3788486A1 (en) | 2021-03-10 |
PH12020551844A1 (en) | 2021-05-17 |
IL278303B2 (en) | 2024-05-01 |
BR112020020760A2 (pt) | 2021-01-19 |
AU2019262823A1 (en) | 2020-10-22 |
SG11202010465PA (en) | 2020-11-27 |
IL278303A (ko) | 2020-12-31 |
JP2021523436A (ja) | 2021-09-02 |
KR20210005043A (ko) | 2021-01-13 |
CA3103838A1 (en) | 2019-11-07 |
CN112074815A (zh) | 2020-12-11 |
US10681164B2 (en) | 2020-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102634058B1 (ko) | 입력 및 출력 스키마 매핑 | |
US10831562B2 (en) | Method and system for operating a data center by reducing an amount of data to be processed | |
US10122783B2 (en) | Dynamic data-ingestion pipeline | |
US10860604B1 (en) | Scalable tracking for database udpates according to a secondary index | |
US20140310278A1 (en) | Creating global aggregated namespaces for storage management | |
US9201700B2 (en) | Provisioning computer resources on a network | |
US10262024B1 (en) | Providing consistent access to data objects transcending storage limitations in a non-relational data store | |
US10331484B2 (en) | Distributed data platform resource allocator | |
CN111221851A (zh) | 一种基于Lucene的海量数据查询、存储的方法和装置 | |
CN114116842A (zh) | 多维医疗数据实时获取方法、装置、电子设备及存储介质 | |
US20130124611A1 (en) | Unified repository & tool infrastructure | |
Großmann et al. | SensIoT: an extensible and general Internet of Things monitoring framework | |
Chen et al. | The research about video surveillance platform based on cloud computing | |
CN111488386A (zh) | 数据查询方法和装置 | |
US11727022B2 (en) | Generating a global delta in distributed databases | |
Dhanda | Big data storage and analysis | |
US11175905B2 (en) | Optimizing uploads for an offline scenario by merging modification operations | |
CN110740046B (zh) | 分析服务契约的方法和装置 | |
CN112637288A (zh) | 流式数据分发方法和*** | |
Darweesh et al. | Real time adaptive approach for image processing using mobile nodes | |
US20220277054A1 (en) | Data migration of search indexes across search-engine deployments | |
US20220247803A1 (en) | Dynamic data stream processing for apache kafka using graphql | |
Zhang et al. | Industrial Internet data centralized monitoring and reliability management system | |
CN116303760A (zh) | 银行核心***的数据同步方法、装置和电子设备 | |
CN117370628A (zh) | 数据分类方法、装置、存储介质及计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |