Event-Driven Architecture vs. Publish-Subscribe Systems, Page 3
In one type of system, the person who needs information is responsible for acquiring it: the patient is responsible for asking the doctor about drug interactions; the doctor is responsible for checking with the FDA, and the onus is on the FDA to find out facts about drugs from pharmaceuticals. In a different type of system, the organization that obtains information is responsible for propagating the information to organizations that need it (in other words, to subscribers) in a timely fashion: pharmaceuticals tell the FDA, which tells doctors, who tell patients. Thus, the time between the occurrence of a material event and the appropriate response is reduced.
EDA vs. SOA and Traditional Pub-Sub Systems
In SOAs, the person who needs information is responsible for asking the person who has the information: The client invokes a service on a server, and the server has no responsibility other than to respond to service invocations. In EDA, the client who needs information is responsible for updating subscriptions (models, forecasts, and plans) at the server with the information, and the server is responsible for continuously propagating relevant information. Three aspects of EDA contracts make EDA more powerful than SOA:
- The duration of the contract between client and server is long-term rather than a one-time invocation.
- The client has the responsibility to update subscriptions (models) so that the client gets information only to each moment from the publisher.
- The publisher has SLAs to provide relevant (as determined by the subscription), timely information to the subscriber.
Some might argue that EDA and the Event Web are nothing but well-known push technology. These skeptics miss the key point: Traditional push technologies and pub-sub systems exploit only a tiny fraction of the power of EDA for four reasons:
- Sophisticated subscriptions. Traditional technologies use very simple subscriptions such as subscriptions for "news about Iraq," whereas EDA and the EW use a rich variety of subscription types that include sophisticated model-based subscriptions.
A traditional subscription is a filter on a single event (for example, "Is this news story about Iraq or not?"). By contrast, subscriptions in EDA and the EW can be correlations across histories of multiple event streams. Further, control streams—the continuous updating of subscriptions—are not a feature of traditional push systems.
- Evolving networks. Traditional push architectures have a hub-and-spoke form: Streams are pushed to the hub that does simple filtering on messages and then pushes filtered messages to subscribers. The EW is a network that evolves organically. Just as the Web is a network of Web-hosting servers, with servers invoking services on other servers and then offering value-added services, the EW is a network of Event-Web-hosting servers, with new servers added to the network over time, and with new streams connecting servers. Filtering, aggregation, correlation, and model computation take place throughout the network, not merely at a single hub.
- Structured events. Traditional technologies push events, such as news stories, that are unstructured. Events in EDA and EW, on the other hand, can be highly structured with valuable metadata.
- Ubiquitous standard. Traditional technologies used proprietary protocols to push events to subscribers, whereas the EW is a thin layer on a ubiquitous standard—Web services.
Traditional pub-sub systems exploit only a tiny fraction of the power of EDA because they use only simple subscriptions rather than sophisticated models. An example of a simple subscription is: "Send all messages dealing with 'Sales' to a subscriber." Designing good EDA systems requires creativity because of the many ways in which models can be distributed and shared between agents. Upcoming articles in this series will discuss designs of EDA systems.