Saga Pattern in Go — Temporal, Outbox Pattern & Debezium

Prerequisite: Part 8 of the System Design Masterclass. Read Part 7: Idempotent API Design first — compensating transactions in Saga must be idempotent. Answer-first: The Saga Pattern coordinates distributed transactions across microservices by decomposing a large transaction into a sequence of local transactions. If any step fails, the system automatically executes compensating transactions in reverse order to undo completed steps. Each local transaction must be idempotent. What Are the Problems with 2PC in Microservices? Answer-first: Two-Phase Commit (2PC) is a blocking protocol with a coordinator single point of failure. If the coordinator crashes between the Prepare and Commit phases, all participants are blocked indefinitely with locks held — a catastrophic failure mode in microservices. These are the same core banking distributed transaction challenges seen in legacy systems. ...

June 18, 2026 · 8 min · Tanh

Composable Banking Architecture: From Monolith to Modular Core

Answer-first: How banks replace monolithic cores (Temenos, Finacle) with composable banking using Go microservices, Saga orchestration, NewSQL ledgers, and Strangler Fig. Legacy core banking systems were designed in a different era. Temenos T24, Finacle, and Flexcube shared one defining assumption: the bank’s entire product catalogue — deposits, lending, payments, trade finance — would live inside a single, tightly coupled application and a single, shared database. That assumption held when banking moved at human speed. It breaks completely when product releases need to go from months to days, when a single fraud engine update must not risk a payments outage, and when engineers on a COBOL codebase are retiring faster than they can be replaced. ...

June 10, 2026 · 19 min · Lê Tuấn Anh

Financial Microservices Architecture: Saga & Ledger

Answer-first: Designing a secure financial microservices architecture: Utilizing Orchestrated Saga (Dapr), Double-Entry Bookkeeping, and Transactional Outbox. In software engineering, UI glitches might annoy users, but financial discrepancies will kill a business and invite lawsuits. Building a robust financial microservices architecture for Fintech or Core Banking is one of the toughest architectural challenges you will ever face. Whether you are managing a state-of-the-art GitOps deployment system or a complex order routing engine, designing for financial systems demands a completely different level of rigor. This article analyzes the mandatory Design Patterns required when building Banking Microservices. ...

June 1, 2026 · 6 min · Lê Tuấn Anh

Architecting 21-Service E-commerce with Golang & DDD

Answer-first: Migrating an e-commerce monolith to 21+ distributed microservices using Golang & DDD. Explore Kratos architecture, Saga patterns, and race conditions. Scaling an e-commerce platform past 10,000+ orders per day containing multiple SKUs across dynamic warehouses is where naive architecture breaks down. Hardware scaling ceases to be a magic bullet when distributed transactions, race conditions, and eventual consistency are involved. In this deep tech dive, we will tear apart the “Hello World” abstraction of Microservices. We will look at exactly how our 21-service distributed ecosystem interacts under the hood. I will share the exact Golang architectural patterns (Kratos), the Saga orchestration for distributed checkout, and how we handle race conditions under severe load. ...

April 12, 2026 · 6 min · Lê Tuấn Anh