Google cloud platform – Cloud Functions (p1)

6 min read

Trong bài viết này tôi sẽ chia sẻ cho các bạn tổng quan về cloud functions

1. Google Cloud Functions là gì?

Google Cloud Functions là môi trường thực thi không có máy chủ.
Bạn viết các hàm đơn giản, có mục đích duy nhất được gắn vào các sự kiện phát ra từ cơ sở hạ tầng và dịch vụ đám mây của bạn, vì vậy Cloud Functions có thể được chạy với nhiều loại trigger type như:

Bạn có thể viết Hàm đám mây bằng một số ngôn ngữ lập trình được hỗ trợ:

Node.js

RuntimeGenerationEnvironmentRuntime IDRuntime image
Node.js 201st gen, 2nd genUbuntu 22.04nodejs20gcr.io/gae-runtimes/buildpacks/nodejs20/run
Node.js 181st gen, 2nd genUbuntu 22.04nodejs18gcr.io/gae-runtimes/buildpacks/nodejs18/run
Node.js 161st gen, 2nd genUbuntu 18.04nodejs16gcr.io/gae-runtimes/buildpacks/nodejs16/run
Node.js 141st gen, 2nd genUbuntu 18.04nodejs14gcr.io/gae-runtimes/buildpacks/nodejs14/run
Node.js 121st gen, 2nd genUbuntu 18.04nodejs12gcr.io/gae-runtimes/buildpacks/nodejs12s/run
Node.js 101st gen, 2nd genUbuntu 18.04nodejs10gcr.io/gae-runtimes/buildpacks/nodejs10/run
Node.js 81st gen, 2nd genUbuntu 18.04nodejs8gcr.io/gae-runtimes/buildpacks/nodejs8/run
Node.js 61st gen, 2nd genUbuntu 18.04nodejs6gcr.io/gae-runtimes/buildpacks/nodejs6/run

Python

RuntimeGenerationEnvironmentRuntime IDRuntime image
Python 3.121st gen, 2nd genUbuntu 22.04python312gcr.io/gae-runtimes/buildpacks/python312/run
Python 3.111st gen, 2nd genUbuntu 22.04python311gcr.io/gae-runtimes/buildpacks/python311/run
Python 3.101st gen, 2nd genUbuntu 22.04python310gcr.io/gae-runtimes/buildpacks/python310/run
Python 3.91st gen, 2nd genUbuntu 18.04python39gcr.io/gae-runtimes/buildpacks/python39/run
Python 3.81st gen, 2nd genUbuntu 18.04python38gcr.io/gae-runtimes/buildpacks/python38/run
Python 3.71st genUbuntu 18.04python37gcr.io/gae-runtimes/buildpacks/python37/run

Go 

RuntimeGenerationEnvironmentRuntime IDRuntime image
Go 1.222nd genUbuntu 22.04go122gcr.io/gae-runtimes/buildpacks/go122/run
Go 1.211st gen, 2nd genUbuntu 22.04go121gcr.io/gae-runtimes/buildpacks/go121/run
Go 1.201st gen, 2nd genUbuntu 22.04go120gcr.io/gae-runtimes/buildpacks/go120/run
Go 1.191st gen, 2nd genUbuntu 22.04go119gcr.io/gae-runtimes/buildpacks/go119/run
Go 1.181st gen, 2nd genUbuntu 22.04go118gcr.io/gae-runtimes/buildpacks/go118/run
Go 1.161st gen, 2nd genUbuntu 18.04go116gcr.io/gae-runtimes/buildpacks/go116/run
Go 1.131st gen, 2nd genUbuntu 18.04go113gcr.io/gae-runtimes/buildpacks/go113/run
Go 1.121st gen, 2nd genUbuntu 18.04go112gcr.io/gae-runtimes/buildpacks/go112/run
Go 1.111st gen, 2nd genUbuntu 18.04go111gcr.io/gae-runtimes/buildpacks/go111/run

Lưu ý: Chính sách phát hành của Go nêu rõ rằng mỗi bản phát hành chính của Go đều được hỗ trợ cho đến khi có hai bản phát hành chính mới hơn. Những ngày quan trọng có thể không có sẵn cho đến khi các phiên bản Go mới hơn được cung cấp công khai.

Java 

RuntimeGenerationEnvironmentRuntime IDRuntime image
Java 212nd genUbuntu 22.04java21gcr.io/gae-runtimes/buildpacks/java21/run
Java 171st gen, 2nd genUbuntu 22.04java17gcr.io/gae-runtimes/buildpacks/java17/run
Java 111st gen, 2nd genUbuntu 18.04java11gcr.io/gae-runtimes/buildpacks/java11/run

Ruby

RuntimeGenerationEnvironmentRuntime IDRuntime image
Ruby 3.21st gen, 2nd genUbuntu 22.04ruby32gcr.io/gae-runtimes/buildpacks/ruby32/run
Ruby 3.01st gen, 2nd genUbuntu 18.04ruby30gcr.io/gae-runtimes/buildpacks/ruby30/run
Ruby 2.71st gen, 2nd genUbuntu 18.04ruby27gcr.io/gae-runtimes/buildpacks/ruby27/run
Ruby 2.61st gen, 2nd genUbuntu 18.04ruby26gcr.io/gae-runtimes/buildpacks/ruby26/run

PHP

RuntimeEnvironmentGenerationRuntime IDRuntime image
PHP 8.32nd genUbuntu 22.04php83gcr.io/gae-runtimes/buildpacks/php83/run
PHP 8.21st gen, 2nd genUbuntu 22.04php82gcr.io/gae-runtimes/buildpacks/php82/run
PHP 8.11st gen, 2nd genUbuntu 18.04php81gcr.io/gae-runtimes/buildpacks/php81/run
PHP 7.41st gen, 2nd genUbuntu 18.04php74gcr.io/gae-runtimes/buildpacks/php74/run

