Bài đăng

Đang hiển thị bài đăng từ Tháng 6, 2026

Hiểu Rõ SQS Visibility Timeout: Tại Sao Message Bị Xử Lý Hai Lần?

Bạn đang chạy một hệ thống xử lý đơn hàng, consumer đọc message từ SQS, nhưng log lại cho thấy cùng một message được xử lý bởi hai worker khác nhau — đôi khi dẫn đến giao dịch trùng lặp. Đây là triệu chứng kinh điển của SQS Visibility Timeout bị cấu hình sai, và nó thường bị bỏ qua cho đến khi production bắt đầu có vấn đề. TL;DR — SQS Visibility Timeout là gì và tại sao nó quan trọng Vấn đề Nguyên nhân Giải pháp Message bị xử lý hai lần Visibility Timeout ngắn hơn thời gian xử lý thực tế Tăng timeout hoặc dùng ChangeMessageVisibility Message không bao giờ bị xóa Consumer xử lý xong nhưng quên gọi DeleteMessage Luôn xóa message sau khi xử lý thành công Message kẹt trong queue mãi mãi Consumer crash trước khi timeout hết Cấu hình Dead Letter Queue Cơ Chế Hoạt Động Của SQS Visibility Timeout SQS không phải là message broker theo mô hình push — consumer chủ động poll để nhận message. Khi một consumer gọi ...

DynamoDB Capacity Modes: Chọn Provisioned hay On-Demand để tránh throttling và tiết kiệm chi phí?

Bạn vừa thiết kế xong schema cho DynamoDB table đầu tiên và đang nhìn chằm chằm vào màn hình console, phân vân giữa hai lựa chọn: Provisioned hay On-Demand . Traffic pattern của ứng dụng chưa rõ ràng, và chọn sai có thể dẫn đến throttling làm gián đoạn dịch vụ hoặc hóa đơn AWS tăng đột biến không kiểm soát được. Bài viết này phân tích cơ chế hoạt động của từng DynamoDB capacity mode, khi nào nên dùng cái nào, và cách chuyển đổi an toàn giữa hai chế độ. TL;DR — DynamoDB Capacity Modes So Sánh Nhanh Tiêu chí On-Demand Provisioned Traffic pattern Không dự đoán được / mới ra mắt Ổn định, có thể dự đoán Chi phí baseline Cao hơn per-request Thấp hơn nếu utilization cao Throttling risk Rất thấp (AWS tự scale) Có nếu provisioned capacity không đủ Auto Scaling Tích hợp sẵn, không cần cấu hình Cần bật riêng, có độ trễ scale Phù hợp nhất Spiky workload, MVP, dev/test Production workload ổn định Cơ Chế Ho...

Route 53 Alias vs CNAME: Khi Nào Dùng Alias Record Cho Zone Apex?

Bạn vừa tạo xong một Application Load Balancer và cần trỏ domain về đó — nhưng Route 53 hiện ra hai lựa chọn: CNAME và Alias. Nếu domain là example.com (zone apex), CNAME sẽ không hoạt động theo đúng nghĩa bạn mong đợi, và đây là lý do nhiều kỹ sư mất thời gian debug một vấn đề tưởng như đơn giản. TL;DR — Route 53 Alias vs CNAME Tiêu chí CNAME Alias Record Dùng được ở zone apex ( example.com ) ❌ Không ✅ Có Phí DNS query Tính phí Miễn phí (với AWS targets) Trả về IP hay hostname Hostname IP trực tiếp (resolved nội bộ) Tích hợp health check Route 53 Hạn chế Tích hợp native TTL do người dùng kiểm soát ✅ Có ❌ AWS quản lý Targets hỗ trợ Bất kỳ hostname nào Chỉ AWS resources được liệt kê Cơ Chế Hoạt Động: Route 53 Alias Record Là Gì? Alias record là một extension độc quyền của Route 53, không phải một loại DNS record chuẩn trong RFC. Về mặt kỹ thuật, nó hoạt động như một CNAME nội bộ được Rout...

