Strangler Fig Read-Only Migration with Debezium CDC

Prerequisite: Familiarity with the concepts introduced in Part 5 — Eav Schema Migration. Review it first if the terminology in this part is unfamiliar. Phase 1 is the safest phase of the migration — by design. No write operation touches the new microservices. Magento remains the source of truth for all data modifications. The only thing Phase 1 does is prove that your microservices can serve reads faster and more reliably than Magento. ...

May 13, 2026 · 13 min · Lê Tuấn Anh

Phase 2 Dual-Write Sync & Dapr Conflict Resolution

Prerequisite: Familiarity with the concepts introduced in Part 6 — Phase1 Strangler Fig. Review it first if the terminology in this part is unfamiliar. In Phase 1, both systems existed but only one wrote data: Magento. In Phase 2, both systems write data simultaneously. This is the most technically complex phase — and the one where most migrations introduce data corruption if they don’t have an explicit conflict resolution strategy. ...

May 20, 2026 · 11 min · Lê Tuấn Anh

Transactional Outbox & Saga Pattern for E-commerce

Prerequisite: Familiarity with the concepts introduced in Part 8 — Phase3 Full Cutover. Review it first if the terminology in this part is unfamiliar. Answer-first: Distributed transaction consistency is achieved using a choreography-based saga paired with a PostgreSQL transactional outbox. Business mutations write to the outbox atomically. Background workers publish events to Dapr PubSub every 500ms, while idempotent consumer handlers process compensation events on failure. When a customer places an order on the Composable Commerce Platform, seven events need to happen in sequence across four independent services: Order created → Payment authorized → Stock reserved → Fulfillment triggered → Notification sent → Loyalty points awarded → Shipping label generated. Any of these can fail. The network can fail. The database can fail. A third-party payment gateway can time out. ...

June 3, 2026 · 16 min · Lê Tuấn Anh

Composable Commerce Architecture Decision Records Guide

Prerequisite: Familiarity with the concepts introduced in Part 9 — Outbox Saga. Review it first if the terminology in this part is unfamiliar. Answer-first: Architectural Decision Records (ADRs) enforce three core principles: resilience over simplicity, strict layer standardization, and explicit event-driven boundaries. Standardizing service layouts, outbox patterns, and database migrations before writing code ensures consistent microservices governance across large engineering teams. 21 services. 24 decisions. 3.5 months of deliberation captured in Architecture Decision Records. ...

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

Agent Orchestration Frameworks vs. Vendor-Specific Agent SDKs: Enterprise Architectural Deep Dive

Agent Orchestration Frameworks vs. Vendor-Specific Agent SDKs Answer-First Summary: Enterprise AI architecture requires selecting between open multi-provider frameworks (LangGraph, AutoGen 0.4, CrewAI) for cyclic control flow, persistent state snapshots, and vendor independence, or direct vendor SDKs (OpenAI, Claude SDK, Google ADK) for sub-5ms latency, native prompt caching (90% cost reduction), and zero wrapper overhead. Polyglot production systems integrate Python agent workers with Go core microservices via Dapr sidecars. Executive Verdict & Paradigm Split Modern enterprise software systems deploying LLM agents face a foundational architectural choice between two distinct paradigms: ...

August 5, 2026 · 11 min · Lê Tuấn Anh

Golang Routing Microservices with Kratos & Dapr Framework

Answer-first: High-throughput geospatial microservices in Go leverage H3 spatial indexes, concurrent goroutines, and Protobuf gRPC APIs for real-time ETA calculation. Prerequisite: Before reading this part, review Part 3: Spatial Indexing. Part 4: Golang API & Microservices Integration (Kratos & Dapr) Answer-first: Integrating a high-concurrency Golang API Gateway with a downstream Java routing engine requires robust defense-in-depth patterns: golang.org/x/sync/singleflight for request deduplication, sony/gobreaker circuit breakers for fail-fast isolation, and flattened 1D arrays for Protobuf distance matrix serialization to prevent Go GC pauses. ...

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

Go Microservices Architecture: Production Guide

Go microservices from domain design to Kubernetes deployment — gRPC, Dapr, OpenTelemetry, and GitOps patterns with explicit operational trade-offs.

June 12, 2026 · 22 min · Lê Tuấn Anh

Banking Microservices in Go: Saga & Event Sourcing

Banking Microservices in Go: Saga & Event Sourcing 1. Introduction: Deconstructing the Legacy Core Legacy banking platforms like Temenos T24 and Oracle FLEXCUBE were designed as rigid transactional monoliths for batch processing. Digital banking now requires decomposing these into event-driven microservices capable of real-time payments with sub-10ms latency. Migrating to a microservices architecture means dismantling these bottlenecks: Scaling limitations: Monoliths scale vertically (costly hardware), while microservices scale horizontally. Release cycles: Legacy cores require massive, risky quarterly releases. Microservices enable independent deployments. Data locking: Central databases in monoliths create severe lock contention during high-velocity events (like payday processing). By leveraging Go’s highly concurrent runtime and a distributed event-driven architecture, we optimize the system for <10ms database writes at 10,000 TPS, ensuring scalability and fault tolerance. ...

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

Dapr Workflow Go Tutorial: Orchestrated Saga Pattern

