0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Sử dụng AWS Global Accelerator và CloudFront hiệu quả

Đăng vào 6 tháng trước

• 5 phút đọc

Giới thiệu

AWS cung cấp nhiều dịch vụ để tối ưu hóa hiệu suất và khả năng sẵn sàng cho ứng dụng của bạn. Hai trong số những dịch vụ phổ biến nhất là AWS Global AcceleratorAmazon CloudFront. Bài viết này sẽ giúp bạn hiểu rõ hơn về từng dịch vụ, cách sử dụng chúng và những điểm khác biệt quan trọng giữa chúng.


1️⃣ AWS Global Accelerator

Mục đích

AWS Global Accelerator giúp cải thiện khả năng sẵn sàng và hiệu suất của lưu lượng TCP/UDP cho người dùng toàn cầu.

Trường hợp sử dụng

Giả sử bạn có các ứng dụng được lưu trữ tại nhiều khu vực AWS (EC2, ALB, NLB) và bạn cần:

  • Định tuyến với độ trễ thấp đến khu vực khỏe mạnh gần nhất.
  • Tự động chuyển hướng nếu một khu vực hoặc điểm cuối gặp sự cố.

Loại lưu lượng

  • Bất kỳ lưu lượng TCP/UDP nào, bao gồm cả các giao thức không phải HTTP (chơi game, IoT, API).

Cơ chế hoạt động

  • Sử dụng địa chỉ IP tĩnh làm điểm vào.
  • Định tuyến lưu lượng qua mạng toàn cầu AWS thay vì Internet công cộng → nhanh hơn và đáng tin cậy hơn.

Ví dụ

  • Ứng dụng web đa vùng với ALB ở us-east-1 và eu-west-1.
  • Người dùng ở Châu Âu → được định tuyến đến eu-west-1, người dùng ở Mỹ → được định tuyến đến us-east-1.
  • Nếu một khu vực gặp sự cố → lưu lượng tự động chuyển đến khu vực khác.

2️⃣ Amazon CloudFront

Mục đích

Amazon CloudFront giúp phân phối nội dung đến người dùng cuối thông qua mạng edge toàn cầu.

Trường hợp sử dụng

  • Bạn cần phân phối nội dung tĩnh hoặc động (trang web, hình ảnh, video, phản hồi API) với độ trễ thấp.

Loại lưu lượng

  • Chỉ HTTP / HTTPS.

Cơ chế hoạt động

  • Lưu cache nội dung tại các vị trí edge gần người dùng.
  • Có thể tích hợp với S3, ALB, API Gateway, hoặc nguồn tùy chỉnh.
  • Cung cấp bảo vệ DDoS thông qua AWS Shield Standard.

Ví dụ

  • Website được lưu trữ tại Mỹ.
  • Người dùng ở Châu Á → nhận nội dung từ điểm edge CloudFront gần nhất thay vì phải di chuyển về Mỹ.
  • Các yêu cầu API động cũng có thể đi qua CloudFront với caching + failover điểm gốc.

3️⃣ Sự khác biệt chính

Tính năng Global Accelerator CloudFront
Giao thức TCP/UDP Chỉ HTTP/HTTPS
Tập trung Khả năng sẵn sàng & định tuyến giữa các khu vực Caching & phân phối nội dung
Độ trễ Tối ưu hóa bởi mạng toàn cầu AWS Tối ưu hóa bởi caching tại edge
Failover Tự động đến các điểm cuối khỏe mạnh Tùy chọn failover gốc
Tốt nhất cho Ứng dụng đa vùng, chơi game, API Website, video, API, tài sản tĩnh

4️⃣ Nguyên tắc cơ bản

  • Sử dụng Global Accelerator → Bạn cần định tuyến nhanh, có sẵn cao cho mọi loại lưu lượng giữa các khu vực.
  • Sử dụng CloudFront → Bạn muốn nội dung được caching tại edge cho HTTP/HTTPS để cải thiện trải nghiệm người dùng và giảm tải cho điểm gốc.

💡 Mẹo bổ sung: Bạn có thể kết hợp cả hai.

  • Sử dụng CloudFront để caching nội dung tại các edge.
  • Sử dụng Global Accelerator để định tuyến người dùng đến điểm gốc khu vực gần nhất nếu bạn có nhiều khu vực.

