Well-Architecting online applications with CloudFront and AWS Global Accelerator

Giới thiệu

Trên toàn thế giới, hàng triệu khách hàng đang tích cực sử dụng AWS để xây dựng các ứng dụng cho mọi trường hợp sử dụng có thể tưởng tượng được, với nhiều khu vực mà họ có thể triển khai cơ sở hạ tầng. AWS Region là những địa điểm mà AWS tập hợp các trung tâm dữ liệu và vận hành các dịch vụ khu vực, như AWS Elastic Compute Cloud (EC2) và Amazon Simple Storage Service (S3). Trong trường hợp cụ thể của các ứng dụng trực tuyến, lưu lượng người dùng có thể đi qua nhiều mạng công cộng để đến cơ sở hạ tầng khu vực của khách hàng AWS. Những khách hàng muốn giải quyết những hạn chế của việc truyền qua các mạng không được kiểm soát về mặt hiệu suất và độ tin cậy nên cân nhắc thêm các dịch vụ biên của AWS vào kiến ​​trúc của họ.

Các dịch vụ  biên như Amazon CloudFrontAWS Global Accelerator, hoạt động trên hàng trăm Điểm hiện diện (PoP) được phân phối trên toàn thế giới bên ngoài Khu vực AWS. Người dùng được phục vụ từ các PoP này trung bình trong vòng 20 đến 30 mili giây và khi cần, lưu lượng truy cập của họ được chuyển trở lại cơ sở hạ tầng khu vực của khách hàng qua mạng toàn cầu AWS thay vì đi qua internet công cộng. Cơ sở hạ tầng toàn cầu AWS là cơ sở hạ tầng tư nhân được xây dựng có mục đích, khả dụng cao và độ trễ thấp được xây dựng trên mạng cáp quang toàn cầu, dự phòng hoàn toàn, được liên kết qua cáp trên mặt đất và xuyên đại dương trên khắp thế giới.

Hình 1: Bản đồ của AWS Global Infrastructure network

Ngoài hiệu suất và độ tin cậy, các dịch vụ  biên AWS giúp khách hàng tăng cường khả năng phục hồi chống lại các cuộc tấn công từ chối dịch vụ phân tán (DDoS) của cơ sở hạ tầng. Khách hàng của dịch vụ  biên AWS được hưởng lợi từ hệ thống giảm thiểu DDoS lớn hơn và phân tán hơn, cung cấp khả năng giảm thiểu hàng trăm Tbps trên các PoP. Các dịch vụ  biên AWS cũng sử dụng các kỹ thuật giảm thiểu DDoS tiên tiến như SYN Proxy, cung cấp khả năng bảo vệ chống lại lũ SYN bằng cách gửi các cookie SYN để thách thức các kết nối mới trước khi chúng được phép tiếp tục ngược dòng.

Trong blog này, tôi giải thích cách các ứng dụng trực tuyến có thể được cấu trúc tốt bằng cách sử dụng CloudFront và Global Accelerator.

CloudFront, một thành phần nền tảng cho các ứng dụng web

Amazon CloudFront là Mạng phân phối nội dung của Amazon (CDN). Để sử dụng dịch vụ này, khách hàng tạo bản CloudFront distribution, định cấu hình nguồn gốc của họ (bất kỳ nguồn gốc nào có tên miền có thể truy cập công khai), đính kèm chứng chỉ TLS hợp lệ bằng  Amazon Certificate Manager, sau đó định cấu hình máy chủ DNS có thẩm quyền của họ để trỏ tên miền ứng dụng web của họ đến tên miền được tạo của bản phân phối. Trong giai đoạn phân giải DNS, khi người dùng điều hướng đến ứng dụng web, yêu cầu HTTP (S) được định tuyến động đến CloudFront PoP tốt nhất về độ trễ và tính khả dụng. Sau khi PoP được chọn, người dùng chấm dứt kết nối TCP, bao gồm cả quá trình bắt tay TLS, trên một trong các máy chủ của PoP, sau đó gửi yêu cầu HTTP. Nếu nội dung được lưu vào bộ nhớ cache trong một trong các lớp bộ nhớ cache của CloudFront, yêu cầu sẽ được thực hiện cục bộ bởi CloudFront. Nếu không, yêu cầu được chuyển tiếp đến nguồn gốc. Để tìm hiểu thêm về các bước này, hãy xem A Few Milliseconds in the Life of an HTTP Request.