.NET Core

RuntimeGenerationEnvironmentRuntime IDRuntime image
.NET Core 82nd genUbuntu 22.04dotnet8gcr.io/gae-runtimes/buildpacks/dotnet8/run
.NET Core 61st gen, 2nd genUbuntu 22.04dotnet6gcr.io/gae-runtimes/buildpacks/dotnet6/run
.NET Core 31st gen, 2nd genUbuntu 18.04dotnet3gcr.io/gae-runtimes/buildpacks/dotnet3/run

Cloud Functions cung cấp hai phiên bản sản phẩm: Cloud Functions (1st gen), phiên bản gốc và Cloud Functions (2nd gen), phiên bản mới được xây dựng trên Cloud Run và Eventarc để cung cấp bộ tính năng nâng cao. Xem so sánh phiên bản Cloud Functions để biết thêm thông tin dưới đây:

Bảng so sánh

chức năngCloud Functions (1st gen)Cloud Functions (2nd gen)
Image registryContainer Registry or Artifact RegistryArtifact Registry only
Request timeout9 phút60 phút với HTTP-triggered functions và 9 phút với event-triggered functions
Instance size8GB RAM với 2 vCPU16GiB RAM với 4 vCPU
Concurrency1 concurrent request per function instanceUp to 1000 concurrent requests per function instance
Traffic splittingNot supportedSupported
Event typesHỗ trợ trực tiếp cho các sự kiện từ 7 nguồnHỗ trợ cho mọi loại sự kiện được Eventarc hỗ trợ, bao gồm hơn 90 nguồn sự kiện thông qua Nhật ký kiểm tra đám mây
CloudEventsSupported only in Ruby, .NET, and PHP runtimesSupported in all language runtimes
Security UpdatesWhen function is deployed or redeployed
Automatic updates
When function is deployed or redeployed

2. Connect and extend cloud services

Cloud Functions cung cấp một lớp logic liên kết cho phép bạn viết mã để kết nối và mở rộng các dịch vụ đám mây. Nghe và phản hồi khi tải tệp lên Cloud Storage, thay đổi nhật ký hoặc tin nhắn đến về chủ đề Pub/Sub. Chức năng đám mây tăng cường các dịch vụ đám mây hiện có và cho phép bạn giải quyết số lượng trường hợp sử dụng ngày càng tăng bằng logic lập trình tùy ý. Cloud Functions có quyền truy cập vào thông tin xác thực Tài khoản dịch vụ của Google và do đó được xác thực liền mạch với phần lớn các dịch vụ của Google Cloud, bao gồm Cloud Vision cũng như nhiều dịch vụ khác. Ngoài ra, Cloud Functions còn được nhiều thư viện máy khách Google Cloud hỗ trợ, giúp đơn giản hóa hơn nữa các hoạt động tích hợp này.

3. Events and triggers

Sự kiện đám mây là những điều xảy ra trong môi trường đám mây của bạn. Đây có thể là những việc như thay đổi dữ liệu trong cơ sở dữ liệu, tệp được thêm vào hệ thống lưu trữ hoặc phiên bản máy ảo mới được tạo.

Các sự kiện xảy ra cho dù bạn có chọn phản hồi chúng hay không. Bạn tạo phản hồi cho một sự kiện bằng trình kích hoạt. Trình kích hoạt là một tuyên bố rằng bạn quan tâm đến một sự kiện hoặc tập hợp sự kiện nhất định. Việc liên kết một hàm với một trình kích hoạt cho phép bạn nắm bắt và hành động theo các sự kiện. Để biết thêm thông tin về cách tạo trình kích hoạt và liên kết chúng với các chức năng của bạn, hãy xem Trình kích hoạt chức năng đám mây.

4. Use cases

Use caseDescription
Data processing / ETLLắng nghe và phản hồi các sự kiện trên Cloud Storage, chẳng hạn như khi tệp được tạo, thay đổi hoặc xóa. Xử lý hình ảnh, thực hiện chuyển mã video, xác thực và chuyển đổi dữ liệu cũng như gọi bất kỳ dịch vụ nào trên internet từ Chức năng đám mây của bạn.
WebhooksThông qua trình kích hoạt HTTP đơn giản, hãy phản hồi các sự kiện bắt nguồn từ hệ thống của bên thứ 3 như GitHub, Slack, Stripe hoặc từ bất kỳ nơi nào có thể gửi yêu cầu HTTP.
Lightweight APIsSoạn thảo các ứng dụng từ các phần logic nhẹ, được ghép nối lỏng lẻo, có thể xây dựng nhanh chóng và mở rộng quy mô ngay lập tức. Các hàm của bạn có thể được điều khiển theo sự kiện hoặc được gọi trực tiếp qua HTTP/S.
Mobile backendSử dụng nền tảng di động của Google dành cho nhà phát triển ứng dụng, Firebase và viết chương trình phụ trợ di động của bạn trong Cloud Functions. Lắng nghe và phản hồi các sự kiện từ Firebase Analytics, Cơ sở dữ liệu thời gian thực, Xác thực và Lưu trữ.
IoTHãy tưởng tượng hàng chục hoặc hàng trăm nghìn thiết bị truyền dữ liệu vào Pub/Sub, từ đó khởi chạy Chức năng đám mây để xử lý, chuyển đổi và lưu trữ dữ liệu. Cloud Functions cho phép bạn thực hiện điều đó theo cách hoàn toàn không có máy chủ.

Reference

Avatar photo

One Reply to “Google cloud platform – Cloud Functions (p1)”

Leave a Reply

Your email address will not be published. Required fields are marked *