Xây dựng ứng dụng phân tích serverless với Amazon Redshift và Amazon API Gateway

by David Zhang, Manash Deb, and Pavan Kumar Vadupu Lakshman Manikya | on 24 JAN 2023 | in Advanced (300), Amazon API Gateway, Amazon Redshift, Best Practices, Serverless, Technical How-to | Permalink |  Comments |  Share

Ứng dụng serverless là một cách hiện đại hóa để thực hiện phân tích giữa các bộ phận kinh doanh và nhóm kỹ thuật. Các nhóm kinh doanh có thể có được những hiểu biết sâu sắc có ý nghĩa bằng cách đơn giản hóa báo cáo của họ thông qua các ứng dụng web và phân phối báo cáo đó đến nhiều đối tượng hơn.

Các trường hợp sử dụng có thể bao gồm những trường hợp sau:

  • Bảng điều khiển – Một trang web bao gồm các bảng và biểu đồ trong đó mỗi thành phần có thể cung cấp thông tin chi tiết cho một bộ phận kinh doanh cụ thể.
  • Báo cáo và phân tích – Một ứng dụng mà bạn có thể kích hoạt các truy vấn phân tích lớn với dữ liệu đầu vào động, sau đó xem hoặc tải xuống kết quả.
  • Hệ thống quản lý – Một ứng dụng cung cấp cái nhìn toàn diện về các nguồn lực và hệ thống nội bộ của công ty.
  • Quy trình công việc ETL – Một trang web nơi các cá nhân nội bộ của công ty có thể kích hoạt khối lượng công việc trích xuất, chuyển đổi và tải (ETL) cụ thể trong môi trường thân thiện với người dùng với đầu vào động.
  • Trừu tượng hóa dữ liệu – Tách rời và tái cấu trúc cấu trúc và cơ sở hạ tầng dữ liệu cơ bản.
  • Dễ sử dụng – Một ứng dụng mà bạn muốn cấp cho một lượng lớn quyền truy cập do người dùng kiểm soát vào phân tích mà không cần phải đưa từng người dùng vào nền tảng kỹ thuật. Cập nhật truy vấn có thể được hoàn thành một cách có tổ chức và việc bảo trì có chi phí tối thiểu.

Trong bài đăng này, bạn sẽ tìm hiểu cách xây dựng một ứng dụng phân tích không có máy chủ bằng cách sử dụng Amazon Redshift Data API and Amazon API Gateway WebSocket và REST APIs.

Amazon Redshift được quản lý hoàn toàn bởi AWS, do đó bạn không còn cần phải lo lắng về các tác vụ quản lý kho dữ liệu như cung cấp phần cứng, vá lỗi phần mềm, thiết lập, cấu hình, giám sát nút và ổ đĩa để khôi phục sau lỗi hoặc sao lưu. Data API đơn giản hóa việc truy cập vào Amazon Redshift vì bạn không cần đặt cấu hình trình điều khiển và quản lý kết nối cơ sở dữ liệu. Thay vào đó, bạn có thể chạy các lệnh SQL đến cụm Amazon Redshift bằng cách gọi điểm cuối API bảo mật do API dữ liệu cung cấp. API dữ liệu đảm nhiệm việc quản lý các kết nối cơ sở dữ liệu và lưu trữ dữ liệu vào bộ đệm. API dữ liệu không đồng bộ nên bạn có thể truy xuất kết quả của mình sau.

API Gateway là một dịch vụ được quản lý hoàn toàn giúp các nhà phát triển dễ dàng xuất bản, duy trì, giám sát và bảo mật API ở mọi quy mô. Với API Gateway, bạn có thể tạo API RESTful và API WebSocket hỗ trợ các ứng dụng giao tiếp hai chiều theo thời gian thực. API Gateway hỗ trợ khối lượng công việc được chứa trong bộ chứa và không có máy chủ cũng như các ứng dụng web. API Gateway hoạt động như một proxy ngược cho nhiều tài nguyên điện toán mà AWS cung cấp.

Mô hình hướng sự kiện(Event-driven model)

