---
id: serverless-gcp
title: "Cloud Run functions"
shortTitle: "GCP Functions"
track: serverless
trackTitle: "Serverless"
order: 3
level: important
status: published
estimatedMinutes: 30
prerequisites:
  - serverless-edge
next: serverless-netlify
reviewedAgainst: 2026-10-12
sources:
  - title: "Compare Cloud Run functions"
    url: https://docs.cloud.google.com/run/docs/functions/comparison
  - title: "Cloud Run functions quotas"
    url: https://docs.cloud.google.com/functions/quotas
---

# Cloud Run functions

Google đã đổi tên Cloud Functions thế hệ 2 thành Cloud Run functions. Thế hệ 1 vẫn còn trong tài liệu với tên Cloud Run functions (1st gen). Bài này nói trần thời gian và chỗ hai thế hệ khác nhau. Không deploy.

## Để làm gì

Khi đọc một function GCP, bạn chọn đúng trần timeout, và không nhầm 9 phút của thế hệ 1 với 60 phút của HTTP thế hệ hiện tại.

## Gồm những gì

- Tên cũ và tên hiện tại.
- Timeout HTTP và timeout event.
- Concurrency: thế hệ 1 là một request mỗi instance.

Đừng chạy `gcloud functions deploy` lên project tính phí.

## Dùng khi nào

Một repo có `functions/` chạy trên GCP, hoặc tài liệu nội bộ còn ghi Cloud Functions. Function vẫn stateless, không giữ session trên đĩa tạm, giống Lambda và Azure Functions ở bài trước.

Đừng mở Postgres từ function cho mỗi request nếu pool nằm ở nơi khác. Cùng lý do với các bài serverless trước: instance lên xuống, số kết nối tăng theo số instance.

## Kiến thức cốt lõi

Trang so sánh của Google ghi: Cloud Functions (2nd gen) nay là Cloud Run functions, và một function là một service Cloud Run deploy từ source. Thế hệ 1 tên cũ là Cloud Functions (1st gen).

Quota thời gian, đối chiếu trang quotas lúc soát bài: thế hệ 1 tối đa 540 giây. Thế hệ hiện tại, HTTP tới 60 phút, function theo event tạo bằng API Cloud Functions v2 tối đa 540 giây, lịch và task queue có trần riêng 1800 giây. Đừng nhớ một số cho mọi trigger.

Thế hệ 1 phục vụ một request đồng thời trên một instance. Thế hệ hiện tại cho phép tới 1000 request đồng thời trên một instance, cấu hình được. Code giữ biến toàn cục cho một user sẽ lẫn sang request khác khi bật concurrency.

## Lệnh và code mẫu

Không deploy. Khi đọc cấu hình, ghi ba dòng:

| Câu hỏi | Chỗ nhìn |
| --- | --- |
| Thế hệ nào | 1st gen hay Cloud Run functions |
| Trigger | HTTP hay event |
| Timeout đang set | giây, so với trần của loại đó |

## Thực hành

1. Một function HTTP thế hệ hiện tại để 120 giây. Trần cho phép tới bao nhiêu phút.
2. Một function thế hệ 1 để 20 phút. Việc đó có nằm trong quota không.
3. Không `gcloud` deploy.

## Kết quả mong đợi

HTTP thế hệ hiện tại tới 60 phút, nên 120 giây nằm trong trần. Thế hệ 1 tối đa 540 giây, 20 phút vượt trần.

## Checklist

- [ ] Đọc thế hệ và loại trigger trước khi tin một con số timeout.
- [ ] Không giữ trạng thái user trong biến toàn cục nếu concurrency lớn hơn 1.
- [ ] Không deploy từ máy học.

## Lỗi thường gặp

**Tài liệu nội bộ nói mọi function GCP tối đa 9 phút.** Đúng với thế hệ 1 và với một số event của API v2. HTTP trên Cloud Run functions không còn trần đó. Đọc quota theo loại.

**Tăng timeout mà client đã cắt sớm.** API Gateway hoặc loader phía trước có thể đóng kết nối trước function. Sửa cả hai phía.

## Nguồn

1. [Compare Cloud Run functions](https://docs.cloud.google.com/run/docs/functions/comparison) — tên mới và concurrency.
2. [Quotas](https://docs.cloud.google.com/functions/quotas) — trần thời gian theo thế hệ.

## Tiếp theo

[Netlify](./04-netlify.md)
