Double-Entry Ledger: Immutable Schema & Concurrency

Prerequisite: This is the starting part of the series — no prior part is required. Later parts assume the concepts introduced here. Answer-first: A production-grade double-entry ledger enforces immutable, append-only transaction logs decoupled from balance state updates. By using fixed-size C-aligned memory structs or PostgreSQL check constraints and triggers, the schema guarantees strict debit-credit mathematical invariants, prevents hot-row lock contention, and eliminates double-spend risks in high-concurrency core banking architectures. ...

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

Executive Summary: Geospatial & Routing Architecture

Prerequisite: This is the executive summary and introductory overview of the Routing & Geospatial Architecture series. No prior reading is required to start here. Executive Summary: Geospatial & Routing Architecture Answer-first: High-concurrency routing systems combine Java-based GraphHopper engines for Contraction Hierarchies pathfinding with a Golang API Gateway using Uber H3 hexagonal indexing and Redis semantic caching. This architecture resolves 100x100 distance matrices in under 30ms while reducing compute load by up to 95%. ...

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

SLM Playbook: Small Language Models Architecture in Go

← Series hub Next → Answer-first: Self-hosting Small Language Models (2B–14B) with Go hybrid routing and vLLM serving reduces enterprise API costs by up to 65%, eliminates PII privacy risks, and delivers specialized domain performance matching 100B+ models. For the past two years, enterprise AI adoption has been dominated by a singular architectural pattern: API integration with massive, closed-source models (Frontier LLMs). While this API-Centric model allows for rapid prototyping, it becomes a severe liability when scaled to production workloads handling sensitive company data. ...

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

Real-Time Ride-Hailing Architecture: Executive Summary

Answer-first: Real-time ride-hailing platforms combine HTTP/3 gRPC stream ingestion for driver GPS telemetry, Uber H3 hexagonal spatial indexing in Redis RAM, Apache Kafka/Redpanda event streaming, and DISCO global assignment matching engines to dispatch rides in under 2 seconds. Key Takeaways: Telemetry Scale: Ingest driver GPS coordinates every 4 seconds using Extended Kalman Filters and binary gRPC Protobuf streams over HTTP/3 QUIC. Spatial Pre-filtering: Index driver positions using Uber H3 Resolution 8 cells (~0.74 km²), isolating nearest candidates in <10ms. Global Matching Optimization: DISCO batched matching aggregates ride requests every 2-5 seconds, solving bipartite graph assignment problems for minimal ETA. What You’ll Learn: ...

May 6, 2026 · 9 min · Lê Tuấn Anh

Beyond Chatbots: What is Generative UI? — Part 1

Prerequisite: Familiarity with the concepts introduced in Executive Summary. Review it first if the terminology in this part is unfamiliar. Answer-first: Generative UI (GenUI) is a frontend architectural pattern where Large Language Models dynamically generate structured UI components (such as interactive forms, charts, and data tables) rather than plain streaming Markdown text. By coupling LLM tool-calling output with a validated client-side React component registry and Server-Driven UI (SDUI) protocols, GenUI delivers personalized, deterministic visual interfaces in real time while maintaining strict accessibility, security, and rendering performance. ...

March 18, 2026 · 7 min · Lê Tuấn Anh

Executive Summary: Building an AI-Native Organization

Answer-first: Transitioning an enterprise software organization to an AI-Native model requires restructuring context boundaries, governance pipelines, and engineering roles. By treating domain knowledge as code-level context and embedding AI sub-agents into CI/CD quality gates, engineering leaders reduce lead time to production by 40% while cutting defect leakage by 35%. 1. The Architectural Shift: From AI-Assisted to AI-Native Engineering The software engineering domain has passed the threshold of simple code autocomplete. While first-generation tools provided localized inline suggestions, enterprise engineering organizations in 2026 operate on AI-Native Software Development Lifecycle (SDLC) architectures. In an AI-Native organization, non-deterministic language model agents actively participate as first-class collaborators alongside human architects and SDETs. ...

March 15, 2026 · 10 min · Lê Tuấn Anh

Part 1 — Context Engineering: Domain-Driven Design for AI

