Domain Driven Design · Software Architecture

Structure of software in a distributed architecture

…in the beginning I was interested in what is the structure of software. People in hardware have it all easier. When you build machines, you have obvious components connected by wires and this forces you to a kind of natural modularity. Each component does whatever its doing and provides a simple way interacting with the… Continue reading Structure of software in a distributed architecture

CQRS · Domain Driven Design

Asynchronous APIs and CloudEvents in messaging architectures

Table of contents Prologue Asynchronous Api CloudEvent Specification: a common format for messages Commands/Events and Horizontal scaling with Competing Consumers pattern Failure Tolerance CQRS and how to handle the reads synchronously Prologue In this article I will discuss an architectural approach I usually follow when I design Apis and distributed messaging architectures. The architecture is… Continue reading Asynchronous APIs and CloudEvents in messaging architectures

Event Sourcing · Software Development

Connection pending send bytes is too large (EventStore error)

This short note is about dealing with “Connection pending send bytes is too large” error while using a Catch-up subscription and connecting to an EventStore database. That error message can appear in the logs when the server drops a client connection. The reason why that happen is most likely that the server is sending too… Continue reading Connection pending send bytes is too large (EventStore error)

Event Sourcing · Software Architecture

Kafka vs Event Store on scaling processing in a messaging architecture

This post is a condensed excerpt that I use for a tech talk about scaling distributed systems. Kafka is a message broker and Event Store is a database for stream of events. The roles of these tools has been extended and not always with good results. One can be a good simple ingestion tool while… Continue reading Kafka vs Event Store on scaling processing in a messaging architecture

Cloud · DevOps

Deploy EventStore to Kubernetes with Helm on Azure Cloud AKS

The “Official” EventStore Helm Chart has been archived by the EventStore team. The reason behind that decision is strongly opinionable to say the least. This is the chart I use https://github.com/riccardone/helm-eventstore This guide is to show how to use the official Event Store Helm Chart to interactively deploy an Event Store Cluster in Kubernetes Azure… Continue reading Deploy EventStore to Kubernetes with Helm on Azure Cloud AKS

Cloud · DevOps

Deploy EventStore to Kubernetes with Helm on Google Cloud GKE

The “Official” EventStore Helm Chart has been archived by the EventStore team. The reason behind that decision is strongly opinionable to say the least. This is the chart I use https://github.com/riccardone/helm-eventstore This guide is to show how to use the official Event Store Helm Chart to interactively deploy an Event Store Cluster in Kubernetes Google… Continue reading Deploy EventStore to Kubernetes with Helm on Google Cloud GKE

CQRS · Domain Driven Design · Event Sourcing · Software Architecture

Distributed Architecture: 3 Steps

Here is my view implementing business requirements with DDD, Event Sourcing and CQRS. Ingestion Processing CQRS and Data Distribution Applying the same 3 steps for each new requirements let improves time after time the mechanics of each small bubble while it is living in the aquarium of an Event Driven ecosystem along with bigger legacy… Continue reading Distributed Architecture: 3 Steps

CQRS · Domain Driven Design · Software Architecture

Distributed Architecture 03: CQRS and Data Distribution

In our journey we started with a business requirement, we model the requirement with commands, events, we ingest input data, we process the data, we implemented processing components using Event Sourcing pattern and we stored our Domain Events in small streams. All this represent the way to define and feed our write model. The benefit… Continue reading Distributed Architecture 03: CQRS and Data Distribution

Domain Driven Design · Event Sourcing · Software Architecture

Distributed Architecture 02: The Processing

In the ingestion phase data went through the front door to enter our domain. In the domain area we want to process the data in case they mean something for our components, ignore them if not relevant or raise exception if the data are relevant but something is not right. In the previous phase, the… Continue reading Distributed Architecture 02: The Processing