1️⃣ Ví dụ kịch bản

Máy đề xuất video: Tạo nội dung động (cá nhân hóa).

  • EC2 Auto Scaling phía sau ALB: Tăng quy mô trong một khu vực AWS duy nhất.
  • Người dùng toàn cầu: Hàng triệu người trên toàn thế giới.
  • Thách thức: Giảm độ trễ cho người dùng toàn cầu trong khi tối ưu hóa chi phí.

2️⃣ Các yêu cầu chính

  1. Độ trễ thấp cho người dùng toàn cầu → người dùng ở xa khu vực sẽ gặp phản hồi chậm.
  2. Nội dung động (cá nhân hóa) → không thể chỉ cache mọi thứ; caching có giới hạn.
  3. Khả năng mở rộng → phải xử lý hàng triệu người dùng.
  4. Tối ưu hóa chi phí → không thể triển khai toàn bộ khối lượng công việc ở nhiều khu vực nếu không cần thiết.

3️⃣ Các dịch vụ AWS ứng cử viên

Tùy chọn Phân tích
Amazon CloudFront Tuyệt vời cho việc cache nội dung tĩnh hoặc nội dung động qua các vị trí edge. Hỗ trợ tăng tốc nội dung động (lấy gốc động). Có thể cải thiện hiệu suất cho các API động. Tiết kiệm chi phí, không cần triển khai EC2 toàn cầu.
AWS Global Accelerator Định tuyến lưu lượng qua mạng toàn cầu AWS đến điểm cuối khu vực khỏe mạnh gần nhất. Tối ưu hóa định tuyến TCP/UDP. Hữu ích cho các thiết lập đa vùng. Có thể quá mức nếu bạn chỉ có một khu vực.
Triển khai EC2/ALB ở nhiều khu vực Triển khai thực sự đa vùng giảm độ trễ nhưng tăng chi phí (cơ sở hạ tầng trùng lặp + sao chép giữa các khu vực). Không tối ưu hóa chi phí.

4️⃣ Giải pháp được khuyến nghị: CloudFront với tăng tốc nội dung động

Tại sao?

  1. CloudFront có thể tăng tốc nội dung động bằng cách sử dụng các vị trí edge toàn cầu → giảm độ trễ cho các cuộc gọi API.
  2. Người dùng vẫn truy cập một khu vực backend duy nhất (EC2/ALB), vì vậy không cần triển khai thêm EC2 ở các khu vực khác → tối ưu hóa chi phí.
  3. Hoạt động liền mạch với các gợi ý cá nhân hóa bởi vì CloudFront hỗ trợ cache-control headerslấy gốc động.
  4. Tùy chọn, bạn có thể thêm Lambda@edge để thực hiện cá nhân hóa nhỏ hoặc tiền xử lý tại các vị trí edge nếu cần thiết.

✅ Luồng kiến trúc

Copy
User (Toàn cầu)
   |
   v
CloudFront (vị trí edge toàn cầu)
   |
   v
ALB trong một khu vực duy nhất
   |
   v
EC2 Auto Scaling group (máy đề xuất)
  • Người dùng toàn cầu → yêu cầu được định tuyến đến CloudFront edge gần nhất → CloudFront chuyển tiếp các yêu cầu động đến ALB → EC2 tạo ra các gợi ý cá nhân hóa.
  • Tài sản tĩnh (hình ảnh, hình thu nhỏ, CSS/JS) có thể được cache hoàn toàn tại CloudFront → giảm tải cho EC2.

5️⃣ Tại sao không sử dụng Global Accelerator?

  • GA tốt hơn khi bạn có nhiều điểm cuối khu vực và cần chuyển hướng nhanh + định tuyến tối ưu.
  • Trong trường hợp này: khu vực đơn → GA thêm chi phí nhưng sẽ không giảm độ trễ hiệu quả như CloudFront cho lưu lượng HTTP/HTTPS động.

Kết luận: Sử dụng Amazon CloudFront phía trước ALB + backend EC2.

  • Cải thiện hiệu suất toàn cầu
  • Tự động mở rộng
  • Tiết kiệm chi phí
  • Hỗ trợ cả nội dung tĩnh và động
Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào