$30 off During Our Annual Pro Sale. View Details »

Design principles for an Event Driven Architecture

Luis GC
October 24, 2019

Design principles for an Event Driven Architecture

According to Wikipedia, an Event-driven Architecture, is a software architecture pattern that promotes the production, detection, consumption of, and reaction to events.

There is a perfect pairing between microservice-based architectures, Domain Driven Design (DDD) and event-driven architectures. In this conference we will review what design principles are the catalyst for this symbiosis as well as practical examples in different areas including governance. Many business use cases can be articulated on top of these principles, abstracting them from both complexity and variability in the technological stack.

As a good part of the audience will already be dealing with events and microservices, we will also explain other key concepts:

* Designing a future-proof event taxonomy.
* Strategies for event enrichment, starting with the definition of that concept.
* Managing correlation or inference of events.
* Benefits from an event schema registry using for example Apache Avro.
* Traceability of events by design.
* Data conciliation patterns, and when to avoid it.

We will also take advantage of the opportunity to discuss about common challenges (and others not that common), frequent mistakes and how to avoid or mitigate them.

To conclude, we will explain some use cases that we are solving superbly based on real-time events: Communications, Order Management, Business Activity Monitoring (BAM), KYC, GDPR, ...

Luis GC

October 24, 2019
Tweet

More Decks by Luis GC

Other Decks in Technology

Transcript

  1. Design principles for an event driven architecture Madrid Apache Kafka

    Meetup Luis García & Pablo Ruiz - ING October 2019
  2. Introduction 2 There is a perfect pairing between microservice-based architectures,

    Domain Driven Design (DDD) and event-driven architectures
  3. 3

  4. Event Taxonomy 4 Purpose Driven Technical Meaning Driven Business Domain

    Raw Native Standardized Atomic raw domain Derived (*) business
  5. Taxonomy at microservice level 5 (*) each bus represents one

    specific topic in the Event Bus Domain API BB viewed from the outside Business Technical API Storage Bus Connector CORE Raw Domain Building Block internals Business Technical
  6. Standard language 6 API Call API Call Ubiquitous Language Ubiquitous

    Language Ubiquitous Language Standard Language
  7. Reference Data 8 Building Block A Building Block B Master

    Reference Data Building Block C Datalake
  8. Coupling (loose) 9 Product A transaction received Fraud Engine transaction

    received Fraud Alert!! Communications transaction received Contact customer!! Channel Gateway Contact customer!!
  9. Correlation & Inference 10 Domain A Event A Domain B

    Domain C Event B Domain A Event A Domain B Domain C A & B A & NOT B
  10. Traceability & Lineage 11 Domain A Event Id: 1 TraceID:

    1 Domain B Domain C Event Id: 2 TraceID: 1 Event Id: 3 TraceID: 1 Event Id: 4 TraceID: 1 Domain D Event Id: 5 TraceID: 5
  11. Aggregation / enrichment 12 Domain A Domain B Domain C

    Name: Peter Surname: Parker Job: Photographer Name: Peter Surname: Parker Alias: Spiderman Domain D Name: Peter Surname: Parker
  12. Orchestration 13 Orchestrator Generate Monthly Extract Product A Product B

    Document Mgm Product A movements Product B movements Statement request with Product A&B movements
  13. Choreography 14 Product A transaction received Category Service transaction received

    transaction categorized Customer Reporting transaction received transaction categorized
  14. Privacy / Data Segregation 16 Producer Clear Message <encoded message>

    Clear Message Producer Consumer Name: Clark Surname Kent Income: 1234.00 Name: Clark Surname Kent Income: 1234.00 Other Consumer Name: **** Surname ***** Income: 1234.00 <encoded message> Consumer Other Consumer <encoded message>
  15. How EDA impacts a microservice based architecture 18 Feature EDA

    impact Loosely coupled Location transparency Strong cohesion Organized around business capabilities Each service is independently deployable Highly maintainable – Easy to maintain Highly testable – Easy to test Each service is as simple as possible Data Management Transaction Management