Nói chung, người dùng tương tác với các ứng dụng web bằng HTTP(S), điều này làm cho CloudFront trở thành thành phần được đề xuất trong kiến ​​trúc. Thông thường, khách hàng sử dụng CloudFront trong các trường hợp như: :

  • Full website delivery. Olx sử dụng CloudFront để phân phối các thương hiệu thương mại điện tử của họ trên các thị trường toàn cầu.
  • Bảo vệ và tăng tốc API. Slack đã giảm một nửa thời gian phản hồi API của họ trên toàn cầu bằng cách tận dụng CloudFront làm proxy ngược.
  • Phát trực tuyến video thích ứng (VoD / Live). M6 sử dụng CloudFront để cải thiện chất lượng phát lại video về thời gian khởi động, tốc độ bit và tốc độ lưu vào bộ đệm.
  • Tải phần mềm. Nordcurrent sử dụng CloudFront để giảm tải cơ sở hạ tầng của họ nhờ vào bộ nhớ đệm và thời gian chờ đợi của game thủ đã giảm tới 90%.

Hình 2: Một ví dụ về triển khai CloudFront

Trong các đoạn sau, bạn sẽ tìm hiểu thêm về cách CloudFront cải thiện tính bảo mật, độ tin cậy và hiệu suất của các ứng dụng web. CloudFront cũng cho phép bạn tối ưu hóa chi phí lưu lượng truy cập đầu ra của mình. Trên thực tế, mô hình định giá cho CloudFront chủ yếu dựa trên số lượng yêu cầu và byte HTTP(S) được phân phát từ các PoP. Khi nguồn gốc được lưu trữ trên AWS, các khoản phí đó sẽ thay thế các khoản phí Chuyển dữ liệu ra ngoài vốn sẽ áp dụng cho nguồn gốc.

Bảo mật

CloudFront xử lý các yêu cầu HTTP(S) đến và chỉ chuyển tiếp các yêu cầu được định dạng tốt, giúp bảo vệ khách hàng chống lại các cuộc tấn công nhất định ở cả lớp phiên (ví dụ: lạm dụng TLS, SlowLoris) và lớp ứng dụng (ví dụ: yêu cầu HTTP(S) không đúng định dạng).

Về phía  của họ trong  mô hình trách nhiệm chung, khách hàng có thể triển khai các biện pháp kiểm soát trong CloudFront để nâng cao vị thế bảo mật của họ. Ví dụ: bạn có thể định cấu hình kiểm soát truy cập bằng cách sử dụng URL đã ký hoặc liên kết WebACL từ AWS Web Application Firewall (AWS WAF). Khi được sử dụng với CloudFront, các quy tắc AWS WAF được thực thi trong CloudFront PoP, cho phép kiểm tra HTTP (S) ở quy mô hàng triệu yêu cầu mỗi giây. Bạn có thể tìm thông tin chuyên sâu về các biện pháp kiểm soát bảo mật của CloudFront trong whitepaper này.

Độ tin cậy

CloudFront đo lường internet trong thời gian thực để định tuyến các yêu cầu đến PoP tốt nhất hiện có và tránh các vấn đề tiềm ẩn, chẳng hạn như tắc nghẽn internet. Bạn cũng có thể tận dụng CloudFront để tăng khả năng phục hồi của các ứng dụng web của mình trong trường hợp lỗi nguồn gốc. Ví dụ: khách hàng có thể định cấu hình bộ nhớ đệm, chuyển đổi dự phòng nguồn gốccác trang lỗi tùy chỉnh để chuyển đổi dự phòng một cách liền mạch . Có thể đạt được chuyển đổi dự phòng nguồn gốc phức tạp hơn khi kết hợp với Amazon Route 53 hoặc AWS Lambda@Edge.

Trình bày

Vì CloudFront xử lý các yêu cầu HTTP(S) trong các PoP phân tán, hiệu suất của các ứng dụng web được nâng cao nhờ những điều sau:

  • Cung cấp nội dung qua các giao thức internet hiện đại như HTTP / 2 hoặc TLS1.3, ngay cả khi nguồn gốc không hỗ trợ nó. Ví dụ: HTTP / 2 có tính năng ghép kênh các yêu cầu qua cùng một kết nối TCP, giải quyết vấn đề Head of Line Blocking trong HTTP 1.1 và do đó giúp tải các ứng dụng web nhanh hơn.
  • Cung cấp nội dung có thể lưu trong bộ nhớ cache cục bộ từ CloudFront PoPs. Bằng cách tránh đi một vòng đến điểm gốc và thời gian phản hồi điểm gốc, các yêu cầu có thể giảm độ trễ hàng chục đến hàng trăm mili giây.
  • Các kết nối bền vững với nguồn gốc. Đôi khi, yêu cầu phải được chuyển tiếp đến nguồn gốc, chẳng hạn như khi nội dung không có trong bộ nhớ cache cục bộ hoặc khi nó hoàn toàn là động, chẳng hạn như các API. Các yêu cầu được chuyển tiếp qua các kết nối liên tục từ các PoP không cần thiết lập kết nối TCP / TLS mới đến nguồn gốc, điều này sẽ loại bỏ độ trễ của nhiều chuyến đi vòng.
  • Di chuyển logic ứng dụng sang CloudFront. Một số logic ứng dụng như ủy quyền, định tuyến hoặc chuyển hướng có thể được chuyển đến CloudFront và được thực thi với độ trễ thấp hơn nhờ bản chất phân tán của PoP. CloudFront nguyên bản cung cấp các tính năng như compression, signed URls, path based routing, .v.v. Để có logic nâng cao hơn, khách hàng có thể sử dụng AWS Lambda @ Edge hoặc CloudFront Functions.

