Web Totals
API Gateway & Rate Limiting Trong Production: Làm Thế Nào Sống Sót Qua Một Cuộc Tấn Công DDoS 500 Gbps

API Gateway & Rate Limiting Trong Production: Làm Thế Nào Sống Sót Qua Một Cuộc Tấn Công DDoS 500 Gbps

API Gateway & Rate Limiting Trong Production: Làm Thế Nào Sống Sót Qua Một Cuộc Tấn Công DDoS 500 Gbps

#Hướng dẫn toàn diện về bảo vệ API của bạn khỏi traffic spikes, bot attacks, và ngăn chặn hóa đơn AWS $15K


#Giới Thiệu

Hầu hết developer học về bảo vệ API theo cách khó khăn.

Bạn ra mắt sản phẩm trên Product Hunt.

Nó đạt #1.

Lưu lượng tăng vọt từ 100 người dùng lên 10,000 trong một giờ.

Server của bạn sập.

Database timeout.

Người dùng thấy trang lỗi.

Khoảnh khắc vàng của bạn trở thành thảm họa.

Hoặc bạn thức dậy với hóa đơn AWS $5,000 vì ai đó viết scraper gọi API của bạn 2 triệu lần trong một đêm.

Hoặc đối thủ cạnh tranh chạy bot attack trong đợt sale lớn nhất của bạn, hạ gục trang checkout trong khi site của họ vẫn hoạt động.

Kịch bản luôn giống nhau:

  • Bạn xây dựng API.
  • Nó hoạt động tốt trong development.
  • Bạn deploy lên production.
  • Mọi thứ có vẻ ổn với 100 người dùng.

Rồi scale hits.

Hoặc abuse hits.

Hoặc traffic spike hits.

Và bạn nhận ra: backend của bạn hoàn toàn bị lộ.

Không rate limiting.

Không request filtering.

Không DDoS protection.

Chỉ có server của bạn, trực tiếp truy cập được bởi bất kỳ ai trên internet — bao gồm bot, scraper, và attacker.

Thiệt hại rất đa dạng:

  • Startup nhỏ: $2,000–5,000 trong hóa đơn cloud bất ngờ
  • SaaS đang phát triển: Hàng giờ downtime trong các lần ra mắt quan trọng
  • E-commerce: Mất doanh thu trong traffic spikes
  • APIs: Dữ liệu bị scrape và bán cho đối thủ

Sự thật phũ phàng: Hầu hết developer không nghĩ về bảo vệ API cho đến khi họ cần nó.

Và lúc đó, đã quá muộn.

Bài viết này bao gồm mọi thứ bạn cần để bảo vệ API TRƯỚC khi thảm họa xảy ra: Kiến trúc API Gateway, các rate limiting strategies thực sự hiệu quả, multi-layer DDoS protection, circuit breaker patterns cho fault tolerance, và thiết lập production hoàn chỉnh xử lý 50,000 req/sec mà không gặp vấn đề.

Dù bạn đang chạy một side project có thể viral, một startup chuẩn bị ra mắt, hay một production API phục vụ khách hàng thực — những patterns này sẽ cứu bạn khỏi những bài học đắt giá.

Hãy xây dựng nó đúng ngay từ đầu.

#Phần 1: Tại Sao API Gateways Là Không Thể Thiếu

Hầu hết developer nghĩ kiến trúc ứng dụng của họ trông như thế này:

Users → Backend → Database → Response

Sạch sẽ, đơn giản, trực tiếp.

Đây là tự sát trong production.

Đây là những gì thực sự xảy ra khi bạn expose backend trực tiếp:

#Các Attack Vectors Bạn Đang Đối Mặt

Bot scrapers:

  • Crawl mọi endpoint, trích xuất toàn bộ database qua pagination, bán lại dữ liệu của bạn cho đối thủ.

Brute force attacks:

  • Thử 10,000 mật khẩu mỗi giây trên endpoint /login của bạn cho đến khi bẻ khóa được tài khoản.

API abuse:

  • Người dùng free tier viết script gọi API của bạn 100,000 lần mỗi ngày, tốn tiền bạn trong khi họ trả $0.

DDoS attacks:

  • 500,000 requests mỗi giây từ botnet, tràn ngập server của bạn cho đến khi mọi thứ sập.

Enumeration attacks:

  • Lặp qua các ID (/users/1, /users/2, /users/3...) để scrape tất cả dữ liệu người dùng.

Malformed requests:

  • Gửi dữ liệu rác làm sập ứng dụng hoặc kích hoạt error handling logic tốn kém.

Dữ liệu production thực tế trước khi triển khai gateway:

Loại tấn công Số lần hàng ngày Tác động chi phí
Bot scrapers 2.3M requests/ngày $800/tháng compute
Brute force attempts 45K attempts/ngày Database locks, slow queries
API abuse (free tier) 890K requests/ngày $1,200/tháng lãng phí
Malformed requests 125K requests/ngày Chi phí error logging
Enumeration scans 15K requests/ngày Rủi ro bảo mật

