---
title: "Deploy và vận hành hệ thống trên Cloudflare - DNS, cache, Workers, D1, Queues, Durable Objects và rollback"
description: "Khóa thực hành đưa app lên và vận hành trên Cloudflare, dành cho vibe coder và lập trình viên mới làm việc cùng coding agent. Bạn tự tay cấu hình DNS, TLS và cache ở edge, chạy app trên Workers với D1, Queues và Durable Objects, rồi rollback khi bản mới gây lỗi. Bạn hiểu cơ chế từng lớp thay vì bấm mò trên dashboard."
canonical: "https://200lab.io/courses/dua-app-len-va-van-hanh-tren-cloudflare"
type: "course"
course_type: "course"
learning_type: "free_form"
published: "2026-10-20T06:39:55Z"
students: 0
---

## Khóa học này mang lại gì cho bạn

Bạn đã cùng coding agent dựng xong app, và đã quen với git, frontend, backend, secret, test và CI. Giờ bạn muốn đưa app lên Cloudflare cho người dùng thật truy cập, đồng thời giữ cho app chạy ổn sau mỗi lần cập nhật. Trong khóa này, bạn đưa app đăng ký sự kiện của khóa lên Cloudflare từng phần một, rồi làm lại các bước ấy trên app của chính bạn:

- **Đặt app sau Cloudflare** — Bạn trỏ tên miền về app qua Cloudflare mà vẫn giữ kín IP thật của server, chọn đúng chế độ SSL, rồi bật cache ở edge cho trang tĩnh tải nhanh mà cache không đưa trang tài khoản của người này cho người khác.
- **Chạy và deploy Worker** — Bạn chạy Worker trên máy bằng `wrangler dev` rồi deploy lên `workers.dev` với bản preview tách khỏi production, giữ cho hai request chạy cùng lúc không lẫn dữ liệu của nhau, và đọc `cpuTime` trong log để biết route nào đang vượt giới hạn CPU.
- **Chọn đúng nơi lưu dữ liệu** — Bạn chọn giữa D1, KV, R2, Durable Objects và Postgres qua Hyperdrive cho danh sách đăng ký, file người dùng tải lên, banner và số chỗ còn lại.
- **Chạy việc ở nền** — Bạn gửi email xác nhận qua Queue sao cho một địa chỉ sai không làm cả lô bị gửi lại, gửi email nhắc lúc **8 giờ** sáng bằng Cron Trigger, và phát chứng nhận sau sự kiện bằng Workflow.
- **Giữ đúng số chỗ còn lại** — Bạn dùng Durable Objects để sự kiện **40 chỗ** không nhận người thứ **41**, và hiểu vì sao rate limit trong Worker chỉ đếm gần đúng nên vẫn có thể để lọt thêm request khi có đợt gửi dồn dập.
- **Chặn request xấu ở đúng lớp** — Bạn dùng WAF và Access để chặn request ngay ở edge, trước khi request tới app, còn token Turnstile thì bạn kiểm tra trong Worker nhận form trước khi lưu lượt đăng ký vào database.
- **Vận hành app đang chạy thật** — Bạn lần theo log và trace, deploy qua CI, bật tính năng mới bằng feature flag, chia một phần request cho version mới, đọc hạn mức của gói Cloudflare đang dùng, rồi rollback khi tỷ lệ lỗi tăng.

Đây là khóa thực hành trên Cloudflare, dành cho vibe coder và lập trình viên mới làm việc cùng coding agent; app của bạn viết bằng ngôn ngữ hay framework nào cũng được, miễn là chạy được trên Cloudflare hoặc đặt được sau Cloudflare.

## Khóa học cung cấp những nền tảng nào