Các ứng dụng hướng sự kiện ngày càng được khách hàng ưa chuộng. Các ứng dụng web báo cáo phân tích có thể được triển khai thông qua mô hình hướng sự kiện. Các ứng dụng chạy để phản hồi các sự kiện như hành động của người dùng và các sự kiện truy vấn không thể đoán trước. Việc tách rời các quy trình sản xuất và tiêu dùng cho phép linh hoạt hơn trong thiết kế ứng dụng và xây dựng các quy trình tách rời. Thiết kế này có thể đạt được bằng API dữ liệu và API Gateway WebSocket và API REST.

Cả lệnh gọi API REST và WebSocket đều thiết lập liên lạc giữa máy khách và chương trình phụ trợ. Do sự phổ biến của REST, bạn có thể thắc mắc tại sao WebSockets lại xuất hiện và chúng đóng góp như thế nào cho thiết kế hướng sự kiện.

WebSockets là gì và tại sao chúng ta cần chúng?

Giao tiếp một chiều là thông lệ khi xây dựng các giải pháp web phân tích. Trong môi trường truyền thống, máy khách bắt đầu lệnh gọi API REST để chạy truy vấn trên chương trình phụ trợ và chờ truy vấn hoàn tất theo cách đồng bộ hoặc không đồng bộ. Khía cạnh “chờ” được thiết kế để áp dụng khái niệm polling. Polling trong bối cảnh này là khi khách hàng không biết khi nào quá trình phụ trợ sẽ hoàn tất. Do đó, khách hàng sẽ liên tục đưa ra yêu cầu tới phần phụ trợ và kiểm tra.

Vấn đề với Polling là gì? Những thách thức chính bao gồm:

  • Tăng lưu lượng truy cập trong băng thông mạng của bạn – Một số lượng lớn người dùng thực hiện kiểm tra trống sẽ ảnh hưởng đến tài nguyên phụ trợ của bạn và không có quy mô tốt.
  • Sử dụng chi phí – Các yêu cầu trống không mang lại bất kỳ giá trị nào cho doanh nghiệp. Bạn trả tiền cho chi phí tài nguyên không cần thiết.
  • Phản hồi bị trì hoãn – Bỏ phiếu được lên lịch theo khoảng thời gian. Nếu truy vấn hoàn tất trong khoảng thời gian này, người dùng chỉ có thể xem kết quả sau lần kiểm tra tiếp theo. Sự chậm trễ này ảnh hưởng đến trải nghiệm người dùng và trong một số trường hợp có thể dẫn đến bế tắc giao diện người dùng..

Để biết thêm thông tin xem tại Chuyển đổi API bằng cách sử dụng API REST và WebSockets của Amazon API Gateway

WebSockets là một cách tiếp cận khác so với REST API khi thiết lập giao tiếp giữa giao diện người dùng và chương trình phụ trợ. WebSockets cho phép bạn tạo kênh liên lạc song công hoàn chỉnh giữa máy khách và máy chủ. Trong kịch bản hai chiều này, máy khách có thể đưa ra yêu cầu tới máy chủ và được thông báo khi quá trình hoàn tất. Kết nối vẫn mở với chi phí mạng tối thiểu cho đến khi nhận được phản hồi.

Bạn có thể thắc mắc tại sao REST lại xuất hiện vì bạn có thể truyền dữ liệu phản hồi bằng WebSockets. WebSocket là một giao thức nhẹ được thiết kế để nhắn tin theo thời gian thực giữa các hệ thống. Giao thức không được thiết kế để xử lý dữ liệu truy vấn phân tích lớn và trong API Gateway, tải trọng của mỗi khung chỉ có thể giữ tới 32 KB. Vì vậy, REST API được thực hiện  để truy xuất dữ liệu lớn.