Dapr Workflow Go Tutorial: Orchestrated Saga Pattern Compensation handlers configuration in Dapr to guarantee atomic rollback. How to handle transient workflows when the orchestrator instance restarts mid-transaction. Most Go developers building microservices know the Choreography Saga pattern: service A emits an event, service B reacts, service C reacts to B, and so on. If step C fails, services emit “compensation” events in reverse order. The pattern works elegantly for simple flows, but breaks down as the number of steps grows: debugging a failed saga requires tracing events across five message broker topics, and implementing compensation logic requires every service to understand the full saga’s state. ...

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

Dapr State Store Consistency Trade-offs Explained

Dapr State Store Consistency Trade-offs Explained Dapr State Store Architecture & Consistency Models In distributed applications, state management remains one of the most complex challenges. When transitioning to a microservices architecture, each service typically requires independent data storage and querying capabilities. This leads to technology fragmentation, where a system might simultaneously use Redis for caching, PostgreSQL for transactional data, and Cassandra for large unstructured data. Dapr (Distributed Application Runtime) emerged to solve this issue through a robust abstraction mechanism. ...

May 22, 2026 · 14 min · Lê Tuấn Anh

Why Migrate Magento to Microservices: Zero-Downtime Guide

Why Migrate Magento to Microservices: Zero-Downtime Blueprint “Let’s rewrite everything to Microservices.” This sentence usually precedes multimillion-dollar engineering failures. When a legacy application like a massive Magento e-commerce store is holding up the financial weight of a company, executing a “Big Bang” cutover is practically suicidal. Instead of burning the old house down before the new one is built, we employed a meticulous 3-Phase Strangler Fig Pattern. We allowed our new distributed microservice ecosystem to gradually wrap around the old Magento monolith, intercepting its traffic piece by piece until the legacy server became a hollow shell. For a detailed breakdown of overcoming tech debt and managing eventual consistency during such transitions, see our guide on Composable Commerce Migration. ...

April 14, 2026 · 15 min · Lê Tuấn Anh

Tech Radar: Code Evolution & Runtime Recovery Guide

Answer-First: Go 1.26 compiler tooling introduces automated //go:fix inline AST transformations, Dapr v1.16.13-rc.1 resolves sidecar stream reconnections during scheduler restarts, and Kratos v2.9.2 hardens Consul metadata cloning to eliminate microservice memory leaks. Tech Radar, April 14, 2026: Safer Code Evolution, Runtime Recovery, and Framework Hardening The selected items for pipeline run 6 form a coherent picture of where mature platform engineering is heading. After fetching and reading the full source content directly from the original URLs, the common theme is clear: strong systems are not defined only by what they can do, but by how safely they evolve, how predictably they recover, and how much accidental complexity they remove from the teams building on top of them. ...

April 14, 2026 · 9 min · Lê Tuấn Anh

Architecting 21-Service E-commerce with Golang & DDD

Architecting 21-Service E-commerce with Golang & DDD The exact performance overhead of using Go’s structural subtyping versus manual dependency injection in high-throughput microservices. Why scoping database transactions to a single Aggregate root is critical, and how we resolved out-of-order event delivery using Kafka partition keys. 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. ...

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

Mastering Event-Driven Architecture with Dapr Pub/Sub

Mastering Event-Driven Architecture with Dapr Pub/Sub in Go In my previous post, we explored how abandoning monolithic architecture in favor of strict Domain-Driven Design (DDD) bounded contexts allowed an e-commerce platform to scale beyond 10,000+ orders per day. However, splitting one big database into 20+ isolated Postgres databases introduces a terrifying new problem: How do we maintain data consistency across disconnected services? The answer is Event-Driven Architecture (EDA). Rather than chaining blocking synchronous HTTP calls across the network — which guarantees a cascading failure if a single service is down — each microservice independently broadcasts out-of-band “Events” through a centralized broker. Services are decoupled from each other’s availability. A brief outage in the Notification service does not cause a checkout failure. ...

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

Blueprint: E-commerce Microservices Architecture with Golang

Ecommerce Microservices Architecture Diagram: 21-Service Blueprint E-Commerce Architecture Patterns: Monolith vs Microservices Answer-first: An ecommerce microservices architecture diagram organizes system capabilities into 6 core bounded domains (Commerce Flow, Product & Content, Logistics, Post-Purchase, Identity & Access, Platform Operations), connecting 21 Golang microservices via gRPC and Dapr Pub/Sub event mesh for high-concurrency scalability. Monolithic vs Microservices E-Commerce Comparison Dimension Monolithic E-Commerce Microservices E-Commerce Scaling Vertical scaling of entire monolith application Independent horizontal scaling per domain (e.g., Catalog 10x Cart) Database Architecture Single shared database with cross-table SQL joins Database-per-service (PostgreSQL, Redis, Elasticsearch) with zero cross-domain access Deployment Frequency Low frequency; all-or-nothing monolithic releases High frequency; independent CI/CD pipelines per microservice Fault Tolerance Low; a single bug or memory leak crashes the entire store High; failure in one domain (e.g., Reviews) does not block Checkout Complexity Low initial architectural and operational complexity High distributed complexity (Saga pattern, gRPC contracts, Dapr mesh) Operational Cost Lower initial cost; scales expensively at high traffic Higher initial infrastructure setup; cost-effective at high scale Practical latency and memory metrics comparing an Envoy-based API Gateway to a custom Go reverse proxy under 100k concurrent connections. How to tune circuit breaker thresholds (go-resiliency/breaker) to prevent premature service isolation during temporary network jitters. When transitioning from a monolithic platform to a distributed microservice setup, the hardest question isn’t “How do we write the code?” — it’s “How do these moving parts talk to each other safely, and why is each boundary drawn exactly where it is?” ...

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