Bài viết Câu hỏi About RongvangIT
profile Pic
0
0

Đăng ngày:

  66 Lượt xem

23 kiến trúc Serverless sử dụng Cloud Run

GCPCloud RunServerless

Trong năm 2023, chúng tôi đã tổ chức một hội thảo Advent Calendar với chủ đề “Khám phá Cloud Run,” giới thiệu các tính năng khác nhau của Cloud Run và cấu hình thường được sử dụng. Trong ngày cuối cùng, ngày thứ 25, chúng tôi giới thiệu một số kiến trúc xoay quanh Cloud Run.

Để biết thông tin chi tiết về Cloud Run, bạn có thể đọc giới thiệu tại “gihyo.jp.”

1. Kiến trúc 3-Tier cho Ứng dụng Web + API (SPA)

Cloud Run

Trong kiến trúc này, ứng dụng trang đơn (SPA) là phía trước, sử dụng Cloud Run làm máy chủ API phía sau. Với việc lưu trữ các tài nguyên tĩnh trong Cloud Storage và kết hợp Cloud Storage và Cloud Run vào Load Balancer ứng dụng, chúng ta có thể thực hiện cấu hình không yêu cầu CORS, khiến cho việc chuyển đổi giữa các đường dẫn và miền trang web trở nên thuận tiện.

2. Kiến trúc 3-Tier cho Ứng dụng Web + API (SSR)

Cloud Run
Đối với kiến trúc này, phần SPA được chuyển đổi sang SSR (Server Side Rendering). HTML và JavaScript được render bởi Cloud Run và các nội dung như hình ảnh được phân phối từ Cloud Storage. Dữ liệu cần lấy khi render từ máy chủ SSR sẽ được lấy từ máy chủ API phía sau.

3. Kiến trúc 2-Tier cho Ứng dụng di động

Cloud Run
Đối với ứng dụng di động, việc đọc và ghi dữ liệu có thể được thực hiện thông qua Firestore để có kiến trúc 2-Tier đơn giản. Cấu trúc này giúp đơn giản hóa và sử dụng Firestore Realtime Listeners cho việc theo dõi sự thay đổi dữ liệu.

4. Cổng API (API Gateway)

Cloud Run
Kiến trúc này sử dụng Cloud Run như một cổng API cho các hệ thống khác hoặc các dịch vụ khác của Google Cloud, giúp gửi API đơn giản đến phía Frontend và trung gian xử lý các yêu cầu đến các máy chủ Backend hoặc Microservices.

5. Ứng dụng hoặc API Web có khả năng sẵn sàng cao

Cloud Run
Kiến trúc này triển khai Cloud Run ở nhiều khu vực và liên kết chúng thông qua Global Load Balancer. Việc sử dụng Spanner làm cơ sở dữ liệu giúp xây dựng cấu trúc có khả năng sẵn sàng cao ở cả hai phía: ứng dụng và cơ sở dữ liệu.

6. Ứng dụng hoặc API Web nội bộ

Cloud Run
Kiến trúc này áp dụng Cloud Run cho các trường hợp sử dụng mà chỉ có thể chạy từ bên trong VPC. Bằng cách đặt một bộ cân bằng tải nội bộ phía trước, nhiều dịch vụ Cloud Run có thể được định tuyến.

7. Kiểm soát truy cập với Identity-Aware Proxy

Cloud Run
Kiến trúc này sử dụng Identity-Aware Proxy (IAP) để quản lý quyền truy cập vào dịch vụ, đồng thời sử dụng Load Balancer để cung cấp proxy lớp bảo vệ. Các tài khoản Google được quản lý bằng IAM giúp kiểm soát quyền truy cập vào dịch vụ.

8. Xác thực với Identity Platform

Cloud Run
Sử dụng Identity Platform của Google Cloud (phiên bản doanh nghiệp của Firebase Authentication) để xác thực người dùng cuối. Điều này giúp tích hợp dễ dàng vào ứng dụng frontend bằng cách sử dụng SDK Identity Platform.

9. Màn hình đăng nhập của Identity Platform

Cloud Run
Đây là cài đặt cần thiết khi sử dụng cấu hình cho phép ID ngoại vi của Identity-Aware Proxy, cho phép bạn dễ dàng triển khai màn hình đăng nhập của Identity Platform lên Cloud Run từ màn hình của Identity-Aware Proxy. Tất nhiên, bạn cũng có thể tự triển khai một màn hình đăng nhập được tùy chỉnh hoàn toàn và lưu trữ trên Cloud Run theo cách bạn mong muốn.

10. Phân phối nội dung (CDN)