Global Accelerator, tăng tốc ở cấp độ mạng

AWS Global Accelerator là một dịch vụ mạng giúp cải thiện hiệu suất, độ tin cậy và bảo mật cho các ứng dụng trực tuyến của bạn bằng cách sử dụng AWS Global Infrastructure. AWS Global Accelerator có thể được triển khai trước Network Load Balancers, Application Load Balancers, AWS EC2 instances, và Elastic IPs, bất kỳ  dịch vụ nào trong số đó có thể đóng vai trò là điểm cuối Khu vực cho ứng dụng của bạn.

Để sử dụng dịch vụ này, bạn tạo một bộ tăng tốc, cung cấp hai địa chỉ IPv4 anycast tĩnh toàn cầu hoạt động như một điểm vào cố định cho ứng dụng của bạn. Với Global Accelerator, bạn có thể có nhiều điểm cuối ứng dụng hiện diện trong một hoặc nhiều Khu vực AWS nhưng tất cả chúng đều có thể được truy cập bằng cùng một địa chỉ IP anycast. Sau đó, bạn định cấu hình máy chủ DNS có thẩm quyền của mình để trỏ tên miền của ứng dụng web của bạn tới các IP tĩnh chuyên dụng của trình tăng tốc. Các IP anycast này được công bố trên tất cả các PoP của Global Accelerator để định tuyến lưu lượng truy cập của người dùng đến PoP gần nhất, sau đó chuyển tiếp chúng đến điểm cuối khu vực qua mạng toàn cầu AWS. Bạn có thể sử dụng các địa chỉ IP được cấp phát theo mặc định hoặc chọn Mang theo dải IP Riêng (BYOIP) cho các công cụ gia tốc trong tài khoản của bạn chỉ định địa chỉ. Để tìm hiểu thêm về Global Accelerator,, tôi khuyên bạn nên xem Cách AWS Global Accelerator cải thiện hiệu suất, bài nói chuyện từ re: Invent 2020.

Vì AWS Global Accelerator hoạt động ở lớp 4 của mô hình OSI nên nó có thể được sử dụng với bất kỳ ứng dụng TCP / UDP nào. Bạn trả phí Data Transfer-Premium của AWS Global Accelerator (bên cạnh phí Data Transfer Out) cùng với phí tăng tốc hàng giờ để cải thiện hiệu suất và tính khả dụng của các ứng dụng của bạn. Các trường hợp sử dụng ví dụ bao gồm:

  • Chơi game nhiều người chơi dựa trên UDP / TCP. JoyCity đã chứng kiến thời gian chờ mạng giảm theo hệ số 8 ở một số quốc gia nhờ Global Accelerator.
  • Thoại và Video qua IP. CrazyCall sử dụng Global Accelerator để đảm bảo rằng khách hàng của họ có được chất lượng dịch vụ tốt nhất.
  • IOT. BBPOS đã cải thiện độ trễ trung bình 25% bằng cách sử dụng các Ips cố định của Global Accelerator để nhập dữ liệu từ các thiết bị điểm bán hàng di động.
  • Nhập video và tải lên FTP. FlowPlayer sử dụng AWS Global Accelerator để cải thiện hiệu suất và tính khả dụng của quá trình nhập video cho người dùng của họ trên khắp thế giới.
  • Các trường hợp sử dụng khác bao gồm đặt giá thầu VPN, Git và AdTech. Khách hàng cũng có thể xem xét Global Accelerator cho khối lượng công việc HTTP chẳng hạn như API không thể lưu vào bộ nhớ cache trong các tình huống cụ thể (được mô tả kỹ hơn trong phần này).

