So sánh kiến trúc AWS EKS vs ECS — tanhdev.com

AWS EKS vs ECS: Kiến trúc, Chi phí & Thực tế Sử dụng (2026)

🇬🇧 Read the English version of this article on tanhdev.com TL;DR: EKS cung cấp cho bạn toàn bộ sức mạnh của Kubernetes, khả năng di động và hệ sinh thái CNCF. ECS mang lại sự đơn giản thuần túy của AWS với chi phí control plane bằng $0. Hãy chọn EKS nếu bạn cần GitOps, ArgoCD, Dapr, hoặc muốn không bị khóa chặt vào một cloud (multi-cloud). Chọn ECS nếu bạn muốn đưa sản phẩm ra thị trường nhanh nhất trên AWS với gánh nặng vận hành tối thiểu. ...

26 tháng 6, 2026 · 19 phút · Tuan Anh

Kiến trúc Composable Banking: Từ Monolith đến Modular Core

🇬🇧 Read the English version of this article on tanhdev.com Answer-first: Cách các ngân hàng thay thế core banking nguyên khối (Temenos, Finacle) bằng kiến trúc composable banking (ngân hàng cấu thành) thông qua việc sử dụng Go microservices, điều phối Saga (Saga orchestration), NewSQL ledgers và mô hình Strangler Fig. Các hệ thống core banking cũ (legacy) được thiết kế trong một thời đại khác. Temenos T24, Finacle và Flexcube đều chia sẻ một giả định chung mang tính quyết định: toàn bộ danh mục sản phẩm của ngân hàng — tiền gửi (deposits), cho vay (lending), thanh toán (payments), tài trợ thương mại (trade finance) — sẽ nằm bên trong một ứng dụng được liên kết chặt chẽ (tightly coupled) duy nhất và một database dùng chung duy nhất. Giả định đó có thể đúng khi ngành ngân hàng di chuyển với tốc độ của con người. Nhưng nó hoàn toàn sụp đổ khi các chu kỳ release (phát hành sản phẩm) cần phải rút ngắn từ vài tháng xuống vài ngày, khi việc cập nhật một engine chống gian lận (fraud engine) không được phép gây rủi ro ngừng hoạt động (outage) cho hệ thống thanh toán, và khi các kỹ sư đang làm việc trên nền codebase COBOL nghỉ hưu nhanh hơn tốc độ họ có thể được thay thế. ...

10 tháng 6, 2026 · 38 phút · Tuan Anh
Kiến trúc Microservices Ngân hàng với Go: Mẫu Saga, event sourcing, và sổ cái phân tán

Kiến trúc Microservices Ngân hàng: Go, Saga & Event Sourcing

🇬🇧 Read the English version of this article on tanhdev.com 1. Giới thiệu: Phá vỡ Core Banking truyền thống Trả lời nhanh: Một kiến trúc microservices ngân hàng hiện đại sẽ thay thế các sổ cái nguyên khối cũ (như T24 hoặc Flexcube) bằng cách sử dụng Go để định tuyến giao dịch với thông lượng cao. Hệ thống đạt được tính nhất quán phân tán mà không cần dùng two-phase commit (2PC) bằng cách kết hợp Event Sourcing (luồng sự kiện bất biến của sổ cái), Điều phối Saga (dùng Temporal hoặc Dapr), mẫu Transactional Outbox và ràng buộc unique của PostgreSQL để đảm bảo API luôn idempotent. ...

1 tháng 6, 2026 · 18 phút · Lê Tuấn Anh

Các Mẫu Goroutine Pool Trong Go: errgroup & Cơ Chế Chặn (Backpressure)

🇬🇧 Read the English version of this article on tanhdev.com Mọi kỹ sư Go cuối cùng đều viết cùng một sai lầm: một vòng lặp khởi chạy các goroutine vô điều kiện (unconditionally). Trong một bản demo với 10 mục, điều này hoạt động rất đẹp. Nhưng trong môi trường production (thực tế) với 50.000 sự kiện webhook đầu vào, nó sẽ sản sinh ra 50.000 goroutine cùng một lúc, làm cạn kiệt bộ nhớ và kích hoạt sát thủ diệt bộ nhớ (OOM killer). Kubernetes sẽ khởi động lại (restart) cái pod đó. Và rồi kỹ sư trực on-call nhận tiếng bíp gọi dậy lúc 3 giờ sáng. ...

