Câu trả lời được chấp nhận
Nói đơn giản
- CI: mỗi lập trình viên đưa thay đổi vào nhánh chung thường xuyên (ít nhất hằng ngày), mỗi lần đều được tự động build và kiểm thử. Martin Fowler mô tả lợi ích chính là phát hiện lỗi tích hợp sớm, khi còn nhỏ và dễ sửa.
- Chuyển giao liên tục (continuous delivery): phần mềm luôn ở trạng thái có thể phát hành bất cứ lúc nào; việc phát hành là quyết định kinh doanh, chỉ cần "bấm nút".
- Triển khai liên tục (continuous deployment): mọi thay đổi qua được các kiểm tra tự động sẽ tự động lên môi trường thật.
Liên quan đến agile: nguyên tắc đầu tiên sau Tuyên ngôn Agile là làm hài lòng khách hàng qua việc chuyển giao sớm và liên tục phần mềm có giá trị; nguyên tắc thứ ba nói chuyển giao phần mềm chạy được thường xuyên. Không có CI/CD, mỗi Increment phải qua nhiều bước thủ công, nên "phát hành mỗi sprint" trở nên đắt và rủi ro.
PM cần làm gì — không cần biết cấu hình công cụ, nhưng cần:
- Hiểu đây là năng lực giảm rủi ro và giảm chi phí phát hành, không phải "đồ chơi kỹ thuật".
- Đưa việc xây dựng pipeline vào backlog và ngân sách như hạng mục có giá trị; Product Owner xếp thứ tự cùng tính năng.
- Theo dõi vài chỉ số đơn giản: thời gian từ khi code xong đến lúc lên môi trường thật, tần suất phát hành, tỉ lệ phát hành gặp sự cố.
- Đưa các yêu cầu về build/kiểm thử tự động vào Definition of Done.
Trong tình huống ở câu hỏi: 2 ngày cho mỗi lần phát hành là chi phí lặp lại mỗi sprint — tính ra con số đó sẽ dễ thuyết phục nhà tài trợ đầu tư.
Nguồn: