Step outside the Happy Path

In software engineering, the term happy path refers to the ideal scenario where everything works as planned. It’s natural to begin system design by focusing on these positive scenarios - they’re simple, straightforward, and align with how most people envision their product functioning. However, stopping at the happy path is a mistake. While it’s often sufficient for stakeholders from business backgrounds who lack technical expertise, it fails to address the majority of a system’s complexity.

Product Architecture Cheat Sheet

In this article, I will give you a no-brainer for choosing the right architecture for any project. Right doesn’t mean perfect, but it does mean good enough.

Clean Transactions in Golang Hexagon

How to implement transaction management in a hexagonal microservice? How to keep the isolation of the application layer and the database adapter? In this article I will share my experience in solving this problem.

Practical Use of Finite-State Machines

This is the first article in a series dedicated to FSM usage in distributed system architecture. We will talk about domains, transactions, and sagas. But let’s start with the basics. Finite-State Machine When we think about the finite-state machine, we probably imagine some computer science-related entities, math, and diagrams like that: Besides scientific language, a finite-state machine is a final set of states and the transitions between them. When it comes to real engineering, states are a set of consistent states in which the model can be.