Giới thiệu
5 phút đọc26 tháng 5, 20263

Cloudflare Workers Chạy code serverless miễn phí, gần user, dưới 1ms cold star

Cloudflare Workers cho phép bạn deploy code JavaScript lên 300+ edge node toàn cầu, cold start dưới 1ms, và free tier đủ xài cho side project.

N

Nguyễn Nhật Long

@nguyennhatlong1303

Sơ đồ kiến trúc Cloudflare Workers: một user request từ nhiều vị trí địa lý khác nhau (Việt Nam, Mỹ, Đức) được route đến edge node gần nhất trong mạng lưới 300+ node toàn cầu của Cloudflare, mỗi node chứa V8 isolate chạy Worker script, nền tối với các đường kết nối màu cam

Bạn có bao giờ deploy một cái API lên server ở Singapore, rồi nhờ thằng bạn ở Đức test thử, nó bảo "sao chậm vậy mày"? Mình thì có. Và đó là lúc mình bắt đầu tìm hiểu về edge computing cụ thể là Cloudflare Workers.

Chuyện là thế này: mình có một side project nhỏ, cần một API đơn giản để redirect URL. Thuê VPS thì tốn tiền, dùng AWS Lambda thì cold start lâu, mà free tier cũng không hào phóng lắm. Rồi mình thử Cloudflare Workers. Deploy xong, test từ Việt Nam nhanh. Test từ Mỹ cũng nhanh. Test từ châu Âu vẫn nhanh. Lúc đó mình mới hiểu tại sao edge computing lại là một big deal.

Cloudflare Workers hoạt động kiểu gì?

Cloudflare Workers là một nền tảng serverless, nhưng khác biệt ở chỗ: code của bạn không chạy ở một region cố định. Nó được replicate ra hơn 300 edge node trên toàn cầu. Khi user gửi request, edge node gần nhất sẽ xử lý không cần đi vòng về origin server.

Workers chạy trên V8 engine đúng cái engine mà Google Chrome dùng. Không phải Node.js, không phải Deno, mà là V8 isolates. Đây là lý do cold start của Workers cực kỳ nhanh dưới 1ms, trong khi AWS Lambda hay Google Cloud Functions thường mất 300-500ms.

Sơ đồ kiến trúc Cloudflare Workers: một user request từ nhiều vị trí địa lý khác nhau (Việt Nam, Mỹ, Đức) được route đến edge node gần nhất trong mạng lưới 300+ node toàn cầu của Cloudflare, mỗi node chứa V8 isolate chạy Worker script, nền tối với các đường kết nối màu cam

Điều mình thấy hay là bạn không cần học thêm gì mới. Biết JavaScript là đủ. Viết một cái fetch handler, return một Response object done. Nếu bạn đã quen với Web API chuẩn (Request, Response, Headers, URL), bạn sẽ thấy rất quen thuộc.

So sánh nhanh với các serverless platform khác

Theo kinh nghiệm của mình sau khi dùng qua vài nền tảng, đây là bảng so sánh thực tế:

Nhìn vào bảng này, bạn sẽ thấy free tier của Cloudflare Workers hào phóng một cách bất thường. 100K requests/ngày là đủ cho hầu hết side project, thậm chí cả production nhỏ.

Tiêu chíCloudflare WorkersAWS LambdaVercel Edge Functions
Cold start< 1ms300-500ms~50ms
RuntimeV8 IsolatesNode.js/Python/...V8 (Edge Runtime)
Free tier requests100K/ngày (~3M/tháng)1M/tháng100K/tháng
Global deploymentTự động 300+ locationsChọn regionTự động
CPU time (free)10ms/request400K GB-seconds/tháng10ms/request
KV Storage (free)1GB, 100K reads/ngàyKhông có sẵnKhông có sẵn
Custom domainKhông giới hạnCần API GatewayGiới hạn
Độ phức tạp setupThấpTrung bình-CaoThấp

Bắt đầu trong 5 phút

Setup cực kỳ đơn giản. Cài Wrangler (CLI tool chính thức), login, init project, deploy. Hết.

Terminal
1npm install -g wrangler
2wrangler login
3wrangler init my-worker

File Worker cơ bản nhất trông như thế này:

JavaScript
1export default {
2 async fetch(request, env, ctx) {
3 return new Response('Hello from the edge!', {
4 headers: { 'Content-Type': 'text/plain' }
5 });
6 }
7};

Deploy:

