21 part series

Serverless Thực Chiến Trên AWS: URL Shortener + Analytics Realtime

Dựng một sản phẩm serverless hoàn chỉnh trên AWS từ số không: một dịch vụ rút gọn URL có analytics realtime. Series không dạy từng dịch vụ rời rạc mà build một backend production-ready xuyên suốt — Lambda, API Gateway, DynamoDB single-table, Cognito, EventBridge, Step Functions, WebSocket API — rồi vận hành nó như thật: idempotency, DLQ, X-Ray tracing, cold start, IAM least-privilege, CI/CD canary, phân tích chi phí và load test. Mọi hạ tầng dựng bằng AWS SAM, code Node.js + TypeScript, mọi lệnh chạy thật trên AWS, code lưu tại github.com/nghiadaulau/serverless-url-shortener-aws. Bám tài liệu chính thức AWS.

13

Step Functions: Điều Phối Quy Trình Nhiều Bước và Mẫu Saga

Khi một quy trình có nhiều bước, rẽ nhánh và xử lý lỗi, nhồi hết vào một hàm Lambda sẽ rối và khó nhìn. Step Functions tách logic điều phối ra thành một state machine khai báo. Dựng một workflow kiểm duyệt link (quét an toàn rồi kích hoạt hoặc từ chối), với Retry, Catch, và gọi thẳng DynamoDB không qua Lambda. Bàn tới Standard so với Express, và mẫu saga để hoàn tác khi một bước giữa chừng thất bại.

Kai··7 min read·AWSKiến trúc
14

Quan Sát Hệ Thống: Lambda Powertools và X-Ray Tracing

Bắt đầu phần vận hành như production bằng việc nhìn được vào bên trong. Gắn Lambda Powertools để có log JSON có cấu trúc và đẩy metric, bật X-Ray để theo dấu một request đi qua những dịch vụ nào. Đọc một trace thật cho thấy resolve gọi DynamoDB và EventBridge thành các subsegment, và một dòng log mang sẵn trace id để nối log với trace.

Kai··5 min read·AWSObservability
15

CloudWatch: Alarm, Dashboard và SLO Cho API

Có log, trace và metric rồi thì bước tiếp là tự động biết khi nào hệ thống có vấn đề. Định nghĩa SLO cho API, dựng alarm trên CloudWatch để cảnh báo khi lỗi hay throttle vượt ngưỡng, gom metric vào một dashboard, và dùng Logs Insights để tính chỉ số từ log có cấu trúc. Kích một alarm thật sang trạng thái ALARM bằng cách tạo throttle.

Kai··5 min read·AWSCloudWatch
16

Cold Start: Đo Thật Rồi Tối Ưu Cái Tối Ưu Được

Quay lại cold start với số đo thật. Ép một cold start trên handler resolve để thấy Init Duration và cái giá của lần gọi đầu, rồi soi các cách giảm: tăng bộ nhớ (cũng là tăng CPU), cắt kích thước gói, SnapStart, và provisioned concurrency — mỗi cách có chỗ dùng riêng, và trên tài khoản test có cách không áp dụng được.

Kai··6 min read·AWSHiệu năng
17

Bảo Mật: IAM Least-Privilege, Throttling và WAF

Siết bảo mật cho sản phẩm. Thu quyền IAM của từng hàm về đúng hành động nó cần thay vì cấp cả bộ đọc-ghi, đặt throttle ở API Gateway để chống lạm dụng, bàn về nơi cất bí mật, và cách gắn WAF cho một HTTP API. Kiểm rằng least-privilege không làm hỏng chức năng, và quan sát hệ thống tự gạt tải khi bị dội.

Kai··6 min read·AWSIAM
18

CI/CD: Tự Động Hóa Build, và Deploy Canary Có Rollback

Suốt series ta deploy bằng cách gõ sam deploy tay. Bài này dựng CI/CD: một workflow GitHub Actions tự build và kiểm template mỗi lần push, và deploy an toàn bằng canary qua CodeDeploy, dịch dần traffic và tự rollback nếu alarm lỗi kêu. Kèm hai cái bẫy thật gặp khi dựng: esbuild không có trên PATH của CI, và phụ thuộc vòng giữa hàm và alarm.

Kai··6 min read·AWSCI/CD
19

Hóa Đơn Thật: Serverless Tốn Bao Nhiêu, và Tiết Kiệm Ở Đâu

Bóc hóa đơn thật của chính sản phẩm này. Cost Explorer cho thấy toàn bộ việc dựng và test xuyên suốt series tốn gần như bằng không, vì serverless không tính tiền lúc nghỉ và lượng dùng nằm trong free tier. Đi qua mô hình giá từng dịch vụ, và chỉ ra những lựa chọn thiết kế trong series đã cắt chi phí ở đâu.

Kai··6 min read·AWSChi phí
20

Load Test Bằng k6: Tìm Nút Thắt Dưới Tải Thật

Đẩy tải thật vào hệ thống bằng k6 và đọc nó co giãn ra sao. Bắn hơn 25.000 request vào đường mở link, rồi đối chiếu kết quả k6 với metric CloudWatch để tìm nút thắt. Số liệu chỉ thẳng vào một con số đã gặp nhiều lần trong series: giới hạn concurrency 10, và cho thấy hệ thống gạt tải thừa nhanh thay vì sập.

Kai··6 min read·AWSLoad testing
21

Capstone: Soi Lại Theo Well-Architected, Dọn Dẹp và Mở Rộng

Bài cuối series. Ghép lại toàn bộ kiến trúc đã dựng, soi nó qua năm trụ cột Well-Architected để thấy mỗi bài đóng góp vào đâu, hướng dẫn dọn dẹp sạch bằng một lệnh, và phác những hướng mở rộng tiếp theo: tên miền tùy chỉnh, đa vùng, và một dashboard thật.

Kai··5 min read·AWSKiến trúc