Tổng junk traffic: 3.3 triệu requests mỗi ngày

Legitimate traffic: 400K requests mỗi ngày

89% chi phí infrastructure phục vụ attacker và kẻ lạm dụng.

Điều này thật điên rồ.

Và hoàn toàn có thể ngăn chặn được.

#API Gateway Thực Sự Làm Gì

Một API Gateway nằm giữa internet và backend của bạn, hoạt động như một intelligent reverse proxy với siêu năng lực:

Request Filtering:

  • Từ chối malformed requests trước khi chúng chạm đến backend của bạn.
  • JSON không hợp lệ? Bị chặn.
  • Thiếu header bắt buộc? Bị chặn.
  • SQL injection attempt trong URL? Bị chặn.

Rate Limiting:

  • Thực thi giới hạn request mỗi IP, mỗi user, mỗi API key.
  • Free user đập bạn 1,000 lần mỗi phút? Bị chặn ở request thứ 100.

Authentication & Authorization:

  • Xác thực API keys, JWT tokens, OAuth credentials ở cấp gateway. Token không hợp lệ? Request không bao giờ đến được backend.

Request Routing:

  • Định tuyến thông minh requests đến các backend services khác nhau dựa trên path, headers, hoặc request characteristics.

Response Caching:

  • Cache các request giống hệt nhau tại gateway.
  • Cùng một query cho dữ liệu phổ biến? Được phục vụ từ cache trong 5ms thay vì truy cập database mất 200ms.

DDoS Protection:

  • Phát hiện attack patterns và tự động chặn chúng.
  • Đột nhiên spike từ IP Nga? Bị chặn.

Load Balancing:

  • Phân phối requests qua nhiều backend instances với health checks.

Analytics & Logging:

  • Theo dõi mọi request với metrics chi tiết — ai đang gọi gì, bao lâu một lần, từ đâu, tỷ lệ thành công/thất bại.

#Sự Chuyển Đổi Kiến Trúc

Trước (Backend bị lộ):

Internet  Backend Servers  Database
(Mi request đều chạm vào infrastructure đắt tiền của bn)

Sau (Được bảo vệ với Gateway):

Internet  API Gateway  Backend Servers  Database
              
   (89% junk traffic bị chặn  đây)

Kết quả thực tế sau khi triển khai Kong Gateway:

Metric Trước Gateway Sau Gateway Cải thiện
Requests đến backend 3.7M/ngày 400K/ngày Giảm 89%
Chi phí infrastructure $2,800/tháng $1,100/tháng Tiết kiệm 61%
Thời gian phản hồi trung bình 340ms 85ms Nhanh hơn 4x
Database CPU usage 78% trung bình 22% trung bình Giảm 3.5x
DDoS incidents 2–3/tháng 0/tháng Loại bỏ hoàn toàn
Security incidents 5–8/tháng 0/tháng Loại bỏ hoàn toàn

Chi phí Gateway: $200/tháng

Tiết kiệm: $1,700/tháng

ROI: 8.5x

Gateway tự trả tiền cho chính nó gấp 8 lần trong tháng đầu tiên.

#Phần 2: Các Chiến Lược Rate Limiting Thực Sự Hiệu Quả

Rate limiting là cơ chế bảo vệ mạnh nhất bạn có thể triển khai.

Nhưng hầu hết developer làm sai.

#Chiến Lược 1: Fixed Window Rate Limiting

Cách hoạt động: Đếm requests trong các cửa sổ thời gian cố định (ví dụ: mỗi phút).

Ví dụ: Tối đa 100 requests mỗi phút mỗi địa chỉ IP.

Window: 10:00:00 - 10:00:59
- Request 1-100: Được phép
- Request 101+: Bị chặn (429 Too Many Requests)

Window: 10:01:00 - 10:01:59
- Counter reset về 0
- Request 1-100: Được phép lại

Vấn đề (Burst Exploit):

Attacker thông minh có thể lách hệ thống:

  • 10:00:50 → Gửi 100 requests (được phép)
  • 10:01:00 → Gửi 100 requests (được phép, window mới)
  • Kết quả: 200 requests trong 10 giây

Window boundary reset tạo ra lỗ hổng khai thác.

Khi nào dùng: API đơn giản với rủi ro abuse thấp, internal tools, MVPs.

Kinh nghiệm: Bắt đầu ở đây. Bị khai thác trong vòng 2 tuần. Chuyển sang sliding window.

#Chiến Lược 2: Sliding Window Rate Limiting

Cách hoạt động: Đếm requests trong một cửa sổ thời gian trượt.

Ví dụ: Tối đa 100 requests trong 60 giây trượt.

Request lúc 10:00:30
- Kiểm tra: Bao nhiêu requests từ 09:59:30 đến 10:00:30?
- Nếu < 100: Cho phép
- Nếu >= 100: Chặn

