Deploy xong không có nghĩa là xong. Với app vibe-coded, deploy xong mới là lúc bạn biết agent có bỏ sót behavior thật không. Người dùng bấm khác bạn. Browser khác. Data khác. Network chậm hơn. Form bị nhập sai kiểu bạn chưa nghĩ tới.

Nếu không có logs, analytics, error tracking hoặc ít nhất một cách nhận bug report tử tế, bạn đang lái trong sương.

Ba câu hỏi sau deploy

Sau khi deploy, hỏi ngay:

  1. Có ai đang dùng không?
  2. Có lỗi nào đang xảy ra không?
  3. Nếu có lỗi, deploy nào gây ra?

Analytics trả lời câu 1 ở mức tổng quan. Logs và error tracking trả lời câu 2. Release/deployment tag trả lời câu 3.

Nếu thiếu cả ba, bạn chỉ còn “người dùng báo trong chat”. Với app nội bộ nhỏ, có thể tạm đủ. Với app có user thật, không đủ.

Analytics không phải error tracking

Cloudflare Web Analytics là ví dụ về analytics nhẹ: docs mô tả nó là privacy-first, dùng beacon để đo page views, visitors và performance theo kiểu real user monitoring. Nó hữu ích để biết trang nào được mở, traffic có tụt không, host nào đang có visit.

Nhưng analytics không nói đủ:

  • button nào crash;
  • API nào trả 500;
  • user nào kẹt ở bước submit;
  • stack trace ở file nào;
  • deploy nào đưa lỗi vào.

Đừng nhìn “có page views” rồi kết luận app ổn.

Logs cho biết server đã thấy gì

Nếu app có backend, function, API route hoặc middleware, runtime logs là lớp đầu tiên để debug. Vercel Observability docs mô tả cách xem event, error rate, function invocation, runtime logs theo route, host, deployment. Cloudflare, Railway, Fly.io, Render, Supabase đều có hình thức logs riêng.

Với non-tech, prompt tốt cho agent:

Read logs for the latest deployment.
Summarize only:
- 5xx errors
- repeated 4xx that indicate user-facing bugs
- failed external API calls
- routes involved
- first seen time
Do not change code yet.

Nếu agent không có quyền đọc logs, yêu cầu nó hướng dẫn bạn lấy đúng log snippet. Đừng paste toàn bộ log 10.000 dòng vào chat.

Error tracking cần release và environment

Sentry-style error monitoring hữu ích vì nó gom lỗi theo issue, stack trace, release, environment và user context. Docs Sentry nhấn mạnh release/environment để biết version nào đang lỗi, source maps để map stack trace JS về source code gốc, và alerts khi error rate tăng.

Với vibe coding, release tag rất quan trọng. Nếu không biết lỗi bắt đầu từ commit/deploy nào, agent sẽ đoán.

Minimum setup:

  • environment: preview, production;
  • release/deploy id;
  • source maps nếu app build/minify JS;
  • alert cho spike lỗi;
  • tag route hoặc feature nếu có.

Không cần setup observability enterprise ngay. Nhưng phải biết lỗi thuộc bản nào.

User report phải có format

Người dùng sẽ báo:

App lỗi rồi.

Bạn cần biến nó thành report có ích:

User:
Time:
URL:
Device/browser:
What they tried:
Expected:
Actual:
Screenshot:
Error message:
Can reproduce:

Sau đó mới đưa cho agent:

Use this bug report plus logs.
First identify likely component/API.
Do not edit until you list files you need to inspect.

Bug report tốt giảm khả năng agent sửa nhầm.

Khi nào rollback

Không phải lỗi nào cũng cần rollback. Nhưng có vài tín hiệu phải rollback nhanh:

  • login/auth hỏng;
  • payment/booking/order sai;
  • data bị ghi nhầm;
  • user thấy data của người khác;
  • error rate tăng mạnh sau deploy;
  • form chính không submit được;
  • fix nhanh không rõ nguyên nhân.

Rollback không phải thất bại. Rollback là cách giữ hệ thống sống trong lúc bạn debug. Với app do AI sửa, rollback càng nên là phản xạ bình thường.

Prompt:

Assess whether to rollback.
Inputs:
- current error
- affected users
- changed files in latest deploy
- rollback command/path
- database changes yes/no
Output: rollback now, hotfix now, or monitor.

Nếu có database migration destructive, rollback frontend chưa đủ. Ghi rõ điều đó.

Post-deploy checklist 30 phút

Trong 30 phút đầu sau deploy:

  1. Mở production URL bằng browser sạch.
  2. Chạy happy path chính.
  3. Kiểm tra mobile.
  4. Xem analytics có beacon không.
  5. Xem logs/error dashboard.
  6. Test một input sai.
  7. Ghi deployment URL/commit.
  8. Ghi rollback path.

Checklist này nghe chậm, nhưng rẻ hơn rất nhiều so với phát hiện sáng hôm sau rằng form chính đã hỏng từ tối qua.

Chốt lại

Vibe coding không kết thúc ở commit hoặc deploy. Nó kết thúc khi bạn biết app đang được dùng thế nào, lỗi xuất hiện ở đâu, deploy nào gây lỗi, và rollback bằng cách nào.

Analytics cho biết có người vào. Logs cho biết server thấy gì. Error tracking cho biết lỗi nào lặp lại. User report cho biết người thật bị kẹt ra sao. Thiếu các lớp này, agent có thể code nhanh nhưng bạn vẫn không vận hành được sản phẩm.

Tham khảo