Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage Presentations Designing Events-First Microservices

Designing Events-First Microservices



Jonas Bonér explores the nature of events, what it means to be event-driven, and how to unleash the power of events and commands by applying an events-first domain-driven design to microservices-based architectures.


Jonas Bonér is the founder and CTO of Lightbend, inventor of the Akka project, initiator and co-author of the Reactive Manifesto and a Java Champion.

About the conference

Software is changing the world. QCon empowers software development by facilitating the spread of knowledge and innovation in the developer community. A practitioner-driven conference, QCon is designed for technical team leads, architects, engineering directors, and project managers who influence innovation in their teams.

Recorded at:

Sep 13, 2018

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • Not my prefered appraoch

    by George Ludgate,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    This approach is a little chaotic. An event is an instantaneous change in the static-state or dynamic-behavior of one or more things. Events are given generic class-names which are present-tense sentences e.g. "Man marries woman.", "CEO takes company public.". You CANNOT describe an event without describing the things which change - hence you have to be object oriented from the start. How will you know whether your system needs to respond to a particular event found during the analysis sessions e.g. "Customer buys item."? If Customers are not in your domain of interest then you would waste time handling this event. The object-oriented domain driven approach to analysis and design (OOS/OOD) promoted by Inwood and myself in the 80s is still the best way to go. Boner also seems to have ignored the fact that “mining facts” is the start of any object-oriented approach and every fact is represented by a sentence which expresses a relationship between one or more things so again his approach is a poor man’s start to OOA. Events are facts that are true at an instant in time and are used to determine the dynamic behavior of things in OOA. Fats which are true for long periods of time are used to determine the static-state of a domain and captured on object models or ERDs. So he is prompting domain driven OOA but does not say it out loud nor shows its systematic approaches.

  • Re: Not my prefered appraoch

    by Anne Smith,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Actually there is no need to describe the change in the event itself. All event needs to do is to notify all interested parties or all objects about any change within the system. For this purpose you can send a simple unique string with no particular sense. Any object can request any information from another object at any time to perform its duties.
    This concept is very elegant, reliable, flexible and scalable. The most important is that it's simple and configurable. Object might look different from what they usually are though.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p