Prerequisite: Familiarity with the concepts introduced in Executive Summary. Review it first if the terminology in this part is unfamiliar. Answer-first: Context Engineering structures, scopes, and injects software domain knowledge into Large Language Model prompts using Domain-Driven Design principles. By organizing codebases into explicit Bounded Contexts, Abstract Syntax Tree subgraphs, and JSON-Schema contracts, engineering teams eliminate hallucinations, enforce layer boundaries, and enable autonomous coding agents to implement production-grade enterprise features. ...

March 16, 2026 · 9 min · Lê Tuấn Anh

Component Registry & MCP to Frontend — GenUI (Part 3)

Prerequisite: Familiarity with the concepts introduced in Part 2 — State Management. Review it first if the terminology in this part is unfamiliar. Answer-first: Connecting backend Model Context Protocol (MCP) tool execution to frontend Generative UI components requires a decoupled Component Registry layer. By mapping MCP tool call outputs directly to strongly-typed frontend component manifests using JSON-Schema contracts, developers build dynamic, secure interfaces where AI agents trigger visual client-side widgets (e.g., maps, charts, transaction tables) without writing unsafe inline scripts or raw HTML. ...

March 20, 2026 · 8 min · Lê Tuấn Anh

GenUI Human-In-The-Loop: Optimistic UI & Fallback (Part 5)

Prerequisite: Familiarity with the concepts introduced in Part 4 — Security A11Y. Review it first if the terminology in this part is unfamiliar. Answer-first: Integrating Human-In-The-Loop (HITL) workflows into Generative UI systems balances autonomous AI speed with operational safety for high-risk user actions. By combining Optimistic UI rendering patterns with explicit human verification approval gates and graceful fallback error boundaries, engineering teams ensure users can review, edit, or reject AI-generated actions (such as high-value financial transfers or system configuration changes) before mutations execute on backend servers. ...

March 22, 2026 · 8 min · Lê Tuấn Anh

Testing GenUI & Semantic Edge Caching — AI Part 6

Prerequisite: Familiarity with the concepts introduced in Part 5 — Human In The Loop. Review it first if the terminology in this part is unfamiliar. Answer-first: Testing non-deterministic Generative UI components and optimizing their global delivery requires combining Visual Regression E2E Testing (via Playwright mock harnesses) with Semantic Edge Caching (via Cloudflare Workers or Vercel Edge Functions). By mocking LLM tool responses during CI/CD test runs and implementing vector similarity caching at the CDN edge, teams achieve 100% deterministic test coverage while reducing AI component latency from 2,500ms down to less than 45ms for cached intent patterns. ...

March 23, 2026 · 8 min · Lê Tuấn Anh

Warehouse Picker Routing: GraphHopper, OR-Tools & C++

Warehouse Picker Routing Optimization (GraphHopper & OR-Tools) Answer-first: Minimizing walking distance for warehouse pickers requires solving the Traveling Salesperson Problem (TSP) inside a physical building. The 2026 standard architecture uses a Java-based Indoor GraphHopper instance to generate a 100x100 Distance Matrix from custom OpenStreetMap (OSM) data, which is then fed into a C++ Google OR-Tools gRPC Microservice to calculate the absolute optimal pick sequence in under 15 milliseconds. The S-Shape Trap in Warehouse Picking In legacy Warehouse Management Systems (WMS), workers are directed to pick items using heuristic patterns like the S-Shape (Z-pattern) or Largest Gap. These heuristics force the worker to walk down every aisle that contains an item, traversing the aisle from end to end. ...

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

Order Splitting Algorithm: Graph Coloring & OPA in Golang

Order Splitting at Scale: Graph Coloring, Bin Packing, and OPA in Go Answer-first: Real-time e-commerce order splitting is a Constraint Satisfaction Problem (CSP). To determine the absolute minimum number of cardboard boxes required for a complex cart without violating safety rules or physical dimensions, the 2026 standard pipeline relies on Open Policy Agent (OPA) for dynamic business rules, Golang (gonum) for Graph Coloring (Welsh-Powell) to resolve logical conflicts, and First-Fit Decreasing Bin Packing to resolve physical constraints. This pipeline executes in under 50ms during synchronous checkout, deferring heavy Multi-Warehouse routing to async workers. ...

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