Sử Dụng Environment Variables Trong AWS Lambda: Cấu Hình và Mã Hóa Với KMS

Bạn vừa deploy Lambda function lên production và nhận ra endpoint database đang được hardcode thẳng trong source code — điều này không chỉ là security risk mà còn khiến mỗi lần đổi môi trường phải rebuild và redeploy toàn bộ function. Bài viết này hướng dẫn cách sử dụng Lambda Environment Variables để tách cấu hình khỏi code, và cách mã hóa chúng bằng AWS KMS để bảo vệ thông tin nhạy cảm như database endpoint, credentials, hay API keys. TL;DR — Lambda Environment Variables và KMS Encryption Vấn đề Giải pháp Hardcode config trong code Dùng Environment Variables, đọc qua os.environ Giá trị nhạy cảm lộ trong console Bật encryption at rest bằng KMS CMK Cần decrypt trong runtime Dùng KMS Decrypt API trong function code Phân quyền truy cập KMS Gắn kms:Decrypt vào execution role Cơ Chế Hoạt Động Của Lambda Environment Variables Lambda lưu environment variables dưới dạng key-value pairs gắn với function ...

Cài Đặt Cảnh Báo Chi Phí AWS Free Tier Bằng CloudWatch Billing Alarm

Bạn vừa tạo tài khoản AWS và đang dùng Free Tier — rồi cuối tháng nhận được hóa đơn bất ngờ vì một dịch vụ nhỏ chạy quá giới hạn miễn phí. Thiết lập CloudWatch Billing Alarm để nhận cảnh báo qua email khi chi phí ước tính vượt ngưỡng $5 là bước đầu tiên bắt buộc với bất kỳ tài khoản AWS nào. TL;DR — Tóm Tắt Nhanh Bước Hành động Lưu ý quan trọng 1 Bật Billing Alerts trong tài khoản Phải làm ở region us-east-1, chỉ cần làm một lần 2 Tạo SNS Topic và xác nhận email Email xác nhận phải được click trước khi alarm hoạt động 3 Tạo CloudWatch Billing Alarm với ngưỡng $5 Metric billing chỉ có ở us-east-1 4 Kiểm tra trạng thái alarm Trạng thái ban đầu là INSUFFICIENT_DATA — bình thường Cách CloudWatch Billing Alarm Hoạt Động Trước khi bắt tay vào cấu hình, cần hiểu rõ một điểm kiến trúc quan trọng: metric EstimatedCharges trong CloudWatch là metric toàn cầu nhưng chỉ được publish tại region us-east-1 (N. V...

So sánh EBS gp2 và gp3: Cách chọn đúng loại ổ đĩa cho workload AWS của bạn

Khi provision một EC2 instance mới, bạn sẽ thấy hai lựa chọn General Purpose SSD: gp2 và gp3 . Câu hỏi thực tế không phải là 'cái nào tốt hơn' mà là 'cái nào phù hợp với workload của tôi và không lãng phí tiền' — đặc biệt khi bạn đang chạy database hoặc ứng dụng cần IOPS cao nhưng không cần volume lớn. TL;DR: So sánh nhanh EBS gp2 và gp3 Tiêu chí gp2 gp3 IOPS baseline 3 IOPS/GB, tối đa 16.000 IOPS 3.000 IOPS cố định (bất kể dung lượng) Scale IOPS độc lập với dung lượng Không — IOPS gắn liền với GB Có — tối đa 16.000 IOPS độc lập Throughput tối đa 250 MiB/s 1.000 MiB/s Chi phí tổng thể Cao hơn với volume nhỏ cần IOPS cao Thấp hơn trong hầu hết trường hợp Burst IOPS Có (credit-based, tối đa 3.000 IOPS) Không cần — baseline đã là 3.000 IO...