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.

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 became 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 back 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]

Autofac and ServiceStack

I finally decided to put this integration to a NuGet package.

There are two versions now:

  • The first version (1.0.1) supports ServiceStack V3, which remains a free version
Install-Package Autofac.Extras.ServiceStack -Version 1.0.1
  • Version 2.0 supports ServiceStack version 4
Install-Package Autofac.Extras.ServiceStack

The repository is on GitHub

Agile Architecture

Several points from Martin Fowler's talk [Agile Architecture](https://www.thoughtworks.com/talks/agile-architecture-rethink-2014) on Rethink Dallas 2014: * Architecture is "things that matter" and "things that are hard to change" * Architecture and development are two in one, cannot be split and done separately * Some technical decisions remove a need for architecture * Architectural artefacts are not [only] diagrams but examples in code * Technical lead or architect need to spend about 30% of their time doing programming, mainly commit [Read More]

Autofac and ServiceStack - Managing Life Cycle [3]

In the [previous part](../autofac-and-servicestack-managing-life.html) I suggested storing current scope in a static property. This seems to break under higher load because the scope is shared across too many instances of the same service and after the first request it gets disposed, leaving all other requests with dependencies from the disposed scope in unknown state, i.e. closed database session. After some more digging I found a way that really works. [Read More]

ReactiveUI - Documentation

If you have not noticed yet, the ReactiveUI team has made quite significant progress writing some documentation. It can be found here.

The nice thing about this is that they also described some concepts, like the usage of Rx framework itself and the whole idea of FRP, with some links to videos and papers.