Tech Radar 27/07: Scaling MCP Servers in Production Kubernetes

Answer-first: Scaling MCP servers in Kubernetes requires decoupling the JSON-RPC state from persistent connections using websocket gateways, deploying stateless MCP worker replicas with HPA, and utilizing Redis for distributed context caching. This architecture prevents connection exhaustion when hundreds of AI agents query context simultaneously. The Model Context Protocol (MCP) has become the de facto standard for exposing enterprise data to AI agents. Its transport specification defines stdio and Streamable HTTP (with optional SSE) as the connection models — which is exactly where the Kubernetes scaling friction below originates. However, running a single local MCP server is vastly different from serving thousands of concurrent LLM requests in a distributed microservices environment. ...

July 27, 2026 · 4 min · Lê Tuấn Anh

Tech Radar 22/07: Event-Driven Agent Sagas & Dapr Go

Answer-first: Dapr Workflows orchestrate long-running Go agent tasks by decoupling client HTTP connections from background execution. By isolating LLM and tool calls inside idempotent activities and using composite idempotency keys, replay-based durable orchestration recovers execution state after pod crashes without repeating completed side effects. As multi-agent architectures evolve past single-turn API wrappers, enterprise workloads are shifting toward long-running autonomous workflows. Building on the Agentic System Architecture series and recent analyses of modular monoliths for AI agents and zero-trust AI swarms, platform teams now face the execution-durability problem: a task may combine multi-step reasoning, external tools, and human approvals over several minutes. ...

July 22, 2026 · 8 min · Lê Tuấn Anh

Laravel vs Golang: When to Add Features in Each?

Laravel vs Golang: When to Add Features in Each? This post is part of the Magento to Go Migration series — a CTO playbook for migrating with a Vietnam engineering team. The Real Question Every Tech Lead eventually faces a pivotal architectural dilemma: “Do we add this new feature directly to Laravel, or is this the right moment to introduce a dedicated Golang microservice?” The answer is rarely a simple choice between “Laravel is better” or “Go is better.” Instead, making the right engineering decision requires evaluating the specific operational profile of the feature you are building. High-velocity CRUD features, admin tools, and complex business workflows belong in Laravel. Conversely, real-time WebSocket feeds, high-throughput auth validation, and compute-heavy pipelines belong in Go. ...

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

Magento Migration: Shared DB, CDC, or Event Bus?

Magento Migration: Shared DB, CDC, or Event Bus? Why Go running against Magento’s MySQL is faster at the compute layer but still bottlenecked at the EAV query layer — and what actually fixes it. The single deciding factor between CDC (Option B) and Event Bus (Option C): who owns the PHP Magento codebase. This post is part of the Composable Commerce Migration series — a step-by-step playbook for migrating Magento 2 to Go microservices. For the full migration execution guide, see Part 6: Phase 1 Strangler Fig. ...

July 18, 2026 · 14 min · Lê Tuấn Anh

Multi-region Geo-distributed API Routing Architecture

Multi-region Geo-distributed API Routing Architecture The Need for Geo-Distributed APIs In the era of global digitization, user experience is directly determined by application response speed. When a business scales to serve customers across multiple countries and continents, a single-region central server architectural model quickly reveals severe physical limitations. The nature of network communication involves the movement of data packets through fiber optic cables, which is ultimately bounded by the speed of light. A request traveling from Vietnam to a server located in the US East region (us-east-1) must traverse tens of thousands of kilometers and numerous transit hops, resulting in a minimum Round Trip Time (RTT) of 200ms to 300ms. For applications requiring real-time interaction or financial transactions, this latency is unacceptable. ...

July 17, 2026 · 14 min · Lê Tuấn Anh

Tech Radar 10/07: Cloud-Native AI & Envoy Gateway Setup

