We have to consider a wide range of use cases in digital transformation projects. Some of these use cases are short-term interactions such as a user or a system invoking a service and expecting an immediate response. An example would be to getting the list of products under a certain category in a shopping portal. However, there can be a significant number of use cases that require more complex interactions with multiple systems as we discuss below.
A customer placing an order in a shopping portal
Multiple internal and external systems as well as shopping company’s staff could be involved in this process. Each of involved entity must receive relevant order details in a reliable and secure manner. Some steps in the process may take a long time to complete (e.g. packing items) and some steps are hard to scale based on the load (e.g. shipping packages).
An office building can be equipped with light sensors, motion sensors, thermometers, etc. Theses sensors will be continuously transmitting their readings, so that relevant systems can use those as necessary. E.g. fire control system can check abnormal increases in temperature or security system can check for suspicious movements within usually unoccupied time periods.
On-boarding an employee
HR staff fills in employee details in the HR portal. This activity should update multiple other systems such as payroll system, procurement system, leave management system, etc.
Now let’s consider some properties of above and similar use cases:
Temporary failures or unavailability of involved entities should not result in failures of the use case (e.g. temporary unavailability of the inventory service should not fail the order process).
Temporary higher loads on the system have to be tolerated (higher number of orders during holidays may delay some orders, but should not fail any order).
A large number of messages (or events) have to be processed by a considerable number of systems (e.g. various sensors in the building monitoring system may send their reading every 10 seconds)
The entity that is sending an event (e.g. sensor or HR portal) may not know or care about the entities that are receiving the event (e.g. employee registration events sent by the HR portal may be consumed by multiple existing systems as well as by some of the new systems in future)
Results of carrying out an use case cannot be notified to interested parties immediately (e.g. customer cannot be notified about the shipment of goods as soon as the order is placed).
Although this is not an exhaustive list, if business use cases with above requirements are present in a digital transformation project, it could be an indication that Event-Driven Architecture (EDA) has to be utilized in certain areas.
Now let’s consider the below architecture for incorporating EDA within a scope of a large project.