Mục lục
DevOps và CI/CD: Tăng tốc phát triển phần mềm
Năm 2019, một công ty ở TP.HCM vẫn còn deploy code theo kiểu thủ công: QA tester chạy test trên máy local, rồi gửi email cho ops, ops login vào server để upload file, khỏa lót.py có khi quên (yeah, thực sự có những thứ kinh khủng như vậy). Lúc đó họ deploy khoảng 2-3 lần một tháng, và cứ mỗi lần deploy là team toàn lo lắng—chưa kể bug production cứ lèo tèo mọc ra.
Nếu tôi nói rằng sau khi áp dụng CI/CD, công ty đó bây giờ có thể deploy 50 lần một ngày mà không run nổi một cái lỗi nào? Không, tôi nói dối. Nhưng họ giảm từ 12 lỗi production mỗi tháng xuống còn khoảng 2 cái. Đó mới là thực.
Tại sao CI/CD lại quan trọng đến vậy?
Cái bản chất của vấn đề nằm ở việc con người không đáng tin cậy. Không, không phải tôi muốn chê bai ai cả. Chỉ là loài người chúng ta không được thiết kế để chạy 50 quy trình deploy thủ công mà không bỏ sót gì. Chúng ta quên, chúng ta click nhầm, chúng ta paste sai lệnh vào console.
DevOps ra đời vì những người viết code hay trách những người vận hành, và những người vận hành hay trách những người viết code. Thay vì trách nhau, tại sao không tự động hóa cái quy trình đó để cái máy làm việc, và chúng ta chỉ ngồi uống cà phê?
Các con số không nói dối: theo report của DORA (DevOps Research and Assessment), những tổ chức áp dụng CI/CD có tỷ lệ deployment fail thấp hơn 5 lần so với những nơi deploy thủ công, và thời gian từ khi commit code đến khi code chạy trên production giảm từ vài tuần xuống còn vài giờ.
Cái gì là CI/CD mà mọi người hay nhầm lẫn?
Continuous Integration (CI) không phải là "commit code lên rồi hy vọng nó chạy". Nó là: mỗi khi bạn push code, một hệ thống tự động chạy test, chạy linter, kiểm tra code style, run security scan. Nếu có gì sai, nó báo cho bạn ngay lập tức, không phải chờ 3 tuần.
Ví dụ, GitLab CI hay GitHub Actions sẽ chạy test suite của bạn trong vòng 5-10 phút. Nếu test fail, PR của bạn sẽ bị đánh dấu RED—không ai được merge. Đơn giản thế, nhưng hiệu quả kinh khủng. Công ty nào dùng CI mà vẫn để test fail merge được lên main branch thì thực sự không hiểu CI là gì.
Chia sẻ bài viết