Answer-first: Production cloud-native AI architectures combine Envoy AI Gateway for token-level FinOps quota enforcement, Kubernetes Gateway API Inference Extensions for KV-cache-aware GPU routing, and Dapr Agents for durable state recovery. These infrastructure primitives prevent runaway token costs and optimize LLM inference throughput. Tech Radar 10/07: Cloud-Native AI Architecture — Envoy Gateway, K8s Inference Extension & Dapr Agents Platform engineering for production AI focuses on token cost governance, intelligent GPU inference routing, and resilient agent state recovery. CNCF projects like Envoy AI Gateway, K8s Gateway API Inference Extension, and Dapr Agents solve these challenges at the infrastructure layer. ...

July 10, 2026 · 10 min · Lê Tuấn Anh

DDD Module Boundaries & Decoupling Modular Monoliths

Answer-first: A Modular Monolith prevents code degradation (“Big Ball of Mud”) by applying Domain-Driven Design (DDD) Bounded Contexts, isolating database schema namespaces (e.g. billing.payments, inventory.stock), enforcing compile-time import boundaries via Go internal packages and arch-go, and using an in-memory transactional outbox pattern for asynchronous event communication. Prerequisite: Before reading this part, please review Part 2: FinOps Cost Reality. What You’ll Learn: Go Package & Arch-Go Enforcement: How to use Go’s internal folder structure and arch-go static rules to block illegal cross-module imports at compile time. Aggregate Roots & Anti-Corruption Layers (ACL): How to encapsulate domain logic and translate external DTOs without leaking module internals. Database Schema Isolation (billing.payments, inventory.stock): How PostgreSQL schema permissions restrict SQL JOINs across modules within a shared database instance. In-Memory Transactional Outbox: How to achieve reliable event publishing without network overhead or Kafka infrastructure. The biggest reason engineering teams fear the Monolith architecture is due to past experiences with “Spaghetti Monoliths” or the “Big Ball of Mud” — where the code for the Billing function calls directly into the database of the Cart function, creating an inextricable web of cross-dependencies. ...

July 3, 2026 · 12 min · Lê Tuấn Anh

Microservice Extraction: When to Split the Monolith

Answer-first: Extracting a module from a modular monolith into an independent microservice is justified only when domain isolation, asymmetric CPU/RAM scaling, or strict regulatory isolation demands it. Having pre-enforced DDD bounded contexts ensures extraction requires introducing network RPC adapters (gRPC) and Anti-Corruption Layers rather than refactoring internal core domain logic. Prerequisite: Before reading this part, please review Part 6: Migration Playbook. What You’ll Learn: Extraction Threshold Metrics: Quantitative triggers (e.g. CPU saturation ratios) that justify extraction. Interface Wrappers & Anti-Corruption Layer: How to write a Go ACL interface that switches dynamically between internal memory execution and gRPC implementations. Database Separation Loops: Replicating database tables using Change Data Capture (CDC) and Transactional Outbox during zero-downtime migrations. Saga vs 2PC Orchestration: Trade-offs between distributed 2-Phase Commit locking and Saga state machine workflows. Advocating for a Modular Monolith architecture does not equate to a conservative “put absolutely everything in one place” mentality. In reality, even the greatest Monolith systems like Shopify, Sentry, or GitLab possess a few “satellites” (Microservices) orbiting their central core. ...

July 3, 2026 · 10 min · Lê Tuấn Anh

Monolith vs Microservices: Engineering Trade-Offs | Go Guide

Prerequisite: Before reading this part, please review Part 0: Executive Summary — How Amazon Prime Video Saved 90% on Infrastructure. Part 1: Architectural Decision Framework Answer-first: Deciding between a Modular Monolith and Microservices depends on organizational scale, transaction consistency requirements, and latency limits. Teams with under 50 developers should build a modular monolith to avoid the administrative and operational “microservice premium”, using direct memory function calls to bypass network latency and complex distributed transaction protocols. ...

July 3, 2026 · 10 min · Lê Tuấn Anh

Tech Radar 22/06: Dapr v1.18 & Kratos Clean Architecture

