Trong thời kỳ số hóa ngày càng phát triển, việc tối ưu hóa hiệu suất và bảo mật cho việc phân phối nội dung trở nên ngày càng quan trọng. Amazon CloudFront là một dịch vụ quan trọng của Amazon Web Services (AWS) được thiết kế để giải quyết các thách thức này. Trong bài viết này, chúng ta sẽ tìm hiểu về Amazon CloudFront là gì, trường hợp sử dụng chủ yếu của nó và cách thiết lập phân phối nội dung cùng với cơ chế bộ nhớ cache chính và phí sử dụng.

CloudFront là gì?

Dịch vụ Amazon CloudFront là một hệ thống giúp tối ưu hóa tốc độ phân phối nội dung trên cả website tĩnh và website động.

CloudFront hoạt động thông qua một mạng lưới toàn cầu của các Edge Location, đây là các địa điểm đặt/thuê trung tâm dữ liệu của AWS và là một phần quan trọng của dịch vụ Amazon CloudFront CDN (Mạng phân phối nội dung). Các Edge Location này thực hiện vai trò của bộ nhớ cache, lưu trữ nội dung như video, API, hoặc ứng dụng để các lưu lượng truy cập từ khu vực biên đó có thể được phục vụ với độ trễ thấp.

Khi một người dùng yêu cầu truy cập nội dung quản lý bởi CloudFront, yêu cầu của họ sẽ được định tuyến đến Edge Location gần nhất, giúp giảm thiểu thời gian chờ đợi. Điều này cải thiện trải nghiệm của người dùng bằng cách giảm thời gian tải nội dung từ máy chủ gốc đến máy tính hoặc thiết bị của họ.

Khi có yêu cầu truy cập nội dung, CloudFront sẽ kiểm tra xem nội dung đã được lưu trữ tại Edge Location gần nhất hay chưa. Nếu nội dung đã tồn tại ở Edge Location đó, dịch vụ sẽ phân phối nhanh chóng nó đến người dùng với độ trễ tối thiểu.

Trong trường hợp nội dung chưa có sẵn tại Edge Location, CloudFront sẽ lấy phiên bản mới nhất từ nguồn gốc, chẳng hạn như Amazon S3 bucket hoặc máy chủ HTTP, và sau đó phân phối nó đến người dùng. Điều này đảm bảo rằng người dùng luôn nhận được phiên bản nội dung mới nhất và tốc độ tải trang được tối ưu hóa. Nhờ các Edge Location, CloudFront có khả năng đáp ứng nhanh chóng các yêu cầu từ các khu vực biên và giúp cải thiện hiệu suất và tốc độ của việc phân phối nội dung trên Internet.

Trường hợp sử dụng chủ yếu

  • Phân phối nội dung website tĩnh

Amazon CloudFront cho phép bạn tối ưu hóa tốc độ phân phối nội dung của website tĩnh, bao gồm hình ảnh, CSS, JavaScript và nhiều tài liệu khác. Bằng cách sử dụng CloudFront, bạn có thể lưu trữ các tệp nội dung tĩnh trong S3 bucket và phân phối chúng từ S3 đến người dùng thông qua mạng lưới toàn cầu của Edge Location.

  • Phân phối video

CloudFront cũng cung cấp giải pháp cho việc phân phối video, bao gồm cả video đã được ghi sẵn và trực tiếp. Trong trường hợp phân phối video theo yêu cầu (Video on Demand – VOD), bạn có thể phân phối trực tuyến video đến các thiết bị khác nhau và hỗ trợ nhiều định dạng tệp video như MPEG DASH, Apple HLS, Microsoft Smooth Streaming, và CMAF (Common Media Application Format). Điều này giúp đảm bảo rằng bạn có khả năng phân phối video một cách hiệu quả và đáp ứng được nhu cầu đa dạng của người xem.

Phương pháp thiết lập phân phối nội dung

Tạo một CloudFront Distribution cho phép bạn điều chỉnh cấu hình chi tiết về cách Amazon CloudFront phân phối nội dung và theo dõi quá trình phân phối nội dung. Khi người dùng yêu cầu nội dung, CloudFront nhanh chóng phân phối nội dung từ máy chủ Edge gần nhất đến họ.

Tham khảo: Amazon CloudFront Developer Guide
Tham khảo: Amazon CloudFront Developer Guide