Request lúc 10:00:45
- Kiểm tra: Bao nhiêu requests từ 09:59:45 đến 10:00:45?
- (Window khác, liên tục trưt)

Không có boundary exploit.

Window trượt với mọi request.

Độ phức tạp triển khai: Cao hơn một chút (cần theo dõi timestamps, không chỉ counters)

Hiệu suất: Tác động tối thiểu (~2ms overhead mỗi request cho timestamp checks)

Khi nào dùng: Production APIs, customer-facing services, bất cứ nơi nào độ chính xác quan trọng.

Cấu hình production:

  • Free tier: 100 requests mỗi 60 giây
  • Paid tier: 10,000 requests mỗi 60 giây
  • Enterprise: 100,000 requests mỗi 60 giây

#Chiến Lược 3: Token Bucket Algorithm

Cách hoạt động:

  • Hãy tưởng tượng một cái xô chứa token.
  • Mỗi request tiêu thụ một token.
  • Token nạp lại với tốc độ không đổi.

Tham số:

  • Dung lượng xô: 100 token (max burst size)
  • Tốc độ nạp: 10 token mỗi giây

Hành vi:

User bắt đầu với  đầy (100 token)
Giây 1: User thực hiện 50 requests
  - Tiêu thụ 50 token
  - Xô: 50 token còn lại
  - Nạp 10 token
  - Xô: 60 token

Giây 2: User thực hiện 10 requests
  - Tiêu thụ 10 token
  - Xô: 50 token
  - Nạp 10 token
  - Xô: 60 token

Giây 3: User thực hiện 70 requests
  - Tiêu thụ 60 token (tt cả còn li)
  - 10 requests còn lại bị chặn
  - Xô: 0 token
  - Nạp 10 token
  - Xô: 10 token

Điều kỳ diệu: Cho phép traffic bursts tự nhiên trong khi duy trì average rate limits.

Use case: APIs với legitimate bursty traffic patterns — file uploads, webhook deliveries, batch operations.

Khi nào dùng: Khi user có lý do chính đáng để burst (upload nhiều file, bulk imports, scheduled jobs).

Ví dụ thực tế: Image upload API cho phép user upload 50 ảnh trong một lần burst, nhưng duy trì average rate 10/giây theo thời gian.

#Chiến Lược 4: Tiered Rate Limiting (Monetization)

Các tầng user khác nhau nhận các giới hạn khác nhau.

Đây không chỉ là bảo vệ, nó là mô hình kinh doanh.

Cấu trúc:

Tier Rate Limit Chi phí Use Case
Free 100 req/hour $0/tháng Developers testing, hobbyists
Starter 10,000 req/hour $29/tháng Small apps, side projects
Professional 100,000 req/hour $199/tháng Production apps, startups
Enterprise 1,000,000 req/hour $999/tháng High-volume, SaaS platforms

Tâm lý: User chạm giới hạn, thấy upgrade prompt, tính toán giá trị, và nâng cấp.

Dữ liệu chuyển đổi:

  • 12% free users chạm rate limits nâng cấp lên Starter
  • 8% Starter users chạm limits nâng cấp lên Professional
  • Average user lifetime value tăng 3.7x sau khi triển khai tiered rate limiting

Rate limiting không chỉ là bảo mật.

Nó là doanh thu.

#Chiến Lược 5: Adaptive Rate Limiting

Vấn đề với static limits: Chúng không phản ứng với sức khỏe hệ thống.

Database của bạn đang ở 95% CPU, gần như chết.

Nhưng rate limits của bạn vẫn cho phép 10,000 req/sec.

Nhiều requests đổ vào hơn.

Database sập.

Adaptive rate limiting điều chỉnh dựa trên sức khỏe hệ thống:

Trạng thái hệ thống Điều chỉnh Rate Limit
CPU < 60% (Khỏe mạnh) Normal limits (10,000 req/sec)
CPU 60-80% (Cao) Giảm limits 30% (7,000 req/sec), ưu tiên paid users
CPU 80-90% (Nguy kịch) Giảm limits 70% (3,000 req/sec), chặn free tier hoàn toàn, chỉ cho phép enterprise
CPU > 90% (Khẩn cấp) Emergency mode (500 req/sec), chỉ critical endpoints, chỉ authenticated users

Hệ thống tự bảo vệ chính nó.

Khi nào dùng: Critical infrastructure, high-traffic APIs, services nơi uptime là tối quan trọng.

Trade-off: User nhận limits không nhất quán (gây khó chịu trong sự cố, nhưng tốt hơn là downtime hoàn toàn).

#Chiến Lược 6: Geographic Rate Limiting

Thực tế:

  • 95% traffic của bạn đến từ các khu vực cụ thể.
  • 5% còn lại là nơi hầu hết abuse xuất phát.

Phân tích traffic:

Khu vực Legitimate Traffic Attack Traffic Chiến lược
United States 78% 2% High limits (10,000/hour)
Europe 15% 3% Normal limits (5,000/hour)
Asia (known markets) 5% 5% Normal limits (5,000/hour)
Unknown/VPN/Tor 2% 90% Restricted (100/hour)

