Phần này tập trung vào cách thiết kế giải pháp điện toán trên AWS sao cho tối ưu chi phí nhưng vẫn đáp ứng được yêu cầu về hiệu năng, khả năng mở rộng và tính sẵn sàng của workload.
Nội dung chính bao gồm cách lựa chọn chiến lược cân bằng tải phù hợp với từng loại lưu lượng, xác định phương pháp mở rộng theo chiều ngang hoặc chiều dọc, sử dụng Auto Scaling, EC2 Hibernation, AWS Lambda, Amazon EC2, AWS Fargate, cũng như các mô hình mua như On-Demand, Reserved Instances, Savings Plans và Spot Instances.
Bên cạnh đó, phần này cũng trình bày cách xác định mức tính sẵn sàng phù hợp cho từng lớp workload, lựa chọn EC2 instance family, chọn kích thước phiên bản phù hợp và áp dụng các chiến lược tối ưu chi phí. Nói ngắn gọn, đây là phần giúp bạn chọn đúng “máy móc” để chạy workload: đủ khỏe để làm việc, nhưng không quá dư đến mức hóa đơn AWS nhìn bạn cũng thấy ngại.
Mục lục
- Xác định chiến lược cân bằng tải phù hợp
- Xác định phương pháp và chiến lược mở rộng phù hợp cho workload co giãn
- Xác định các dịch vụ điện toán AWS hiệu quả về chi phí
- Xác định mức tính sẵn sàng cần thiết cho các lớp workload khác nhau
- Lựa chọn instance family phù hợp cho workload
- Lựa chọn kích thước phiên bản phù hợp cho workload
- Chiến lược tối ưu chi phí
Xác định chiến lược cân bằng tải phù hợp
Cân bằng tải giúp phân phối lưu lượng đến qua nhiều target, chẳng hạn như phiên bản EC2, container hoặc địa chỉ IP. AWS cung cấp một số tùy chọn cân bằng tải khác nhau, mỗi loại phù hợp với một nhóm nhu cầu riêng.
Application Load Balancer (ALB) – Layer 7
Application Load Balancer (ALB) hoạt động ở tầng ứng dụng, tức Layer 7 của mô hình OSI. ALB đưa ra quyết định định tuyến dựa trên nội dung của yêu cầu, chẳng hạn như HTTP header, query string và 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 ứng dụng web và API.
- Định tuyến dựa trên nội dung: Định tuyến lưu lượng dựa trên nội dung của yêu cầu.
- Định tuyến dựa trên path: Định tuyến lưu lượng dựa trên URL path.
- Định tuyến dựa trên host: Định tuyến lưu lượng dựa trên hostname.
- Target group: Nhóm target nhận lưu lượng từ load balancer.
- Hỗ trợ WebSocket: Hỗ trợ các giao thức giao tiếp thời gian thực.
Nói dễ hiểu, ALB giống như lễ tân thông minh của ứng dụng web: nhìn yêu cầu đến từ đâu, cần gặp ai, rồi chuyển đúng bộ phận xử lý.
Network Load Balancer (NLB) – Layer 4
Network Load Balancer (NLB) hoạt động ở tầng vận chuyển, tức Layer 4 của mô hình OSI. NLB đưa ra quyết định định tuyến dựa trên dữ liệu giao thức IP, chẳng hạn như địa chỉ IP và cổng.
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 các ứng dụng sử dụng giao thức TCP hoặc UDP.
- Hiệu năng cao và độ trễ thấp: Phù hợp với các ứng dụng yêu cầu thông lượng cao và độ trễ thấp.
- Địa chỉ IP tĩnh: Cung cấp địa chỉ IP tĩnh cho load balancer.
- Elastic IP: Hỗ trợ Elastic IP để kiểm soát địa chỉ IP tốt hơn.
Gateway Load Balancer (GWLB)
Gateway Load Balancer (GWLB) hoạt động ở Layer 3 (Network Layer) và Layer 4 (Transport Layer). GWLB được thiết kế để triển khai và quản lý các appliance ảo, chẳng hạn như firewall, hệ thống phát hiện và ngăn chặn xâm nhập (IDS/IPS), và hệ thống kiểm tra gói sâu (DPI).
Các tính năng và trường hợp sử dụng chính:
- Appliance ảo của bên thứ ba: Cho phép bạn dễ dàng tích hợp appliance mạng của bên thứ ba vào môi trường AWS.
- Transparent bump-in-the-wire: Chèn appliance vào đường đi mạng mà không yêu cầu thay đổi lưu lượng ứng dụng.
- Quản lý tập trung: Cung cấp một điểm trung tâm để quản lý và mở rộng appliance mạng.
Chọn load balancer phù hợp
- Với lưu lượng HTTP/HTTPS và định tuyến dựa trên nội dung, dùng ALB.
- Với lưu lượng TCP/UDP, yêu cầu hiệu năng cao và độ trễ thấp, dùng NLB.
- Để triển khai và quản lý appliance ảo, dùng GWLB.
Xác định phương pháp và chiến lược mở rộng phù hợp cho workload co giãn
Mở rộng cho phép bạn điều chỉnh năng lực điện toán của ứng dụng dựa trên nhu cầu. AWS cung cấp hai phương pháp mở rộng chính: mở rộng theo chiều ngang và mở rộng theo chiều dọc.
Mở rộng theo chiều ngang (Scaling Out/In)
Mở rộng theo chiều ngang là thêm hoặc xóa phiên bản để xử lý thay đổi về lưu lượng. Đây là phương pháp phổ biến nhất và thường được ưu tiên khi mở rộng trên đám mây.
Ưu điểm chính:
- Tính sẵn sàng cao: Phân phối lưu lượng qua nhiều phiên bản, giúp cải thiện khả năng chịu lỗi.
- Tính co giãn: Dễ dàng mở rộng lên hoặc thu hẹp xuống dựa trên nhu cầu.
- Hiệu quả chi phí: Chỉ trả tiền cho tài nguyên bạn thực sự sử dụng.
Mở rộng theo chiều dọc (Scaling Up/Down)
Mở rộng theo chiều dọc là thay đổi kích thước của một phiên bản hiện có, ví dụ đổi từ t3.medium sang t3.large.
Các trường hợp sử dụng chính:
- Ứng dụng không dễ phân tán: Một số ứng dụng không được thiết kế để chạy trên nhiều phiên bản.
- Tăng hiệu năng ngắn hạn: Có thể được dùng để tăng hiệu năng tạm thời.
Nói vui một chút, scale up giống như đổi từ xe máy sang xe tải, còn scale out giống như gọi thêm nhiều xe máy cùng chạy. Tùy hàng hóa mà chọn cách chở cho hợp lý.
Chiến lược mở rộng
Mở rộng thủ công: Điều chỉnh thủ công số lượng phiên bản hoặc kích thước phiên bản.
Mở rộng tự động: Tự động điều chỉnh số lượng phiên bản dựa trên các chỉ số như mức sử dụng CPU, lưu lượng mạng hoặc số lượng yêu cầu. AWS Auto Scaling cung cấp chức năng này.
Target tracking scaling: Duy trì một giá trị mục tiêu cho một chỉ số cụ thể.
Step scaling: Thêm hoặc xóa một số lượng phiên bản cụ thể dựa trên ngưỡng chỉ số.
Scheduled scaling: Mở rộng phiên bản dựa trên lịch trình được định nghĩa trước.
EC2 Hibernation
EC2 Hibernation cho phép bạn dừng và khởi động phiên bản EC2 trong khi vẫn giữ trạng thái trong bộ nhớ (RAM). Điều này có thể hữu ích trong các trường hợp sau:
- Quy trình chạy lâu: Bạn có thể tạm dừng và tiếp tục các tính toán chạy lâu mà không mất tiến trình.
- Tiết kiệm chi phí: Bạn chỉ trả tiền cho lưu trữ khi phiên bản ở trạng thái hibernate.
Các cân nhắc tối ưu chi phí
Right-sizing: Chọn loại và kích thước phiên bản phù hợp cho workload.
Reserved Instances (RI): Cung cấp mức giảm giá đáng kể so với phiên bản On-Demand cho workload ổn định.
Savings Plans: Cung cấp mô hình giá linh hoạt cho mức sử dụng điện toán, tương tự RI.
Spot Instances: Cung cấp mức giảm giá sâu so với phiên bản On-Demand cho workload có khả năng chịu lỗi.
Auto Scaling: Tự động điều chỉnh số lượng phiên bản để khớp với nhu cầu, giảm thiểu tài nguyên lãng phí.
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 cung cấp nhiều dịch vụ điện toán, mỗi dịch vụ có mô hình giá riêng và trường hợp sử dụng phù hợp. Chọn đúng dịch vụ là yếu tố rất quan trọng để tối ưu chi phí.
Dưới đây là phân tích một số dịch vụ chính.
AWS Lambda
AWS Lambda là dịch vụ điện toán phi máy chủ, cho phép bạn chạy mã mà không cần cung cấp hoặc quản lý máy chủ. Bạn chỉ trả tiền cho thời gian điện toán đã tiêu thụ, khiến dịch vụ này rất hiệu quả về chi phí cho workload hướng sự kiện, tác vụ nền và API có lưu lượng thay đổi.
Trường hợp sử dụng: Xử lý dữ liệu upload lên S3, phản hồi thay đổi trong bảng DynamoDB, xây dựng API phi máy chủ và chạy tác vụ theo lịch.
Tối ưu chi phí: Tính phí theo mức sử dụng, không có chi phí nhàn rỗi.
Amazon EC2 (Elastic Compute Cloud)
Amazon EC2 cung cấp máy chủ ảo trên đám mây, với nhiều loại phiên bản có cấu hình CPU, bộ nhớ và lưu trữ khác nhau. EC2 cung cấp nhiều tùy chọn mua để tối ưu chi phí.
On-Demand Instances: Trả tiền cho năng lực điện toán theo giờ hoặc giây, không có cam kết dài hạn. Phù hợp với workload ngắn hạn, workload khó dự đoán hoặc giai đoạn phát triển ban đầu.
Reserved Instances: Cung cấp mức giảm giá đáng kể so với On-Demand Instances đổi lại cam kết kỳ hạn 1 năm hoặc 3 năm. Phù hợp với workload ổn định có mức sử dụng dự đoán được.
Savings Plans: Cung cấp mô hình giá linh hoạt với chi phí thấp hơn On-Demand Instances, đi kèm cam kết sử dụng một lượng điện toán nhất quán, đo bằng USD/giờ. Savings Plans linh hoạt hơn Reserved Instances vì áp dụng cho nhiều instance family và AWS Region.
Spot Instances: Cung cấp mức giảm giá sâu, có thể lên đến 90% so với giá On-Demand, cho dung lượng EC2 dư thừa. Phù hợp với workload chịu lỗi và có thể bị gián đoạn, chẳng hạn như xử lý theo lô, phân tích dữ liệu và kiểm thử.
Dedicated Hosts: Cung cấp máy chủ vật lý chuyên dụng cho phiên bản EC2 của bạn. Phù hợp với workload có yêu cầu nghiêm ngặt về pháp lý hoặc giấy phép.
Tối ưu chi phí: Right-size phiên bản, sử dụng tùy chọn mua phù hợp như Reserved Instances, Savings Plans hoặc Spot Instances, và dừng phiên bản không sử dụng.
AWS Fargate
AWS Fargate là công cụ điện toán phi máy chủ cho container. Bạn không cần quản lý phiên bản EC2 vì Fargate xử lý hạ tầng bên dưới. Bạn trả tiền cho tài nguyên vCPU và bộ nhớ mà container tiêu thụ.
Trường hợp sử dụng: Chạy ứng dụng container hóa, microservice và batch job.
Tối ưu chi phí: Tính phí theo mức sử dụng, không có overhead quản lý hạ tầng.
Xác định mức tính sẵn sàng cần thiết cho các lớp workload khác nhau
Tính sẵn sàng là phần trăm thời gian một hệ thống hoạt động và có thể truy cập. Các workload khác nhau có yêu cầu tính sẵn sàng khác nhau, và điều này ảnh hưởng trực tiếp đến chi phí của giải pháp.
Workload sản xuất: Đây là các ứng dụng quan trọng, ảnh hưởng trực tiếp đến hoạt động kinh doanh và trải nghiệm khách hàng. Chúng thường yêu cầu tính sẵn sàng cao, ví dụ 99,99% hoặc cao hơn, để giảm thiểu thời gian ngừng hoạt động.
Tác động chi phí: Đạt tính sẵn sàng cao thường liên quan đến triển khai tài nguyên trên nhiều Availability Zone, sử dụng cân bằng tải và triển khai dự phòng. Điều này có thể tăng chi phí, nhưng cần thiết để bảo đảm tính liên tục kinh doanh.
Workload không phải sản xuất: Bao gồm môi trường phát triển, kiểm thử và staging. Chúng thường có yêu cầu tính sẵn sàng thấp hơn workload sản xuất.
Tác động chi phí: Bạn có thể sử dụng loại phiên bản rẻ hơn, Spot Instances và một Availability Zone duy nhất để giảm chi phí. Bạn cũng có thể lên lịch để các môi trường này 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, tính sẵn sàng và tác động chi phí:
| 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 do cần dự phòng, nhiều Availability Zone, cân bằng tải và có thể cần loại phiên bản đắt 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 do có thể dùng Spot Instances, một Availability Zone duy nhất, loại phiên bản rẻ hơn và lập lịch hoạt động. |
| Xử lý theo lô | Thay đổi, có thể chịu được gián đoạn | Có thể sử dụng Spot Instances bất cứ khi nào phù hợp để tiết kiệm chi phí đáng kể. Cần thiết kế để chịu lỗi và có khả năng khởi động lại. |
Lựa chọn instance family phù hợp cho workload
AWS cung cấp nhiều EC2 instance family, mỗi loại được thiết kế cho các loại workload khác nhau.
General Purpose (M instances): Cân bằng tài nguyên điện toán, bộ nhớ và mạng. Phù hợp với nhiều workload, chẳng hạn như web server, application server và cơ sở dữ liệu nhỏ. Ví dụ: m5.large, m6g.medium.
Compute Optimized (C instances): Cung cấp hiệu năng CPU cao. Lý tưởng cho các ứng dụng cần nhiều điện toán, chẳng hạn như xử lý theo lô, chuyển mã media và điện toán hiệu năng cao. Ví dụ: c5.xlarge, c6i.2xlarge.
Memory Optimized (R, X instances): Có lượng bộ nhớ lớn. Rất phù hợp với các ứng dụng cần nhiều bộ nhớ, chẳng hạn như cơ sở dữ liệu trong bộ nhớ, phân tích dữ liệu và cơ sở dữ liệu hiệu năng cao. Ví dụ: r5.2xlarge, x2gd.large.
Storage Optimized (I, D instances): Cung cấp thông lượng đĩa và IOPS cao. Được thiết kế cho các ứng dụng yêu cầu truy cập tốc độ cao vào lượng dữ liệu lớn, chẳng hạn như cơ sở dữ liệu NoSQL, kho dữ liệu và hệ thống tệp phân tán. Ví dụ: i3.xlarge, d2.8xlarge.
Accelerated Computing (P, G, F instances): Sử dụng bộ tăng tốc phần cứng như GPU hoặc FPGA để tăng tốc các workload cụ thể, chẳng hạn như học máy, dựng hình đồ họa và mã hóa video. Ví dụ: p3.2xlarge, g4dn.xlarge.
Lựa chọn kích thước phiên bản phù hợp cho workload
Trong mỗi instance family, có nhiều kích thước phiên bản khác nhau, cung cấp lượng tài nguyên khác nhau như CPU, bộ nhớ, lưu trữ và mạng. Chọn đúng kích thước là điều rất quan trọng để tối ưu 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: Bắt đầu với kích thước phiên bản nhỏ và giám sát hiệu năng của nó dưới workload điển hình.
Giám sát mức sử dụng tài nguyên: Sử dụng CloudWatch metric để theo dõi mức sử dụng CPU, mức sử dụng bộ nhớ, lưu lượng mạng và disk I/O.
Right-size dựa trên mức sử dụng: Nếu tài nguyên thường xuyên bị dùng thấp, giảm xuống phiên bản nhỏ hơn. Nếu tài nguyên thường xuyên bị dùng quá mức, tăng lên phiên bản lớn hơn.
Cân nhắc hiệu năng burstable: Một số loại phiên bản, ví dụ T instances, cung cấp hiệu năng burstable, cho phép chúng xử lý các đợt tăng CPU ngắn hạn. Các loại này có thể hiệu quả về chi phí cho workload có nhu cầu CPU thay đổi.
Chiến lược tối ưu chi phí
Sử dụng mô hình giá phù hợp
On-Demand: Trả tiền cho năng lực điện toán theo giờ hoặc giây, không có cam kết dài hạn. Phù hợp với workload ngắn hạn hoặc workload khó dự đoán.
Reserved Instances: Cung cấp mức giảm giá đáng kể so với giá On-Demand đổi lại cam kết 1 năm hoặc 3 năm. Lý tưởng cho workload ổn định.
Savings Plans: Cung cấp mô hình giá linh hoạt với chi phí thấp hơn On-Demand, đi kèm cam kết 1 hoặc 3 năm. Savings Plans áp dụng cho mức sử dụng EC2, Lambda và Fargate.
Spot Instances: Cho phép bạn sử dụng dung lượng EC2 dư thừa với mức giá giảm đáng kể. Phù hợp với workload chịu lỗi có thể xử lý gián đoạn.
Sử dụng Auto Scaling: Tự động điều chỉnh số lượng phiên bản EC2 dựa trên nhu cầu. Điều này bảo đảm bạn chỉ trả tiền cho tài nguyên cần thiết.
Dừng phiên bản không sử dụng: Terminate phiên bản khi không sử dụng để tránh chi phí không cần thiết.
Sử dụng AWS Cost Explorer: Phân tích chi tiêu AWS và xác định cơ hội tối ưu chi phí.
Ví dụ
Giả sử bạn có một ứng dụng web với các đặc điểm sau:
- Mức sử dụng CPU trung bình.
- Yêu cầu bộ nhớ trung bình.
- Mẫu lưu lượng nhất quán.
Trong trường hợp này, instance family General Purpose (M instances) sẽ là điểm bắt đầu tốt. Bạn có thể bắt đầu với phiên bản m5.large và giám sát hiệu năng. Nếu thấy mức sử dụng CPU thường xuyên dưới 30%, bạn có thể giảm xuống m5.medium để tiết kiệm chi phí.
Ngoài ra, bạn có thể mua Reserved Instances hoặc Savings Plans để tiếp tục giảm chi phí cho workload nhất quán.