Bằng cách sử dụng API dữ liệu và Cổng API, bạn có thể xây dựng các ứng dụng web theo hướng sự kiện riêng biệt cho nhu cầu phân tích dữ liệu của mình. Bạn có thể tạo API WebSocket bằng API Gateway và thiết lập kết nối giữa máy khách và các dịch vụ phụ trợ của mình. Sau đó, bạn có thể bắt đầu yêu cầu thực hiện các truy vấn phân tích bằng API dữ liệu. Do tính chất không đồng bộ của API dữ liệu, việc hoàn thành truy vấn sẽ tạo ra một sự kiện để thông báo cho khách hàng thông qua kênh WebSocket. Máy khách có thể quyết định truy xuất kết quả truy vấn thông qua lệnh gọi API REST hoặc thực hiện các hành động tiếp theo khác. Kiến trúc hướng sự kiện cho phép các thông báo và dữ liệu có thể tương tác hai chiều trong khi vẫn đảm bảo các thành phần hệ thống của bạn luôn độc lập.

Tổng quan về giải pháp

Trong bài đăng này, chúng tôi trình bày cách tạo một ứng dụng web hướng sự kiện không có máy chủ bằng cách truy vấn bằng API dữ liệu trong phần phụ trợ, thiết lập kênh liên lạc hai chiều giữa người dùng và phần phụ trợ bằng tính năng WebSocket trong API Gateway và truy xuất kết quả bằng cách sử dụng tính năng API REST của nó. Thay vì thiết kế một ứng dụng với các lệnh gọi API kéo dài, bạn có thể sử dụng Data API. API dữ liệu cho phép bạn chạy các truy vấn SQL không đồng bộ, loại bỏ nhu cầu giữ các kết nối cơ sở dữ liệu lâu dài và liên tục.

Ứng dụng web được bảo vệ bằng cách sử dụng Amazon Cognito, được sử dụng để xác thực người dùng trước khi họ có thể sử dụng ứng dụng web và cũng cho phép các lệnh gọi API REST khi được thực hiện từ ứng dụng.

Các dịch vụ AWS liên quan khác trong giải pháp này bao gồm AWS LambdaAmazon EventBridge. Lambda là tài nguyên điện toán theo sự kiện, không có máy chủ, cho phép bạn chạy mã mà không cần cung cấp hay quản lý máy chủ. EventBridge là bus sự kiện không có máy chủ cho phép bạn xây dựng các ứng dụng hướng sự kiện.

Giải pháp tạo kết nối WebSocket nhẹ giữa trình duyệt và chương trình phụ trợ. Khi người dùng gửi yêu cầu bằng WebSockets đến chương trình phụ trợ, truy vấn sẽ được gửi tới API dữ liệu. Khi truy vấn hoàn tất, API dữ liệu sẽ gửi thông báo sự kiện tới EventBridge. EventBridge báo hiệu cho hệ thống rằng dữ liệu có sẵn và thông báo cho khách hàng. Sau đó, lệnh gọi API REST được thực hiện để truy xuất kết quả truy vấn cho khách hàng xem.

Chúng tôi đã công bố giải pháp này trên AWS Samples GitHub repository và sẽ tham khảo nó trong phần còn lại của bài đăng này.

Sơ đồ kiến ​​trúc sau nêu bật giải pháp toàn diện mà bạn có thể cung cấp tự động với AWS CloudFormation các mẫu chạy như một phần của tập lệnh shell với một số biến tham số.

