Thursday, November 21, 2024

[AWS] Serverless Website myblog.com

-

Serverless hosted website: MyBlog.com

Để triển khai trang web MyBlog.com với kiến trúc Serverless, có thể sử dụng các dịch vụ và công nghệ của AWS như sau:

  • Sử dụng Amazon S3 để lưu trữ các file tĩnh của trang web như HTML, CSS, Javascript, hình ảnh và các tài liệu khác. Amazon S3 cung cấp khả năng mở rộng toàn cầu và tính sẵn sàng cao. Sử dụng Amazon S3 Transfer Acceleration để tăng tốc độ truy cập từ khắp nơi trên thế giới.
  • Sử dụng Amazon CloudFront để tạo ra một bộ nhớ đệm tĩnh toàn cầu cho trang web. CloudFront sẽ đẩy các file tĩnh từ Amazon S3 đến các vị trí bộ nhớ đệm trên toàn thế giới, giảm thời gian phản hồi và tăng tốc độ tải trang.
  • Sử dụng Amazon API Gateway và AWS Lambda để triển khai RESTful API để xử lý các yêu cầu động của trang web. AWS Lambda giúp tránh phải quản lý máy chủ và có khả năng mở rộng dự án một cách linh hoạt.
  • Sử dụng Amazon DynamoDB để lưu trữ dữ liệu cho trang web. DynamoDB là cơ sở dữ liệu NoSQL phù hợp để lưu trữ và truy xuất dữ liệu dạng văn bản.
  • Sử dụng Amazon Simple Email Service (SES) để gửi email cho người dùng. SES là dịch vụ email được quản lý hoàn toàn bởi AWS và cho phép gửi email trong quy mô lớn.
  • Sử dụng Amazon S3 để lưu trữ các ảnh được tải lên bởi người dùng. Sau đó, sử dụng AWS Lambda và Amazon S3 Event Notification để tự động tạo ra các hình thu nhỏ và lưu chúng lại trên cùng một bucket S3.
  • Sử dụng Amazon ElastiCache để triển khai bộ nhớ đệm dạng bộ nhớ đệm tương tác (in-memory cache) dựa trên Memcached hoặc Redis. Bộ nhớ đệm có thể giúp giảm thời gian phản hồi và tăng tốc độ tải trang cho các yêu cầu được lặp lại.

Leveraging DynamoDB Global Tables

Sơ đồ này mô tả cách sử dụng DynamoDB Global Tables để cung cấp một cơ sở dữ liệu phân tán toàn cầu cho website của bạn. DynamoDB Global Tables cho phép bạn tự động sao chép dữ liệu của bạn sang nhiều khu vực AWS khác nhau để cung cấp truy cập nhanh và phân tán cho người dùng của bạn trên toàn cầu.

Khi người dùng truy cập vào trang web của bạn, truy vấn của họ sẽ được định tuyến đến các edge locations trên toàn cầu của Amazon CloudFront, một dịch vụ CDN (Content Delivery Network) của AWS. Edge locations được phân bố rộng rãi trên toàn cầu, cho phép các truy vấn được xử lý từ nơi gần nhất với người dùng, giảm thiểu độ trễ và tăng tốc độ tải trang.

Trong trường hợp này, Amazon CloudFront sẽ được sử dụng để phân phối nội dung tĩnh của trang web, bao gồm các file HTML, CSS và JavaScript. Bất kỳ yêu cầu nào được gửi đến CloudFront sẽ được xác thực bằng OAC (Origin Access Control) để đảm bảo rằng chỉ có CloudFront Distribution mới được phép truy cập vào file.

Khi người dùng gửi yêu cầu đến REST API của bạn, yêu cầu đó sẽ được định tuyến đến Amazon API Gateway. Sau đó, API Gateway sẽ gọi các hàm Lambda để xử lý yêu cầu và truy vấn DynamoDB Global Tables để lấy dữ liệu. Nếu dữ liệu yêu cầu đã được lưu trong bộ nhớ đệm của DAX (DynamoDB Accelerator), nó sẽ được trả về trực tiếp từ DAX để giảm thiểu độ trễ và tăng tốc độ truy vấn.

Cuối cùng, khi người dùng tải lên một ảnh cho bài đăng trên trang web của bạn, ảnh sẽ được lưu trữ trong Amazon S3. Bất kỳ ảnh nào được tải lên cũng sẽ được xử lý bởi một hàm Lambda để tạo ra một hình thu nhỏ và lưu trữ nó trong S3.

Thumbnail Generation flow

Đây là một tóm tắt về cách triển khai một trang web được lưu trữ trên AWS và sử dụng các dịch vụ của AWS để xử lý các nhu cầu của trang web.

Đầu tiên, trang web sử dụng CloudFront để phân phối nội dung tĩnh như các file HTML, CSS, JavaScript và hình ảnh từ S3. REST API được lưu trữ serverless và được phân phối toàn cầu bằng cách sử dụng một bảng DynamoDB toàn cầu hoặc Aurora Global Database.

Chúng ta đã bật DynamoDB Streams để kích hoạt một chức năng Lambda. Chức năng Lambda có một vai trò IAM có thể sử dụng SES để gửi email theo cách serverless.

Cuối cùng, S3 có thể kích hoạt SQS/SNS/Lambda để thông báo về các sự kiện.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories