PayPay Microservices: GitOps & Kubernetes Blueprint

Executive Summary & Quick Answer: PayPay scales over 100 microservices for 60+ million users in Japan by combining Domain-Driven Design boundaries with GitOps CD automation using ArgoCD and Argo Rollouts. Automated canary deployments validate new code against live production metrics before full traffic shifting. Answer-First: PayPay enforces stable deployments by combining branch promotion workflows with GitOps tools like ArgoCD. Declarative configuration files in git serve as the single source of truth, allowing ArgoCD to automatically reconcile cluster state, execute canary rollouts, and enable instant rollbacks of microservices. ...

May 5, 2026 · 8 min · Lê Tuấn Anh

Phase 3 Full Traffic Cutover & ArgoCD GitOps Guide

Phase 3 is the final act: 100% of traffic moves to microservices, Magento becomes a passive archive, and the platform runs entirely on Go microservices via GitOps. No PHP in the critical path. No Magento license renewal needed. Answer-first: Phase 3 cutover executes an immediate 100% traffic shift for stable read services and a graduated ramp over 10 days for transactional services. Legacy Magento remains a hot standby for 30 days while automated ArgoCD gitops pipelines handle production deployments. ...

May 27, 2026 · 12 min · Lê Tuấn Anh

AWS EKS vs ECS: Architecture, Cost & Use Cases (2026)

AWS EKS vs ECS: Architecture, Cost & Use Cases (2026) Answer-First: Choose AWS ECS for zero control-plane fees ($0/mo) and rapid AWS-native container deployment with minimal operational overhead. Choose AWS EKS ($73/mo per cluster) when requiring native GitOps via ArgoCD, KEDA event-driven autoscaling, Dapr sidecar injection, and cloud-agnostic Kubernetes ecosystem portability. The hidden costs of EKS VPC CNI ipam and how ECS handles routing faster. How to optimize IP allocation policies to prevent subnet exhaustion in large-scale Kubernetes environments. I’ve run both in production. At Vigo Retail, I architected a 21-service Go microservices platform on EKS handling 8,000 RPS peak and 25M+ requests/month. I’ve also managed ECS clusters for smaller AWS-native projects. This guide is what I wish existed before I made those decisions. ...

June 26, 2026 · 21 min · Lê Tuấn Anh

Part 8: Zero-Downtime Map Updates & Multi-Region Kubernetes

Answer-First: Zero-downtime Kubernetes deployments for routing services combine Argo Rollouts canary strategies, pre-stop hook draining, and automated P99 latency validation. Pillar Architecture Guide: This article is part of the GitOps at Scale: Kubernetes & ArgoCD for Microservices series. Please refer to the original article for a comprehensive overview of the architecture. Prerequisite: Before reading this final part, review Part 7: Load Testing & Performance Tuning. Part 8: Zero-Downtime Map Updates & Multi-Region Kubernetes Executive Summary & Quick Answer: Deploying stateful routing engines to Kubernetes without downtime requires decoupling map graph compilation into offline jobs, hydrating Pod cache volumes via initContainers, and executing atomic Blue-Green traffic cuts via Argo Rollouts to preserve Redis semantic cache consistency. ...

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

Part 7: Load Testing and Performance Tuning for Production

Answer-First: Production load testing for geospatial microservices requires realistic traffic simulation with k6/Vegeta to identify latency spikes and connection pool bottlenecks. Pillar Architecture Guide: This article is part of the GitOps at Scale: Kubernetes & ArgoCD for Microservices series. Please refer to the original article for a comprehensive overview of the architecture. Prerequisite: Before starting load testing, review Part 6: Location Clustering & Semantic Caching. Part 7: Load Testing and Performance Tuning for Production Executive Summary & Quick Answer: Load testing a high-scale routing architecture requires avoiding Coordinated Omission by using K6 open-arrival-rate models (executor: 'constant-arrival-rate'), tuning the Linux kernel TCP stack (sysctl net.core.somaxconn=65535), and profiling Go GC garbage collections using pprof. ...

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

Part 2: Environment Setup with Docker, OSM & Golang

Prerequisite: Before starting this part, review Part 1: Core Routing Algorithms Visualized. Part 2: Zero to Hero Environment Setup (Docker, OSM, Golang) Executive Summary & Quick Answer: Setting up a production-grade routing environment requires extracting OpenStreetMap .osm.pbf map data via Osmium tools, provisioning GraphHopper Java containers with explicit JVM heap allocations (-Xmx6g), and connecting a Golang API client with exponential backoff health checks. Key Takeaways: Map Extraction: Bounding-box cropping with osmium extract reduces raw .osm.pbf file size by 90%, speeding up graph compilation. Container Tuning: Allocate sufficient JVM heap (JAVA_OPTS=-Xmx6g) to prevent Out-Of-Memory (OOM) failures during Contraction Hierarchies shortcut generation. Client Resiliency: Golang HTTP clients must use connection pooling (MaxIdleConnsPerHost: 100) to sustain high matrix throughput. What You’ll Learn That AI Won’t Tell You: ...

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

Kubernetes In-Place Pod Resizing: No-Restart Scaling