Ứng dụng thực hiện các bước sau (lưu ý các bước được đánh số tương ứng trong quy trình):

  1. Một ứng dụng web được cung cấp trên AWS Amplify; người dùng cần đăng ký trước bằng cách cung cấp email và mật khẩu để truy cập trang web.
  2. Người dùng xác minh thông tin đăng nhập của họ bằng cách sử dụng mã pin được gửi đến email của họ. Bước này là bắt buộc để người dùng đăng nhập vào ứng dụng và tiếp tục truy cập vào các tính năng khác của ứng dụng.
  3. Sau khi người dùng đăng ký và xác minh, họ có thể đăng nhập vào ứng dụng và yêu cầu dữ liệu thông qua ứng dụng khách web hoặc thiết bị di động của họ với các thông số đầu vào. Thao tác này sẽ bắt đầu kết nối WebSocket trong API Gateway. (Luồng 1, 2)
  4. Yêu cầu kết nối được xử lý bởi hàm Lambda, OnConnect, khởi tạo truy vấn cơ sở dữ liệu không đồng bộ trong Amazon Redshift bằng API dữ liệu. Truy vấn SQL được lấy từ tập lệnh SQL trong Amazon Simple Storage Service (Amazon S3) với đầu vào năng động từ khách hàng. (Luồng 3, 4, 6, 7)
  5. Ngoài ra, hàm OnConnect Lambda lưu trữ kết nối, mã định danh câu lệnh và tên chủ đề trong một  Amazon DynamoDB cơ sở dữ liệu. Tên chủ đề là thông số bổ sung có thể được sử dụng nếu người dùng muốn triển khai nhiều báo cáo trên cùng một trang web. Điều này cho phép giao diện người dùng ánh xạ các phản hồi tới báo cáo chính xác. (Luồng 3, 4, 5)
  6. API dữ liệu sẽ chạy truy vấn được đề cập ở bước 2. Khi thao tác hoàn tất, một thông báo sự kiện sẽ được gửi tới EventBridge. (Luồng 8)
  7. EventBridge kích hoạt quy tắc sự kiện để chuyển hướng sự kiện đó sang một hàm Lambda khác, SendMessage. (Luồng 9)
  8. Hàm SendMessage thông báo cho khách hàng rằng truy vấn SQL đã hoàn tất thông qua API Gateway. (Luồng 10, 11, 12)
  9. Sau khi nhận được thông báo, máy khách thực hiện lệnh gọi API REST (GET) để tìm nạp kết quả. (Luồng 13, 14, 15, 16)
  10. Hàm GetResult được kích hoạt để truy xuất kết quả truy vấn SQL và trả về máy khách.
  11. Bây giờ người dùng có thể xem kết quả trên trang web.
  12. Khi máy khách ngắt kết nối khỏi trình duyệt của mình, API Gateway sẽ tự động xóa thông tin kết nối khỏi bảng DynamoDB bằng cách sử dụng hàm onDisconnect function. (Luồng 17, 18,19)

Điều kiện tiên quyết

Trước khi triển khai ứng dụng web hướng sự kiện, hãy đảm bảo bạn có những điều sau:

  • Cụm Amazon Redshift trong môi trường AWS của bạn – Đây là giải pháp lưu trữ dữ liệu phụ trợ để chạy các truy vấn phân tích của bạn. Để biết hướng dẫn tạo cụm Amazon Redshift, hãy tham khảo Getting started with Amazon Redshift.
  • Vùng lưu trữ S3 mà bạn có quyền truy cập – Vùng lưu trữ S3 sẽ là giải pháp lưu trữ đối tượng nơi bạn có thể lưu trữ các tập lệnh SQL của mình. Để tạo vùng lưu trữ S3 của bạn, hãy tham khảo Tạo nhóm S3 đầu tiên của bạn.

Triển khai các mẫu CloudFormation

Mã liên quan đến thiết kế có sẵn sau đây GitHub repository. Bạn có thể sao chép kho lưu trữ bên trong  AWS Cloud9 môi trường trong tài khoản AWS của chúng tôi. Môi trường AWS Cloud9 đi kèm với AWS Command Line Interface (AWS CLI) đã cài đặt, được sử dụng để chạy các mẫu CloudFormation nhằm thiết lập cơ sở hạ tầng AWS. Đảm bảo rằng thư viện jQuery đã được cài đặt; chúng tôi sử dụng nó để phân tích cú pháp đầu ra JSON trong quá trình chạy tập lệnh.

Kiến trúc hoàn chỉnh được thiết lập bằng ba mẫu CloudFormation:

  • cognito-setup.yaml – Cấu hình Amazon Cognito để đăng nhập cho ứng dụng web khách, nó được sử dụng cho xác thực và bảo vệ  REST API 
  • backend-setup.yaml – Tạo tất cả những thành phần tài nguyên bắt buộc như lambda function và WebSocket  và Rest API, đồng thời cấu hình chúng trên API Gateway
  • webapp-setup.yaml –Tạo dịch vụ lưu trữ ứng dụng web bằng Amplify để kết nối và giao tiếp với API WebSocket và Rest.

