What’s it about

Semi-structured thoughts about Domain-Driven Design, Event Sourcing, event-driven and distributed systems, also life in general.

It is my personal space, views are my own and no publications here represent technological, political or any other position of my employers and clients, unless explicitly mentioned otherwise.

Check more about what I do and what I help you with on the About page.

Check the Blog for the latest posts.

Say hello to Eventuous 👋

Honestly, I like heated debates on Twitter; I really do. Due to the nature of my work as a Developer Advocate at Event Store, I engage in many discussions about Event Sourcing. I hear a lot that the idea is great, but using it in real life is way too hard. As I am involved in building production systems, which are event-sourced from the start, I tend to disagree with this statement. [Read More]

Reporting models and Event Sourcing

As a listened more of the Ask me anything with Udi Dahan session organised by Virtual DDD, more points, which Udi was making, especially about Event Sourcing, made my fingers itch to wrote some more. When talking about the natural progression in system evolution once it’s in production, Udi gave an example of adding columns in the read-model as a consequence of more properties to some domain objects. That particular example was about the search feature. [Read More]

Event-driven startup

During the last year, I’ve done quite a few webinars, talks and workshops about Event Sourcing. A lot of time the audience answered a question: when I should not use this pattern. In broader terms, the question appeared during the Ask me anything with Udi Dahan session organised by Virtual DDD. The question was: what are the circumstances, where things like Event-Driven Architecture (EDA), Service-Oriented Architecture (SOA), CQRS, et al., aren’t applicable. [Read More]

GitLab, .NET Core, Kubernetes, and Pulumi

This article is a part of the GitLab for .NET developer series. We actively use the modified GitLab AutoDevOps pipeline that supports .NET applications better than the original one. I described our approach in the previous article. GitLab AutoDevOps feature uses Helm and therefore I had to create my own Helm chart with some amendments. However, the cart is still very rigid. Rigidity the common issue with Helm charts and trying to develop a chart to cover a lot of different deviations from the default is a road to hell. [Read More]

Deploying .NET Core apps to Kubernetes with GitLab

This article is a part of the GitLab for .NET developers series. GitLab is the awesome tool that I used in different organisations for years. It is, however, often overlooked in the .NET space. One of the reasons for this is that GtLab was always oriented to more dynamic stacks and .NET used to be quite rigid and enterprise-oriented space. When it comes to continuous delivery, I believe that GitLab is one of the best, if not the best integrated tool on the market today. [Read More]

Overselling Event Sourcing

This post is a part of the Myth Busting series, mainly about all the misconceptions about Event Sourcing here and there. Each post either addresses a common misconception or a particular article on a public resource. I will address specific issues with a given article. You might want to read the original article to get the context. Original article Stop overselling Event Sourcing as the silver bullet to microservice architectures by Oskar uit de Bos [Read More]

Event Sourcing and Microservices

This post is a part of the Event Sourcing introduction series that I wrote for Event Store. All the articles are available in the Event Store Blog, along with other great articles about Event Sourcing. Over the last few years, the microservices pattern became known and well-adopted. The promise of microservices is appealing - create small autonomous components, eliminate dependencies, enable team autonomy. Low coupling and high cohesion - the holy grail of software development seems feasible to achieve when using microservices. [Read More]

Projections in Event Sourcing

This post is a part of the Event Sourcing introduction series that I wrote for Event Store. All the articles are available in the Event Store Blog, along with other great articles about Event Sourcing. By definition, a projection is a representation of an object using a different perspective. For example, isometric and orthographic projections allow us to represent a 3D object on paper using different points of view. [Read More]

Event Sourcing and CQRS

This post is a part of the Event Sourcing introduction series that I wrote for Event Store. All the articles are available in the Event Store Blog, along with other great articles about Event Sourcing. CQRS stands for Command-Query Segregation Principle. Greg Young described (and named) the pattern thoroughly in 2010, but the idea existed way before that time. On a high level, CQRS states the fact that operations that trigger state transitions should be described as commands and any data retrieval that goes beyond the need of the command execution, should be named a query. [Read More]

Entities as event streams

This post is a part of the Event Sourcing introduction series that I wrote for Event Store. All the articles are available in the Event Store Blog, along with other great articles about Event Sourcing. In the introduction post, we got an overview of what is Event Sourcing and what the domain event is. In this guide, we can change the way we persist entities using events. The code in this article is C#-styled pseudo code. [Read More]