Hình 3: Một ví dụ về triển khai Global Accelerator

Trong các đoạn sau, bạn sẽ tìm hiểu thêm về cách Global Accelerator cải thiện tính bảo mật, độ tin cậy và hiệu suất của các ứng dụng dành cho người dùng của bạn.

Bảo mật

Ngoài việc tăng khả năng phục hồi của các ứng dụng chống lại các cuộc tấn công DDoS lớp 3 và lớp 4, Global Accelerator chỉ chấp nhận lưu lượng truy cập trên các trình nghe được cấu hình, điều này cho phép bạn giảm bề mặt tấn công ở rìa. Hơn nữa, Global Accelerator không yêu cầu hiển thị các ứng dụng của bạn được xây dựng trên Bộ cân bằng tải ứng dụng và phiên bản EC2 trực tiếp với internet. Điều này cũng cho phép khách hàng phân biệt nguồn gốc của họ khỏi bị tấn công trực tiếp bằng cách giữ họ trong một mạng con riêng tư trong VPC của họ.

Độ tin cậy

Global Accelerator có thiết kế cách ly lỗi giúp tăng tính khả dụng của các ứng dụng trực tuyến. Hai địa chỉ IP của bộ tăng tốc được cung cấp bởi các vùng mạng độc lập. Tương tự như Availability Zones, các vùng mạng này là các đơn vị biệt lập trong một PoP cạnh với cơ sở hạ tầng vật lý của riêng chúng và phục vụ các địa chỉ IP tĩnh từ một mạng con IP duy nhất. Nếu một địa chỉ IP tĩnh không khả dụng do chặn địa chỉ IP hoặc mạng không thể truy cập, các ứng dụng có thể quay trở lại địa chỉ IP tĩnh lành mạnh từ vùng mạng bị cô lập khác.

Global Accelerator cũng cung cấp một tính năng quản lý lưu lượng truyền các thay đổi cấu hình cho tất cả các PoP cạnh trong vòng vài giây. Kiểm tra sức khỏe được chạy từ mỗi PoP cạnh đến mọi vùng khả dụng và Region, theo dõi tình trạng sức khỏe của các điểm cuối. Bất kỳ thay đổi nào về tình trạng điểm cuối đều được phát hiện trong vòng vài giây. Điều này cho phép khách hàng triển khai các kiến ​​trúc multi-Region có tính khả dụng cao với khả năng chuyển đổi dự phòng nhanh chóng mà không phụ thuộc vào DNS.

Cuối cùng, địa chỉ IP tĩnh của Global Accelerator mang lại lợi ích cho tính khả dụng của ứng dụng của bạn trong ba trường hợp chính:

  • Khi người dùng cuối của bạn có thiết bị hoặc trình duyệt không nhận biết được DNS. Trong trường hợp này, Global Accelerator cho phép bạn sửa đổi và thay thế các điểm cuối của ứng dụng, hoặc thậm chí di chuyển các điểm cuối đến một Region khác theo ý muốn mà không cần thực hiện bất kỳ thay đổi nào từ phía khách hàng.
  • Khi người dùng cuối của bạn có thiết bị hoặc trình duyệt không tuân theo bộ nhớ đệm DNS. Với địa chỉ IP tĩnh của Global Accelerator, tính khả dụng của ứng dụng của bạn không bị ảnh hưởng bởi các thiết bị và trình phân giải lưu trữ DNS trong bộ nhớ cache lâu hơn mong muốn của bạn.
  • Khi người dùng cuối của bạn cần cho phép, hãy liệt kê một nhóm nhỏ các địa chỉ IP cố định. Điều này thường xảy ra trong các triển khai doanh nghiệp nơi có các chính sách tường lửa nghiêm ngặt. Nó cũng xuất hiện trong các triển khai IoT. Do đó, rủi ro về tính khả dụng do địa chỉ IP bị định cấu hình sai trên thiết bị hoặc tường lửa được giảm bớt.
 Hiệu suất