Các mẫu CloudFormation này được chạy bằng cách sử dụng script.sh tập lệnh shell, đảm nhiệm tất cả các phần phụ thuộc theo yêu cầu.

Một mẫu chung được cung cấp để bạn tùy chỉnh các tập lệnh SQL DDL cũng như các tập lệnh SQL truy vấn của riêng bạn. Chúng tôi đã tạo các tập lệnh mẫu để bạn làm theo.

  1. Tải xuống tập lệnh DDL mẫu và tải tập lệnh đó lên vùng lưu trữ S3 hiện có.
  2. Thay đổi giá trị vai trò IAM thành vai trò IAM của cụm Amazon Redshift với quyền đối với AmazonS3ReadOnlyAccess.

Đối với bài đăng này, chúng tôi sao chép tập dữ liệu New York Taxi Data 2015 từ nhóm S3 công khai.

  1. Tải xuống tập lệnh truy vấn mẫu và tải lên vùng lưu trữ S3 hiện có.
  2. Tải tập lệnh DDL mẫu đã sửa đổi và tập lệnh truy vấn mẫu lên bộ chứa S3 có sẵn mà bạn sở hữu và ghi lại đường dẫn URI S3.

Nếu bạn muốn chạy phiên bản tùy chỉnh của riêng mình, hãy sửa đổi DDL và tập lệnh truy vấn để phù hợp với kịch bản của bạn.

  1. Sửa file script.sh trước khi chạy nó và đặt giá trị cho các tham số sau:
  • RedshiftClusterEndpoint (aws_redshift_cluster_ep) – Điểm cuối cụm Amazon Redshift của bạn có sẵn trên Bảng điều khiển quản lý AWS
  • DBUsername (aws_dbuser_name) – Tên người dùng cơ sở dữ liệu Amazon Redshift của bạn
  • DDBTableName (aws_ddbtable_name) – Tên của bảng DynamoDB sẽ được tạo
  • WebsocketEndpointSSMParameterName (aws_wsep_param_name) – Tên tham số lưu trữ điểm cuối WebSocket trong AWS Systems Manager Parameter Store.
  • RestApiEndpointSSMParameterName (aws_rapiep_param_name) – Tên tham số lưu trữ điểm cuối API REST trong Kho lưu trữ tham số.
  • DDLScriptS3Path (aws_ddl_script_path) – URI S3 tới tập lệnh DDL mà bạn đã tải lên.
  • QueryScriptS3Path (aws_query_script_path) – URI S3 tới tập lệnh truy vấn mà bạn đã tải lên.
  • AWSRegion (aws_region) – Khu vực nơi cơ sở hạ tầng AWS đang được thiết lập.
  • CognitoPoolName (aws_user_pool_name) – Tên bạn muốn đặt cho nhóm người dùng Amazon Cognito của mình
  • ClientAppName (aws_client_app_name) – Tên của ứng dụng khách được định cấu hình cho ứng dụng web để xử lý xác thực người dùng cho người dùng

Các giá trị mặc định được chấp nhận đã được cung cấp như một phần của mã được tải xuống.

  1. Chạy tập lệnh bằng lệnh sau:

./script.sh

During deployment, AWS CloudFormation creates and triggers the Lambda function SetupRedshiftLambdaFunction, nó sẽ thiết lập bảng cơ sở dữ liệu Amazon Redshift và điền dữ liệu vào bảng. Sơ đồ sau đây minh họa quá trình này.

demo ứng dụng 

Khi tập lệnh shell hoàn tất, bạn có thể bắt đầu tương tác với ứng dụng web demo:

  1. Trên bảng điều khiển Amplify Khuếch đại, trong Tất cả ứng dụng trong ngăn điều hướng, hãy chọn DemoApp.
  2. Chọn Run build.

Ứng dụng web DemoApp trải qua giai đoạn Cung cấp, Xây dựng, Triển khai.

  1. Khi hoàn tất, hãy sử dụng URL được cung cấp để truy cập ứng dụng web.