1 tháng 6, 2026 · 27 phút · Tuan Anh

Go pprof trong Kubernetes: Remote Profiling & Flame Graphs

🇬🇧 Read the English version of this article on tanhdev.com Bạn đã gắn các bộ thu thập đo lường cho service Go của mình với net/http/pprof, chạy thử lệnh go tool pprof cục bộ (local) kiểm tra file binary lúc dev, và đã nhìn rõ mồn một các “hot path” (đường nghẽn cổ chai tốn thời gian nhất) trên biểu đồ ngọn lửa (flame graph). Thế rồi bạn triển khai lên Kubernetes và các điểm nghẽn ấy biến mất hoàn toàn — bởi vì hồ sơ tải (workload profile) trong Kubernetes khác xa với việc test cục bộ (mix request khác nhau, áp lực pool kết nối khác nhau, hành vi GC cũng khác dưới mức chịu tải thực tế, và cả sự can thiệp từ bộ lập lịch (scheduler) của các pod nằm chung node). ...

1 tháng 6, 2026 · 23 phút · Tuan Anh

Hướng Dẫn Dapr Workflow Go: Orchestrated Saga Pattern

🇬🇧 Read the English version of this article on tanhdev.com Hầu hết các lập trình viên Go xây dựng microservices đều biết đến mẫu Choreography Saga: service A phát ra (emit) một sự kiện, service B phản ứng, service C phản ứng với B, và cứ tiếp tục như vậy. Nếu bước C thất bại, các services sẽ phát ra các sự kiện “bù trừ” (compensation) theo thứ tự ngược lại. Mẫu này hoạt động một cách mượt mà đối với các luồng đơn giản, nhưng lại phá vỡ tính hiệu quả khi số lượng bước tăng lên: việc debug một saga thất bại đòi hỏi phải lần theo dấu vết (tracing) các sự kiện qua năm topic của message broker, và việc triển khai logic bù trừ đòi hỏi mỗi service phải hiểu toàn bộ trạng thái của saga. ...

1 tháng 6, 2026 · 17 phút · Tuan Anh

LeaseInVietnam: Xây dựng Cổng thông tin Tái định cư cho...

🇬🇧 Read the English version of this article on tanhdev.com Đa số các dự án nội dung AI đều được xây dựng xoay quanh một câu hỏi: làm sao để tôi đẻ ra được nhiều bài hơn? LeaseInVietnam được xây dựng xoay quanh một câu hỏi hoàn toàn khác: làm sao để tôi ép mọi bài viết được đăng đều phải tạo ra chuyển đổi (convert)? Hệ thống này là một cổng thông tin tái định cư tự trị (autonomous relocation hub) nhắm tới tệp khách Tây (expats) và dân du mục kỹ thuật số (digital nomads) đang thuê nhà ở miền Nam Việt Nam — TP.HCM, Nha Trang, Phú Quốc. Nó sản xuất nội dung bằng tiếng Anh Mỹ (American English), tự động xuất bản mỗi ngày thông qua GitOps, và nắn dòng mọi tương tác của độc giả vào một phễu khách hàng tiềm năng (B2B lead funnel). Phễu này đẻ ra tiền hoa hồng từ các dịch vụ vận chuyển nhà, đặt lịch dọn dẹp, cho thuê nội thất, và tư vấn pháp lý. ...

24 tháng 4, 2026 · 19 phút · Tuan Anh

Tech Radar, 14/04/2026: An Toàn Hơn Khi Tiến Hóa Code, Khôi Phục Runtime Và Gia Cố Framework

🇬🇧 Read the English version of this article on tanhdev.com Các chủ đề được lựa chọn trong luồng pipeline số 6 vẽ nên một bức tranh vô cùng mạch lạc về hướng đi của Kỹ thuật Nền tảng (Platform engineering) ở độ tuổi trưởng thành. Sau khi trích xuất và đào sâu vào các tài liệu gốc, một thông điệp chung đã xuất hiện: Những hệ thống mạnh mẽ không chỉ được định nghĩa bởi việc chúng có thể làm được gì, mà còn bởi việc chúng tiến hóa (evolve) an toàn ra sao, chúng khôi phục (recover) dễ đoán đến nhường nào, và chúng gọt bỏ được bao nhiêu “độ phức tạp vô bổ” (accidental complexity) cho các team xây dựng ứng dụng bên trên chúng. ...

14 tháng 4, 2026 · 12 phút · Tuan Anh