Global Accelerator định tuyến lưu lượng truy cập của người dùng đến PoP gần nhất bằng BGP Anycast. Từ đó, Global Accelerator mang lưu lượng người dùng của bạn đến các điểm cuối Khu vực của bạn qua đường trục Amazon. Global Accelerator nâng cao hơn nữa hiệu suất nhờ các kỹ thuật sau:

  • Jumbo frame support. Bằng cách cho phép các jumbo frames giữa vị trí cạnh AWS và điểm cuối ứng dụng trong AWS Region, Global Accelerator có thể gửi và nhận thêm dữ liệu gấp 6 lần (tải trọng) trong mỗi gói. Hỗ trợ khung Jumbo cắt giảm tổng thời gian cần thiết để truyền dữ liệu giữa người dùng và ứng dụng của bạn.
  • TCP termination at the edge. Global Accelerator giảm thời gian thiết lập TCP ban đầu bằng cách thiết lập kết nối TCP giữa máy khách và AWS PoP gần máy khách nhất. Gần như đồng thời, kết nối TCP thứ hai được thực hiện giữa PoP và điểm cuối ứng dụng trong AWS Region.
  • Large receive side window, TCP buffers and congestion window. Đối với lưu lượng kết thúc TCP, Global Accelerator có thể nhận và đệm lượng dữ liệu lớn hơn từ ứng dụng của bạn trong một khoảng thời gian ngắn hơn bằng cách điều chỉnh cửa sổ bên nhận và cài đặt bộ đệm TCP trên cơ sở hạ tầng cạnh AWS. Điều này cung cấp tải xuống nhanh hơn cho khách hàng của bạn, những người hiện đang tìm nạp dữ liệu trong thời gian ngắn hơn trực tiếp từ cạnh AWS. Bằng cách truyền dữ liệu qua mạng toàn cầu AWS, Global Accelerator có thể mở rộng cửa sổ tắc nghẽn TCP để gửi lượng dữ liệu lớn hơn bình thường có thể qua internet công cộng.

Cân nhắc cho các ứng dụng web

Khách hàng sử dụng Amazon CloudFront cho hầu hết các ứng dụng Web dựa trên HTTP(S). Khách hàng nên xem xét AWS Global Accelerator đối với khối lượng công việc HTTP(S) trong các trường hợp phổ biến sau:

  • Static IPs, including BYOIP. Khách hàng có thể muốn hiển thị API của họ thông qua một số IP tĩnh giới hạn cho đối tác của họ hoặc cho thiết bị của họ có IP được mã hóa cứng.
  • Turn key Global Traffic Management. Những khách hàng đang tìm kiếm một giải pháp có sẵn để triển khai kiến trúc nhiều Vùng cho API của họ có thể sử dụng Global Accelerator thay vì xây dựng giải pháp này bằng CloudFront dựa trên AWS Route 53 hoặc Lambda @ Edge.
  • Accelerating tens of thousands of domain names. CloudFrontCertificate Manager có hạn ngạch về số lượng miền có thể được định cấu hình (không bao gồm thiết lập thẻ đại diện như * .example.com). Trong trường hợp này, với tư cách là một SaaS cung cấp hàng chục nghìn API sử dụng tên miền tùy chỉnh, khách hàng có thể sử dụng Global Accelerator với nhóm AWS EC2 đằng sau NLB để xử lý số lượng rất lớn chứng chỉ TLS.

Kết luận

Trong bài đăng trên blog này, chúng tôi đã giải thích cách bạn có thể sử dụng CloudFrontGlobal Accelerator để cải thiện ứng dụng trực tuyến của mình trên ba trụ cột của khuôn khổ AWS Well-Architected framework: Bảo mật, Độ tin cậy và Hiệu suất. AWS cho thấy những cân nhắc tương tự khi thiết kế dịch vụ của họ. Ví dụ:  Edge Optimized Endpoint của Amazon API Gateway được tích hợp với CloudFront để tăng tốc các API động và AWS Amplify Hosting sử dụng CloudFront đằng sau hậu trường để lưu trữ các ứng dụng web tĩnh và phía máy chủ được hiển thị. Điều này cũng được thấy trong  AWS Site to Site VPN, cung cấp tùy chọn tăng tốc thông qua Global Accelerator để cải thiện hiệu suất của các đường hầm VPN. Ví dụ thứ ba là  Amazon S3 Multi-Region Access Points, Amazon S3, một tính năng của Amazon S3 được cung cấp bởi Global Accelerator cho phép bạn xác định các điểm cuối Amazon S3 trải dài các nhóm trong nhiều  AWS Regions.

Cuối cùng, CloudFront và Global Accelerator là những minh họa về phạm vi dịch vụ do AWS cung cấp. Chúng tôi cam kết cung cấp một loạt các lựa chọn cho khách hàng thay vì một giải pháp phù hợp với tất cả. Vui lòng xem xét việc cấu trúc tốt các ứng dụng trực tuyến của bạn bằng cách sử dụng các dịch vụ cạnh AWS này để tối đa hóa hiệu suất, bảo mật và tính khả dụng của các ứng dụng của bạn.


Bài được dịch từ bài viết trên AWS Blogs, bạn có thể xem bài viết gốc tại đây.

Leave a comment