Nỗi buồn CI/CD




Anh ơi, sao production lỗi mà staging không có log lỗi gì?
Máy em thì chạy bình thường mà…

Máy em chạy ngon lành, staging xanh lè, sao prod lại crash? Chắc… tại cache hả anh?

Nếu có một câu làm Fractional CTO muốn chửi thề thì đó là: “ Máy em chạy tốt mà, prod lỗi chắc do mạng!”. Dev đứng trước repo lấp lánh, code style đẹp như mơ, test local xanh như đồng cỏ, nhưng production thì “ bùng cháy” như phim thảm họa Hollywood.

Nhiều team có repo đẹp, code style gọn gàng, nhưng khi hỏi:

  • Pipeline CI/CD đâu? – “Dạ, có mà, nhưng tụi em hay deploy tay cho chắc.”
  • Test coverage? – “Dạ, chắc…, nhưng local chạy OK mà!”
  • Môi trường staging giống production bao nhiêu phần trăm? – Cả team nhìn nhau, không khí tĩnh lặng như chờ load pipeline.

Vấn đề thường gặp:

  • Staging ≠ Production: Staging chạy DB local, secret hardcode, còn prod thì RDS, Secrets Manager. Config khác, data khác, thế là lỗi chỉ “nở hoa” trên prod.
  • Không có rollback plan: Prod crash, cả team lục commit history như thám tử Conan, cầu trời tìm đúng tag.
  • Mỗi lần deploy là… cầu nguyện: Mỗi lần deploy là mở YouTube xem video mèo để giết thời gian, hy vọng prod không sập.

Backend/Frontend khoe code “ chạy mượt trên máy em”, nhưng lỗi prod đến từ thiếu validate config, query sai, hoặc môi trường staging “ giả trân”. DevOps cũng không vô can, vì pipeline không kiểm tra env consistency, và rollback thì như chơi xổ số.

Là CTO, tôi luôn đề xuất CI/CD như sau:

  • CI:
    • Lint + Unit Test + Build
    • Use GitHub Actions / GitLab CI / Jenkins tùy quy mô
  • CD:
    • Mỗi pull request cần deploy preview (Vercel, Netlify, AWS Amplify…)
    • Production deploy có manual approve + canary option
    • Infra as Code: Terraform / CDK
    • Rollback plan: Luôn có option revert về bản deploy cũ

🎯 Tóm lại: CI/CD không phải công nghệ cao siêu, mà là kỷ luật vận hành. Nó không cứu bạn khỏi bug, nhưng giúp bạn không chết chìm trong bug.

Post a Comment

Mới hơn Cũ hơn