Title image

Software architecture is trade-offs

Trade off are good

Coupling and cohesion

In software design we want to achieve loose coupling and high cohesion

...sometimes

Loose coupling and high cohesion

Means that modules should

  • be independent of each other
  • have a single purpose
  • have a well defined interface

Tight vs loose coupling

Tight vs loose coupling

Communication in distributed systems

Synchronous vs asynchronous

Communication in distributed systems

Synchronous vs asyncrhonous

What is an Event?

In business terms: Actions of interest that occur at distinct points in time

In software: Simply a message sent between two system components or services.

It has a spesific type and can contain information that is passed to the other component.

Batch vs Stream processing

Batch vs Stream processing

Event-driven architecture

Reference model

Event-driven architecture reference model

Message brokers

Message broker

IoT use case

IoT Message broker

Azure Event Hub

Azure Event Hub

Apache Kafka

Apache Kafka

Command Query Responsibility Segregation

Command Query Responsibility Segregation

Event sourcing

Event Sourcing
Microservice architecture with CQRS and event sourcing

Event storming

Event storming board
Event storming explained
Quote from Alberto Brandolini