The real-time, digital enterprise is naturally modeled as events that occur throughout the enterprise and the actions taken in response to those events. The key to the digital enterprise is that an event may occur in one business unit with a number of independent business units independently and asynchronously responding to the event. A simple example:
An order arrives in sales. Immediately this event is broadcast to manufacturing, warehousing and accounting so that it can be fulfilled. In parallel marketing receives the order information so that it can be aggregated with other sales data and analyzed in support of the enterprise’s strategic planning activity.
Events characterize enterprise activities at multiple levels of abstraction. At lower levels events might include a reading from a temperature sensor or the delivery of a product, at an operational level it might represent the arrival of an order, a product failure or the completion of a financial transaction; at the corporate level this might represent the achievement of an enterprise-wide KPI or the completion of a strategic plan. Given the wide range of available events it is easy to see how real-time, event-driven systems apply within business units and across business units in the enterprise.
Since the digital enterprise is conveniently modeled using events, it follows that event-driven systems are the most effective approach to supporting the real-time, digital enterprise. The three key characteristics of event-driven systems that make them effective in supporting the digital enterprise are:
It is easier to conceptualize and design event-driven systems since the system’s design can directly model the events that define the real-time, digital enterprise.
It is easier to build systems for the digital enterprise since event-driven systems respond directly to the business events in a manner directly analogous to the way the digital enterprise naturally operates.
The components of the system are more loosely-coupled allowing easier integration among systems as your portfolio of event-driven systems expands. In the long run this may be even more important than real-time responses (see below) as the digital enterprise can only be realized through integration of the systems deployed throughout the enterprise.
Event-Driven Analysis
The first task in realizing digitalization initiatives, irrespective of whether the initiative is tactical or strategic, is to understand the requirements that characterize the initiative. Establishing requirements falls to system analysis activities that should involve both the business units responsible for the initiative and the technical units that will be responsible for systems support for the initiative.
Event-driven analysis is, arguably, the best way to model the business activity both to record its current state and its desired state:
It is easier for business people to think about events and what happens in response to an event than it is to think more computationally about business processes and systems.
Events can be used to model existing activities as well as model the desired real-time enhancements that enhance the digital capabilities of the organization.
The models can be very simple:
Identify an event of interest to the business problem
Identify the actions taken to respond to the event and drive the business activity forward.
These actions may produce additional events for which response actions can be identified with the design process continuing until an adequate model of the business activity is realized.
This analysis approach is very simple and very expressive and can be successfully accomplished in a completely manual fashion or supported by automated tools.
In the best of all worlds the model reflects the start of a system architecture that aligns closely with the business model while allowing the technical model to be developed by elaborating on this basic business model.
Event-Driven Applications
Being able to respond in real-time is a very important characteristic of modern applications. Nobody interacting with a system wants to wait for a response. The response should be immediate so that it doesn’t interrupt the user’s train of thought. A user of a mobile app will typically allocate only a very few seconds for a response. After that the user is distracted by other activities on the phone, loses interest and switches context. The user may NEVER come back to the task associated with the late response. Even in fully automated systems, the systems cannot afford to hang on to context when a response is delayed. This is obvious in control situations where responding in a timely fashion is critical to the proper operation of whatever artifact is being controlled but these problems arise in every domain as systems become more real-time in an effort to better support the digital enterprise.
Traditional systems are architected to store data in a database. To find out if something happened, the system that needs to know if something happened consults the database to see if the “event” of interest has been recorded. This causes two problems for building responsive systems. First, the app that stores the data doesn’t think of itself as a real-time system so it is in no hurry to write the data. The system may queue up the write and do it when convenient or batch it for better efficiency. This means there is a delay before the relevant data is even available. Second, the application looking for the event now has to poll the database looking for the event. Of course, this is very inefficient if the application polls often enough to find the events in real time. Increased efficiency requires less frequent polling resulting in longer latencies before the event is detected.
Real-time, event-driven applications are a better match for the digital enterprise. The application is naturally driven by events. The events may be produced by any source and are delivered directly to the application which can inspect each event and, in real time, determine and execute the appropriate response to the event. This doesn’t necessarily imply the response is complete: other real-time, event-driven apps may also be listening to the event to do their part in providing the full breadth of capability required by the digital enterprise.
The real-time, event-driven application is also easier to understand and easier to maintain since it deals in events that are well understood within the business.
Event-Driven Integration
The third characteristic is every bit as important as the first two and will become even more important as the enterprise evolves to a more real-time digital enterprise. The digital business treats each application as a functional capability. These capabilities are tied together to realize the digital enterprise by events. The business functions subscribe to the events they are responsible for processing and, as each event occurs, the business function picks it up, processes and responds to it in real-time.
When a new app that solves another business problem is commissioned in a digital enterprise it has all the existing business functions immediately available to it. All it has to do is raise the appropriate event and all business functions that process that specific event do what they are supposed to do. No longer does the app have to find all the business functions and link them into the new application or figure out how to send them all messages. In addition, if a new function needs to process the same events, existing applications do not have to be upgraded; the new business function simply subscribes to the relevant events and ALL EXISTING APPLICATIONS are automatically extended to include the new business function.
This also implies that the digitalization effort can be approached using both tactical and strategical approaches. When a need for a new application is determined, it can be built tactically while making the events it generates available to the rest of the enterprise. When a more strategic effort is initiated, the events created by the tactical effort are all available to integrate into the more strategic initiative with no additional work required.
There is no way to overstate how powerful this model is and how much more responsive information technology can be as the enterprise reaches critical mass in migrating to this event-driven architecture.
The Event-Driven Digital Enterprise
This paper illustrates the advantages of an event-driven approach to supporting the digital enterprise. By committing to event-driven modeling, application construction, and integration the enterprise can reach its digitalization goals in the most productive manner allowing business and technical units to collaborate defining the required systems, technical teams to build enabling digital applications in the most productive fashion and supporting the enterprise as a whole in integrating tactical solutions into enterprise-wide strategic digitalization efforts.
Comments