Ảnh chụp màn hình sau đây hiển thị trang ứng dụng web. Nó có chức năng tối thiểu: bạn có thể đăng nhập, đăng ký hoặc xác minh người dùng.

  1. Chọn Sign Up.Đăng ký.
  1. Đối với Email ID, nhập email.
  2. Đối với Mật khẩu, hãy nhập mật khẩu dài ít nhất tám ký tự, có ít nhất một chữ hoa và chữ thường, ít nhất một số và ít nhất một ký tự đặc biệt.
  3. Chọn Let’s EnrollHãy đăng ký.

Trang Verify your Login to Demo App Xác minh thông tin đăng nhập của bạn vào ứng dụng demo sẽ mở ra.

  1. Nhập email của bạn và mã xác minh được gửi đến email bạn đã chỉ định.
  2. ChọnVerify  Xác minh.


Bạn được chuyển hướng đến một trang đăng nhập.

  1. Đăng nhập bằng thông tin đăng nhập của bạn.

Bạn được chuyển hướng đến trang web demoPage.html.

  1. Chọn Open Connection.

Bây giờ bạn đã có kết nối WebSocket đang hoạt động giữa trình duyệt và môi trường AWS phụ trợ của mình.

  1. Đối với Trip Month Tháng chuyến đi, hãy chỉ định một tháng (ví dụ này là tháng 12) và chọn Submit.

Bây giờ bạn đã xác định tháng và năm bạn muốn truy vấn dữ liệu của mình. Sau vài giây, bạn có thể thấy kết quả đầu ra được gửi từ WebSocket.

Bạn có thể tiếp tục sử dụng kết nối WebSocket đang hoạt động cho các truy vấn bổ sung—chỉ cần chọn một tháng khác và chọn Gửi lại.

  1. Khi bạn hoàn tất, hãy chọn Close Connection  Đóng kết nối để đóng kết nối WebSocket.

Với mục đích khám phá, trong khi kết nối WebSocket của bạn đang hoạt động, bạn có thể điều hướng đến bảng DynamoDB trên bảng điều khiển DynamoDB để xem các mục hiện được lưu trữ. Sau khi đóng kết nối WebSocket, các mục được lưu trữ trong DynamoDB sẽ bị xóa.

Dọn dẹp

Để dọn sạch tài nguyên của bạn, hãy hoàn thành các bước sau:

  1. Trên bảng điều khiển Amazon S3, hãy điều hướng đến vùng lưu trữ S3 chứa tập lệnh DDL mẫu và tập lệnh truy vấn rồi xóa chúng khỏi vùng lưu trữ.
  2. Trên bảng điều khiển Amazon Redshift, hãy điều hướng đến cụm Amazon Redshift của bạn và xóa dữ liệu bạn đã sao chép khỏi tập lệnh DDL mẫu.
    1. Chạy truncate nyc_yellow_taxi;
    2. Chạy drop table nyc_yellow_taxi;
  3. Trên bảng điều khiển AWS CloudFormation, điều hướng đến ngăn xếp CloudFormation và chọn Xóa. Xóa các ngăn xếp theo thứ tự sau:
    1. WebappSetup
    2. BackendSetup
    3. CognitoSetup

Tất cả tài nguyên được tạo trong giải pháp này sẽ bị xóa.

Giám sát

Bạn có thể theo dõi các sự kiện ứng dụng web theo hướng sự kiện, hoạt động của người dùng và việc sử dụng API bằng Amazon CloudWatchAWS CloudTrail.Hầu hết các khu vực của giải pháp này đã kích hoạt tính năng ghi nhật ký. Để xem nhật ký Cổng API, bạn có thể bật Nhật ký CloudWatch . Lambda đi kèm với tính năng ghi nhật ký và giám sát mặc định và có thể được truy cập bằng CloudWatch.

Bảo vệ

