What are not events? – Dijon integration

Despite the hype around ‘Event-Driven Architecture’ (EDA) over the years, I believe you will not be able to find a concrete definition for ‘event’ on the web today. After an hour of research, the best definition I found is one of several definitions provided by Red Hat: “We would define a software phenomenon as immutable record He something happened within an application… Normally, events are broadcast notice of change either repeat state in many applications. Here, Red Hat is talking specifically about ‘software events’: each of which signals a ‘change of state’ within a given distributed application within a particular ‘entity’ (such as a customer address change). Is.

This definition may sound too straightforward, but what is not mentioned is that there are actually three different types of ‘events’ according to today’s pundits:

  1. Notification Events: These are no more than key identifiers (such as customer IDs) of the changed entity for “notification of change” – but clearly in no way to “repeat state across multiple applications”, as the state change is not fully implemented. The event payloads are kind of absent. An additional call to the source system is actually required by each individual event consumer to determine (attempt) which state changes were made.
  2. [Event-Carried State Transfer/Decision] planning: These carry only those qualities of the business entity that were actually replaced – without a doubt the sweet spot in the EDA world and something that is slowly becoming the norm for good reason.
  3. data event: These contain the entire current ‘state’ of the business unit that was changed, making it very easy to “replicate the state across multiple applications”, but extremely difficult to know which attributes were changed.

Given that we have called the (software) event “immutable record that something happened within an application,” I’m happy to disqualify ‘notification events’ as completely true ‘events’: they contain nothing but the entity’s key, which we never change. are, and nothing else that can be referred to as “immutable”. In fact, if there are two different consumers of a ‘notification event’, and they each perform their own callbacks in the source system at different times , so to determine what changes were made to the related entity, they may both actually yield different results, with subsequent changes that may have been made to the same entity between two calls: perhaps It is an immutable record.

Even more interestingly, if we consider Microsoft’s definition of ‘event’, we read that: “an event is smallest amount of information that fully describes something that happened in the system.” Thus, according to Microsoft, we’ve just eliminated ‘data events’, as these include all attributes of the changed entity, regardless of those Whether changes have been made to the attributes:smallest amount of information fully describes what happened.” This now leaves us with only ECST/decision events, or what I like to call ‘events’ quite simply, and the EDA universe becomes clear.

We see loose, and even factually incorrect, use of the word ‘event’ in the world of IoT. We are told that IoT devices generate a large number of ‘events’ every day, above all in terms of ‘streaming analytics’ use cases. These ‘IoT events’ are said to result from, for example, the regular, high-frequency temperature and velocity readings of a conveyor belt motor, which are required to facilitate ongoing streaming analytics: a rolling window of time To detect discrepancies between readings. What should be perfectly clear is that the temperature and velocity readings for the same motor should indeed be the same for the most part, meaning that there is generally no “IoT event” between the large majority of related ‘IoT events’. change of state” does not occur. This is why ‘IoT Events’ – unlike EDA-relevant ‘events’ – are generally not even persisted: they are of little or no value outside the time frame that is being analyzed.

All of this may sound quite trivial, but if we can’t even arrive at a general definition for what an ‘event’ is, then we have no chance of clearly defining an ‘event-driven architecture’. Therefore, above and beyond my previous analysis of the three most discussed phenomenon patterns, we must also learn to differentiate.iot telemetry‘ – which generates millions of instantaneously analyzed, non-persistent records from any resulting ‘event’, which in most cases are generated by the respective streaming analytics solutions – not by the IoT devices themselves – of a significant change of state To indicate (for example motor high temperature exceeded). Only the latter would ordinarily be retained; Only the latter are ‘events’.

In a different, alternative definition of ‘event’ provided by RedHat, we read that “an event is any Important Event or change in state” in a system. This is quite interesting because a “change in state” in itself undoubtedly represents a “critical event”, which suggests that we should also consider any other “critical event” that can be inferred. This makes me think first of all in the world of web development, where we often hear of ‘UI events’. If the user clicks a button to trigger an action, is there a ‘state change’ in the UI? Absolutely not, but it can be said that a “significant event” took place. On the other hand, if the user entered a response in any of the fields shown on the UI, there was actually a change in the state of the UI. Each of these UI examples meets this second Red Hat definition of ‘event’, yet it should be pointed out that a distributed application is not interested in events occurring on an individual user PC rather than in the individual user. Is. Application.

So what about ‘system events’, such as ‘audit events’ when an application user accesses sensitive data or enters the wrong password three times? While each of these examples undoubtedly represents another category of ‘software events’, distributed applications in general are not interested in such events. Given this, we must conclude that the lifeline of EDA – the modern architecture used to build distributed applications – is one and only one type of event: ‘Business Events’ – “the smallest amount of information that can be completely describes a ‘change of state’ in a business entity.

Leave a Comment