Architecture overview

Represented as events and projections

Event storming

Immutability as foundation

Definition

(Command aCommand, State currentState): Event
(Event anEvent, State currentState): State

Implementation

  • Just a fold operation.

  • Continuously running, without need snapshot

  • Encapsulated in an UnitOfWork

Demo

asciicast

Why?

cloudstate

Why 2

axon

Why 3

kafka-streams

Technologies

  • Java 14

    • Records,
    • Switch expressions
    • If instanceOf pattern matching
  • Spring

  • Kafka & Kafka streams

What is missing from your solution for it to be production-ready?

  • Static analysis

  • Pipelines

  • Metrics / Monitoring / Logging

  • Kafka Streams Limitations

    • Cooperative reassignment
    • Sharded/Partitioned data
    • Schemas

Microservice Architecture

  • Don't
  • Don't
  • Driven by the business / conways law represented by bounded contexts
  • Considerations about Cohesion / Deployment
  • Sharing immutable behaviour
  • Mutable state should be internal, not exposed
  • Lets go back to the event storming ;)