Answer-first: Integrating Dapr v1.18 with Kratos Clean Architecture enables resilient event-driven sagas and stateful microservice orchestration in Go. By isolating workflow definitions within the biz layer and wrapping Dapr SDK calls inside data adapters, applications achieve zero-downtime state persistence and strict security boundaries under WorkflowAccessPolicy CRDs. Tech Radar 22/06: Dapr v1.18 & Kratos Clean Architecture Architecting resilient distributed applications requires effective stateful orchestration. This briefing analyzes Dapr Workflows and the Actor model within the Kratos Clean Architecture framework. ...

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

gRPC vs REST vs GraphQL: Communication Protocols in Go

Microservices communication uses gRPC for high-throughput internal RPCs via binary Protobuf serialization, REST for public HTTP APIs, and GraphQL for API Gateway aggregation. Selecting the right protocol depends on payload size, streaming requirements, and client integration needs. Prerequisite: This is Part 12 of the System Design Masterclass. Previous parts built the reliability patterns — this part covers comparing communication protocols and data formats for microservice communication. What You’ll Learn Protobuf Memory Allocations: Benchmarking struct reflection versus compile-time Protobuf serialization memory footprints in Go. ConnectRPC net/http Integration: How to mount ConnectRPC handlers directly onto Go’s standard multiplexer without using intermediate gateway proxies. N+1 Query Resolution: Implementing the DataLoader batching pattern in Go to prevent sequential database queries. Overview of Communication Protocols Key Concept: gRPC, REST, and GraphQL operate on different layers of serialization, schema safety, and client-server coordination. gRPC enforces strict API contract schemas at compile time; REST provides loose, flexible JSON responses over standard HTTP semantics; GraphQL relies on schema-based graph models, allowing clients to fetch customized fields in a single query round trip. ...

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

Go API Rate Limiting: Token Bucket & Redis Lua Algorithms

API rate limiting defends backend services by restricting request volume. Security requires a layered defense: Web Application Firewalls (WAF) block edge-level volumetric spikes, API Gateways manage L7 credentials and quotas, and application middleware enforces fine-grained business limits. Client identification must rely on validated, secure IP parsing (using the PROXY protocol or rightmost X-Forwarded-For checks). Prerequisite: This is Part 11 of the System Design Masterclass. Previous parts built the core components — this part covers securing APIs and managing client traffic spikes at scale. ...

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

Go Observability & pprof: Memory Leaks & Tracing Guide

Go’s built-in pprof profiler provides CPU sampling, heap allocation analysis, goroutine stack inspection, and blocking profiler — all available as HTTP endpoints in running production services with minimal overhead. Heap diff between two snapshots is the fastest way to identify memory leaks. Prerequisite: This is Part 10 of the System Design Masterclass. Previous parts built the architecture — this part teaches you how to see inside a running system and diagnose production performance issues. ...

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

Consistent Hashing in Go — Virtual Nodes & CRC32 Ring

Answer-first: Consistent Hashing minimizes key remapping when cluster membership changes. Adding or removing one node from a modulo-hash cluster remaps nearly all keys (catastrophic cache miss storm). Consistent Hashing remaps only $K/N$ keys — the theoretical minimum necessary. Prerequisite: Part 9 of the System Design Masterclass. Read Part 4: Database Scaling for context on horizontal partitioning strategies. What You’ll Learn Virtual Node Standard Deviation: The exact mathematical variance drop when increasing virtual node count ($V$) from 1 to 1000. RWMutex Lock Contention: Why using sync.RWMutex on the hash ring can cause lock contention under high multi-core throughput, and how to optimize with atomic values. CRC32 vs Murmur3: Why the choice of hashing algorithm on the ring impacts lookup distribution uniformity. Why Modulo Hashing Fails When Scaling Key Concept: hash(key) % N changes to hash(key) % (N+1) when a node is added, causing nearly all key-to-node mappings to change. This creates a massive cache miss storm as the entire working set must be reloaded from the database simultaneously. ...

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