Cả khóa đi theo đường của một request trên [nền tảng Cloudflare Workers](https://developers.cloudflare.com/workers/), từ DNS, TLS và cache ở edge, tới Worker, rồi tới nơi lưu dữ liệu. Trên đường ấy, bạn tách những việc xử lý lâu ra chạy ở nền, thêm lớp chặn request xấu, theo dõi app khi chạy thật, canh hạn mức của gói và rollback khi bản mới gây lỗi. Mỗi nhóm bài dưới đây thêm một đoạn vào đường đi đó, theo thứ tự bạn cần khi đưa app lên.

Khóa này không đòi hỏi kiến thức thiết kế hệ thống. Nếu muốn hiểu sâu hơn cách các hệ thống lớn dùng cache, queue, retry và dữ liệu phân tán, bạn có thể học thêm các khóa System Design của 200Lab: “Thiết kế hệ thống — ước lượng tải, load balancer, cache, queue, replication và partitioning”, “Xử lý timeout, retry và crash — idempotency, outbox, lease và reconciliation”, “Thiết kế hệ thống chịu tải cao — rate limiting, load shedding và circuit breaker” và “Thiết kế dữ liệu phân tán — consistency, quorum, leader election và failover”. Năm bài trong khóa được dùng chung với hai khóa đầu trong danh sách này và khóa “Hệ thống video — upload, transcode, livestream HLS, WebRTC và các tradeoffs”.

### 1. Từ tên miền tới app, rồi chạy Worker đầu tiên

Trước khi sửa dòng cấu hình nào trên Cloudflare, bạn nhìn rõ app đang chạy tốt trên máy cần thêm những gì khi đưa lên Internet. Bạn đặt app sau Cloudflare mà không để lộ IP thật của server, gỡ lỗi trang báo redirect quá nhiều lần ngay sau khi bật SSL Flexible, rồi bật cache ở edge cho trang tải nhanh hơn mà vẫn giữ riêng trang tài khoản của từng người. Tiếp đó, bạn chạy trang đăng ký trên Worker đầu tiên bằng `wrangler dev` và kiểm tra sao cho trang xác nhận luôn hiện đúng email người gửi khi nhiều người cùng nộp form. Bạn mở bản preview để thử form mới mà không ghi vào database production, và khi Worker báo lỗi 1102 dù request chạy chưa tới một giây, bạn đọc log để biết Worker đã vượt giới hạn CPU hay giới hạn bộ nhớ. Cuối nhóm này, bạn deploy mà không nhầm database trên máy với D1 thật.

### 2. Chọn nơi lưu cho dữ liệu đăng ký, file và cấu hình

App đăng ký sự kiện giữ danh sách đăng ký, file tải lên, banner và số chỗ còn lại, mà mỗi loại hợp với nơi lưu riêng. Để dữ liệu sai nơi sẽ làm trang chậm, số liệu sai lệch hoặc tiêu hết hạn mức đọc trong ngày. Bạn xem loại dữ liệu nào hợp với D1, KV, R2 hay Durable Objects:

- **D1 và Postgres qua Hyperdrive:** [D1, database SQL của Cloudflare](https://developers.cloudflare.com/d1/), giữ bảng danh sách đăng ký cần truy vấn có cấu trúc; bạn viết truy vấn sao cho trang admin không tiêu hết hạn mức đọc của gói Free, và nối Worker vào Postgres sẵn có qua Hyperdrive mà không làm database hết connection.
- **KV và R2:** bạn dùng KV để đổi banner cho cả app và hiểu vì sao có nơi vẫn thấy banner cũ thêm một lúc, rồi dùng R2 để nhận file người dùng upload thẳng từ trình duyệt sau khi cấu hình CORS đúng.
- **Durable Objects cho giá trị phải đếm đúng:** bạn nhận ra khi nào giá trị như số chỗ còn lại phải do đúng một nơi giữ và cập nhật, để hai request không cùng đọc rồi cùng ghi đè lên nhau.

### 3. Chạy việc ở nền và đếm đúng số chỗ khi nhiều người cùng đăng ký

Nếu người dùng bấm đăng ký rồi phải chờ gửi xong email xác nhận hay tạo xong chứng nhận, request dễ chậm và đứt giữa chừng. Bạn tách những việc ấy ra chạy ở nền, bắt đầu bằng Cron Trigger gửi email nhắc lúc **8 giờ** sáng; cách làm trong khóa giảm email nhắc bị gửi trùng, chứ chưa bảo đảm mỗi người nhận đúng một email trong mọi trường hợp. Queue gửi email xác nhận sao cho một địa chỉ sai không làm cả lô bị gửi lại, còn Workflow chạy các bước gửi chứng nhận sau sự kiện mà không làm mất danh sách người tham dự. Khi nhiều người cùng bấm đăng ký vào những giây cuối, bạn đếm số chỗ bằng [Durable Objects](https://developers.cloudflare.com/durable-objects/) và thấy vì sao sự kiện **40 chỗ** vẫn nhận người thứ **41** nếu bước kiểm tra đặt sai vị trí, dù Durable Object chạy đơn luồng. Bạn cũng thấy vì sao rate limit đếm đúng trên máy nhưng khi app chạy trên Cloudflare lại cho lọt thêm request.

### 4. Gắn tên miền thật và chặn request xấu trước khi tới app

Khi app đã chạy đủ tính năng trên địa chỉ thử nghiệm, bạn gắn tên miền thật, bật proxy và dùng `curl` kiểm tra từng lớp, từ ngoài vào trong. Form đăng ký mở công khai trên Internet sẽ sớm gặp bot gửi đăng ký rác, và chỉ gắn widget Turnstile ở giao diện thì chưa đủ. Worker nhận form phải kiểm tra token Turnstile trước khi lưu đăng ký, còn rule của WAF chặn bớt request ngay ở edge, trước khi request tới app. Với trang admin của sự kiện hay service chạy ở nhà, bạn dựng lớp bảo vệ phía trước để người lạ trên Internet không vào được, dù họ đoán ra đường dẫn.

### 5. Theo dõi app, release dần, rollback và đọc hạn mức

Đưa app lên mới là nửa chặng đường; nửa còn lại là biết chuyện gì đang xảy ra khi người dùng báo lỗi, và cập nhật tính năng mới mà không làm hỏng bản đang chạy ổn. Bạn lần theo log và trace để tìm request bị lỗi 500 mà người dùng vừa báo, rồi dựng CI để production chạy đúng bản bạn đã thử ở preview. Tính năng mới chạy qua feature flag, nên khi có lỗi bạn tắt riêng tính năng đó mà không phải rollback cả bản deploy. Bạn cũng chia **10%** request cho version mới, xem tỷ lệ lỗi rồi mới quyết định mở rộng hay rollback. Cuối cùng, bạn kiểm tra xem khi hết hạn mức trong ngày của gói Cloudflare, từng phần của app sẽ báo lỗi hay vẫn chạy tiếp.

### 6. Gọi model qua AI Gateway và đưa app của chính bạn lên Cloudflare

Nếu app của bạn có tính năng gọi model AI, phần tùy chọn này đặt AI Gateway giữa app và nhà cung cấp model để có log của từng lượt gọi và chặn bớt spam. Bạn cũng thấy phần chi phí nào ở phía nhà cung cấp model vẫn phát sinh, và vì sao cache chỉ bớt được lượt gọi khi câu hỏi lặp lại y nguyên. Bài cuối khóa cho bạn rà danh sách kiểm tra trước khi mở app cho người dùng thật. Sau đó bạn đưa app của chính mình lên Cloudflare theo một trong hai hướng, hoặc chuyển cả app lên chạy trên Workers, hoặc giữ app ở server sẵn có và đặt Cloudflare đứng phía trước.

## Vì sao 200Lab tạo ra khóa học này

Nhờ coding agent, vibe coder hay lập trình viên mới giờ có thể dựng xong app có đủ giao diện, database, test và CI trên máy trong thời gian ngắn. Nhưng khi bạn muốn đưa app ra khỏi máy để gửi link cho người dùng thật, những thứ như bản ghi DNS, chế độ SSL, cache ở edge, giới hạn CPU của mỗi request hay hạn mức đọc ghi trong ngày mới lộ ra. Lúc làm tính năng trên `localhost`, chúng chưa từng xuất hiện.

Cái bẫy quen thuộc là nhắn agent một tin ngắn để agent tự deploy và cấu hình, rồi tin rằng trang chủ hiện lên trên trình duyệt là mọi thứ đã xong. Trong lúc trang chủ vẫn hiện bình thường, cache có thể đưa trang tài khoản của người này cho người khác, còn form thử ở bản preview có thể ghi dữ liệu rác thẳng vào database production. Trang admin đọc cả bảng mỗi lần mở cũng có thể tiêu hết hạn mức đọc trong ngày của D1.

Coding agent viết file cấu hình và gọi service rất nhanh, nhưng agent không tự nhận ra môi trường chạy trên máy khác mạng máy chủ của Cloudflare ở những điểm nào nếu bạn không chỉ ra. Agent có thể lưu tạm dữ liệu của request vào biến toàn cục trong Worker mà không báo rằng hai người cùng nộp form sẽ thấy email của nhau. Agent cũng có thể gắn widget chống bot lên giao diện mà quên kiểm tra token ở Worker nhận form.

200Lab tạo ra khóa học này để bạn hiểu cách Cloudflare vận hành mà không phải trả giá bằng dữ liệu thật hay hóa đơn bất ngờ. Thay vì đọc tài liệu rời rạc về từng dịch vụ, bạn làm trên cùng một app đăng ký sự kiện từ đầu tới cuối khóa, và dùng chính coding agent của bạn cho từng lab. Ở mỗi bài, bạn tự thấy lỗi xảy ra, tự kiểm tra kết quả, rồi mang các bước ấy sang app của mình.

## Những vấn đề thường gặp khi đưa app lên và vận hành trên Cloudflare

Khi mới đưa app lên Cloudflare, phản xạ tự nhiên là bật nhanh các tùy chọn trên dashboard, hoặc nhờ coding agent sửa cấu hình cho tới khi hết báo lỗi. Cách làm mò đó thường để lại những dấu hiệu sau:

- Vừa chuyển chế độ SSL sang Flexible thì trình duyệt báo redirect quá nhiều lần và bạn không vào được trang — Cloudflare gửi request tới server gốc bằng HTTP, còn server gốc lại chuyển mọi kết nối HTTP sang HTTPS, nên hai bên chuyển hướng qua lại không dừng.
- Bật cache ở Cloudflare cho trang tải nhanh hơn, nhưng người dùng mở trang lại thấy thông tin tài khoản của người vừa truy cập trước đó — rule cache đang đánh dấu cả response chứa thông tin cá nhân hay session cookie là đủ điều kiện cache, thay vì chỉ các file tĩnh dùng chung.
- Hai người cùng gửi form đăng ký một lúc, và trang xác nhận của người này lại hiện email của người kia — Worker cất dữ liệu của request vào biến nằm ngoài phạm vi một request, nên dữ liệu của request sau ghi đè lên request trước trong cùng một instance.
- Worker báo lỗi 1102 dù request chạy chưa tới một giây — Worker bị giới hạn theo thời gian CPU dùng để tính toán, chứ không theo tổng thời gian chờ; trang 1102 cũng hiện ra khi Worker vượt giới hạn bộ nhớ, nên chỉ trường `outcome` trong log mới cho biết đúng nguyên nhân.
- Bạn đã đưa logic giữ chỗ vào Durable Object chạy đơn luồng, nhưng sự kiện **40 chỗ** vẫn nhận người thứ **41** — giữa bước đọc số chỗ còn lại và bước ghi lượt đăng ký có một `await` gọi ra ngoài object, nên lượt đăng ký khác chen vào trước khi số đếm kịp cập nhật.
- Đổi banner trong KV và trên máy bạn đã thấy banner mới, nhưng người dùng ở thành phố khác vẫn gửi ảnh chụp màn hình có banner cũ — KV lưu tạm giá trị ở từng máy chủ của Cloudflare gần người dùng, mỗi bản lưu tạm hết hạn vào lúc riêng, nên nơi vừa đọc banner cũ sẽ còn thấy banner cũ thêm một lúc.
- Đã gắn widget Turnstile lên form đăng ký và thấy dấu tích xanh, nhưng bảng dữ liệu vẫn đầy lượt đăng ký tự động của bot — widget trên trình duyệt chỉ tạo ra token, còn Worker nhận form chưa gửi token đó tới Siteverify, API kiểm tra token của Cloudflare, trước khi lưu vào database.
- Rate limit chặn đúng khi thử bằng `wrangler dev` trên máy, nhưng khi app chạy thật trên Cloudflare, một đợt gửi dồn dập vẫn lọt quá quota đã đặt — Cloudflare đếm riêng ở từng máy chủ gần người gửi và cập nhật số đếm không đồng bộ, chứ không chờ cộng chung từng request.

Mỗi dấu hiệu trên là điểm xuất phát của một bài trong khóa, nơi bạn tái hiện lỗi, hiểu cơ chế bên dưới, rồi tự kiểm tra cho tới khi app phản hồi đúng như mong đợi.

## Bạn sẽ học theo cách nào

- **Việc thật trên cùng một app** — Mỗi bài xoay quanh một việc cụ thể trên app đăng ký sự kiện. Bài giải thích phần Cloudflare liên quan bằng câu chữ gần gũi, rồi bạn giao việc cho coding agent, gặp cái bẫy người mới hay mắc và tự kiểm tra kết quả.
- **Hình vẽ và phần tương tác** — Bài nào cũng có hình vẽ lại màn hình, đường đi của request hoặc file cấu hình; những bài có nhiều bước đổi trạng thái còn có phần minh họa tương tác để bạn bấm thử và thấy cơ chế chạy ra sao trước khi gõ lệnh.
- **Lab cho coding agent** — Mỗi bài đi kèm một lab trong kit, viết bằng tiếng Anh để coding agent của bạn đọc và làm theo, còn bài học viết bằng tiếng Việt. Phần lớn bài có thêm vài câu hỏi ngắn để bạn tự kiểm tra mình đã hiểu chưa.
- **Chạy trên máy hoặc mô phỏng** — Kết quả trong bài được chạy trên tài khoản và test zone của khóa, bằng `wrangler dev` trên máy, hoặc trên bản mô phỏng nói rõ nó thay cho thành phần nào của Cloudflare, nên bạn không bị kẹt khi chưa bật một dịch vụ.

## Khóa học dành cho ai

1. **Vibe coder đã dựng xong app** — Bạn đã cùng coding agent dựng app và quen với git, frontend, backend, secret, test, CI ở mức cơ bản; giờ bạn cần lộ trình rõ ràng để đưa app lên Cloudflare và giữ app chạy ổn khi có người dùng thật.
2. **Lập trình viên mới** — Bạn đã tự viết được app chạy tốt trên máy nhưng chưa quen với DNS, TLS, cache ở edge hay cách Workers chạy code, và muốn hiểu từng phần để không phải cấu hình mò.
3. **Người đã có app chạy thật** — Trang web hay API của bạn đã chạy, nhưng bạn lo lộ IP thật của server, bot gửi rác vào form, hết hạn mức bất ngờ hoặc làm hỏng bản đang chạy mỗi lần cập nhật.

## Những điều cần lưu ý

- **Chi phí tên miền** — Khoản bắt buộc duy nhất là tên miền, khoảng **10 USD**/năm trả cho nhà đăng ký tên miền (không phải phí của Cloudflare), cần từ bài gắn tên miền thật. Nếu chưa muốn mua, bạn đi theo bản mô phỏng và vẫn làm hết phần vận hành cùng hướng đưa cả app lên Workers ở bài cuối.
- **Lab bắt buộc theo gói Free** — Mọi lab bắt buộc được thiết kế theo tài liệu của gói Free, không cần thẻ thanh toán, nhưng khóa không bảo đảm mọi tài khoản mới tạo đều có cùng hạn mức và giao diện. Đổi lại, số liệu Cloudflare trong bài được gom vào bảng có ghi tháng, để bạn biết số liệu đúng tới thời điểm nào và đối chiếu với tài khoản của mình.
- **Gói Workers Paid là lời khuyên** — 200Lab khuyên bạn cân nhắc gói Workers Paid (từ **5 USD**/tháng cho mỗi tài khoản) để có nhiều CPU hơn cho mỗi request, hạn mức D1, KV và Queues tính theo tháng thay vì theo ngày và log lưu lâu hơn, nhưng gói này không bắt buộc và các lab bắt buộc vẫn theo gói Free. Bạn cũng nên biết **5 USD** là mức tối thiểu, phần dùng vượt hạn mức tháng sẽ tính thêm tiền, gói Paid cần thẻ thanh toán nhưng không tự mở R2, Access hay quyền gửi email tới mọi địa chỉ, còn cảnh báo ngân sách chỉ có ở tài khoản trả tiền theo mức dùng đủ điều kiện và chỉ gửi tin, không chặn khoản chi nào.
- **Dịch vụ tùy chọn và phần ngoài khóa** — R2 thật, Access thật, gửi email thật ra ngoài và gọi model qua AI Gateway đều là phần tùy chọn, có bản mô phỏng thay thế để bạn không bị buộc bật dịch vụ cần thẻ hay cần xác minh phức tạp. Khóa không đề cập Containers hay cách thuê và quản trị VPS; đổi lại, bạn làm quen và dùng được các dịch vụ của Cloudflare từ DNS, cache ở edge tới Workers, D1, Queues và Durable Objects.

## Bắt đầu từ đâu

Bài học đầu tiên trả lời câu hỏi bạn gặp ngay khi vừa làm xong tính năng: app đang chạy tốt ở `localhost`, khi đưa lên Internet qua Cloudflare thì cần thêm những lớp nào và phải chuẩn bị gì. Trong bài, bạn cũng kiểm tra máy đã sẵn sàng cho các lab và cân nhắc nên dùng gói Free hay gói Paid. Bài đứng đầu khóa để bạn thấy toàn cảnh các lớp bảo vệ và vận hành trên app đăng ký sự kiện, trước khi bắt tay vào trỏ bản ghi DNS và giấu IP thật của server.

## Chương trình

### Từ tên miền tới app: DNS, TLS và cache ở edge

- App chạy tốt trên máy, đưa lên Cloudflare thì cần thêm những gì? (miễn phí) · kit cho agent
- Đặt app sau Cloudflare mà không để lộ IP thật của server (miễn phí) · quiz
- Vì sao vừa bật SSL Flexible thì trang báo redirect quá nhiều lần? (miễn phí) · quiz
- Bật cache ở Cloudflare cho trang tải nhanh hơn mà không để lộ trang tài khoản · quiz

### Chạy Worker đầu tiên trên máy rồi đưa lên workers.dev

- Chạy trang đăng ký trên Worker sao cho trang xác nhận luôn hiện đúng email người gửi · quiz · kit cho agent
- Mở bản preview để thử form mới mà không ghi vào database production · quiz
- Worker báo lỗi 1102 dù request chưa chạy tới một giây · quiz
- Thử Worker trên máy rồi deploy mà không nhầm database trên máy với D1 thật · quiz

### Chọn nơi lưu cho dữ liệu đăng ký, file và cấu hình

- Dữ liệu đăng ký, file, cấu hình và số chỗ còn lại nên lưu ở đâu? · quiz · kit cho agent
- Theo dõi số đăng ký bằng D1 mà không để trang admin tiêu hết hạn mức đọc của gói Free · quiz
- Đổi banner bằng KV cho cả app, và vì sao có nơi vẫn thấy banner cũ · quiz
- Đưa file và ảnh ra khỏi database bằng object storage và CDN · quiz
- Mỗi lượt upload video qua API làm mọi request khác chậm theo (miễn phí) · quiz
- Upload thẳng lên R2 từ trình duyệt bị báo lỗi CORS · quiz
- Cho Worker đọc Postgres qua Hyperdrive mà không làm database hết connection · quiz

### Gửi email, nhắc lịch và chạy job nhiều bước ở nền

- Gửi email nhắc sự kiện lúc 8 giờ sáng bằng Cron Trigger mà không ai nhận hai lần · quiz · kit cho agent
- Chặn consumer xử lý một message hai lần khi queue giao lại · quiz
- Gửi email xác nhận qua Queue sao cho một địa chỉ sai không làm cả lô bị gửi lại · quiz
- Job nhiều bước bị crash giữa chừng thì chạy tiếp từ đâu · quiz
- Gửi chứng nhận sau sự kiện bằng Workflow mà không để danh sách người tham dự biến mất · quiz

### Đếm đúng số chỗ và số request khi nhiều người cùng đăng ký

- Đọc timeline của hai request chạy song song để tìm race condition (miễn phí)
- Vì sao Durable Object chạy đơn luồng mà sự kiện 40 chỗ vẫn nhận 41 người? · quiz · kit cho agent
- Rate limit đếm đúng trên máy, lên Cloudflare lại cho lọt thêm request · quiz

### Gắn tên miền thật rồi chặn request xấu trước khi tới app

- Trỏ tên miền về app, bật proxy rồi kiểm tra từng lớp bằng curl · kit cho agent
- Chặn bot ở form đăng ký bằng Cloudflare, vì chỉ gắn widget Turnstile thì chưa đủ · quiz
- Không để người lạ trên Internet vào được trang admin và service chạy ở nhà · quiz

### Theo dõi app, release dần, rollback và đọc hạn mức

- Lần theo log và trace để tìm request bị lỗi 500 mà người dùng vừa báo · quiz · kit cho agent
- Dựng CI để production chạy đúng bản bạn đã thử ở preview · quiz
- Cho tính năng mới chạy qua feature flag để khi có lỗi, bạn tắt riêng nó mà không phải rollback cả bản deploy · quiz
- Chia 10% request cho version mới, lỗi tăng thì ai quyết định rollback? · quiz
- Hết hạn mức trong ngày thì app báo lỗi hay vẫn chạy tiếp? · quiz

### Gọi model AI qua AI Gateway (tùy chọn)

- Gọi model qua AI Gateway để có log và chặn spam, nhưng phần nào vẫn tốn tiền? · kit cho agent

### Đưa app của chính bạn lên Cloudflare

- Trước khi mở app của bạn cho người dùng thật, cần kiểm tra những gì? · kit cho agent
