Tôi làm việc trong nhóm quản lý phát hành tại một công ty internet rất lớn. Về cơ bản, chúng tôi sử dụng quy trình bạn đã nêu ở trên và chúng tôi đã chọn quy trình đó theo mục đích. Trong phương pháp của chúng tôi, dàn dựng đóng vai trò là một cơ chế phân nhánh cho cấp độ thử nghiệm cuối cùng trong sản xuất.
Rõ ràng bạn muốn thực hiện tất cả các thử nghiệm trước khi đi vào sản xuất, nhưng trong một môi trường rộng lớn, phức tạp với nhiều người dùng, đó là một mục tiêu rất khó đạt được. Đặc biệt, hầu như không thể tải phần mềm kiểm tra đầy đủ trong QA. Kiểm thử chức năng dễ dàng tự động hóa hơn nhiều so với kiểm tra tải. Khi bạn có hàng ngàn người dùng đánh vào máy chủ của mình, mọi thứ sẽ thất bại theo những cách kỳ lạ và khó dự đoán.
Vì vậy, đây là những gì chúng ta làm:
- Phát triển
- bao gồm tích hợp liên tục và kiểm tra tự động
- thử nghiệm phát hành
- nhóm của tôi phân tích bản phát hành
- xem lại nhật ký cài đặt
- kiểm tra rollback
- QA
- kiểm tra chấp nhận người dùng
Đó là điểm mà chúng tôi phân nhánh giữa dàn dựng và sản xuất. Chúng tôi sử dụng mô hình xe lửa để phát hành, với một chuyến tàu mới bắt đầu cứ sau vài tuần. Các chuyến tàu được đánh số chẵn đi đến các máy chủ dàn (đang trong quá trình sản xuất). Tàu số lẻ không.
Ở giữa các chuyến tàu chẵn, các nhà phát triển có khả năng đẩy các thay đổi riêng lẻ đến các máy chủ dàn ( sau khi những thay đổi đó đã được kiểm tra bởi QA). Điều này cho phép họ xác nhận rằng phần mềm của họ hoạt động như mong đợi trong môi trường sản xuất thực. Điều này thường được dành riêng cho các thành phần được coi là có rủi ro cao hơn, chúng tôi không đẩy từng phần nhỏ để dàn dựng.
Sau đó, mọi người hiểu rằng khi chuyến tàu chẵn tiếp theo bắt đầu, nó sẽ xóa sạch những gì trên máy chủ dàn dựng và đưa chúng trở lại đường cơ sở của tàu. Các nhà phát triển đảm bảo rằng các thay đổi của họ đã được đưa lên tàu hoặc quyết định rằng họ chưa sẵn sàng để sử dụng chung, trong trường hợp đó, những thay đổi đó sẽ bị xóa trên các máy chủ dàn dựng.
Tóm lại, câu trả lời ngắn gọn (ít nhất là đối với chúng tôi) là không thể kiểm tra hoàn toàn các hệ thống phức tạp trong QA. Dàn dựng cung cấp một cách an toàn để làm thử nghiệm sản xuất hạn chế.
Trên một lưu ý liên quan, đây là các slide của tôi từ một bài thuyết trình tôi vừa trình bày về cách quá trình phát hành của chúng tôi hoạt động.