Cloudflare Developer Platform 2026 — Hệ Sinh Thái Edge Computing Miễn Phí Cho Developer
Posted on: 4/17/2026 10:10:05 PM
Table of contents
- Mục lục
- 1. Kiến trúc tổng quan Cloudflare Developer Platform
- 2. Workers — Serverless Compute tại Edge
- 3. D1 — SQL Database trên Edge với SQLite
- 4. R2 — Object Storage không tốn phí Egress
- 5. Durable Objects — Stateful Serverless
- 6. Workers AI — Inference tại Edge
- 7. Agents Week 2026 — Sandboxes, Facets và Dynamic Workers
- 8. Pages → Workers: Cuộc hợp nhất lớn
- 9. Free Tier tổng hợp — Được gì miễn phí?
- 10. So sánh với AWS Lambda, Vercel và Deno Deploy
- 11. Thực hành: Deploy ứng dụng Vue + API trên Cloudflare
- 12. Kết luận
Nếu bạn đang tìm một nền tảng để deploy ứng dụng full-stack mà không tốn đồng nào cho những project nhỏ và trung bình, Cloudflare Developer Platform năm 2026 là lựa chọn khó bỏ qua. Với hệ sinh thái gồm Workers (serverless compute), D1 (SQL database), R2 (object storage zero egress), Durable Objects (stateful compute), Workers AI (inference tại edge), và mới nhất là Sandboxes + Dynamic Workers từ Agents Week 2026 — Cloudflare đang xây dựng một "cloud hoàn chỉnh" chạy trên edge network phủ hơn 330 thành phố toàn cầu.
1. Kiến trúc tổng quan Cloudflare Developer Platform
Cloudflare Developer Platform không phải là một dịch vụ đơn lẻ — nó là một hệ sinh thái hoàn chỉnh cho phép bạn xây dựng, lưu trữ, và chạy ứng dụng hoàn toàn trên edge network. Khác với mô hình cloud truyền thống (chọn region → deploy → chờ request đi từ user tới datacenter xa), mọi thứ trên Cloudflare đều chạy ở datacenter gần nhất với người dùng.
graph TD
USER["👤 User Request"]
EDGE["🌐 Cloudflare Edge
(330+ locations)"]
WORKERS["⚡ Workers
Serverless Compute"]
D1["🗄️ D1
SQLite Database"]
R2["📦 R2
Object Storage"]
DO["🔒 Durable Objects
Stateful Compute"]
KV["⚡ KV
Key-Value Store"]
AI["🤖 Workers AI
Inference"]
QUEUES["📨 Queues
Message Queue"]
SANDBOX["🏗️ Sandboxes
Isolated Runtime"]
USER --> EDGE
EDGE --> WORKERS
WORKERS --> D1
WORKERS --> R2
WORKERS --> DO
WORKERS --> KV
WORKERS --> AI
WORKERS --> QUEUES
WORKERS --> SANDBOX
DO --> D1
style USER fill:#e94560,stroke:#fff,color:#fff
style EDGE fill:#2c3e50,stroke:#fff,color:#fff
style WORKERS fill:#3498db,stroke:#fff,color:#fff
style D1 fill:#f8f9fa,stroke:#e94560,color:#2c3e50
style R2 fill:#f8f9fa,stroke:#e94560,color:#2c3e50
style DO fill:#f8f9fa,stroke:#e94560,color:#2c3e50
style KV fill:#f8f9fa,stroke:#e94560,color:#2c3e50
style AI fill:#f8f9fa,stroke:#e94560,color:#2c3e50
style QUEUES fill:#f8f9fa,stroke:#e94560,color:#2c3e50
style SANDBOX fill:#f8f9fa,stroke:#e94560,color:#2c3e50
Điểm mấu chốt của kiến trúc này là tất cả các component đều nằm trên cùng edge network. Khi Workers gọi D1, R2, hay Durable Objects — không có network hop ra ngoài. Latency giữa các service gần như bằng 0 vì chúng cùng chạy trong một datacenter.
Tại sao Edge Computing quan trọng?
Với cloud truyền thống, một user ở Việt Nam gọi API đặt tại us-east-1 phải chờ ~200ms round-trip chỉ riêng network latency. Trên Cloudflare, request được xử lý tại edge PoP ở Singapore hoặc Hồ Chí Minh — latency giảm xuống còn ~10-30ms. Đặc biệt với D1 read replicas, dữ liệu được cache tại edge gần nhất.
2. Workers — Serverless Compute tại Edge
Workers là trái tim của Cloudflare Developer Platform. Mỗi Worker là một đoạn code JavaScript/TypeScript (hoặc Python từ 2025) chạy trên V8 isolate — không phải container, không phải VM — nên cold start gần như bằng 0 (dưới 5ms so với 100-500ms của Lambda).
2.1. Execution Model: V8 Isolates
Thay vì spin up container cho mỗi request như AWS Lambda, Workers sử dụng V8 isolate — cùng engine mà Chrome dùng để chạy JavaScript. Mỗi isolate được tạo trong microseconds, chia sẻ process nhưng hoàn toàn cách ly về memory.
graph LR
subgraph Container["Container Model (Lambda)"]
C1["Container 1
~100ms cold start"]
C2["Container 2
~100ms cold start"]
C3["Container 3
~100ms cold start"]
end
subgraph Isolate["V8 Isolate Model (Workers)"]
I1["Isolate 1
~0ms cold start"]
I2["Isolate 2
~0ms cold start"]
I3["Isolate 3
~0ms cold start"]
end
style C1 fill:#f8f9fa,stroke:#ff9800,color:#2c3e50
style C2 fill:#f8f9fa,stroke:#ff9800,color:#2c3e50
style C3 fill:#f8f9fa,stroke:#ff9800,color:#2c3e50
style I1 fill:#f8f9fa,stroke:#4CAF50,color:#2c3e50
style I2 fill:#f8f9fa,stroke:#4CAF50,color:#2c3e50
style I3 fill:#f8f9fa,stroke:#4CAF50,color:#2c3e50
2.2. Cron Triggers và Scheduled Workers
Workers không chỉ xử lý HTTP requests. Bạn có thể đặt lịch chạy với Cron Triggers — tương đương cron job nhưng chạy trên edge, không cần server.
export default {
async scheduled(event: ScheduledEvent, env: Env, ctx: ExecutionContext) {
// Chạy mỗi ngày lúc 2:00 AM UTC
const response = await fetch('https://api.example.com/daily-sync');
const data = await response.json();
// Lưu kết quả vào D1
await env.DB.prepare('INSERT INTO sync_logs (data, synced_at) VALUES (?, ?)')
.bind(JSON.stringify(data), new Date().toISOString())
.run();
},
async fetch(request: Request, env: Env) {
// Xử lý HTTP requests bình thường
return new Response('Hello from Workers!');
}
};2.3. Python Workers
Từ cuối 2025, Cloudflare đã hỗ trợ Python cho Workers với cold start nhanh và quy trình uv-first. Năm 2026, Python Workers đã hỗ trợ đầy đủ Durable Objects và Workflows — mở rộng đáng kể cho các developer đến từ hệ sinh thái Python/data science.
from js import Response
async def on_fetch(request, env):
results = await env.DB.prepare(
"SELECT * FROM products WHERE category = ?"
).bind("electronics").all()
return Response.json(results)3. D1 — SQL Database trên Edge với SQLite
D1 là database SQL chạy trên edge, dựa trên SQLite. Nghe có vẻ đơn giản, nhưng D1 giải quyết một bài toán mà nhiều edge platform khác bỏ ngỏ: làm sao có relational database gần user mà không phải quản lý replication?
3.1. Kiến trúc D1
graph TD
W1["Worker (Singapore)"] -->|READ| R1["Read Replica
Singapore"]
W2["Worker (Tokyo)"] -->|READ| R2["Read Replica
Tokyo"]
W3["Worker (Frankfurt)"] -->|READ| R3["Read Replica
Frankfurt"]
W1 -->|WRITE| PRIMARY["Primary DB
(Single Region)"]
W2 -->|WRITE| PRIMARY
W3 -->|WRITE| PRIMARY
PRIMARY -->|Replicate| R1
PRIMARY -->|Replicate| R2
PRIMARY -->|Replicate| R3
style PRIMARY fill:#e94560,stroke:#fff,color:#fff
style R1 fill:#f8f9fa,stroke:#3498db,color:#2c3e50
style R2 fill:#f8f9fa,stroke:#3498db,color:#2c3e50
style R3 fill:#f8f9fa,stroke:#3498db,color:#2c3e50
style W1 fill:#2c3e50,stroke:#fff,color:#fff
style W2 fill:#2c3e50,stroke:#fff,color:#fff
style W3 fill:#2c3e50,stroke:#fff,color:#fff
3.2. Tính năng nổi bật
- Time Travel: Rollback database về bất kỳ phút nào trong 30 ngày gần nhất — không cần tự quản lý backup
- Read Replicas: Tự động replicate tới edge locations, không tốn thêm phí
- Batched Statements: Gửi nhiều query trong một lần gọi, giảm round-trip
- 50,000 databases/account: Phù hợp cho multi-tenant SaaS — mỗi tenant một database riêng
// Batched statements — 3 queries, 1 round-trip
const results = await env.DB.batch([
env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(userId),
env.DB.prepare('SELECT * FROM orders WHERE user_id = ? ORDER BY created_at DESC LIMIT 10').bind(userId),
env.DB.prepare('UPDATE users SET last_login = ? WHERE id = ?').bind(new Date().toISOString(), userId),
]);
const [user, orders, _] = results;Khi nào nên dùng D1?
D1 phù hợp cho ứng dụng read-heavy (blog, e-commerce catalog, dashboard). Với write-heavy workloads (real-time chat, gaming), Durable Objects với SQLite storage sẽ phù hợp hơn vì write xảy ra trực tiếp tại edge, không cần round-trip về primary.
4. R2 — Object Storage không tốn phí Egress
R2 là object storage tương thích S3 API — nhưng với một khác biệt then chốt: zero egress fees. AWS S3 charge $0.09/GB cho mỗi GB data transfer ra ngoài. Với R2, bạn trả $0/GB egress. Với các ứng dụng phục vụ nhiều media (ảnh, video, file download), đây là khoản tiết kiệm khổng lồ.
4.1. So sánh chi phí Storage
| Tiêu chí | Cloudflare R2 | AWS S3 Standard | Google Cloud Storage |
|---|---|---|---|
| Storage/GB/tháng | $0.015 | $0.023 | $0.020 |
| Egress/GB | $0 (miễn phí) | $0.09 | $0.12 |
| PUT/1M requests | $4.50 | $5.00 | $5.00 |
| GET/1M requests | $0.36 | $0.40 | $0.40 |
| Free Storage | 10 GB/tháng | 5 GB (12 tháng đầu) | 5 GB |
| Free Egress | Unlimited | 100 GB/tháng (12 tháng) | 1 GB/ngày |
| S3 API Compatible | Có | Native | Có (interop) |
4.2. Media Transformations (GA 2026)
R2 giờ đây tích hợp Media Transformations — cho phép resize, crop, watermark ảnh và tối ưu video trực tiếp tại edge, không cần service riêng. Tính năng này đã GA từ đầu 2026.
// Upload file lên R2
await env.MY_BUCKET.put('images/avatar.jpg', imageData, {
httpMetadata: { contentType: 'image/jpeg' },
});
// Serve ảnh đã transform qua Workers
// URL: /images/avatar.jpg?width=200&height=200&fit=cover
const transformed = await fetch(
`https://my-bucket.r2.dev/images/avatar.jpg?width=200&height=200&fit=cover`
);5. Durable Objects — Stateful Serverless
Durable Objects (DO) giải quyết bài toán mà serverless truyền thống không thể: stateful computation. Mỗi Durable Object là một instance duy nhất trên toàn cầu, có bộ nhớ riêng, và có thể lưu trữ dữ liệu persistent bằng SQLite — đã GA từ 2026 và miễn phí cho Workers Free plan.
5.1. Use Cases điển hình
5.2. SQLite-backed Durable Objects
Từ 2026, SQLite storage cho Durable Objects đã chuyển từ beta sang GA. Mỗi DO instance có riêng một SQLite database — hoàn hảo cho các pattern cần strong consistency tại single point.
import { DurableObject } from 'cloudflare:workers';
export class ChatRoom extends DurableObject {
private sql: SqlStorage;
constructor(ctx: DurableObjectState, env: Env) {
super(ctx, env);
this.sql = ctx.storage.sql;
// Tạo table nếu chưa có
this.sql.exec(`
CREATE TABLE IF NOT EXISTS messages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user TEXT NOT NULL,
content TEXT NOT NULL,
created_at TEXT DEFAULT (datetime('now'))
)
`);
}
async sendMessage(user: string, content: string) {
this.sql.exec(
'INSERT INTO messages (user, content) VALUES (?, ?)',
user, content
);
// Broadcast qua WebSocket cho các client đang kết nối
for (const ws of this.ctx.getWebSockets()) {
ws.send(JSON.stringify({ user, content, time: new Date().toISOString() }));
}
}
async getHistory(limit = 50) {
return this.sql.exec(
'SELECT * FROM messages ORDER BY created_at DESC LIMIT ?', limit
).toArray();
}
}6. Workers AI — Inference tại Edge
Workers AI cho phép chạy inference các model AI phổ biến (Llama 3.3 70B, Mistral, DeepSeek R1 distilled, Stable Diffusion, Whisper...) ngay tại edge — không cần quản lý GPU, không cần provisioning.
6.1. Models và Pricing
50+ Models sẵn sàng sử dụng
- Text Generation: Llama 3.3 70B, Llama 3.2 (1B/3B/11B vision), Mistral 7B, Mistral Small 3.1, DeepSeek R1 Distilled
- Embeddings: BGE models cho vector search
- Image Generation: Stable Diffusion XL, FLUX.1
- Speech-to-Text: Whisper
- Translation: M2M-100
Pricing: 10,000 Neurons miễn phí/ngày. Sau đó $0.011/1,000 Neurons. Inference chạy tại 200+ data centers toàn cầu.
export default {
async fetch(request: Request, env: Env) {
// Text generation với Llama 3.3
const textResult = await env.AI.run('@cf/meta/llama-3.3-70b-instruct-fp8-fast', {
messages: [
{ role: 'system', content: 'Bạn là trợ lý hữu ích, trả lời bằng tiếng Việt.' },
{ role: 'user', content: 'Giải thích serverless computing trong 3 câu.' }
]
});
// Image generation với Stable Diffusion
const imageResult = await env.AI.run('@cf/stabilityai/stable-diffusion-xl-base-1.0', {
prompt: 'A futuristic city with neon lights, cyberpunk style'
});
// Embedding cho vector search
const embedding = await env.AI.run('@cf/baai/bge-base-en-v1.5', {
text: ['Cloudflare Workers edge computing']
});
return Response.json({ text: textResult, embedding: embedding.data });
}
};AI Gateway — Quản lý AI Inference tập trung
AI Gateway hoạt động như một proxy layer trước các AI provider (OpenAI, Anthropic, Workers AI). Nó cung cấp caching (giảm chi phí cho prompt trùng lặp), rate limiting, analytics, và fallback giữa các provider — tất cả đều miễn phí trên Free plan.
7. Agents Week 2026 — Sandboxes, Facets và Dynamic Workers
Cloudflare Agents Week (13-17/04/2026) là sự kiện lớn nhất của Cloudflare cho developer AI, với hàng loạt tính năng mới biến Cloudflare thành nền tảng lý tưởng cho AI agents.
7.1. Sandboxes — Máy tính riêng cho AI Agents
Sandboxes cung cấp cho AI agents một môi trường persistent, isolated: shell thật, filesystem thật, background processes thật. Khác với container ephemeral, Sandboxes giữ nguyên state giữa các lần gọi — agent có thể quay lại và tiếp tục từ đúng nơi đã dừng.
graph LR
AGENT["🤖 AI Agent"] --> SANDBOX["🏗️ Sandbox"]
SANDBOX --> SHELL["Shell Access"]
SANDBOX --> FS["Persistent
Filesystem"]
SANDBOX --> PROC["Background
Processes"]
SANDBOX --> OW["Outbound Workers
(Zero-trust Egress)"]
OW --> API1["External API 1"]
OW --> API2["External API 2"]
style AGENT fill:#e94560,stroke:#fff,color:#fff
style SANDBOX fill:#2c3e50,stroke:#fff,color:#fff
style SHELL fill:#f8f9fa,stroke:#e94560,color:#2c3e50
style FS fill:#f8f9fa,stroke:#e94560,color:#2c3e50
style PROC fill:#f8f9fa,stroke:#e94560,color:#2c3e50
style OW fill:#3498db,stroke:#fff,color:#fff
style API1 fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50
style API2 fill:#f8f9fa,stroke:#e0e0e0,color:#2c3e50
7.2. Durable Object Facets — Database riêng cho mỗi app
Facets là tính năng cho phép Dynamic Workers tạo Durable Object classes on-the-fly, mỗi class có SQLite database riêng. Đây là nền tảng cho các platform kiểu "mỗi user có app riêng" — AI-generated apps, no-code builders, multi-tenant SaaS.
// Dynamic Worker tạo Durable Object với Facets
const id = env.MY_DURABLE_OBJECT.idFromName('user-123-app');
const stub = env.MY_DURABLE_OBJECT.get(id);
// Mỗi instance có SQLite database riêng biệt
// User 123 không thể truy cập data của User 456
await stub.fetch('/api/data', {
method: 'POST',
body: JSON.stringify({ key: 'settings', value: { theme: 'dark' } })
});8. Pages → Workers: Cuộc hợp nhất lớn
Một thay đổi quan trọng trong 2026: Cloudflare Pages đã chuyển sang maintenance mode. Toàn bộ đầu tư mới tập trung vào Workers. Điều này có nghĩa gì?
| Tính năng | Pages (Maintenance) | Workers (Active) |
|---|---|---|
| Static site hosting | Có | Có (Workers Sites / Assets) |
| Serverless functions | Pages Functions (giới hạn) | Full Workers runtime |
| Durable Objects | Không | Có |
| D1, R2, KV, Queues | Qua Functions | Native binding |
| Cron Triggers | Không | Có |
| Dynamic Workers | Không | Có |
| Python support | Không | Có |
| Containers | Không | Có (trên DO) |
| Git integration | Có (auto deploy) | Có (Workers Builds GA) |
Migration note cho Pages users
Nếu bạn đang dùng Pages, project hiện tại vẫn hoạt động bình thường. Nhưng cho project mới, hãy bắt đầu với Workers + Assets. Cloudflare sẽ cung cấp migration path chính thức, nhưng càng sớm chuyển càng được hưởng nhiều tính năng mới.
9. Free Tier tổng hợp — Được gì miễn phí?
Đây là phần hấp dẫn nhất: free tier của Cloudflare rất rộng rãi, đặc biệt so với AWS và Vercel.
Workers
- 100,000 requests/ngày
- 10ms CPU time/request
- Unlimited Workers
- Custom domains
- Cron Triggers (5 triggers)
D1 Database
- 5 GB storage tổng
- 5M rows read/ngày
- 100K rows written/ngày
- Read replicas miễn phí
- Time Travel 30 ngày
R2 Storage
- 10 GB storage/tháng
- 1M Class A ops/tháng
- 10M Class B ops/tháng
- Egress: $0 (unlimited)
- S3-compatible API
Workers AI
- 10,000 Neurons/ngày
- 50+ models (LLM, Image, STT)
- AI Gateway analytics
- Vectorize 5M vectors
- Inference tại 200+ PoPs
KV Storage
- 100,000 reads/ngày
- 1,000 writes/ngày
- 1 GB stored
- Eventually consistent
- Global replication
Durable Objects
- SQLite storage (GA)
- Workers Free plan
- WebSocket hibernation
- Alarms (scheduled wake)
- Transactional storage
Tổng kết: Bạn có thể build gì miễn phí?
Với free tier, bạn hoàn toàn có thể chạy production một blog/portfolio, API backend cho mobile app, SaaS MVP, real-time chat app, hoặc AI chatbot. Chỉ khi scale lên hàng triệu requests/ngày, bạn mới cần nâng cấp lên Workers Paid ($5/tháng).
10. So sánh với AWS Lambda, Vercel và Deno Deploy
| Tiêu chí | Cloudflare Workers | AWS Lambda | Vercel Functions | Deno Deploy |
|---|---|---|---|---|
| Cold Start | <5ms | 100-500ms | ~250ms | ~10ms |
| Runtime | V8 Isolate | Container | Container (AWS) | V8 Isolate |
| Edge Locations | 330+ | 30+ regions | ~20 regions | 35+ regions |
| SQL Database | D1 (5GB free) | Không (cần RDS) | Vercel Postgres (256MB free) | Deno KV |
| Object Storage | R2 (zero egress) | S3 ($0.09/GB egress) | Vercel Blob | Không native |
| AI Inference | Workers AI (50+ models) | Bedrock (trả phí) | Không native | Không native |
| Free Requests | 100K/ngày | 1M/tháng | 100K/tháng (Hobby) | 1M/tháng |
| Stateful Compute | Durable Objects | Không native | Không | Không |
| Language | JS/TS, Python, WASM | Đa ngôn ngữ | JS/TS | JS/TS |
| Container support | Có (trên DO) | Native | Không | Không |
Khi nào KHÔNG nên chọn Cloudflare?
Long-running tasks: Workers Free giới hạn 10ms CPU/request (Paid: 30s). Nếu cần xử lý nặng (video encoding, ML training), Lambda với 15 phút timeout phù hợp hơn. Đa ngôn ngữ: Nếu cần Java, Go, .NET — Lambda vẫn là lựa chọn linh hoạt nhất. Hệ sinh thái AWS: Nếu đã invest sâu vào SQS, DynamoDB, Step Functions — chuyển sang Cloudflare sẽ tốn công migration.
11. Thực hành: Deploy ứng dụng Vue + API trên Cloudflare
Dưới đây là kiến trúc thực tế cho một ứng dụng Vue.js + Workers API + D1 + R2, deploy hoàn toàn trên Cloudflare free tier.
graph TD
BROWSER["🌐 Browser
(Vue SPA)"] -->|HTTPS| CF["Cloudflare Edge"]
CF -->|Static Assets| ASSETS["Workers Assets
(Vue Build)"]
CF -->|/api/*| WORKER["Workers API
(TypeScript)"]
WORKER -->|Query| D1DB["D1 Database"]
WORKER -->|Upload/Download| R2B["R2 Bucket"]
WORKER -->|Auth| DO_AUTH["Durable Object
(Session)"]
WORKER -->|AI| WAI["Workers AI
(Summarize)"]
style BROWSER fill:#e94560,stroke:#fff,color:#fff
style CF fill:#2c3e50,stroke:#fff,color:#fff
style ASSETS fill:#f8f9fa,stroke:#3498db,color:#2c3e50
style WORKER fill:#3498db,stroke:#fff,color:#fff
style D1DB fill:#f8f9fa,stroke:#e94560,color:#2c3e50
style R2B fill:#f8f9fa,stroke:#e94560,color:#2c3e50
style DO_AUTH fill:#f8f9fa,stroke:#e94560,color:#2c3e50
style WAI fill:#f8f9fa,stroke:#e94560,color:#2c3e50
11.1. Cấu hình wrangler.jsonc
{
"name": "my-vue-app",
"main": "src/worker.ts",
"compatibility_date": "2026-04-01",
"assets": {
"directory": "./dist",
"binding": "ASSETS"
},
"d1_databases": [
{ "binding": "DB", "database_name": "my-app-db", "database_id": "xxx" }
],
"r2_buckets": [
{ "binding": "BUCKET", "bucket_name": "my-app-files" }
],
"durable_objects": {
"bindings": [
{ "name": "SESSIONS", "class_name": "SessionDO" }
]
},
"ai": { "binding": "AI" },
"triggers": {
"crons": ["0 2 * * *"]
}
}11.2. Worker entry point
import { SessionDO } from './session-do';
export { SessionDO };
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const url = new URL(request.url);
// API routes
if (url.pathname.startsWith('/api/')) {
return handleApi(request, env, url);
}
// Serve Vue SPA từ Assets
return env.ASSETS.fetch(request);
}
};
async function handleApi(request: Request, env: Env, url: URL) {
// GET /api/posts — lấy danh sách bài viết
if (url.pathname === '/api/posts' && request.method === 'GET') {
const { results } = await env.DB.prepare(
'SELECT id, title, excerpt, created_at FROM posts ORDER BY created_at DESC LIMIT 20'
).all();
return Response.json(results);
}
// POST /api/upload — upload file lên R2
if (url.pathname === '/api/upload' && request.method === 'POST') {
const formData = await request.formData();
const file = formData.get('file') as File;
const key = `uploads/${Date.now()}-${file.name}`;
await env.BUCKET.put(key, file.stream(), {
httpMetadata: { contentType: file.type }
});
return Response.json({ url: `/cdn/${key}` });
}
// POST /api/summarize — tóm tắt bằng AI
if (url.pathname === '/api/summarize' && request.method === 'POST') {
const { text } = await request.json() as { text: string };
const result = await env.AI.run('@cf/meta/llama-3.3-70b-instruct-fp8-fast', {
messages: [
{ role: 'system', content: 'Tóm tắt đoạn văn sau trong 2-3 câu bằng tiếng Việt.' },
{ role: 'user', content: text }
]
});
return Response.json(result);
}
return new Response('Not Found', { status: 404 });
}11.3. Deploy
# Build Vue app
npm run build
# Deploy lên Cloudflare (free tier)
npx wrangler deploy
# Tạo D1 database
npx wrangler d1 create my-app-db
npx wrangler d1 execute my-app-db --file=./schema.sql
# Tạo R2 bucket
npx wrangler r2 bucket create my-app-files12. Kết luận
Cloudflare Developer Platform năm 2026 đã vượt xa khái niệm "CDN có thêm serverless functions". Với hệ sinh thái gồm Workers (compute), D1 (database), R2 (storage), Durable Objects (state), Workers AI (inference), Sandboxes (isolated runtime), và Containers — đây là một full-stack cloud platform chạy hoàn toàn tại edge.
Điểm mạnh cốt lõi:
- Free tier cực rộng: Đủ cho production của nhiều startup và side project
- Zero egress trên R2: Tiết kiệm hàng nghìn USD/tháng cho ứng dụng media-heavy
- Cold start gần bằng 0: V8 isolates nhanh hơn containers đáng kể
- Global by default: Code tự động chạy gần user nhất, không cần chọn region
- AI tích hợp sẵn: Inference 50+ models ngay tại edge, không cần setup riêng
- Agents-ready: Sandboxes + Dynamic Workers + Facets — sẵn sàng cho thời đại AI agents
Với $5/tháng cho Workers Paid plan, bạn unlock thêm 10M requests/tháng, 30s CPU time, Durable Objects nâng cao, và Queues. Đối với phần lớn ứng dụng web hiện đại — từ blog, SaaS MVP đến real-time collaboration tools — Cloudflare Developer Platform là lựa chọn xứng đáng được xem xét nghiêm túc.
Tham khảo
- Cloudflare Workers Documentation
- Cloudflare D1 Documentation
- Cloudflare R2 Documentation
- Cloudflare Durable Objects Documentation
- Cloudflare Workers AI Documentation
- Agents have their own computers with Sandboxes GA — Cloudflare Blog
- Durable Objects in Dynamic Workers: Facets — Cloudflare Blog
- Agents Week 2026 Updates — Cloudflare
- Python Workers Redux — Cloudflare Blog
- Cloudflare Workers Pricing
Disclaimer: The opinions expressed in this blog are solely my own and do not reflect the views or opinions of my employer or any affiliated organizations. The content provided is for informational and educational purposes only and should not be taken as professional advice. While I strive to provide accurate and up-to-date information, I make no warranties or guarantees about the completeness, reliability, or accuracy of the content. Readers are encouraged to verify the information and seek independent advice as needed. I disclaim any liability for decisions or actions taken based on the content of this blog.