Bạn có thể bảo mật quyền truy cập vào ứng dụng bằng cách sử dụng Amazon Cognito, một giải pháp quản lý người dùng, ủy quyền và xác thực khách hàng lấy nhà phát triển làm trung tâm và tiết kiệm chi phí. Nó cung cấp cả tùy chọn lưu trữ danh tính và liên kết có thể mở rộng quy mô dễ dàng. Amazon Cognito hỗ trợ đăng nhập với các nhà cung cấp danh tính xã hội và nhà cung cấp danh tính dựa trên SAML hoặc OIDC, đồng thời hỗ trợ nhiều tiêu chuẩn tuân thủ khác nhau. Nó hoạt động trên các tiêu chuẩn nhận dạng mở (OAuth2.0, SAML 2.0 và OpenID Connect). Bạn cũng có thể tích hợp nó với API Gateway để xác thực và ủy quyền các lệnh gọi API REST bằng ứng dụng khách Amazon Cognito hoặc hàm Lambda.

Considerations

Bản chất của ứng dụng này bao gồm một máy khách ngoại vi khởi tạo các truy vấn SQL tới Amazon Redshift. Một thành phần quan trọng cần xem xét là các hoạt động độc hại tiềm ẩn mà máy khách có thể thực hiện, chẳng hạn như việc chèn SQL. Với cách thực hiện hiện tại thì điều đó là không thể. Trong giải pháp này, các truy vấn SQL tồn tại trước trong môi trường AWS của bạn và là các câu lệnh DQL (chúng không làm thay đổi dữ liệu hoặc cấu trúc). Tuy nhiên, khi bạn phát triển ứng dụng này để phù hợp với doanh nghiệp của mình, bạn nên đánh giá những lĩnh vực rủi ro này.

AWS cung cấp nhiều dịch vụ bảo mật khác nhau để giúp bạn bảo mật khối lượng công việc và ứng dụng của mình trên đám mây, bao gồm AWS Shield, AWS Network Firewall, AWS Web Application Firewall,và hơn thế nữa. Để biết thêm thông tin và danh sách đầy đủ, hãy tham khảo Security, Identity, and Compliance on AWS.

Tối ưu hóa chi phí

Các dịch vụ AWS mà mẫu CloudFormation cung cấp trong giải pháp này đều không có máy chủ. Về mặt tối ưu hóa chi phí, bạn chỉ trả tiền cho những gì bạn sử dụng. Mô hình này cũng cho phép bạn mở rộng quy mô mà không cần can thiệp thủ công. Xem lại các trang sau để xác định mức giá liên quan cho từng dịch vụ:

Phần kết luận

Trong bài đăng này, chúng tôi đã hướng dẫn bạn cách tạo một ứng dụng hướng sự kiện bằng cách sử dụng API dữ liệu Amazon Redshift và API WebSocket cũng như API REST của API Gateway. Giải pháp này giúp bạn xây dựng các ứng dụng web phân tích dữ liệu theo kiến ​​trúc hướng sự kiện, tách riêng ứng dụng của bạn, tối ưu hóa các quy trình truy vấn cơ sở dữ liệu dài hạn và tránh các yêu cầu thăm dò không cần thiết giữa máy khách và chương trình phụ trợ.

Bạn cũng đã sử dụng các công nghệ không máy chủ, API Gateway, Lambda, DynamoDB và EventBridge. Bạn không phải quản lý hoặc cung cấp bất kỳ máy chủ nào trong suốt quá trình này.

Kiến trúc không có máy chủ, hướng sự kiện này mang lại khả năng mở rộng và đơn giản hơn, giúp duy trì và phát hành các tính năng mới dễ dàng hơn. Việc thêm các thành phần mới hoặc sản phẩm của bên thứ ba cũng được đơn giản hóa.

Với hướng dẫn trong bài đăng này và các mẫu CloudFormation chung mà chúng tôi cung cấp, bạn có thể tùy chỉnh ứng dụng hướng sự kiện của riêng mình phù hợp với doanh nghiệp của mình. Đối với phản hồi hoặc đóng góp, chúng tôi hoan nghênh bạn liên hệ với chúng tôi qua AWS Samples GitHub Repository bằng cách tạo ra một vấn đề..