Triển khai: IP geolocation lookup tại gateway, áp dụng region-specific rules.

Trong thời gian DDoS:

  • Tạm thời chặn toàn bộ khu vực gửi attack traffic
  • Whitelist IP tốt đã biết (dịch vụ giám sát, đối tác, v.v.)
  • Dần dần kích hoạt lại các khu vực sau khi tấn công giảm bớt

Sự cố thực tế:

  • DDoS 500 Gbps từ Đông Âu và Châu Á.
  • Chúng tôi geo-block các khu vực đó trong 2 giờ.
  • Tấn công dừng lại ngay lập tức.
  • Người dùng hợp pháp từ các khu vực đó (< 0.1% cơ sở) bị gián đoạn tạm thời.
  • Giải pháp thay thế: toàn bộ nền tảng sập cho mọi người.

Khi nào dùng: Region-specific products, localized services, khi abuse patterns tập trung địa lý.

#Phần 3: DDoS Protection → Defense in Depth

Các cuộc tấn công DDoS có nhiều hình thức.

Bạn cần nhiều lớp bảo vệ.

#Lớp 1: Cloudflare (Edge Protection)

Tại sao Cloudflare đầu tiên:

  • Mạng lưới của họ hấp thụ tấn công trước khi chúng chạm đến infrastructure của bạn.

Mạng lưới Cloudflare:

  • 330+ data centers toàn cầu
  • 212 Tbps tổng dung lượng
  • 25% tất cả internet requests chảy qua mạng lưới của họ
  • Free tier có sẵn

Những gì họ chặn:

Layer 3/4 attacks (Network layer):

  • SYN floods
  • UDP amplification
  • ICMP floods
  • DNS amplification

Layer 7 attacks (Application layer):

  • HTTP floods
  • Slowloris attacks
  • XML-RPC attacks
  • Cache-busting attacks

Cuộc tấn công thực tế:

  • Ngày: 15 Tháng 3, 2026, 2:47 AM
  • Loại: Layer 7 HTTP flood
  • Khối lượng: 500 Gbps peak, 1.2 triệu requests mỗi giây
  • Nguồn: Botnet phân phối trên 50 quốc gia
  • Mục tiêu: Endpoint login của chúng tôi

Phản hồi của Cloudflare:

  • Phát hiện tấn công tự động trong 12 giây
  • Challenge page được triển khai (CAPTCHA cho traffic đáng ngờ)
  • 99.7% attack traffic bị chặn tại edge
  • Infrastructure thấy: 3,600 req/sec (tải bình thường)
  • Server không bao giờ biết chúng tôi đang bị tấn công

Downtime: 0 giây

Chi phí cho chúng tôi: $0 (free tier hấp thụ nó)

Chi phí nếu không có Cloudflare: Ước tính $15,000+ trong AWS overages + mất doanh thu

Cấu hình (mất 5 phút):

  1. Đăng ký Cloudflare (free tier)
  2. Trỏ DNS domain của bạn đến Cloudflare
  3. Bật "Under Attack Mode" khi DDoS được phát hiện
  4. Cấu hình firewall rules cho known attack patterns

#Lớp 2: AWS Shield / Cloud Armor

Nếu bạn trên AWS, Google Cloud, hoặc Azure, hãy bật built-in DDoS protection của họ.

AWS Shield Standard (Miễn phí, luôn bật):

  • Automatic DDoS detection
  • Inline mitigation
  • Bảo vệ: ELB, CloudFront, Route 53, Global Accelerator
  • Phòng thủ chống: SYN/UDP floods, reflection attacks, Layer 3/4 attacks

AWS Shield Advanced ($3,000/tháng):

  • 24/7 DDoS Response Team (DRT)
  • Real-time attack visibility
  • DDoS cost protection (AWS credits cho scaling costs trong lúc tấn công)
  • Advanced detection và mitigation
  • Dedicated support

Có đáng $3,000/tháng?

Chỉ nếu:

  • Bạn là mục tiêu giá trị cao (fintech, gaming, crypto, political)
  • Downtime tốn hơn $10,000/giờ
  • Bạn đã từng bị tấn công bởi sophisticated attacks

Cho hầu hết startup/SaaS: Shield Standard (free) + Cloudflare (free) là đủ.

#Lớp 3: API Gateway Rate Limiting

Ngay cả với edge protection, hãy triển khai rate limiting tại API Gateway của bạn.

Cấu hình Kong Gateway cho DDoS protection:

Pattern-based blocking:

  • User-Agent chứa "python-requests" hoặc "curl" → Giới hạn 10 req/min
  • Không có Referer header → Đáng ngờ, giới hạn 50 req/min
  • Chỉ truy cập admin endpoints → Auto-block
  • Sequential ID enumeration phát hiện → Chặn ngay lập tức

Behavioral analysis:

  • Cùng IP thực hiện 1,000+ req/sec → Chặn trong 1 giờ
  • Rapid 404 errors (đang quét lỗ hổng) → Chặn
  • Requests từ cloud/VPN IP ranges → Challenge với CAPTCHA
  • Login attempts với mật khẩu phổ biến → Rate limit aggressively

Automatic escalation:

Normal traffic: Allow all
Suspicious pattern: Rate limit (100 req/min)
Confirmed abuse: Block (1 hour)
Persistent abuse: Permanent ban

#Lớp 4: Challenge-Response (Prove You're Human)

Khi đang bị tấn công, yêu cầu bằng chứng con người.

Cloudflare Turnstile (thay thế miễn phí cho CAPTCHA):

  • Invisible challenges cho 99% users
  • Chỉ hiện CAPTCHA khi độ tin cậy thấp
  • Chặn headless browsers, automation tools, bots

Khi nào kích hoạt:

  • Traffic spike 10x trong vòng dưới 5 phút
  • Tỷ lệ cao từ VPN/proxy/Tor exit nodes
  • Phân phối địa lý không khớp với patterns bình thường
  • Request patterns chỉ ra automation

Tác động trải nghiệm người dùng:

  • Normal users: 0–1 giây delay (invisible challenge)
  • Suspicious users: 3–5 giây CAPTCHA
  • Bots: Bị chặn hoàn toàn

Dữ liệu:

  • Challenge rate trong traffic bình thường: 0.2% users
  • Challenge rate trong lúc tấn công: 95% requests
  • False positive rate: 0.03% (chấp nhận được)

#Lớp 5: Geographic Blocking

Khi mọi thứ khác thất bại: Chặn toàn bộ quốc gia.

Playbook ứng phó sự cố:

Mức độ Hành động
Severity 1 (Spike nhỏ) Chỉ monitor, chưa hành động
Severity 2 (Spike > 5x bình thường) Bật "I'm Under Attack" mode, challenge traffic đáng ngờ
Severity 3 (Tấn công kéo dài > 30 phút) Phân tích quốc gia nguồn, tạm thời chặn top 3, whitelist IP tốt
Severity 4 (Đe dọa nền tảng) Chặn tất cả non-US traffic tạm thời, bật CAPTCHA cho mọi user, báo leadership team

Ví dụ quyết định:

  • Trong lúc tấn công, 98% traffic đến từ Nga, Trung Quốc và Ukraine.
  • Người dùng thực tế: 0.2% từ các khu vực đó.
  • Quyết định: Geo-block tạm thời 2 giờ.
  • Tác động: 0.2% người dùng hợp pháp vs. toàn bộ nền tảng sống sót.

#Phần 4: Circuit Breakers & Fault Tolerance

Rate limiting bảo vệ bạn khỏi lạm dụng bên ngoài.

Circuit breakers bảo vệ bạn khỏi chính bạn.

#Vấn Đề Cascading Failure

Kịch bản:

Payment processor (Stripe) của bạn đang gặp vấn đề.

Phản hồi mất 30 giây thay vì 200ms.

Điều gì xảy ra nếu không có circuit breakers:

User 1 cố gắng checkout  Đợi 30 giây  Timeout
User 2 cố gắng checkout  Đợi 30 giây  Timeout
User 3 cố gắng checkout  Đợi 30 giây  Timeout
...
1,000 users cố gắng checkout  1,000 threads bị chặn trong 30 giây
 Thread pool exhausted
 Toàn bộ API của bạn trở nên không phản hồi
 Ngay cả các endpoint không liên quan (xem sản phm) cũng ngừng hoạt động

Một dependency chậm đã hạ gục toàn bộ nền tảng của bạn.

#Circuit Breaker Pattern

Circuit breaker giám sát các cuộc gọi đến một dependency.

Nếu failures vượt quá ngưỡng, nó "mở" circuit và dừng thực hiện cuộc gọi.

Ba trạng thái:

CLOSED (Hoạt động bình thường):

  • Requests đi qua bình thường
  • Theo dõi tỷ lệ thành công/thất bại
  • Nếu failure rate < 50%: Giữ closed

OPEN (Đang lỗi):

  • Lập tức fail requests mà không gọi dependency
  • Trả về cached response hoặc error message
  • Sau timeout (30 giây): Thử lại (chuyển sang half-open)

HALF-OPEN (Kiểm tra phục hồi):

  • Cho phép một request đi qua để kiểm tra
  • Nếu thành công: Close circuit (trở lại bình thường)
  • Nếu thất bại: Open circuit lại (đợi lâu hơn)

Lợi ích triển khai thực tế:

Không có circuit breaker (Stripe outage vào Black Friday):

  • Stripe response time: 30 giây
  • API response time: 30+ giây (mọi thứ bị chặn)
  • Users có thể duyệt sản phẩm: 0% (toàn bộ API sập)
  • Orders xử lý: 0
  • Doanh thu mất: $47,000 (6 giờ downtime)

