</>Học Dev
Bài học

Tuần 6 - Ngày 4: Tối ưu chi phí Data Pipeline

Tuần 6 – Ngày 4

Mục tiêu học tập

  • Nắm mô hình giá của từng lớp: storage, ingestion, compute, query
  • Thuộc các đòn bẩy cost hàng đầu theo service (bảng "cheat")
  • Biết công cụ theo dõi: Cost Explorer, Budgets, CUR, tags
  • Giải bài "most cost-effective" bằng khung phân tích

1. Chi phí theo lớp pipeline

STORAGE   S3 (class, lifecycle, small files) | Redshift storage | log retention
INGEST    Kinesis (shard/GB) | Firehose (GB) | DMS instance | AppFlow run
COMPUTE   Glue (DPU-h) | EMR (EC2/Spot) | Lambda (GB-s) | Flink (KPU-h)
QUERY     Athena ($/TB scan) | Redshift (node/RPU) | Spectrum ($/TB)
TRANSFER  cross-region, NAT gateway, Internet egress

2. Đòn bẩy cost hàng đầu theo service (bảng phải thuộc)

ServiceĐòn bẩy giảm chi phí
S3Lifecycle → IA/Glacier; Intelligent-Tiering khi pattern lạ; gộp small files; xóa incomplete multipart uploads; S3 Storage Lens
AthenaParquet + partition + chọn cột (giảm scan); result reuse; workgroup limits
GlueFlex; Auto Scaling; bookmark (incremental); Python shell cho việc nhỏ; version mới; timeout
EMRSpot cho task nodes; transient cluster; Graviton; managed scaling; S3 thay HDFS
RedshiftServerless cho gián đoạn; Reserved cho 24/7; Spectrum cho dữ liệu lạnh; pause/resume (provisioned dev)
KinesisProvisioned khi đều (rẻ hơn on-demand); KPL aggregation (giảm PUT payload units)
LambdaRight-size memory; Graviton (arm64); batch lớn hơn
CloudWatch LogsĐặt retention; Infrequent Access log class; bớt log thừa
DynamoDBOn-demand ↔ provisioned đúng pattern; TTL dọn dữ liệu; Standard-IA table class
NAT/transferGateway endpoints (S3/DynamoDB) miễn phí thay NAT cho traffic S3; xử lý cùng region

3. Công cụ quản lý chi phí

Công cụCông dụng
Cost ExplorerXem/phân tích chi phí theo service, tag, thời gian; forecast
AWS BudgetsNgưỡng + alert (SNS/email); budget actions
CUR (Cost and Usage Report) / Data ExportsChi tiết dòng-mức, đổ vào S3 — query bằng Athena (pipeline phân tích chi phí!)
Cost allocation tagsGắn tag team/project lên tài nguyên → chi phí theo đội (kích hoạt trong Billing)
Compute Optimizer / Trusted AdvisorGợi ý right-size

4. Khung giải bài "most cost-effective"

  1. Giảm dữ liệu chạm vào: nén, columnar, partition, incremental — đòn bẩy lớn nhất, áp cho mọi lớp
  2. Đúng công cụ theo tần suất: gián đoạn → serverless (Athena, Glue, Redshift Serverless); liên tục ổn định → provisioned/reserved
  3. Đúng tier theo độ nóng: hot/warm/cold — S3 class, UltraWarm, Spectrum
  4. Capacity rẻ khi chịu được gián đoạn: Spot, Flex
  5. Đừng quên chi phí ẩn: NAT gateway, cross-region, log không retention, crawler chạy thừa, cluster idle

Lưu ý bẫy đề: "most cost-effective" vẫn phải thỏa yêu cầu chức năng trước — đáp án rẻ nhất nhưng sai SLA/latency là sai.

5. Ví dụ phân tích nhanh

Pipeline: Firehose → S3 (JSON, không partition) → Athena dashboard mỗi 15 phút → Glue nightly 20 DPU cố định → log Glue giữ vĩnh viễn.

Sửa: Firehose bật convert Parquet + dynamic partitioning → Athena scan giảm ~90%; dashboard bật result reuse; Glue bật Auto Scaling + Flex + bookmark; CloudWatch Logs retention 30 ngày; S3 lifecycle raw → IA/Glacier. Không đổi kiến trúc, chi phí giảm phần lớn.

Câu hỏi ôn tập

  1. Hóa đơn S3 tăng đều dù dữ liệu hữu ích không tăng. Ba nghi phạm phổ biến và cách xử lý?

    Xem đáp án

    (1) Không có lifecycle — dữ liệu cũ vẫn nằm Standard: thêm rule chuyển IA/Glacier/xóa; (2) Incomplete multipart uploadsnoncurrent versions (bucket versioning) tích tụ: lifecycle rule AbortIncompleteMultipartUpload + expire noncurrent versions; (3) small files/bản trung gian job để lại: dọn temp prefix, compaction. Dùng S3 Storage Lens để tìm chỗ phình.

  2. Athena bill $3,000/tháng cho dashboard lặp lại trên JSON. Kế hoạch giảm chi phí theo thứ tự tác động?

    Xem đáp án

    (1) CTAS convert Parquet + partition — giảm scan ~90% (tác động lớn nhất); (2) result reuse cho dashboard lặp — các lần trong TTL không scan; (3) vật thể hóa aggregate vào bảng nhỏ, dashboard query bảng đó; (4) workgroup data usage controls chặn query hoang. Nếu dashboard rất dày → cân nhắc chuyển layer BI sang Redshift.

  3. Khi nào Kinesis provisioned rẻ hơn on-demand, và kỹ thuật producer nào giảm chi phí PUT?

    Xem đáp án

    Provisioned rẻ hơn khi throughput đều và dự đoán được — shard-hour cố định thấp hơn phí per-GB của on-demand ở mức sử dụng cao liên tục (on-demand trả premium cho sự linh hoạt). Producer: KPL aggregation gộp record nhỏ — Kinesis tính PUT payload theo đơn vị 25KB, gộp nhiều record nhỏ vào một PUT giảm số payload unit đáng kể.

  4. Muốn chi phí hiển thị theo từng data product/team. Thiết lập gì?

    Xem đáp án

    (1) Chuẩn hóa tagging (vd team, data-product) trên mọi tài nguyên (job, bucket, cluster, stream); (2) kích hoạt cost allocation tags trong Billing console; (3) xem theo tag trong Cost Explorer, đặt Budgets per team; (4) chi tiết sâu hơn: CUR/Data Exports vào S3 + Athena/QuickSight — chính là một data pipeline cho FinOps.

  5. Glue job trong VPC private subnet đọc/ghi S3 qua NAT gateway sinh phí xử lý lớn. Cách loại bỏ?

    Xem đáp án

    Tạo S3 Gateway VPC endpoint (miễn phí, thêm route vào route table) — traffic S3 đi nội bộ AWS không qua NAT ($/GB). Tương tự DynamoDB có gateway endpoint miễn phí. Các API khác (Glue, KMS, CloudWatch) dùng interface endpoint (có phí giờ nhưng thường vẫn rẻ hơn NAT với volume lớn).

Bài tập thực hành

  • Mở Cost Explorer, group by service — xác định 3 service data tốn nhất trong account lab
  • Tạo Budget $10 với alert SNS
  • Viết lifecycle policy đầy đủ cho bucket raw: 30d → IA, 180d → Glacier, abort multipart 7d, expire noncurrent 30d
  • Đặt retention 30 ngày cho toàn bộ log groups lab

Tài liệu tham khảo chính thức


Tiếp theo: Xử lý lỗi, Retry và Idempotency