
Khi nói đến việc đưa một website lên Internet, cách truyền thống thường là thuê VPS, cài Linux, Nginx, SSL, sau đó build source code và copy lên server.
Nhưng với các website frontend hiện đại như React/Vite, chúng ta có thể bỏ gần như toàn bộ phần vận hành server đó.
Mô hình mình đang sử dụng cho haona.asia khá đơn giản:
Code Local
↓
GitHub
↓
Cloudflare Pages
↓
Cloudflare Edge/CDN
↓
haona.asia
Khi website cần xử lý form hoặc API:
Browser
↓
Cloudflare Pages Function
↓
n8n
↓
Automation / Email / Telegram / Database
Vậy mô hình này thực chất là gì, có lợi gì và có thể thay thế VPS đến mức nào?
Mô hình này gọi là gì?
Có thể gọi đây là:
Git-based Continuous Deployment kết hợp Serverless/Edge Computing.
Nó cũng mang một số đặc điểm của GitOps, nhưng nếu nói chính xác thì với một website React/Vite như trên, gọi Git-based Continuous Deployment sẽ phù hợp hơn.
GitHub đóng vai trò lưu source code.
Cloudflare đóng vai trò:
- build ứng dụng;
- deploy;
- hosting;
- CDN;
- SSL;
- Edge Network;
- chạy một phần backend thông qua Functions/Workers.
Developer chủ yếu làm việc với Git.
Developer → git push → GitHub → Cloudflare → Production
Cách truyền thống: phải tự host server
Ví dụ nếu tự triển khai một website React trên VPS, chúng ta thường phải chuẩn bị:
VPS
↓
Linux
↓
Nginx
↓
SSL
↓
Build React
↓
Copy dist
↓
Reverse Proxy
↓
Firewall
↓
Monitoring
↓
Backup
Ngoài việc phát triển website, chúng ta còn phải quan tâm:
- server còn sống hay không;
- CPU/RAM có đầy không;
- ổ đĩa có hết không;
- Nginx có lỗi không;
- SSL có hết hạn không;
- server có bị tấn công không;
- cấu hình firewall;
- backup;
- update hệ điều hành;
- xử lý khi server down.
Với website nhỏ hoặc frontend tĩnh, đây đôi khi là một lượng công việc vận hành khá lớn so với nhu cầu thực tế.
Với Cloudflare thì khác như thế nào?
React/Vite sau khi build chủ yếu tạo ra:
HTML
CSS
JavaScript
Images
Fonts
Đây là những static assets.
Thay vì thuê một server chỉ để phục vụ những file này, chúng ta đưa chúng lên Cloudflare.
Cloudflare sau đó phân phối website thông qua hệ thống Edge/CDN của họ.
Mô hình trở thành:
React/Vite
↓
Build
↓
Static Assets
↓
Cloudflare Edge Network
↓
User
Không còn một VPS duy nhất đứng giữa người dùng và website.
GitHub trở thành một phần của quy trình triển khai
Điểm mình thích nhất ở mô hình này là việc deploy gần như gắn trực tiếp với Git.
Ở local:
git add .
git commit -m "update website"
git push origin main
Sau khi push lên main:
GitHub phát hiện source mới
↓
Cloudflare nhận source
↓
npm install
↓
npm run build
↓
Deploy
↓
Production
Không cần:
SSH server
scp file
FTP
copy dist
restart nginx
Một commit mới có thể trở thành một deployment mới.
Đây chính là Continuous Deployment
Ở cách truyền thống:
Code
↓
Build
↓
Upload
↓
SSH
↓
Deploy
↓
Restart
↓
Production
Trong mô hình Git-based CD:
Code
↓
git push
↓
Production
Tất nhiên ở phía sau Cloudflare vẫn thực hiện build và deployment.
Điểm khác biệt là developer không còn phải tự thao tác những bước đó.
Cloudflare Pages là gì?
Cloudflare Pages được Cloudflare đưa vào General Availability từ năm 2021, ban đầu tập trung vào việc build và host các website JAMstack/static từ Git.
Ví dụ kết nối:
GitHub
↓
Cloudflare Pages
↓
React/Vite Build
↓
CDN
↓
Website
Pages có sẵn những thứ rất tiện cho frontend developer như:
- Git integration;
- automatic deployment;
- preview deployment;
- custom domain;
- SSL;
- CDN;
- rollback;
- branch deployment.
Vì vậy Pages từng là lựa chọn rất phù hợp cho React, Vue, Astro và các static site.
Cloudflare Workers là gì?
Cloudflare Workers xuất hiện sớm hơn Pages rất nhiều.
Cloudflare giới thiệu Workers từ 2017, và mở rộng nó thành một nền tảng serverless chạy code trực tiếp trên mạng Edge của Cloudflare.
Có thể hình dung:
Request người dùng
↓
Cloudflare Edge
↓
Worker chạy code
↓
Response
Thay vì request phải đi về một VPS đặt tại Singapore, Việt Nam hoặc Mỹ, logic có thể được thực thi ngay trong hạ tầng Edge của Cloudflare.
Đây chính là một dạng Edge Computing.
Vậy Pages Function là gì?
Pages Function thực chất sử dụng Cloudflare Workers runtime.
Cloudflare cho phép developer thêm code phía server vào dự án Pages mà không cần dựng backend riêng.
Ví dụ website có form:
Tên
Email
Số điện thoại
Nội dung
Không nên để browser gọi trực tiếp:
Browser → n8n webhook
vì URL webhook sẽ xuất hiện trong frontend.
Thay vào đó:
Browser
↓
POST /api/contact
↓
Cloudflare Function
↓
n8n Webhook
Function có thể đảm nhiệm:
- kiểm tra dữ liệu;
- xác thực request;
- giấu endpoint phía sau;
- thêm secret;
- rate limit;
- kiểm tra CAPTCHA;
- transform JSON;
- gọi API khác;
- gửi request sang n8n.
Nhờ vậy website có một lớp backend nhỏ mà không cần dựng ASP.NET, Node.js hay một VPS riêng.
Ví dụ thực tế với haona.asia
Kiến trúc có thể chia thành hai luồng.
Luồng deploy
Laptop
↓
React/Vite
↓
GitHub
↓
Cloudflare Pages
↓
Cloudflare CDN
↓
haona.asia
Luồng API
Người dùng
↓
haona.asia
↓
/api/contact
↓
Cloudflare Function
↓
n8n
↓
Automation
Ví dụ n8n có thể tiếp tục:
n8n
├── Telegram
├── Email
├── CRM
├── Google Sheets
├── Database
└── External API
Như vậy website gần như không cần một backend server chạy 24/7.
Lợi ích lớn nhất: không phải tự host
Đây có lẽ là lợi ích rõ ràng nhất.
Không cần dựng riêng:
Ubuntu Server
Nginx
Certbot
Docker
PM2
systemd
Firewall
Fail2ban
cho một website frontend đơn giản.
Điều đó đồng nghĩa giảm rất nhiều việc vận hành.
Không phải quản lý SSL
Nếu domain được cấu hình với Cloudflare, HTTPS có thể được Cloudflare xử lý.
Không cần tự:
certbot renew
hay theo dõi certificate trên một web server riêng.
Có CDN sẵn
Nếu VPS đặt tại Singapore:
User Việt Nam
↓
Singapore VPS
thì mọi người đều truy cập về server đó.
Với CDN/Edge:
┌─ Edge
User ────────┼─ Edge
├─ Edge
└─ Edge
Static assets được Cloudflare cache và phân phối thông qua mạng lưới toàn cầu.
Ít điểm lỗi hơn
Khi tự host:
Internet
↓
VPS
↓
Nginx
↓
Application
Nếu VPS chết thì website chết.
Với frontend static chạy trên Cloudflare, chúng ta không phải duy trì một máy chủ web duy nhất như vậy.
Deploy và rollback dễ hơn
Git commit tạo ra lịch sử rất rõ:
commit A
commit B
commit C
commit D
Deployment cũng gắn với các phiên bản source.
Nếu bản mới có vấn đề, việc xác định phiên bản trước đó đơn giản hơn nhiều so với copy file thủ công lên VPS.
Có miễn phí không?
Đối với website nhỏ, chi phí có thể rất thấp.
Cloudflare hiện cho phép static asset requests trên Pages miễn phí và không giới hạn; tuy nhiên nếu request chạy Pages Functions thì sẽ được tính theo quota của Workers.
Điểm cần hiểu là:
Static file → rất rẻ / có thể miễn phí
Function/API → có quota và giới hạn
Do đó mô hình này đặc biệt phù hợp với:
- portfolio;
- landing page;
- website công ty;
- documentation;
- blog frontend;
- SPA;
- website giới thiệu sản phẩm.
Nhưng Serverless không có nghĩa là không có server
Một hiểu nhầm phổ biến là:
Serverless = không có server.
Thực tế server vẫn tồn tại.
Chỉ là:
Mình không phải quản trị server đó.
Cloudflare chịu trách nhiệm phần infrastructure.
Developer chỉ quan tâm:
Code
Configuration
Deployment
thay vì:
Hardware
OS
Kernel
Nginx
Patch
Scaling
Server monitoring
Giới hạn của mô hình này là gì?
Serverless/Edge không phải lúc nào cũng thay thế được VPS.
Đây là điểm rất quan trọng.
1. Không có quyền kiểm soát hệ điều hành
Với VPS:
ssh root@server
sau đó muốn cài gì gần như cũng được.
Cloudflare Workers thì không như vậy.
Không có:
SSH
root
apt install
systemctl
Docker daemon
Code phải chạy trong runtime mà Cloudflare hỗ trợ.
2. Không phù hợp với service chạy liên tục
Ví dụ:
Asterisk
FreeSWITCH
PostgreSQL Server
Redis Server
n8n self-host
Prometheus
Grafana
không phải loại workload để đưa trực tiếp lên Workers.
Những hệ thống này vẫn phù hợp với VPS, VM, container hoặc Kubernetes hơn.
3. Function có giới hạn
Workers không phải một VPS thu nhỏ.
Nó có các giới hạn về:
- thời gian thực thi;
- CPU;
- memory;
- request;
- runtime;
- kích thước deployment;
- một số API Node.js.
Nếu backend rất lớn hoặc cần xử lý nặng thì cần thiết kế lại kiến trúc.
4. Dữ liệu không tự tồn tại trong Worker
Worker xử lý request nhưng không nên hiểu nó giống một server có ổ cứng local.
Nếu cần lưu dữ liệu lâu dài thì phải sử dụng các hệ thống như:
Cloudflare D1
Cloudflare KV
Cloudflare R2
Durable Objects
External Database
External API
5. Phụ thuộc nền tảng Cloudflare
Khi sử dụng sâu:
Workers
D1
KV
R2
Durable Objects
ứng dụng sẽ ngày càng gắn với hệ sinh thái Cloudflare.
Nếu sau này muốn chuyển sang AWS, Azure hoặc VPS thì có thể phải chỉnh sửa một phần kiến trúc.
Đây thường được gọi là vendor lock-in.
Pages và Workers: năm 2026 nên hiểu thế nào?
Đây là phần khá quan trọng nếu đang tìm hiểu Cloudflare hiện nay.
Trước đây mô hình phổ biến là:
Frontend
↓
Cloudflare Pages
Backend nhỏ
↓
Pages Functions
Nhưng Cloudflare đang dần hợp nhất hướng phát triển quanh Workers.
Workers hiện có thể deploy đồng thời:
Static Assets
+
Worker Backend
thành một deployment duy nhất.
Kiến trúc mới có thể đơn giản thành:
GitHub
↓
Cloudflare Workers
├── React/Vite Static Assets
└── API Worker
↓
haona.asia
Cloudflare hiện khuyến nghị Workers Static Assets cho các dự án mới, còn Pages vẫn tiếp tục hoạt động.
Vậy Cloudflare Pages có lỗi thời không?
Không.
Pages vẫn hoạt động và những website đang chạy Pages không cần phải vội chuyển đi.
Nhưng định hướng hiện tại của Cloudflare là:
Trước đây
Pages
├── Static Hosting
└── Pages Functions
↓
Workers
Hiện nay
Workers
├── Static Assets
├── API
├── Backend Logic
└── Edge Computing
Cloudflare cũng đã có tài liệu chính thức hướng dẫn migrate từ Pages sang Workers.
Do đó nếu bắt đầu một dự án mới trong năm 2026, mình sẽ ưu tiên nghiên cứu:
Cloudflare Workers + Static Assets
thay vì chỉ bắt đầu với Pages.
Công nghệ này mới hay cũ?
Nếu xét tuổi đời thì không mới.
Cloudflare Workers xuất hiện từ:
2017.
Cloudflare Pages được đưa vào production rộng rãi từ:
2021.
Pages Functions được đưa vào General Availability vào:
2022.
Nhưng cách xây dựng ứng dụng theo hướng:
Git
↓
Automatic Deployment
↓
Serverless
↓
Edge
vẫn là một kiến trúc rất hiện đại.
Điều mới không nằm ở việc Cloudflare Workers vừa xuất hiện.
Điều đáng chú ý là các nền tảng Cloud đang ngày càng cho phép developer xây dựng nhiều loại ứng dụng hơn mà không phải tự quản lý server.
Khi nào nên dùng?
Mô hình này rất phù hợp với:
React/Vite SPA
Landing Page
Portfolio
Website doanh nghiệp
Frontend Dashboard
Documentation
Marketing Website
Form → n8n
API nhỏ
Webhook Proxy
Ví dụ:
haona.asia
React/Vite
↓
Cloudflare
↓
Function/Worker
↓
n8n
là một use case khá hợp lý.
Khi nào vẫn nên dùng VPS?
Nếu hệ thống cần:
Docker
Asterisk
FreeSWITCH
PostgreSQL
Redis
Long-running process
Custom Linux package
Persistent TCP connection
Full OS control
thì VPS vẫn phù hợp hơn.
Thực tế không cần lựa chọn một trong hai.
Có thể kết hợp:
┌─ Cloudflare Workers
│
Internet → Cloudflare
│
└─ VPS / Backend
Frontend và API nhẹ chạy Edge.
Các workload nặng vẫn chạy trên server riêng.
Kết luận
Mô hình:
Local
↓
GitHub
↓
Cloudflare
↓
haona.asia
thoạt nhìn rất đơn giản nhưng phía sau nó kết hợp khá nhiều khái niệm của phát triển phần mềm hiện đại:
Git
CI/CD
Serverless
Edge Computing
CDN
Infrastructure Abstraction
Điểm quan trọng nhất không phải là không còn server.
Mà là:
Developer không còn phải tự quản lý server cho những phần của hệ thống không thực sự cần server riêng.
Với một website React/Vite, mình có thể tập trung vào code.
Code
↓
Git Push
↓
Production
Cloudflare lo phần build, deployment, SSL, CDN và Edge Infrastructure.
Khi cần thêm một chút backend, Workers có thể xử lý API.
Khi cần automation, chuyển tiếp sang n8n.
Khi hệ thống lớn hơn và thực sự cần server, lúc đó mới đưa VPS, container hoặc các dịch vụ backend chuyên dụng vào kiến trúc.
Đó cũng là điểm mình thấy thú vị nhất của mô hình này:
không cố gắng loại bỏ server, mà chỉ sử dụng server ở nơi thật sự cần thiết.
Bài viết khác: cloudflare