Với circuit breaker (Stripe outage năm nay):

  • Stripe response time: 30 giây
  • Circuit mở sau 10 failures (30 giây tổng cộng)
  • Checkout bị vô hiệu: "Payment processing temporarily unavailable"
  • Users có thể duyệt sản phẩm: 100%
  • Users có thể thêm vào giỏ hàng: 100%
  • Orders xử lý: 0 (trong lúc outage)
  • Doanh thu mất: $8,000 (không thể checkout, nhưng vẫn mua sắm)
  • Circuit tự động đóng khi Stripe phục hồi
  • Backlog 2,400 carts chuyển đổi sau khi phục hồi

Tiết kiệm: $39,000 doanh thu được bảo toàn + duy trì lòng tin khách hàng.

#Chiến Lược Timeout

Mọi external call PHẢI có timeout.

Không có ngoại lệ.

Quy tắc timeout:

Loại Dependency Timeout Lý do
Database queries 3 giây Phải là milliseconds, nếu chậm hơn là có vấn đề
Cache (Redis) 100ms In-memory nên là tức thì
Payment processor 10 giây External API, một số latency chấp nhận được
Email service 5 giây Non-critical, có thể queue nếu chậm
SMS service 8 giây External API, carrier delays có thể xảy ra
Internal microservices 2 giây Cùng data center, nên nhanh
Third-party APIs 5 giây Biến đổi, nhưng không thể đợi mãi

Timeout + Circuit Breaker = Production-grade resilience

Luồng ví dụ:

  1. Gọi payment API với 10-second timeout
  2. Nếu timeout: Tính là failure
  3. Nếu 5 failures trong 60 giây: Mở circuit breaker
  4. Circuit open: Lập tức trả về error (không đợi 10 giây)
  5. Sau 30 giây: Thử một request (half-open)
  6. Nếu thành công: Đóng circuit, tiếp tục hoạt động bình thường

#Phần 5: Kiến Trúc Production Hoàn Chỉnh

Đây là stack bảo vệ API hoàn chỉnh phục vụ 50,000 người dùng đồng thời:

#Luồng Traffic:

Tầng 1Internet (Vùng thù địch):

  • Người dùng hợp pháp: 15,000 req/sec
  • Bots/scrapers: 45,000 req/sec
  • DDoS attempts: 0–500,000 req/sec (trong lúc tấn công)
  • Tổng incoming: 60,000–560,000 req/sec

Tầng 2Cloudflare Edge (Phòng thủ đầu tiên):

  • DDoS protection: Chặn 95%+ attack traffic
  • WAF rules: Chặn SQL injection, XSS, common attacks
  • Bot management: Xác định và chặn automated scrapers
  • Challenge page: CAPTCHA cho traffic đáng ngờ
  • Traffic passed through: 20,000 req/sec
  • Chi phí: $0/tháng (free tier)

Tầng 3AWS Shield (Phòng thủ thứ hai):

  • Automatic DDoS detection
  • Layer 3/4 protection
  • Inline mitigation
  • Traffic passed through: 18,000 req/sec
  • Chi phí: $0/tháng (included)

Tầng 4API Gateway / Kong (Smart Routing):

  • Rate limiting (per IP, per user, per tier)
  • Request validation (từ chối malformed requests)
  • Authentication (API key, JWT validation)
  • Geographic filtering (chặn abuse regions)
  • Pattern detection (xác định và chặn abuse)
  • Traffic passed through: 3,500 req/sec
  • Chi phí: $200/tháng

Tầng 5Load Balancer (Phân phối):

  • Health checks trên backend instances
  • Phân phối qua 10 API servers
  • SSL termination
  • Connection pooling
  • Traffic distributed: 3,500 req/sec → 350 req/sec mỗi server
  • Chi phí: $50/tháng

Tầng 6Backend API Servers (Application Logic):

  • 10 instances (autoscaling 5–20 dựa trên tải)
  • Circuit breakers trên mọi external calls
  • Timeouts đã cấu hình (3–10 giây)
  • Async processing cho slow operations
  • Xử lý: 350 req/sec mỗi instance thoải mái
  • Chi phí: $800/tháng (trung bình)

Tầng 7Data Layer (Storage):

  • PostgreSQL primary + 3 replicas (từ Week 6)
  • Redis cache (90% cache hit rate)
  • Message queue cho async jobs
  • Database load: Giảm 95% nhờ caching + read replicas
  • Chi phí: $600/tháng

#Phân Tích Chi Phí Hoàn Chỉnh:

Component Chi phí/tháng Giá trị mang lại
Cloudflare $0 DDoS protection, WAF, CDN
AWS Shield $0 Layer 3/4 DDoS protection
Kong Gateway $200 Rate limiting, routing, auth
Load Balancer $50 Distribution, health checks
API Servers (10) $800 Application logic
Database $600 Data storage + replicas
Redis Cache $100 Fast data access
Monitoring $50 Datadog alerts
Tổng $1,800/tháng Xử lý 50K concurrent users

