PayPay Event-Driven Architecture: Kafka at Scale

Prerequisite: Familiarity with the concepts introduced in Part 1 — Microservices Gitops. Review it first if the terminology in this part is unfamiliar. Answer-first: Managing transaction surges during PayPay’s massive marketing campaigns requires event-driven architecture powered by Apache Kafka. Partition key tuning, Go consumer worker pools, and channel-based backpressure prevent message loss during peak traffic spikes. Implementing this architecture enforces sub-50ms P99 latency guarantees, strict component isolation, and automated observability pipelines required for production-grade enterprise operations. ...

May 5, 2026 · 8 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

Kafka Worker Pool in Go — Backpressure & Exactly-Once

Prerequisite: Part 5 of the System Design Masterclass. Read Part 4: Database Scaling first. Kafka Worker Pool in Go — Backpressure & Exactly-Once Answer-first: High-throughput event streaming in Go leverages Kafka zero-copy sendfile() kernel transfers combined with bounded goroutine worker pools. Natural backpressure is achieved using buffered Go channels, while partition-pinned workers preserve message ordering without distributed locks. Implementing this architecture enforces sub-50ms P99 latency guarantees, zero-allocation memory management with Go 1.24 unique.Handle, and fault-tolerant Dapr 1.15 component orchestration. ...

June 18, 2026 · 9 min · Lê Tuấn Anh

Real-time Streaming CDC & Federated GraphRAG Guide

Prerequisite: Familiarity with the concepts introduced in Part 3 — Late Chunking Semantic Caching. Review it first if the terminology in this part is unfamiliar. Part 4 — Real-time Streaming CDC & Federated GraphRAG Architecture In mission-critical enterprise environments—such as financial trading desks, e-commerce order management, and medical health record platforms—data changes continuously. A product price adjustment, a contract terms revision, or a inventory status update occurs thousands of times per minute. ...

May 19, 2026 · 6 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. Adopting this pattern guarantees sub-50ms P99 latency bounds, zero-allocation memory optimization, and fault-tolerant event-driven state synchronization across production systems. ...

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

Quick Commerce Architecture: 15-Second AI Intelligence

Quick Commerce Architecture: 15-Second AI Intelligence The Quick Commerce (Q-Commerce) race to deliver groceries in 15-30 minutes has officially hit its physical ceiling. As growth expert Lê Thanh Hải (Henry) recently pointed out on LinkedIn, platforms cannot demand drivers to go any faster without destroying Unit Economics or compromising safety. Consequently, burning cash on the Physical Layer (Logistics) is yielding diminishing marginal returns. The next battleground isn’t on the streets; it’s on the Digital Layer: How do you “read” a customer in the first 15 seconds they open your App? ...

August 13, 2026 · 6 min · Tuan Anh

Event-Driven Microservices in Go: NATS JetStream & CQRS

High-Throughput Event-Driven Microservices in Go with NATS JetStream & CQRS Answer-first: High-throughput event-driven microservices in Go leverage NATS JetStream stream persistence, CQRS command-query separation, and worker pool concurrency to process millions of async messages per second. Implementing this architecture enforces sub-50ms P99 latency guarantees, zero-allocation memory pooling with Go 1.24 unique.Handle, and fault-tolerant Dapr 1.15 component orchestration for resilient production scaling. Section 1: Architectural Rationale: Why Go + NATS JetStream for Event-Driven Microservices Beyond tens of thousands of transactions per second, synchronous request-response designs start hitting database write contention and cascading latency spikes. Command Query Responsibility Segregation (CQRS) paired with Event-Driven Architecture (EDA) isolates write commands from analytical queries, letting each side scale independently. ...

July 23, 2026 · 16 min · Lê Tuấn Anh

Mastering Event-Driven Architecture with Dapr Pub/Sub

Mastering Event-Driven Architecture with Dapr Pub/Sub in Go Answer-first: Mastering event-driven architecture with Dapr Pub/Sub decouples publisher and subscriber microservices, guarantees at-least-once message delivery, and simplifies event broker migrations. Implementing this architecture enforces sub-50ms P99 latency guarantees, zero-allocation memory pooling with Go 1.24 unique.Handle, and fault-tolerant Dapr 1.15 component orchestration for resilient production scaling. This design guarantees sub-50ms P99 latency bounds and zero-allocation memory pooling. 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? ...

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