Sơ đồ Vibe Stack — tám lớp
Toàn bộ hệ thống trên một trang: từ lúc khách gõ tên miền đến lúc góp ý của họ thành việc trong backlog. Bài này là tấm bản đồ bạn sẽ mở lại nhiều lần.
Bốn bài trước nói vì sao. Bài này cho bạn hình. Tám lớp dưới đây là toàn bộ những gì bạn sẽ dựng trong 90 ngày — và mọi bài sau đều nằm ở một ô nào đó trong sơ đồ này.
Đọc sơ đồ theo đường đi của một lượt truy cập
Sáu bước, mỗi bước một lớp:
- Khách gõ tên miền → DNS trả về địa chỉ. (Lớp 1 — Tên miền & DNS)
- Cloudflare nhận tại điểm mạng gần nhất, bật HTTPS, lọc tấn công, trả file đã nằm sẵn trong bộ đệm nếu có.
- Pages trả giao diện; nếu cần dữ liệu thì trình duyệt gọi tiếp một đường
/api/…. - Workers chạy mã của bạn — kiểm quyền, đọc/ghi dữ liệu. (Lớp 2 — Workers)
- Workers đọc/ghi D1, Durable Objects hoặc R2 rồi trả kết quả. (Lớp 3 — D1, KV & R2)
- Người dùng thấy kết quả. Toàn bộ chặng này thường mất 30–300 ms.
Và đường đi của một thay đổi thì ngược lại, qua lớp 4: bạn ra yêu cầu → AI viết → commit lên GitHub → Pull Request → test → link preview → bạn duyệt → Cloudflare nhận bản mới.
Bản rút gọn — đọc được trên điện thoại
Ba luật nằm ngoài mọi ô
Sơ đồ có ba dòng chữ nhỏ, và chúng quan trọng hơn vẻ ngoài:
AI chỉ đề xuất, người duyệt rồi mới deploy. · Khóa bí mật không để trong mã. · Lỗi thì rollback ngay.
Ba luật này là ranh giới của cả giáo trình:
- Luật 1 — không có đường nào từ AI đi thẳng ra bản thật. Mọi thay đổi phải qua cổng kiểm soát ở lớp 4. Đây là lý do bài GitHub Actions dựng cổng duyệt, và lý do quy trình preview → test → deploy là bài dài nhất Cấp 5.
- Luật 2 — AI không giữ khóa. Khóa nằm ở lớp 6, trong Secrets, không nằm trong mã nguồn mà AI đọc được. Bí mật và token.
- Luật 3 — hỏng thì khôi phục trước, điều tra sau. Một lệnh
rollback, rồi mới đi tìm nguyên nhân. Người mới hay làm ngược và kéo dài thời gian app chết.
Tôi đã xem nhiều sơ đồ kiến trúc do người học tự vẽ. Hầu hết vẽ đủ lớp 1–4: tên miền, Pages, Workers, cơ sở dữ liệu, GitHub. Và gần như không ai vẽ lớp 6, lớp 7 và lớp 8.
Đó cũng đúng là những lớp quyết định bạn giữ được khách hay không:
- Thiếu lớp 6 (vận hành), bạn vẫn giao được app. Rồi một ngày mất dữ liệu, hoặc khóa rò rỉ, và mọi thứ bạn làm trước đó thành vô nghĩa. Lớp này không tạo ra tính năng nào — nó bảo vệ toàn bộ số tính năng bạn đã làm.
- Thiếu lớp 7 (chất lượng), app chạy đúng nhưng không ai tìm thấy, mở chậm trên 4G, và bạn không biết người dùng bỏ cuộc ở màn hình nào.
- Thiếu lớp 8 (phản hồi), bạn không biết app của mình sai ở đâu. Người dùng gặp lỗi thì họ không báo — họ bỏ dùng, rồi ba tháng sau nói "cái app ấy khó dùng".
Nếu phải bỏ một lớp vì hết thời gian, hãy bỏ Durable Objects, đừng bỏ sao lưu.
Phân vai ở lớp 5 — xanh và vàng
Lớp 5 là lớp duy nhất nói về con người. Nó chia việc thành hai loại, và cách chia này là kết luận từ thực tế, không phải quan điểm:
- AI làm tốt — giao thẳng, bạn chỉ duyệt kết quả
- Cần chuyên gia — AI làm được 70%, 30% còn lại phải có người biết nghề
| Việc | Ai | Vì sao |
|---|---|---|
| Code giao diện (front-end) | AI làm tốt | Có mẫu rõ, sai thì thấy ngay bằng mắt |
| Viết và chạy test | AI làm tốt | Việc lặp, có tiêu chí đúng/sai rành mạch |
| Đọc log, tìm và sửa lỗi | AI làm tốt | Có thông báo lỗi làm bằng chứng để lần theo |
| Thiết kế trải nghiệm (UX/UI) | Cần chuyên gia | Phải hiểu người dùng thật, không suy ra từ mã |
| Logic nghiệp vụ, dữ liệu (API) | Cần chuyên gia | Sai ở đây không hiện ra — tiền, ngày, quyền |
| Review & bảo mật | Cần chuyên gia | AI khó tự soi lỗi của chính nó |
"Chuyên gia" ở đây không nhất thiết là người khác. Phần lớn người đọc giáo trình này sẽ trở thành chuyên gia ở ba ô vàng — đó chính là nội dung Cấp 3 đến Cấp 5. Bài sau mổ kỹ từng ô.
AI Router — ô tùy chọn, và vì sao nó đáng nghĩ tới
Trong sơ đồ, AI Router là ô duy nhất ghi "tùy chọn". Nó là lớp điều phối: thay vì bạn tự chuyển tay việc giữa Cloudflare, nơi viết mã, GitHub, vận hành và phản hồi, có một chỗ đứng giữa làm việc đó.
Hai dòng chữ nhỏ dưới ô đó mới là phần quan trọng:
Đổi nhà AI được · AI dừng vẫn làm tay được.
Đây là nguyên tắc chống phụ thuộc, và nó đáng giá hơn bản thân cái router:
- Đừng để quy trình của bạn chỉ chạy được với một nhà cung cấp AI. Mã nguồn nằm trên GitHub, hạ tầng ở Cloudflare, luật nằm trong
CLAUDE.mddạng chữ — cả ba đều đọc được bằng mắt người. Hôm nào đổi công cụ AI, bạn mang chúng đi theo. - Mọi việc AI làm phải có đường làm tay tương đương. Deploy bằng một lệnh
wrangler, không phải bằng một nút bấm chỉ tồn tại trong một công cụ. Test có script chạy được từ dòng lệnh. Nếu ngày mai không còn AI, app của bạn vẫn vận hành được — chậm hơn, nhưng không chết.
Với người mới: bỏ qua ô này. Nó chỉ đáng dựng khi bạn đã có nhiều app và thấy mình lặp lại cùng một chuỗi thao tác hằng ngày — tức là từ Cấp 6.
Thật sự. Tôi in ra A4, dán cạnh màn hình, và nó giải quyết một vấn đề tôi không ngờ: mỗi khi bí, tôi biết mình đang ở ô nào.
Trước đó tôi hay rơi vào trạng thái "web lỗi" chung chung, rồi sửa loạn xạ. Giờ tôi chỉ vào sơ đồ: trang không mở được là lớp 1; trang mở được mà không có dữ liệu là lớp 2 hoặc 3; dữ liệu đúng mà nhìn rối là lớp 5 phần UX; mở chậm là lớp 7. Biết mình đang ở đâu thì câu hỏi cho AI cũng rõ hẳn ra.
Một điều nữa: tôi dùng sơ đồ này để nói chuyện với khách. Chỉ cho họ tám ô, nói "chỗ này em làm xong rồi, chỗ này chưa" — họ hiểu ngay và không hỏi những câu khó trả lời.
Sau khi đi hết giáo trình, app của bạn sẽ dùng một tập con của sơ đồ này. Bắt AI vẽ đúng tập con đó:
Đọc wrangler.toml, package.json và cấu hình deploy của project này,
rồi liệt kê thành bảng 8 lớp theo đúng khuôn dưới đây. Với mỗi lớp,
ghi: đang dùng gì (tên thật trong cấu hình), hay CHƯA CÓ.
1 Truy cập (tên miền, DNS, HTTPS, CDN, WAF)
2 Hạ tầng (Pages / Workers)
3 Lưu trữ (D1 / Durable Objects / R2 / KV)
4 Phát triển (repo, PR, CI, link preview, luật riêng)
5 Phân vai (ai làm phần nào)
6 Vận hành (đăng nhập, khóa bí mật, giám sát, sao lưu)
7 Chất lượng (Web Vitals, SEO, analytics, dễ truy cập)
8 Phản hồi (chỗ nhận lỗi và góp ý)
Chỉ ghi những gì ĐỌC ĐƯỢC trong cấu hình. Không đoán, không khuyên.
Ô nào ghi "CHƯA CÓ" là việc còn nợ. Chạy lại đề này mỗi tháng — nó là bảng kiểm sức khỏe project, mất 1 phút.
- Đủ: sơ đồ tám lớp (ảnh gốc + bản rút gọn), đường đi của một lượt truy cập và của một thay đổi, ba luật ngoài ô, phân vai xanh/vàng, AI Router, cách tự dựng sơ đồ cho project của mình.
- Cố ý đơn giản hóa ở bản rút gọn: gộp KV vào lớp 3 (bài KV & R2), bỏ Queues và Cron (lớp 2, bài Cron & việc chạy nền). Thêm vào thì đúng hơn nhưng không ai đọc nổi trên điện thoại.
- Rủi ro còn lại: sơ đồ cho cảm giác hệ thống đã hoàn chỉnh. Thực tế bạn sẽ dựng nó từng ô một trong 90 ngày, và ở Cấp 1 bạn chỉ có lớp 1 + lớp 2 phần Pages. Đừng thấy sơ đồ to rồi ngợp.
Mở lại tờ giấy ghi việc bạn muốn làm (từ bài 1) và khoanh vào sơ đồ những ô việc đó thật sự cần.
Ví dụ với app ghi đơn hàng cho shop: cần lớp 1, lớp 2 (cả Pages và Workers), lớp 3 chỉ D1, lớp 4 đủ, lớp 6 cần đăng nhập + sao lưu, lớp 7 chỉ cần Web Vitals, lớp 8 chỉ cần một ô "Thu thập" là nhóm Zalo với vợ. Không cần Durable Objects, không cần R2, không cần AI Router.
Danh sách ô bạn khoanh chính là giáo trình riêng của bạn — và nó luôn ngắn hơn cả giáo trình này.