Follow along with the course eBook: https://systemsinnovation.io/books/
Take the full course: https://systemsinnovation.io/courses/
Overview to Event Driven Architecture(EDA) in the design of complex systems
Complex systems are inherently dynamic systems, schools of fish, transportation systems, social networks and financial markets are examples of complex systems that are constantly changing, change is the norm. When systems reach this critical level of dynamism we have to change our way of modelling and designing them. It is now no-longer the static structural properties in space that define them but increasingly the systems relations in time that come to define how it functions.
The appropriate systems architecture for this inherent dynamic nature to complex engineered systems is what is called event driven architecture. Event driven architecture or E.D.A. is a design pattern built around the production, detection, and reaction to events that take place in time.
Information technology is key to enabling a new world of event driven architecture, when we start putting chips in all kinds of devices and objects, instrumenting our technologies and putting smart phones in the hands of many, the world around us stops being dumb and static and starts being more dynamic, adaptive, and things start happening in realtime.
When the lights in my house or my garage door are instrumented with sensors and actuators, they no longer need me to turn them on. Instead they wait in what is called a restless state, listening for some event to occur and then can instantly respond.
This is in contrast to many of our traditional system, where the components are constrained by some centralised coordination mechanism with information often having to be routed from the local level to a centralised control mechanism, then batch process and returned to the component to respond after some delay. the components within complex system are able to adapt locally, this means they can often act and react in realtime.
Added to this is the fact that many of these complex engineered systems are loosely couples networks of unassociated components, they don’t really have any structure, sometimes they don’t even exist until some event actually happens. When I make a query on a search engine my computer might be coupling to a data centre in Texas but the next time I make the same query I might be interacting with a server in South Korea depending on the systems load balance at that instance in time the network’s structure is defined dynamically during the systems run time.
An event-driven architecture consists primarily of event creators, event managers and event consumers. The event creator, which is the source of the event, only knows that the event has occurred and broadcasts a signal to indicate so. An event manager, as the name implies functions as an intermediary managing events, when the manager receives notification of an event from a creator, it may apply some rules to process the event but ultimately events are passed down stream to event consumers where a single event may initiate numerous downstream activities. Consumers are entities that need to know the event has occurred and typically subscribe to some type of event manager.
So a quick example of this might be an online accommodation service, where event creators, that is property owners, broadcast the availability of their accommodation to the event manager, the online platform, which would aggregate these and event consumers, people looking for accommodation, could subscribe to the platform’s mailing list sending them notification for any new relevant listings.