Cloud Run
Sử dụng Cloud CDN làm tùy chọn cân bằng tải ứng dụng để giảm lưu lượng đến nguồn gốc và cung cấp các giá trị mặc định cho kiểm soát bộ điều khiển bộ nhớ đệm. Điều này giúp giảm lưu lượng đến nguồn gốc và tối ưu hóa việc cung cấp nội dung.

11. Chặn tấn công và reCAPTCHA Enterprise

Cloud Run
Sử dụng Cloud Armor để cung cấp tường lửa ứng dụng web (WAF) và kết hợp với reCAPTCHA Enterprise để bảo vệ trước các truy cập độc hại và tăng cường bảo mật.

12. Thông báo sự kiện với Eventarc

Cloud Run
Sử dụng Eventarc để nhận thông báo từ các dịch vụ Google Cloud hoặc bên thứ ba và thực hiện hành động dựa trên sự kiện. Điều này có thể bao gồm việc gửi thông báo qua email hoặc Slack, hoặc thậm chí gọi một API của hệ thống.

13. Tùy chỉnh Thông báo Cảnh báo

Cloud Run
Đây là một kiến trúc sử dụng Cloud Run như một Webhook khi xuất hiện cảnh báo từ Cloud Monitoring. Sau khi gọi Cloud Run, thông điệp thông báo được tùy chỉnh trước khi được gửi đến từng kênh thông báo. Mặc dù Cloud Monitoring hỗ trợ thông báo đến các kênh mặc định, nhưng nếu bạn muốn thêm thông tin hoặc tùy chỉnh giao diện thông báo, sử dụng Cloud Run là một giải pháp hiệu quả.

14. Sự kiện Kích hoạt Cloud Storage

Cloud Run
Kiến trúc này sử dụng Eventarc để dễ dàng xây dựng kiến trúc dựa trên sự kiện. Eventarc quản lý sự kiện từ các dịch vụ của Google Cloud hoặc bên thứ ba và khi sự kiện xảy ra, Cloud Run được triển khai. Trong ví dụ này, khi một tệp hình ảnh được tải lên Cloud Storage, Cloud Run được kích hoạt để thực hiện chức năng thay đổi kích thước (chỉnh sửa) và lưu trữ hình ảnh đã được xử lý.

15. Trích xuất Siêu dữ liệu Hình ảnh

Cloud Run
Một kiến trúc phức tạp hơn sử dụng Cloud Storage Event Trigger. Toàn bộ đường ống được quản lý bằng Workflows, và trong Workflows, Cloud Run được gọi để triển khai Vertex AI Vision và trích xuất siêu dữ liệu từ hình ảnh, sau đó lưu trữ vào BigQuery. Mặc dù bạn có thể viết mã logic trực tiếp trong Workflows, việc thực thi logic trong Cloud Run thường được ưu tiên vì nó giúp quản lý và kiểm thử mã logic một cách dễ dàng hơn.

16. Quy trình Phê duyệt

Cloud Run
Kiến trúc sử dụng Workflows để xây dựng quy trình phê duyệt không máy chủ. Biểu mẫu đăng ký được chủ trì bởi Cloud Run và khi có đơn đăng ký, Workflows được kích hoạt. Trong Workflows, Cloud Run được sử dụng để gửi thông điệp qua email và khi người phê duyệt nhận được và xác nhận, API phê duyệt được gọi. Workflows có thể kiểm tra API phê duyệt qua Polling và tiếp tục quy trình sau khi được phê duyệt.

17. Xử lý Đồng thời

Cloud Run
Kiến trúc sử dụng chủ yếu chức năng Cloud Run của Cloud Run Job. Trong ví dụ này, số lượng nhiệm vụ trong công việc được xác định dựa trên số lượng tệp CSV được tải lên Cloud Storage. Mỗi tệp CSV tương ứng với một công việc, và mỗi công việc đọc và xử lý tệp CSV sau đó ghi vào BigQuery. Cloud Run Job cho phép động đặc số lượng nhiệm vụ, nên nó linh hoạt đối với các tình huống không biết trước được số lượng tệp CSV.

18. Xử lý Bất đồng bộ

Cloud Run
Kiến trúc sử dụng tính năng Always on CPU của Cloud Run, đặc biệt thích hợp cho các nhiệm vụ không phụ thuộc vào yêu cầu và phản hồi. Cloud Run truyền thống thường chỉ chạy khi có yêu cầu và sau khi phản hồi được trả về, nhưng Always on CPU giữ cho container sống đến khi công việc hoàn thành. Kiến trúc này quản lý toàn bộ nhiệm vụ trong Workflows và gọi dịch vụ Cloud Run Always on CPU cho xử lý không đồng bộ.

