Channels ▼
RSS

Web Development

Do We Need Event-Driven Architecture?



A software system with an Event-Driven Architecture (EDA) is built around the idea that events are the most significant elements in the system and that they are produced somewhere in the system and consumed somewhere else in the system. The business value is that you can easily extend such a system with new things that are ready to produce or consume events that already are in place in the system. Of course, you can add new events as you go.

Yes, this is absolutely great. If you build something new there is no reason why you shouldn't use this kind of architecture. However, focusing on the events is not the only thing you should do.

Instead, you should just build an architecture in which you have components or services and some kinds of "channels" between some of these components. Over a channel an event can flow from one component -- the producer -- to another one -- the consumer. These components are loosely coupled and can exist in a distributed world. Some of these events are such that you broadcast them to anybody that has subscribed to them.

Thus don't constrain your architecture to just be event-driven. There is really no money to save by doing just that. Let it be components with channels. The channels I am talking about were already adopted in the telecom standard SDL back in 1982. In EDA, it is basically a mechanism for brokering events. In the OMG standard CORBA from the early 1990s, it was called the "Event Service". What a coincidence! Actually one way of thinking about EDA conceptually is really that it is all that CORBA was meant to be, but in the Web/Internet world.

The most interesting components are services. You get service-oriented architecture (SOA) at the same time, and more.

However, those of you who think this is fundamentally new have really not done your homework. It is probably true that the three letter combination EDA is new as it was for SOA. We have also got some new great platforms that make it easier to implement these ideas.

Over the years I have seen trends in the component world that put more focus on the components than the channels (and thus the events) between them. Other times it has been the other way around. However, there is absolutely no reason to choose. You should allow for both. But what we don't need are more buzzwords. They don't help us at all.

To summarize, you should go for a component architecture without any compromises. This is what made the Ericsson AXE system such an incredible success story more than 30 years ago. And thanks to its architecture, it is still probably the best selling product of its kind in the world. However, Ericsson had to build its own infrastructure managing components with channels since such solutions didn't exist at the time.

Of course, this is still new to people who have not previously developed a component architecture. Thus those people have to come up to speed and that means training and mentoring. And to start with, you need some good technical practices. It is as easy as that!


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 
Dr. Dobb's TV