Difference Between Event and Message

Those new to Event Driven Architectures often treat the words “events” and “messages” as interchangeable.  Though they have a lot of properties in common, they are meant for different purposes and have different properties.  The most common definition I get for the two words is that of a message. A message is a request from…

read More
The Best Way to Share Data Among Bounded Contexts

When first learning Domain Driven Design it is common to run into problems in data sharing.  Domain Driven Design recommends that data is kept in silos, or Bounded Contexts, where only one BC is allowed access and if other Bounded Contexts need access to that data they must ask for it.  This can lead to…

read More
Logger Injection vs Static Logging

When deciding how to log messages from an application it can be tempting to use the static logger offered by the various implementations NuGet packages.  They are ready to use out of the box so you can get started quickly, but saving the 5 minutes to create a wrapper around the logger and inject it…

read More
Migrating a Legacy System to CQRS

One of the most difficult parts of migrating an existing legacy system to DDD and CQRS is keeping all the other systems running.  Legacy systems often use the database as a communication path by assuming the DB is always updated with the latest data, and acting on the current state.  Trying to break off a…

read More
Testing EDA is Less Expensive than you Think

If you want to start trying out Even Driven Architecture to see if it’s right for you, you may be worried about costs or the initial effort required.  Standing up a Kafka server may seem like a daunting task to experiment with a new technology.  However, there is an easier way that is also lighter…

read More
Should a Repository Log Exceptions

I recently had a question about whether a repository should log exceptions that occur during DB updates. We have a rule that repositories should not call other services.  Since a repository call should be the last thing done before data is persisted, there should be no reason to call another service since all business rules…

read More
DDD is not Architecture

In some recent discussions with potential clients, they’ve told me that one of their goals for their project was to migrate to a DDD architecture.  Though it’s clear the idea they were trying to get across, the idea of a DDD architecture doesn’t make sense. The main idea behind DDD is in the name itself:…

read More
Automated Testing for Brownfield Software

Implementing modern automated testing on software requires that the system in question be broken up into pieces.  This is not to say broken into different systems, just that the code that makes up the entire application need to be composed of distinct pieces, or modules (or classes, or components, etc.)  When things are properly designed,…

read More
Brownfield Software Development – A Step by Step Guide for the Enterprise

The goals of brownfield and greenfield development projects are different.  Greenfield projects develop a new application as quickly as possible to address an ongoing business problem.  Brownfield software development projects, however, are concerned with enhancing existing code to solve a business problem, while keeping the legacy application available.  It is the second part of that…

read More