Saga Pattern in Go — Temporal, Outbox Pattern & Debezium

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. Prerequisite: Part 8 of the System Design Masterclass. Read Part 7: Idempotent API Design first — compensating transactions in Saga must be idempotent. What You’ll Learn Temporal Workflow Determinism: How Temporal’s event sourcing workflow engine replays Go code, and why random functions or time sleeps crash workers. Debezium EventRouter Tuning: The exact JSON configuration keys needed to customize Kafka routing keys and prevent partition ordering issues. Pivot State Analysis: Identifying the “point of no return” in a distributed saga where compensations are no longer allowed. What Are the Problems with 2PC in Microservices? Key Concept: 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 · 7 min · Lê Tuấn Anh

Idempotent API Design in Go — Idempotency Key & Redis SetNX

Prerequisite: Part 7 of the System Design Masterclass. Read Part 6: Distributed Locks first. What You’ll Learn Payload Reuse Vulnerability: How Stripe prevents malicious request payload tampering on existing keys using SHA-256 request body hashes in Redis. SetNX Lock Lifetime Math: Why setting a lock TTL without a auto-extension renewal thread leads to double-charge execution gaps. Response Record Memory Leak: The memory consumption strategy of caching full HTTP headers and response body data under high-throughput request rates. What Is an Idempotency Key? Key Concept: An Idempotency Key is a unique token — typically UUID v4 — generated by the client and attached as an Idempotency-Key HTTP header. The server uses this key to detect duplicate requests: if the key has been seen before, return the cached response from the first execution without re-executing the handler. ...

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

Distributed Locks in Go — Redlock Math, etcd & Split-Brain

Prerequisite: Part 6 of the System Design Masterclass. Read Part 5: Kafka & Event-Driven first. Distributed Locks in Go — Redlock Math, etcd & Split-Brain Answer-first: Distributed locks enforce mutual exclusion across independent microservice instances. Redis Redlock achieves high-performance locking across quorum master nodes with Lua-script atomicity, while etcd provides linearizable Raft-backed leases with fencing tokens to guarantee absolute safety under network partitions. Key Takeaways: Redlock Validity Formula: Lock validity equals $\text{TTL} - \text{elapsed_time} - \text{clock_drift}$; if validity $\le 0$, release immediately. Fencing Tokens: Monotonically increasing fencing tokens (e.g. etcd revision numbers) block delayed GC-paused lockholders at storage layer boundaries. Raft vs Redis Quorum: Use etcd for high-correctness financial transactions and Redis Redlock for high-throughput rate limiting or worker job distribution. What You’ll Learn Redlock Clock Drift Math: Why unsynchronized system clocks (NTP drifts) allow two clients to acquire the same Redis lock, and how to verify with fencing tokens. Rsync Lock-Release Failures: The dangerous Lua script race condition when executing un-coordinated lock releases in Redis under network partitions. etcd Keep-Alive Overhead: How etcd’s HTTP/2 stream heartbeats impact cluster CPU utilization when holding thousands of concurrent locks. Why Do Race Conditions Occur in Distributed Systems? Key Concept: Race conditions occur across server processes when multiple servers independently read and then write shared state without coordination. A single-process mutex doesn’t help — you need a lock mechanism visible across all processes. ...

June 18, 2026 · 8 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. Key Takeaways: Zero-Copy Performance: Kafka bypasses user-space buffer copies via sendfile(), routing data directly from Linux page cache to network socket buffers. Channel Backpressure: Bounded Go channels automatically throttle poll loops when downstream workers reach memory capacity limits. Partition-Aware Ordering: Pinning specific Kafka partition IDs to dedicated worker goroutines maintains strict message sequence guarantees. What You’ll Learn Kernel-Level sendfile() Mechanics: How zero-copy I/O bypasses the context switches between user and kernel space, preventing CPU cache invalidation. Worker Pool Partition Pinning: Why mapping partitions to specific workers is the only way to maintain order processing sequences without locking. Offset Commit Transaction Math: Implementing transactional offset commits inside Go consumers to guarantee idempotency under broker rebalances. Kafka vs RabbitMQ — When to Use Each? Key Concept: Kafka is a distributed commit log — messages are retained indefinitely, consumers manage their own offsets, and replay is possible. RabbitMQ is a message broker — messages are deleted after acknowledgment, the broker handles routing complexity, push-based delivery. They solve different problems. ...

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