Terminal
1wrangler deploy

Xong. Bạn có một endpoint chạy trên 300+ location toàn cầu. Không cần chọn region, không cần configure load balancer, không cần nghĩ về scaling.

Mấy use case thực tế mình đã dùng

API Gateway nhẹ

Mình hay dùng Workers làm một lớp proxy phía trước API chính. Thêm authentication, rate limiting, hoặc đơn giản là giấu API key:

JavaScript
1export default {
2 async fetch(request, env) {
3 const url = new URL(request.url);
4 const modifiedRequest = new Request(request);
5 modifiedRequest.headers.set('API-Key', env.API_SECRET);
6 return fetch('https://api.example.com' + url.pathname, modifiedRequest);
7 }
8};

Cái hay ở đây là API key nằm trong environment variable của Worker, không bao giờ lộ ra client. Và vì Worker chạy ở edge, response time cũng nhanh hơn so với việc route qua một server trung gian.

URL Shortener với KV Store

Cloudflare KV là một key-value store có sẵn, tích hợp trực tiếp với Workers. Free tier cho 1GB storage và 100K reads/ngày quá đủ cho một URL shortener:

JavaScript
1export default {
2 async fetch(request, env) {
3 const path = new URL(request.url).pathname.substring(1);
4 if (!path) return new Response('URL Shortener is running');
5
6 const destination = await env.URLS.get(path);
7 if (destination) return Response.redirect(destination, 301);
8
9 return new Response('Not found', { status: 404 });
10 }
11};

Webhook Processor

Nhận webhook từ GitHub, Stripe, hay Discord rồi xử lý forward sang Telegram, lưu log, hay trigger một action khác. Workers xử lý kiểu này rất gọn vì bản chất nó là một HTTP handler.

Sơ đồ luồng xử lý webhook: các service bên ngoài (GitHub, Stripe, Discord) gửi POST request đến Cloudflare Worker, Worker xử lý data rồi fan-out đến nhiều destination (Telegram Bot, KV Store, External API), phong cách flowchart hiện đại với icon flat và màu tím cam trên nền tối

Mấy điều cần lưu ý

Workers không phải silver bullet. Có vài giới hạn bạn cần biết trước khi all-in:

  • CPU time 10ms (free tier): Đủ cho hầu hết tác vụ I/O-bound (fetch API, đọc KV), nhưng nếu bạn cần xử lý nặng (image processing, ML inference), bạn sẽ cần paid plan hoặc dùng WebAssembly.
  • Không có file system: Workers là stateless. Muốn lưu data thì dùng KV, R2 (object storage), hoặc D1 (SQLite database) tất cả đều là Cloudflare product.
  • Không phải Node.js: Nhiều npm package dùng Node.js API (fs, net, child_process) sẽ không chạy được. Bạn cần dùng Web-compatible packages.
  • Request size limit: 100MB cho free tier. Nếu bạn cần upload file lớn, cân nhắc dùng R2 với presigned URL.

Theo kinh nghiệm của mình, Workers phù hợp nhất cho các tác vụ nhẹ, latency-sensitive, và stateless. Đừng cố nhồi cả một monolith vào đây.

Điều mình ước mình biết sớm hơn

Khi mình mới bắt đầu code, mình tốn khá nhiều tiền thuê VPS chỉ để host mấy cái API đơn giản. Nếu lúc đó biết Cloudflare Workers, mình đã tiết kiệm được kha khá cả tiền lẫn thời gian ops.

Free tier của Workers thực sự đủ dùng cho:

  • Sinh viên đang học và cần deploy project
  • Developer làm side project cuối tuần
  • Startup giai đoạn đầu cần validate idea nhanh
  • Bất kỳ ai cần một API nhẹ chạy global mà không muốn nghĩ về infrastructure

Nếu bạn chưa thử, mình khuyên thật: dành 10 phút setup một Worker đầu tiên. Cảm giác deploy xong, ping từ nhiều location và thấy latency đều dưới 50ms nó khá là satisfying. Và quan trọng nhất: nó miễn phí.

NN

Nguyễn Nhật Long

@nguyennhatlong1303

Nguyễn Nhật Long is a Senior Frontend Engineer and Frontend Team Leader with 7 years of experience building real-time fintech platforms. Specializing in React, Next.js, TypeScript, and React Native, shipping 10+ products across Web, Mobile, Telegram Mini-Apps, and Web3.

Thấy hay? Chia sẻ cho bạn bè!