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.
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]
Event Sourcing basics
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.
What is Event Sourcing Event Sourcing is an alternative way to persist data. In contrast with state-oriented persistence that only keeps the latest version of the entity state, Event Sourcing stores each state mutation as a separate record called an event.
[Read More]
Global event stream
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.
The previous post describes projection basics. However, subscribing to a single event stream that represents an entity (for example) isn’t useful. The projection code can handle any event that comes from the domain model and build sophisticated read models that serve a variety of needs.
[Read More]
Deploy GitLab CE on a new AKS cluster
Update: GitLab currently has a choice of cloud-native Helm charts, which might be more actual than using this recipe. Check this page to find out more.
I would like to share my experience to create a small Kubernetes cluster on Azure Container Service (AKS Preview) and deploy GitLab CE there using the Helm chart.
Creating a cluster in AKS should be an easy task but sometimes things don’t go at they suppose to.
[Read More]
DDD-All-The-Things!
For quite a few years, with growing popularity of Domain-Driven Design (DDD), I keep hearing that:
DDD is hard
DDD is only for core domain
This mantra has become very popular and often is (mis)used to advocate some crazy things people do to avoid crunching the domain knowledge.
In this post, I would like to return to the roots. In nearly every talk or lecture that somehow concerns DDD, Greg Young mentions that, in his opinion, the chapter order of the Blue Book is incorrect.
[Read More]
Demo MassTransit Scheduling with Quartz
MassTransit is able to scheduled messages using a separate service that uses Quartz.Net and your transport provider.
This functionality is briefly described in the documentation but I felt there is a need to create a working demo.
So, it is now available on GitHub.
You need to run the MassTransit.QuartzService in a separate process. For demo purposes you can use RAM storage in Quartz. Do do this, remove or comment out all ADO JobStorage configuration lines from the app.
[Read More]