Tìm hiểu về CloudFront và Global Accelerator
Giới thiệu
Trong thời đại kỹ thuật số hiện nay, việc cung cấp nội dung nhanh chóng và an toàn cho người dùng trên toàn cầu là một thách thức lớn đối với nhiều doanh nghiệp. Amazon Web Services (AWS) cung cấp hai dịch vụ mạnh mẽ để giải quyết vấn đề này: CloudFront và Global Accelerator.
CloudFront là một mạng phân phối nội dung (CDN) giúp tăng tốc độ tải trang web và cung cấp nội dung tĩnh và động một cách hiệu quả. Trong khi đó, Global Accelerator là một dịch vụ định tuyến mạng giúp cải thiện độ trễ và độ tin cậy của các ứng dụng toàn cầu. Bài viết này sẽ khám phá cách cả hai dịch vụ này có thể tối ưu hóa hiệu suất và bảo mật cho các ứng dụng của bạn, đồng thời cung cấp hướng dẫn cụ thể về việc sử dụng chúng.
Amazon CloudFront
- Content Delivery Network (CDN)
Amazon CloudFront là một mạng phân phối nội dung (CDN) được thiết kế để cải thiện hiệu suất truy cập và trải nghiệm người dùng bằng cách cung cấp nội dung từ các vị trí gần người dùng nhất.
- Cải thiện hiệu suất đọc
CloudFront giúp tăng tốc độ tải trang web và ứng dụng bằng cách lưu trữ các bản sao nội dung tĩnh và động tại các vị trí cạnh (edge locations). Khi người dùng yêu cầu nội dung, CloudFront sẽ cung cấp nội dung từ vị trí cạnh gần nhất, giảm thiểu độ trễ và cải thiện hiệu suất truy cập.
- Cải thiện trải nghiệm người dùng
Việc giảm thiểu độ trễ và tăng tốc độ tải trang giúp cải thiện trải nghiệm người dùng, đặc biệt là đối với các ứng dụng và trang web có lượng truy cập lớn hoặc phân tán trên toàn cầu.
- Hệ thống phân phối toàn cầu
CloudFront có 216 điểm hiện diện trên toàn cầu (edge locations), đảm bảo rằng nội dung luôn được cung cấp từ vị trí gần người dùng nhất, bất kể họ đang ở đâu.
- Bảo vệ chống tấn công DDoS
Nhờ có mạng lưới phân phối toàn cầu, CloudFront cung cấp khả năng bảo vệ chống lại các cuộc tấn công từ chối dịch vụ phân tán (DDoS). CloudFront còn tích hợp chặt chẽ với AWS Shield và AWS Web Application Firewall, cung cấp một lớp bảo mật bổ sung cho ứng dụng của bạn.
CloudFront – Origins
Amazon CloudFront hỗ trợ nhiều nguồn gốc (origins) để phân phối và lưu trữ nội dung. Dưới đây là các loại nguồn gốc chính:
- S3 bucket
CloudFront có thể sử dụng Amazon S3 bucket làm nguồn gốc để phân phối các tệp và lưu trữ chúng tại các vị trí cạnh. Điều này giúp tăng tốc độ truy cập và cung cấp nội dung một cách hiệu quả.
- Phân phối tệp và lưu trữ tại vị trí cạnh: Các tệp được lưu trữ trong S3 bucket có thể được phân phối nhanh chóng và hiệu quả thông qua CloudFront, nhờ vào việc lưu trữ các bản sao tại các vị trí cạnh.
- Bảo mật nâng cao với CloudFront Origin Access Control (OAC): OAC cung cấp một lớp bảo mật bổ sung, thay thế cho Origin Access Identity (OAI), giúp kiểm soát truy cập vào S3 bucket qua CloudFront.
- Sử dụng CloudFront như một điểm vào (ingress): CloudFront cũng có thể được sử dụng để tải tệp lên S3, tạo ra một quy trình nhập liệu hiệu quả.
- Custom Origin (HTTP)
CloudFront hỗ trợ các nguồn gốc tùy chỉnh qua giao thức HTTP, bao gồm:
- Application Load Balancer: CloudFront có thể phân phối nội dung từ Application Load Balancer, giúp cân bằng tải và tối ưu hóa hiệu suất ứng dụng.
- EC2 instance: Các ứng dụng chạy trên EC2 instance có thể sử dụng CloudFront để phân phối nội dung và cải thiện hiệu suất truy cập.
- S3 website: Để sử dụng S3 bucket làm trang web tĩnh, trước tiên bạn phải kích hoạt S3 bucket như một trang web tĩnh. CloudFront sau đó có thể phân phối nội dung từ trang web này.
- Bất kỳ backend HTTP nào: CloudFront có thể tích hợp với bất kỳ backend HTTP nào, cho phép bạn linh hoạt trong việc chọn nguồn gốc phù hợp với nhu cầu của mình.
Ví dụ: CloudFront – S3 as an Origin
Ví dụ: CloudFront – ALB or EC2 as an origin
CloudFront vs S3 Cross Region Replication
- CloudFront
- Mạng lưới cạnh toàn cầu: CloudFront sử dụng mạng lưới các điểm hiện diện (PoP) trên toàn cầu để phân phối nội dung từ vị trí gần người dùng nhất.
- Lưu trữ nội dung tạm thời (TTL): Các tệp được lưu trữ tạm thời tại các vị trí cạnh với thời gian sống (TTL - Time to live) có thể lên đến một ngày, giúp cải thiện tốc độ truy cập cho người dùng.
- Tối ưu cho nội dung tĩnh: CloudFront rất hiệu quả trong việc phân phối nội dung tĩnh mà cần phải có sẵn ở khắp mọi nơi, như hình ảnh, video, và tệp tĩnh.
- S3 Cross Region Replication
S3 Cross Region Replication (CRR) là một tính năng của Amazon S3 cho phép sao chép tự động các đối tượng trong một bucket S3 sang một hoặc nhiều bucket khác ở các khu vực AWS khác nhau.
- Cài đặt cho từng khu vực: CRR phải được thiết lập riêng cho từng khu vực mà bạn muốn sao chép dữ liệu.
- Cập nhật gần thời gian thực: Các tệp được sao chép và cập nhật gần như ngay lập tức khi có thay đổi.
- Chỉ đọc: Các bản sao được sao chép qua CRR chỉ có quyền đọc, không thể chỉnh sửa trực tiếp.
- Tối ưu cho nội dung động: CRR rất phù hợp cho nội dung động cần có sẵn với độ trễ thấp trong một số khu vực nhất định, như cơ sở dữ liệu người dùng hoặc tệp nhật ký.
- So sánh
Đặc điểm | CloudFront | S3 Cross Region Replication |
---|---|---|
Mạng lưới phân phối | Mạng lưới cạnh toàn cầu | Phải thiết lập cho từng khu vực cụ thể |
Thời gian lưu của tệp (TTL) | Lưu trữ tạm thời, có thể lên đến một ngày | Cập nhật gần thời gian thực |
Loại nội dung tối ưu | Nội dung tĩnh cần có sẵn mọi nơi | Nội dung động cần có sẵn với độ trễ thấp |
Quyền truy cập | Phân phối nội dung từ vị trí cạnh | Bản sao chỉ có quyền đọc |
CloudFront Geo Restriction
Amazon CloudFront cho phép bạn kiểm soát quyền truy cập vào nội dung của mình dựa trên vị trí địa lý của người dùng thông qua tính năng Geo Restriction.
- Kiểm soát quyền truy cập
Bạn có thể giới hạn ai có thể truy cập vào phân phối nội dung của mình bằng hai phương pháp:
- Allowlist: Chỉ cho phép người dùng truy cập nội dung của bạn nếu họ nằm trong danh sách các quốc gia được chấp thuận. Điều này hữu ích khi bạn chỉ muốn phục vụ nội dung cho một số quốc gia cụ thể.
- Blocklist: Ngăn chặn người dùng truy cập nội dung của bạn nếu họ nằm trong danh sách các quốc gia bị cấm. Điều này hữu ích khi bạn cần hạn chế quyền truy cập từ một số quốc gia nhất định vì các lý do như luật bản quyền.
- Cách xác định quốc gia
Quốc gia của người dùng được xác định bằng cách sử dụng cơ sở dữ liệu Geo-IP từ bên thứ ba. CloudFront sử dụng cơ sở dữ liệu này để xác định vị trí địa lý của địa chỉ IP người dùng, từ đó áp dụng các hạn chế phù hợp.
- Trường hợp sử dụng
Một trong những trường hợp sử dụng phổ biến của CloudFront Geo Restriction là để tuân thủ các luật bản quyền, giúp bạn kiểm soát quyền truy cập vào nội dung theo quy định của các quốc gia khác nhau.
Dưới đây là phần viết về CloudFront – Price Classes dựa trên thông tin bạn cung cấp:
CloudFront – Price Classes
Amazon CloudFront cung cấp các lớp giá (Price Classes) khác nhau để giúp bạn quản lý chi phí phân phối nội dung bằng cách giới hạn số lượng các điểm hiện diện (edge locations) được sử dụng.
Bằng cách giảm số lượng các điểm hiện diện, bạn có thể giảm chi phí phân phối nội dung mà vẫn duy trì hiệu suất hợp lý. Có ba lớp giá để bạn lựa chọn:
- Price Class All
- Mô tả: Bao gồm tất cả các khu vực trên toàn cầu.
- Hiệu suất: Hiệu suất tốt nhất vì nội dung được phân phối từ tất cả các điểm hiện diện, đảm bảo tốc độ truy cập cao nhất cho người dùng.
- Chi phí: Cao nhất do bao gồm cả các khu vực đắt đỏ.
- Price Class 200
- Mô tả: Bao gồm hầu hết các khu vực, nhưng loại trừ các khu vực đắt đỏ nhất.
- Hiệu suất: Hiệu suất tốt cho hầu hết người dùng trên toàn cầu, trừ những khu vực bị loại trừ.
- Chi phí: Thấp hơn so với Price Class All, vì loại bỏ các khu vực có chi phí cao.
- Price Class 100
- Mô tả: Chỉ bao gồm các khu vực có chi phí thấp nhất.
- Hiệu suất: Hiệu suất tốt cho người dùng trong các khu vực này, nhưng có thể bị ảnh hưởng ở các khu vực khác do ít điểm hiện diện hơn.
- Chi phí: Thấp nhất do chỉ sử dụng các khu vực ít tốn kém nhất.
CloudFront – Cache Invalidations
Khi bạn cập nhật nội dung tại nguồn gốc (origin) phía sau, CloudFront không tự động nhận biết về các thay đổi này và sẽ chỉ làm mới nội dung sau khi thời gian sống (TTL) của cache hết hạn. Tuy nhiên, bạn có thể chủ động làm mới toàn bộ hoặc một phần cache bằng cách thực hiện CloudFront Invalidation.
- Cập nhật nội dung nhanh chóng
- TTL và làm mới cache: Theo mặc định, CloudFront sẽ cung cấp nội dung từ cache tại các điểm hiện diện (edge locations) cho đến khi TTL của nội dung hết hạn. Điều này có thể dẫn đến việc cung cấp nội dung cũ nếu nguồn gốc đã được cập nhật.
- CloudFront Invalidation: Để buộc CloudFront làm mới cache và lấy nội dung mới từ nguồn gốc, bạn có thể thực hiện một thao tác gọi là Invalidation. Điều này sẽ bỏ qua TTL và cập nhật cache ngay lập tức.
- Thực hiện Invalidation
- Invalidate tất cả các tệp: Bạn có thể làm mới toàn bộ cache của CloudFront bằng cách sử dụng ký tự đại diện
*
. Ví dụ, để làm mới tất cả các tệp, bạn sử dụng/*
. - Invalidate một đường dẫn cụ thể: Nếu bạn chỉ muốn làm mới cache cho một phần cụ thể của nội dung, bạn có thể chỉ định đường dẫn cụ thể. Ví dụ, để làm mới tất cả các tệp trong thư mục hình ảnh, bạn sử dụng
/images/*
.
- Trường hợp sử dụng
Cache Invalidations rất hữu ích trong các tình huống như:
- Cập nhật nội dung tĩnh: Khi bạn cập nhật hình ảnh, tệp CSS, hoặc các tệp JavaScript và muốn chúng được phản ánh ngay lập tức trên toàn cầu.
- Triển khai phiên bản mới: Khi bạn triển khai một phiên bản mới của trang web hoặc ứng dụng và cần đảm bảo người dùng nhận được nội dung mới nhất ngay lập tức.
Dưới đây là nội dung được viết dưới dạng file MDX bằng tiếng Việt:
Địa chỉ IP Unicast so với Địa chỉ IP Anycast
- Địa chỉ IP Unicast
- Địa chỉ IP Unicast: Mỗi máy chủ sở hữu một địa chỉ IP duy nhất.
- Hoạt động: Khi một máy chủ có địa chỉ IP Unicast, nó là duy nhất và có thể nhận và xử lý các yêu cầu từ các client trên mạng.
- Địa chỉ IP Anycast
- Địa chỉ IP Anycast: Tất cả các máy chủ trong mạng chia sẻ cùng một địa chỉ IP Anycast. Khi có yêu cầu từ client, hệ thống định tuyến sẽ định tuyến yêu cầu tới máy chủ gần nhất dựa trên tiêu chí như độ trễ, địa lý, hoặc tải lưu lượng.
AWS Global Accelerator
AWS Global Accelerator là dịch vụ của Amazon Web Services (AWS) cải thiện hiệu suất và sẵn sàng của ứng dụng bằng cách sử dụng mạng nội bộ của AWS để định tuyến lưu lượng tới ứng dụng của bạn.
- Sử dụng Địa chỉ IP Anycast: AWS Global Accelerator tạo ra hai địa chỉ IP Anycast cho ứng dụng của bạn. Điều này có nghĩa là tất cả các máy chủ trong mạng AWS sẽ chia sẻ hai địa chỉ IP này.
- Định tuyến tới máy chủ gần nhất: Khi có yêu cầu từ client, hệ thống định tuyến sẽ chuyển tiếp lưu lượng tới máy chủ gần nhất dựa trên các tiêu chí như độ trễ và địa lý.
- Phân phối lưu lượng: Các địa điểm cạnh (Edge locations) của AWS nhận lưu lượng từ các địa chỉ IP Anycast và chuyển tiếp lưu lượng đến ứng dụng của bạn.
- Hiệu suất đồng nhất
- Định tuyến thông minh: Sử dụng định tuyến thông minh để giảm thiểu độ trễ và đảm bảo chuyển mạch nhanh khi có sự cố khu vực.
- Không vấn đề với bộ nhớ cache của khách hàng: Địa chỉ IP ổn định giúp tránh các vấn đề liên quan đến bộ nhớ cache của khách hàng.
- Mạng nội bộ của AWS: Hoạt động trong cơ sở hạ tầng mạng nội bộ mạnh mẽ của AWS.
- Kiểm tra sức khỏe
- Giám sát sức khỏe ứng dụng: Thực hiện kiểm tra sức khỏe liên tục cho các ứng dụng của bạn.
- Mở rộng toàn cầu: Hỗ trợ triển khai ứng dụng toàn cầu với thời gian chuyển đổi dự phòng dưới 1 phút cho các điểm cuối không hoạt động.
- Phòng ngừa thảm họa: Tăng cường khả năng phục hồi thảm họa thông qua giám sát sức khỏe chủ động.
- Bảo mật
- Ít địa chỉ IP cần phê duyệt: Chỉ cần phê duyệt hai địa chỉ IP bên ngoài để truy cập.
- Bảo vệ chống DDoS: Được bảo vệ chống lại tấn công DDoS nhờ vào AWS Shield.
AWS Global Accelerator vs CloudFront
Đặc điểm | AWS Global Accelerator | CloudFront |
---|---|---|
Mạng toàn cầu của AWS | Sử dụng cơ sở hạ tầng mạng toàn cầu của AWS và các điểm hiện diện. | Sử dụng cơ sở hạ tầng mạng toàn cầu của AWS và các điểm hiện diện. |
Tích hợp AWS Shield | Được tích hợp với AWS Shield để bảo vệ khỏi các cuộc tấn công DDoS. | Được tích hợp với AWS Shield để bảo vệ khỏi các cuộc tấn công DDoS. |
Cải thiện hiệu suất | Tối ưu hiệu suất cho nhiều loại ứng dụng qua giao thức TCP hoặc UDP. | Cải thiện hiệu suất cho nội dung có thể cache và động. |
Proxy tại edge | Proxy các gói tin tại các điểm hiện diện đến các ứng dụng trong khu vực AWS. | Phục vụ nội dung trực tiếp từ các điểm hiện diện. |
Trường hợp không phải HTTP | Phù hợp cho các ứng dụng gaming (UDP), IoT (MQTT), hoặc Voice over IP. | Không được tối ưu hóa đặc biệt cho các giao thức không phải HTTP. |
Địa chỉ IP tĩnh | Cung cấp địa chỉ IP tĩnh, lý tưởng cho các ứng dụng HTTP yêu cầu định tuyến xác định. | Sử dụng địa chỉ IP động được gán cho các điểm hiện diện. |
Chuyển đổi dự phòng khu vực nhanh | Cung cấp chuyển đổi dự phòng khu vực nhanh và xác định cho các ứng dụng HTTP. | Không cung cấp khả năng chuyển đổi dự phòng khu vực xác định. |