1. Xác định chiến lược cân bằng tải phù hợp
Load balancing giúp phân phối traffic đến nhiều target như EC2 instances, containers hoặc IP addresses. Trên AWS, mỗi loại Load Balancer được thiết kế cho một kiểu traffic và use case khác nhau.
1.1 Application Load Balancer (ALB) – Layer 7
Application Load Balancer (ALB) hoạt động ở Layer 7. ALB hiểu HTTP/HTTPS request và có thể route traffic dựa trên path, host, header, query string hoặc cookie.
Các tính năng và trường hợp sử dụng chính:
- Lưu lượng HTTP/HTTPS: Phù hợp cho web application và API.
- Định tuyến dựa trên nội dung: Route request dựa trên thông tin bên trong HTTP request.
- Định tuyến dựa trên path: Ví dụ
/apiđi đến một target group,/imagesđi đến target group khác. - Định tuyến dựa trên host: Ví dụ
api.example.comvàapp.example.comcó thể đi đến các target group khác nhau. - Target group: Nhóm EC2 instances, containers hoặc IP addresses nhận traffic từ ALB.
- Hỗ trợ WebSocket: Phù hợp cho ứng dụng realtime cần kết nối lâu dài.
Nói dễ hiểu, ALB giống như “smart router” cho web traffic: nó đọc request rồi chuyển đến đúng service cần xử lý.
1.2 Network Load Balancer (NLB) – Layer 4
Network Load Balancer (NLB) hoạt động ở Layer 4. NLB không đọc nội dung HTTP request, mà route traffic dựa trên protocol, IP address và port.
Các tính năng và trường hợp sử dụng chính:
- Lưu lượng TCP/UDP: Phù hợp với workload dùng TCP, UDP hoặc TLS.
- Hiệu năng cao và độ trễ thấp: Dùng cho workload cần throughput cao và latency thấp.
- Địa chỉ IP tĩnh: Có thể cung cấp static IP cho load balancer.
- Elastic IP: Hỗ trợ Elastic IP để kiểm soát IP address tốt hơn.
1.3 Gateway Load Balancer (GWLB)
Gateway Load Balancer (GWLB) được dùng khi bạn cần triển khai network appliances như firewall, IDS/IPS hoặc DPI trong AWS network path.
Các tính năng và trường hợp sử dụng chính:
- Appliance ảo của bên thứ ba: Dễ tích hợp third-party network appliances vào AWS.
- Transparent bump-in-the-wire: Chèn appliance vào traffic path mà không cần thay đổi application.
- Quản lý tập trung: Giúp scale và quản lý network appliances ở một điểm trung tâm.
1.4 Chọn load balancer phù hợp
- Với lưu lượng HTTP/HTTPS và routing theo content, dùng ALB.
- Với lưu lượng TCP/UDP, cần high performance và low latency, dùng NLB.
- Với firewall, IDS/IPS hoặc network appliances, dùng GWLB.
2. Xác định phương pháp và chiến lược mở rộng phù hợp cho workload co giãn
Scaling giúp workload tăng hoặc giảm compute capacity theo nhu cầu thực tế. Trên AWS, bạn thường gặp hai cách chính: horizontal scaling và vertical scaling.
2.1 Mở rộng theo chiều ngang (Scaling Out/In)
Horizontal scaling nghĩa là thêm hoặc bớt instances để xử lý traffic. Đây là cách rất phổ biến trên cloud vì dễ scale, dễ tự động hóa và tăng availability.
Ưu điểm chính:
- Tính sẵn sàng cao: Traffic được phân phối qua nhiều instances, giúp giảm rủi ro khi một instance lỗi.
- Tính co giãn: Dễ scale out khi traffic tăng và scale in khi traffic giảm.
- Hiệu quả chi phí: Chỉ chạy thêm compute khi thật sự cần.
2.2 Mở rộng theo chiều dọc (Scaling Up/Down)
Vertical scaling nghĩa là đổi instance size, ví dụ từ t3.medium lên t3.large để có nhiều CPU hoặc memory hơn.
Các trường hợp sử dụng chính:
- Ứng dụng không dễ phân tán: Một số application không được thiết kế để chạy trên nhiều instances.
- Tăng hiệu năng ngắn hạn: Hữu ích khi cần thêm tài nguyên nhanh cho một workload cụ thể.
Nói đơn giản: scale up là dùng một máy mạnh hơn, còn scale out là dùng nhiều máy cùng xử lý. Trên cloud, scale out thường là hướng linh hoạt hơn.
2.3 Chiến lược mở rộng
Mở rộng thủ công: Bạn tự điều chỉnh số lượng instances hoặc instance size.
Mở rộng tự động: AWS Auto Scaling tự điều chỉnh capacity dựa trên metrics như CPU utilization, network traffic hoặc request count.
Target tracking scaling: Giữ một metric ở mức mục tiêu, ví dụ giữ CPU trung bình quanh 50%.
Step scaling: Thêm hoặc bớt một số lượng instances theo từng ngưỡng metric.
Scheduled scaling: Scale theo lịch định trước, phù hợp khi traffic có pattern rõ ràng.
2.4 EC2 Hibernation
EC2 Hibernation cho phép stop EC2 instance nhưng vẫn giữ trạng thái RAM. Khi start lại, application có thể tiếp tục gần giống như trước khi hibernate.
- Quy trình chạy lâu: Hữu ích khi bạn muốn tạm dừng rồi tiếp tục workload mà không mất trạng thái.
- Tiết kiệm chi phí: Khi instance hibernate, bạn không trả tiền compute, nhưng vẫn trả tiền cho storage liên quan.
2.5 Các cân nhắc tối ưu chi phí
Right-sizing: Chọn đúng instance type và instance size cho workload.
Reserved Instances (RI): Giảm chi phí cho workload ổn định khi bạn cam kết 1 năm hoặc 3 năm.
Savings Plans: Pricing model linh hoạt hơn RI, phù hợp khi bạn có mức compute usage ổn định.
Spot Instances: Rất rẻ cho workload chịu được interruption như batch job hoặc test environment.
Auto Scaling: Tự động scale capacity theo nhu cầu để tránh lãng phí tài nguyên.
3. Xác định các dịch vụ điện toán AWS hiệu quả về chi phí với các trường hợp sử dụng phù hợp
AWS có nhiều compute services. Mỗi service có cách vận hành, pricing model và use case riêng. Chọn đúng service là bước đầu tiên để tối ưu chi phí.
Dưới đây là các lựa chọn compute phổ biến.
3.1 AWS Lambda
AWS Lambda là serverless compute. Bạn chạy code mà không cần quản lý server, và chỉ trả tiền khi function thật sự chạy.
Trường hợp sử dụng: Xử lý file upload lên S3, phản hồi event từ DynamoDB, xây dựng serverless API hoặc chạy scheduled task.
Tối ưu chi phí: Không có idle cost, phù hợp với event-driven workload và traffic không đều.
3.2 Amazon EC2 (Elastic Compute Cloud)
Amazon EC2 cung cấp virtual servers trên AWS. Bạn kiểm soát instance type, operating system, storage, network và scaling strategy.
On-Demand Instances: Trả tiền theo thời gian sử dụng, không cần cam kết. Phù hợp cho workload ngắn hạn, khó dự đoán hoặc môi trường dev/test.
Reserved Instances: Giảm chi phí so với On-Demand khi bạn cam kết 1 năm hoặc 3 năm. Phù hợp với workload ổn định.
Savings Plans: Giảm chi phí theo cam kết sử dụng compute tính bằng USD/giờ. Linh hoạt hơn RI vì có thể áp dụng rộng hơn cho nhiều compute usage.
Spot Instances: Dùng EC2 spare capacity với chi phí thấp hơn nhiều so với On-Demand. Phù hợp cho workload chịu được interruption như batch processing, data analysis và testing.
Dedicated Hosts: Cung cấp physical server riêng cho EC2 instances. Phù hợp với yêu cầu licensing, compliance hoặc dedicated hardware.
Tối ưu chi phí: Right-size instances, chọn pricing model phù hợp, dùng Auto Scaling và stop hoặc terminate tài nguyên không dùng.
3.3 AWS Fargate
AWS Fargate là serverless compute cho containers. Bạn chạy containers mà không cần quản lý EC2 instances bên dưới.
Trường hợp sử dụng: Containerized applications, microservices và batch jobs.
Tối ưu chi phí: Trả tiền theo vCPU và memory mà containers sử dụng, giảm công sức quản lý infrastructure.
4. Xác định mức tính sẵn sàng cần thiết cho các lớp workload khác nhau
Availability là mức độ hệ thống có thể hoạt động và truy cập được. Availability càng cao thì thiết kế thường càng phức tạp và chi phí càng tăng.
Workload sản xuất: Đây là các application quan trọng, ảnh hưởng trực tiếp đến business và user experience. Thường cần high availability, ví dụ 99,99% hoặc cao hơn.
Tác động chi phí: High availability thường cần Multi-AZ deployment, Load Balancer, redundancy và monitoring tốt hơn. Chi phí cao hơn, nhưng cần thiết cho production workload.
Workload không phải sản xuất: Bao gồm dev, test và staging. Các môi trường này thường không cần availability cao như production.
Tác động chi phí: Có thể dùng instance rẻ hơn, Spot Instances, single Availability Zone hoặc schedule để chỉ chạy khi cần.
Dưới đây là bảng tóm tắt mối quan hệ giữa loại workload, availability và cost impact:
| Loại workload | Yêu cầu tính sẵn sàng | Tác động chi phí |
|---|---|---|
| Sản xuất | Cao, ví dụ 99,99% | Chi phí cao hơn vì cần redundancy, Multi-AZ, Load Balancer và có thể cần instance mạnh hơn. |
| Không phải sản xuất | Thấp đến trung bình, ví dụ 95% đến 99,9% | Chi phí thấp hơn vì có thể dùng Spot Instances, single AZ, instance nhỏ hơn và schedule runtime. |
| Xử lý theo lô | Thay đổi, có thể chịu được gián đoạn | Có thể dùng Spot Instances để tiết kiệm chi phí, miễn là workload có thể retry hoặc restart. |
5. Lựa chọn instance family phù hợp cho workload
AWS có nhiều EC2 instance families. Mỗi family được tối ưu cho một kiểu workload khác nhau.
General Purpose (M instances): Cân bằng CPU, memory và network. Phù hợp cho web servers, application servers và database nhỏ. Ví dụ: m5.large, m6g.medium.
Compute Optimized (C instances): Tối ưu cho CPU-intensive workload như batch processing, media transcoding và high-performance computing. Ví dụ: c5.xlarge, c6i.2xlarge.
Memory Optimized (R, X instances): Tối ưu cho workload cần nhiều memory như in-memory database, analytics và high-performance database. Ví dụ: r5.2xlarge, x2gd.large.
Storage Optimized (I, D instances): Tối ưu cho high IOPS và high disk throughput. Phù hợp với NoSQL database, data warehouse và distributed file system. Ví dụ: i3.xlarge, d2.8xlarge.
Accelerated Computing (P, G, F instances): Dùng hardware accelerators như GPU hoặc FPGA cho machine learning, graphics rendering và video encoding. Ví dụ: p3.2xlarge, g4dn.xlarge.
6. Lựa chọn kích thước phiên bản phù hợp cho workload
Trong mỗi instance family, bạn có nhiều instance sizes khác nhau. Chọn đúng size giúp workload chạy ổn định mà không lãng phí chi phí.
Dưới đây là cách tiếp cận lựa chọn kích thước phiên bản:
Bắt đầu bằng benchmark: Chọn một instance size hợp lý, chạy test với traffic hoặc workload gần thực tế.
Giám sát mức sử dụng tài nguyên: Dùng CloudWatch metrics để theo dõi CPU, memory, network và disk I/O.
Right-size dựa trên mức sử dụng: Nếu resource usage thấp trong thời gian dài, giảm size. Nếu thường xuyên quá tải, tăng size hoặc scale out.
Cân nhắc hiệu năng burstable: T instances có burstable performance, phù hợp với workload có CPU usage thấp nhưng thỉnh thoảng tăng đột biến.
7. Chiến lược tối ưu chi phí
7.1 Sử dụng mô hình giá phù hợp
On-Demand: Không cam kết dài hạn, phù hợp với workload ngắn hạn hoặc khó dự đoán.
Reserved Instances: Cam kết 1 năm hoặc 3 năm để giảm chi phí cho workload ổn định.
Savings Plans: Cam kết mức compute usage để được giá thấp hơn On-Demand, áp dụng cho EC2, Lambda và Fargate.
Spot Instances: Dùng EC2 spare capacity với giá thấp, phù hợp với workload chịu được interruption.
Sử dụng Auto Scaling: Scale EC2 capacity theo nhu cầu thực tế để tránh trả tiền cho tài nguyên nhàn rỗi.
Dừng phiên bản không sử dụng: Stop hoặc terminate instances không còn cần thiết để tránh phát sinh chi phí.
Sử dụng AWS Cost Explorer: Theo dõi AWS spend, phân tích usage pattern và tìm cơ hội cost optimization.
7.2 Ví dụ
Giả sử bạn có một web application với các đặc điểm sau:
- Mức sử dụng CPU trung bình.
- Yêu cầu memory trung bình.
- Traffic pattern khá ổn định.
Trong trường hợp này, General Purpose (M instances) là điểm bắt đầu tốt. Bạn có thể bắt đầu với m5.large, theo dõi CloudWatch metrics, rồi right-size. Nếu CPU thường xuyên dưới 30%, có thể giảm xuống m5.medium để tiết kiệm chi phí.
Ngoài ra, nếu workload ổn định lâu dài, bạn có thể dùng Reserved Instances hoặc Savings Plans để giảm chi phí thêm.