19. Dịch vụ Hàng đợi

Cloud Run
Kiến trúc sử dụng Pub/Sub để xếp hàng tin nhắn và sử dụng Push Subscription để gọi Cloud Run theo thứ tự xử lý các công việc. Khác biệt với FaaS thông thường, Cloud Run có thể chạy 1:N bằng cách sử dụng concurrency, cho phép xử lý hiệu quả chi phí. Có thể sử dụng bộ lọc tin nhắn để định nhóm tin nhắn và chọn Cloud Run phù hợp với từng nhóm.

20. Xử lý Dữ liệu Thời gian thực

Cloud Run
Kiến trúc này thực hiện xử lý dữ liệu theo thời gian thực, sử dụng Pub/Sub để nhận tin nhắn, sau đó sử dụng Push Subscription của Pub/Sub để triệu gọi Cloud Run. Trong Cloud Run, dữ liệu được xử lý và sau đó lưu vào BigQuery. Mặc dù bạn có thể lưu trực tiếp từ Pub/Sub đến BigQuery, nhưng khi bạn muốn thực hiện ETL (Trích xuất, Biến đổi, Nạp), cấu hình như vậy là lựa chọn tốt.

21. Giao diện Web của Cloud Storage

Cloud Run
Trong khi Cloud Storage cho phép quản lý tệp từ bảng điều khiển, có những tình huống khiến việc cấp quyền truy cập cho người dùng không phải là kỹ sư trở nên khó khăn. Trong kiến trúc này, cung cấp một giao diện đồ họa người dùng (GUI) để quản lý tệp tin thông qua Cloud Run. Cloud Storage được gắn kết như một hệ thống tệp tin mạng sử dụng Cloud Storage FUSE, cho phép đọc và ghi tệp tin.

22. Endpoint Mô hình Học máy

Cloud Run
Mô hình được đào tạo bằng AutoML của Vertex AI có thể được lưu trữ thông qua Vertex AI Endpoints. Mặc dù đơn giản, nhưng việc duy trì liên tục có thể tạo ra chi phí lớn khi mô hình chỉ được sử dụng đôi khi. Kiến trúc này xuất mô hình từ Vertex AI Model Registry, containerize nó và triển khai trên Cloud Run để có khả năng mở rộng từ 0 lên N, giảm chi phí khi không sử dụng.

23. Dialogflow + Cloud Run (Webhook Chatbot)

Cloud Run
Dialogflow là một dịch vụ dễ sử dụng để tạo chatbot. Trong khi tạo câu trả lời trong Dialogflow, khi cần thực hiện xử lý phức tạp hoặc kết nối với hành động như mua hàng trong cuộc trò chuyện, bạn sử dụng Webhook. Cloud Run có thể được triệu gọi làm dịch vụ Webhook, mở rộng khả năng của Dialogflow.

Ứng dụng tạo ra từ Vertex AI Conversation, một ứng dụng AI tương tác, cũng có Dialogflow làm nền tảng, nên bạn có thể áp dụng kiến trúc này mà không thay đổi nhiều.

Tổng kết

Đây là một số kiến trúc tập trung chủ yếu vào Cloud Run cho nhiều trường hợp sử dụng khác nhau. Đa dạng những kiến trúc này được giới thiệu dựa trên các yêu cầu thực tế từ khách hàng. Hy vọng rằng một trong những kiến trúc này có thể làm tư duy khi bạn xây dựng kiến trúc thực tế của mình.

Dù đã đến gần cuối năm, nhưng chúc mừng Giáng sinh! Và chúc bạn có một năm mới tốt lành!

aws_pro
Đã có SAA, sẽ lấy SAP trong tương lai gần.

Bình luận

Bài viết chưa có bình luận. Hãy trở thành người bình luận đầu tiên!
Sign up for free and join this conversation.
Sign Up
If you already have a RongvangIT account Login
Danh sách thư mục
Bắt đầu ngay với RồngVàngIT - nền tảng chia sẻ kiến thức lập trình tuyệt vời cho kỹ sư Việt Nam!

Hãy đăng nhập để sử dụng hàng loạt các chức năng tuyệt vời của RồngVàngIT !

  1. 1. Bạn sẽ nhận được các bài viết phù hợp bằng chức năng theo dõi tag và người dùng.
  2. 2. Bạn có thể đọc lại các thông tin hữu ích bằng chức năng lưu trữ nội dung.
  3. 3. Chia sẻ kiến thức, đặt câu hỏi và ghi lại quá trình trưởng thành của mình cùng RồngVàngIT !
Tạo tài khoản Đăng nhập
profile Pic