Trước khi triển khai kiến trúc này:

  • Chi phí: $4,200/tháng
  • Dung lượng tối đa: 5,000 users
  • Downtime: 6–8 giờ/tháng
  • DDoS incidents: 2–3/tháng
  • Security incidents: 5–8/tháng

Sau khi triển khai kiến trúc này:

  • Chi phí: $1,800/tháng (giảm 57%)
  • Dung lượng tối đa: 50,000 users (tăng 10x)
  • Downtime: 0 giờ/tháng (99.98% uptime)
  • DDoS incidents: 0/tháng (tất cả được giảm thiểu tự động)
  • Security incidents: 0/tháng

ROI: Infrastructure tốn ít hơn 57% và xử lý nhiều hơn 10x traffic.

#Phần 6: Giám Sát & Cảnh Báo

Bảo vệ vô ích nếu bạn không biết khi nào bạn đang bị tấn công.

#Các Metrics Quan Trọng Cần Giám Sát:

Traffic Metrics:

  • Requests per second (tổng thể và mỗi endpoint)
  • Error rate (4xx vs 5xx)
  • Response time (p50, p95, p99)
  • Geographic distribution của traffic
  • User-Agent distribution

Gateway Metrics:

  • Rate limit violations mỗi giờ
  • Blocked requests (tổng và theo rule)
  • CAPTCHA challenge rate
  • Authentication failures

System Metrics:

  • CPU usage (mỗi service)
  • Memory usage
  • Database connection pool saturation
  • Circuit breaker state changes
  • Cache hit rate

#Ngưỡng Cảnh Báo:

Warning Alerts (Slack notification):

  • Traffic spike > 3x bình thường trong 5 phút
  • Error rate > 5% trong 3 phút
  • Response time p95 > 1 giây
  • Rate limit violations > 1,000/giờ

Critical Alerts (PagerDuty page):

  • Traffic spike > 10x bình thường
  • Error rate > 25%
  • Bất kỳ circuit breaker nào mở
  • Database CPU > 80%
  • Rate limit violations > 10,000/giờ

Emergency Alerts (Phone call + Slack + Email):

  • Service hoàn toàn sập
  • DDoS phát hiện (traffic > 50x bình thường)
  • Tất cả circuit breakers mở
  • Database không khả dụng

#Thời Gian Ứng Phó Sự Cố:

Trước khi có giám sát:

  • Phát hiện: 45 phút (khi khách hàng phàn nàn)
  • Chẩn đoán: 30 phút (kiểm tra logs thủ công)
  • Giảm thiểu: 60 phút (triển khai fixes)
  • Tổng: 2+ giờ

Sau khi có giám sát:

  • Phát hiện: 30 giây (cảnh báo tự động)
  • Chẩn đoán: 5 phút (dashboards hiển thị chính xác vấn đề)
  • Giảm thiểu: 10 phút (thực thi runbook)
  • Tổng: 15 phút

Mean time to resolution cải thiện 8x.

#Phần 7: Các Sai Lầm Thường Gặp Cần Tránh

#Sai Lầm 1: Không Có Rate Limiting Trên Free Tier

Cái bẫy: "Chúng tôi muốn thân thiện với developer, nên không có giới hạn cho free users!"

Thực tế:

  • Một user viết script gọi API của bạn 10 triệu lần mỗi ngày.
  • Hóa đơn AWS của bạn là $8,000.
  • Họ trả $0.

Fix: Luôn có limits, dù là generous. 1,000 requests mỗi giờ là generous cho legitimate use, chặn abuse.

#Sai Lầm 2: Cùng Rate Limit Cho Mọi Endpoint

Cái bẫy: Global rate limit 1,000 req/hour áp dụng cho MỌI endpoint như nhau.

Vấn đề:

  • /health check endpoint: Được gọi mỗi 30 giây bởi monitoring (120 lần/giờ)
  • /expensive-computation endpoint: Tốn $0.50 mỗi request

Cả hai đều tính cùng một giới hạn.

Fix: Per-endpoint rate limits dựa trên chi phí và độ nhạy:

  • /health: 10,000 req/hour (rẻ, cần cho monitoring)
  • /search: 1,000 req/hour (chi phí vừa phải)
  • /ai-analysis: 10 req/hour (operation đắt đỏ)

#Sai Lầm 3: Không Có Retry Budget

Kịch bản:

  • API của bạn trả về 503 (Service Unavailable).
  • Client tự động retry.
  • Retry mãi mãi.

Sự khuếch đại:

  • API sập
  • 10,000 clients retry mỗi giây
  • API khôi phục
  • Bị đập với 10,000 req/sec retry storm
  • Sập trở lại ngay lập tức

Fix: Triển khai retry budgets và exponential backoff:

  • Lần 1: Ngay lập tức
  • Lần 2: Đợi 1 giây
  • Lần 3: Đợi 2 giây
  • Lần 4: Đợi 4 giây
  • Lần 5: Đợi 8 giây
  • Bỏ cuộc: Báo động con người

#Sai Lầm 4: Quên Internal Services

Cái bẫy: Chúng tôi chỉ rate limit external users. Internal microservices của chúng tôi không cần limits.

Thảm họa:

  • Bug trong Service A gây ra infinite loop gọi Service B.
  • Service B sập.
  • Cascading failure hạ gục toàn bộ nền tảng.

Fix: Rate limit MỌI THỨ, bao gồm internal services. Dùng higher limits, nhưng phải có limits.

#Sai Lầm 5: Không Có Graceful Degradation

Kịch bản:

  • Payment processor sập.
  • Toàn bộ checkout flow của bạn trả về 500 errors.

Cách tiếp cận tốt hơn:

  • Phát hiện payment processor failure (circuit breaker)
  • Hiển thị message: "Payment processing temporarily unavailable"
  • Cho phép user duyệt catalog, thêm vào giỏ hàng, lưu lại sau
  • Xếp hàng checkout attempts để retry khi dịch vụ khôi phục

Partial functionality > Total failure

#Phần 8: Production Checklist

Trước khi expose API của bạn lên production traffic:

Infrastructure:

  • [ ] API Gateway deployed (Kong, AWS API Gateway, hoặc Nginx)
  • [ ] Cloudflare hoặc equivalent CDN/DDoS protection
  • [ ] Load balancer với health checks
  • [ ] SSL/TLS certificates đã cấu hình
  • [ ] Auto-scaling đã cấu hình cho traffic spikes

Rate Limiting:

  • [ ] Global rate limits đã cấu hình (per IP)
  • [ ] User-tier rate limits (free, paid, enterprise)
  • [ ] Per-endpoint rate limits dựa trên chi phí
  • [ ] Geographic rate limits cho abuse regions
  • [ ] Retry budgets và exponential backoff

Security:

  • [ ] Request validation tại gateway
  • [ ] Authentication/authorization tại gateway
  • [ ] SQL injection protection (WAF rules)
  • [ ] XSS protection đã bật
  • [ ] CORS đã cấu hình đúng
  • [ ] API keys rotated thường xuyên

Fault Tolerance:

  • [ ] Timeouts trên mọi external calls (3–10 giây)
  • [ ] Circuit breakers cho critical dependencies
  • [ ] Graceful degradation cho failures
  • [ ] Async processing cho slow operations
  • [ ] Retry logic với exponential backoff

Monitoring:

  • [ ] Request rate monitoring (mỗi giây)
  • [ ] Error rate monitoring (4xx, 5xx)
  • [ ] Response time monitoring (p50, p95, p99)
  • [ ] Rate limit violation tracking
  • [ ] Geographic traffic analysis
  • [ ] Circuit breaker state monitoring

Alerting:

  • [ ] Traffic spike alerts (> 3x bình thường)
  • [ ] Error rate alerts (> 5%)
  • [ ] Response time alerts (> 1s)
  • [ ] DDoS detection alerts
  • [ ] Circuit breaker open alerts
  • [ ] Runbooks đã ghi chép cho mỗi loại alert

Testing:

  • [ ] Load tested ở 2x expected traffic
  • [ ] Rate limiting đã xác minh (test bị chặn)
  • [ ] Circuit breaker đã test (simulate dependency failure)
  • [ ] Timeout behavior đã test
  • [ ] Graceful degradation đã test
  • [ ] DDoS simulation (controlled test)

#Kết Luận

Cuộc tấn công DDoS lúc 3 giờ sáng đã dạy tôi mọi thứ trong bài viết này.

Chúng tôi đã triển khai:

  • Cloudflare cho edge protection (miễn phí)
  • Kong Gateway cho intelligent routing ($200/tháng)
  • Rate limiting toàn diện qua tất cả các tầng
  • Circuit breakers cho mọi external dependency
  • Giám sát cảnh báo trong 30 giây thay vì 45 phút

Kết quả:

  • Chi phí: Giảm 57% ($4,200 → $1,800/tháng)
  • Dung lượng: Tăng 10x (5,000 → 50,000 concurrent users)
  • Uptime: Cải thiện từ 99.2% lên 99.98%
  • DDoS incidents: Loại bỏ hoàn toàn (0 trong 12 tháng qua)
  • Security incidents: Loại bỏ hoàn toàn
  • Mean time to resolution: Cải thiện 8x (2 giờ → 15 phút)

Bạn không cần phải học những bài học này theo cách đắt đỏ.

Bắt đầu với:

  1. Cloudflare (miễn phí, 10 phút để thiết lập)
  2. Basic rate limiting (100 req/min mỗi IP)
  3. Simple monitoring (traffic, errors, response time)

Sau đó thêm dần:

  1. API Gateway (Kong hoặc AWS)
  2. Circuit breakers
  3. Advanced rate limiting strategies

Mọi production API đều cần một người bảo vệ.

API Gateway chính là người bảo vệ đó.