Phương pháp phân phối nội dung bằng CloudFront: 

  1. Chỉ định máy chủ nguồn: Bắt đầu bằng cách xác định máy chủ nguồn, như một S3 bucket hoặc máy chủ HTTP, từ đó CloudFront sẽ lấy các tài nguyên (object) và phân phối chúng đến toàn thế giới thông qua các Edge Location. Lúc này, phiên bản cuối cùng của đối tượng sẽ được lưu trữ trên máy chủ nguồn. Máy chủ HTTP có thể là một máy chủ EC2 hoặc máy chủ do bạn quản lý (máy chủ nguồn tùy chỉnh).
  1. Tải các đối tượng lên máy chủ nguồn: Các đối tượng có thể bao gồm trang web, hình ảnh, hoặc các tệp phương tiện. CloudFront sẽ lấy các đối tượng này từ máy chủ nguồn để phân phối cho người dùng cuối. Nếu bạn sử dụng một S3 bucket làm máy chủ nguồn, bạn có thể cho phép mọi người truy cập vào các đối tượng trong bucket bằng cách công khai và cho phép đọc, cho phép bất kỳ người dùng nào có URL của đối tượng truy cập. Ngược lại, bạn có thể hạn chế quyền truy cập vào đối tượng bằng cách đặt đối tượng ở chế độ riêng tư và sử dụng URL đã ký hoặc Cookie đã ký.
  1. Tạo CloudFront Distribution: Sau khi đã tải lên các đối tượng, bạn cấu hình CloudFront để xác định máy chủ nguồn và cách phân phối nội dung khi người dùng truy cập trang web hoặc ứng dụng của bạn.
  1. Gán tên miền cho Distribution: CloudFront cung cấp một URL cho Distribution của bạn, ví dụ: d111111XXXXXXX.cloudfront.net. Khi đó, URL của tài nguyên (ví dụ: top.jpg) trong thư mục gốc của máy chủ nguồn sẽ trở thành http://d111111XXXXXXX.cloudfront.net/top.jpg. Bạn cũng có thể cấu hình CloudFront để sử dụng tên miền tùy chỉnh (ví dụ: sunnycloud.jp) cho Distribution của bạn, khi đó URL có thể là http://www.sunnycloud.jp/top.jpg.

Cơ chế bộ nhớ cache chính

Cơ chế cache tại các Edge Location

Để giảm số lượng yêu cầu đối với máy chủ nguồn và cải thiện độ trễ, CloudFront sử dụng hệ thống cache tại các vị trí Edge Location gần người dùng. Điều này giúp giảm tải cho máy chủ nguồn và làm giảm thời gian đợi.

Tỷ lệ cache hit

Tỷ lệ yêu cầu mà CloudFront cung cấp trực tiếp từ cache tại các Edge Location so với tổng số yêu cầu gọi là tỷ lệ cache hit.

Cải thiện tỷ lệ cache hit

Để tăng tỷ lệ cache hit và cải thiện hiệu suất, bạn có thể thực hiện một số biện pháp. Thay vì truy cập nội dung trực tiếp từ máy chủ nguồn, bạn có thể chỉ định giá trị thời gian dài hơn cho max-age hoặc s-maxage bằng cách thêm lệnh Cache-Control max-age hoặc Cache-Control s-maxage cho các đối tượng tại nguồn. Điều này có nghĩa là CloudFront sẽ lưu trữ đối tượng trong cache tại các Edge Location trong khoảng thời gian dài hơn trước khi kiểm tra phiên bản mới từ máy chủ nguồn.

Hãy lưu ý rằng nếu bạn đặt thời gian cache ngắn, CloudFront sẽ thường xuyên gửi các yêu cầu đến máy chủ nguồn để kiểm tra xem có phiên bản mới của đối tượng không.

Phí sử dụng

CloudFront cung cấp hai loại báo cáo sử dụng: Báo cáo thanh toán và Báo cáo tóm tắt sử dụng.

Phí sử dụng CloudFront bao gồm (1), (2) và (3) được hiển thị như hình sau:

Tham khảo: Amazon CloudFront Developer Guide
Tham khảo: Amazon CloudFront Developer Guide
  1. Nếu sử dụng S3 làm máy chủ nguồn, sẽ phát sinh phí lưu trữ S3 bucket. Phí lưu trữ S3 thông thường sẽ được áp dụng cho việc lưu trữ đối tượng trong S3 bucket. Chi phí này sẽ được hiển thị trong phần S3 của AWS Statement.
  1. Cước phí sẽ được tính cho việc cung cấp đối tượng từ vị trí Edge Location. Khi CloudFront đáp ứng yêu cầu đối tượng, sẽ phát sinh phí CloudFront . Phí này bao gồm việc truyền dữ liệu WebSocket từ máy chủ đến máy khách. Cước phí CloudFront này được hiển thị trong phần CloudFront của AWS Statement dưới dạng region – DataTransfer-Out-Bytes.
  1. Cước phí sẽ được tính cho việc gửi dữ liệu đến máy chủ nguồn. Khi người dùng truyền tải đối tượng vào dữ liệu máy chủ nguồn, sẽ phát sinh phí CloudFront. Dữ liệu truyền tải đối tượng bao gồm DELETE, OPTIONS, PATCH, POST, PUT. Phí này bao gồm việc truyền dữ liệu WebSocket từ máy khách đến máy chủ. Cước phí CloudFront này được hiển thị trong phần CloudFront của AWS Statement dưới dạng region – DataTransfer-Out-OBytes.

Tổng kết

Như vậy, Amazon CloudFront là một dịch vụ phân phối nội dung mạnh mẽ, giúp tối ưu hóa hiệu suất và bảo mật phân phối nội dung web và ứng dụng của bạn trên toàn thế giới. Với khả năng tùy chỉnh cao, cơ chế bộ nhớ cache mạnh mẽ và tích hợp với các dịch vụ AWS khác, CloudFront là một công cụ quan trọng cho việc tối ưu hóa trải nghiệm người dùng và bảo mật nội dung trực tuyến của bạn. 

Sử dụng AWS với Sunny Cloud có lợi hơn nhiều so với việc kí hợp đồng trực tiếp.
Bạn sẽ được giảm ngay 3% cho chi phí sử dụng AWS và có thể thanh toán bằng hóa đơn thanh toán VND.