Kubernetes In-Place Pod Resizing: No-Restart Scaling Answer-First: Kubernetes In-Place Pod Resizing allows dynamically mutating container CPU and memory requests and limits without deleting, rescheduling, or restarting pods. Configured via resizePolicy in container specs and automated through Vertical Pod Autoscaler (VPA), it prevents connection drops and state loss in latency-critical microservices and AI workloads. In-place pod resizing edge cases where CPU updates cause container restarts. Configuring kubelet parameters to support resizing without disrupting running JVM tasks. Before this feature, changing a container’s resource allocation required deleting and recreating the pod. For a stateful database holding connections, an AI model with 30GB of weights loaded in memory, or a long-running batch job — that restart is catastrophic. In-Place Pod Resize finally decouples resource management from pod lifecycle. ...

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

MCP Observability & Tracing: Auditing Control Planes

Part 6 — MCP Observability & Tracing: Auditing the Control Plane Executive Summary & Quick Answer: Operating Model Context Protocol (MCP) servers without telemetry logging creates compliance vulnerabilities (violating OWASP MCP08: Lack of Audit & Telemetry). Instrumenting MCP servers with vendor-agnostic OpenTelemetry (OTel) tracing captures JSON-RPC 2.0 tool execution durations, argument metadata, and error rates in real-time Prometheus dashboards. Key Takeaways: Compliance Audit Trail: Logs cryptographically signed execution traces for every MCP tool call to satisfy SOC2 Type II requirements. End-to-End W3C Trace Context: Propagates trace parent contexts across client hosts, gateways, and backend MCP microservices. No fmt.Println Stdio Pollution: Enforces dedicated OpenTelemetry exporters to prevent stdout log strings from corrupting stdio transport frames. When building command-line utilities or standard HTTP microservices, developers frequently log debug strings directly to stdout (fmt.Println() or print()). ...

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

Production Evals & Guardrails: LLM-as-a-Judge Scale

Part 10 — Production Evals & CI/CD Guardrails: LLM-as-a-Judge at Scale In traditional software development, continuous integration (CI) relies on deterministic unit and integration tests. A function either returns the expected string or it fails the build. In GenAI and RAG engineering, responses are non-deterministic. A minor adjustment to a system prompt, a change in vector embedding models, or an update to chunking strategy can silently degrade response quality, introducing subtle hallucinations or dropping key context facts. ...

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

Agentic Observability: OpenTelemetry & Tracing Guide

Part 9 — Agentic Observability: OpenTelemetry, Tracing & Cost Monitoring Debugging traditional microservices involves tracking HTTP status codes and database query latency. Debugging AI agent architectures demands tracking non-deterministic reasoning chains, LLM API token costs, prompt context inflation, and multi-turn tool loops. Without standardized distributed tracing, identifying why an agent query took 8.5 seconds or cost $1.20 per invocation becomes an impossible troubleshooting task. OpenTelemetry Tracing Pipeline Architecture Answer-first: OpenTelemetry pipelines collect distributed trace spans across agent orchestrators, vector retrieval nodes, and LLM API calls into Jaeger or Tempo. ...

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

Argo CD 3.4 & 3.3 Guide: GitOps Upgrades & Cluster Pause

Argo CD 3.4 & 3.3 Guide: GitOps Upgrades & Cluster Pause (2026) Answer-First: Argo CD 3.4 and 3.3 introduce native Cluster Pause reconciliation for instant cluster-wide sync freezing during P1 incidents, event-driven promotions via Kargo integration, PreDelete hooks for graceful workload teardown, and shallow Git cloning (depth=1) to dramatically accelerate monorepo sync times. Executive Summary & Quick Answer Argo CD 3.4 introduces native Cluster Pause capabilities alongside deep integration with Kargo for event-driven GitOps promotions. This architectural evolution prevents cascading deployment failures during major infrastructure incidents, accelerates pipeline delivery cycles, and cuts deployment synchronization drift duration by 60% across multi-region enterprise Kubernetes clusters. ...

May 18, 2026 · 12 min · Lê Tuấn Anh

OSRM Shared Memory on Kubernetes: Zero-Downtime Updates

OSRM Shared Memory on Kubernetes: Live Traffic Updates with Zero-Downtime Answer-First: Operating Open Source Routing Machine (OSRM) on Kubernetes with POSIX shared memory (ipc: host) and osrm-datastore atomic memory pointer swapping enables sub-2ms routing matrix queries and live traffic updates without restarting pods or duplicating map memory across containers. Executive Summary & Quick Answer Deploying Open Source Routing Machine (OSRM) on Kubernetes using POSIX shared memory enables live traffic edge-weight updates without restarting routing pods. This architecture delivers sub-2ms P99 distance matrix calculations, eliminates multi-container memory duplication, and slashes cloud node infrastructure costs across enterprise production environments in 2026. ...

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

GitOps at Scale: Kubernetes & ArgoCD for Microservices

GitOps at Scale: Kubernetes & ArgoCD for Microservices Answer-First: Deploying 21 microservices at scale requires replacing manual kubectl apply with an ArgoCD GitOps pull model utilizing the App-of-Apps pattern, Kustomize environment overlays, automated selfHeal drift reconciliation, and git revert instant rollbacks without cluster credentials in CI. The security risks of running kubectl apply in production and how the App-of-Apps pattern eliminates credential exposure. Practical steps to configure annotation-based sync filtering in ArgoCD to isolate multi-tenant microservices deployments. Building 21 well-architected Go microservices is only half the battle. If your deployment process relies on an engineer running kubectl apply from their laptop on a Friday afternoon, you haven’t built an enterprise platform — you’ve built a ticking time bomb. ...

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