MMM là gì
Đầu tiên tôi muốn giải thích bối cảnh cho Luật Brook. Giả định nào đã khiến ông tạo ra nó vào năm 1975?
Man-tháng là một đơn vị công việc giả định đại diện cho công việc được thực hiện bởi một người trong một tháng; Luật của Brooks nói rằng không thể đo lường công việc hữu ích trong vài tháng.
nguồn: https://en.wikipedia.org/wiki/The_Mythical_Man-Month
Trước đây, các dự án lập trình phức tạp có nghĩa là các hệ thống nguyên khối lớn. Và Brooks tuyên bố rằng những điều này không thể được phân chia hoàn hảo thành các nhiệm vụ riêng biệt có thể được thực hiện mà không cần giao tiếp giữa các nhà phát triển và không thiết lập một mối quan hệ tương tác phức tạp giữa các nhiệm vụ và những người thực hiện chúng.
Điều này rất đúng trong các phần mềm nguyên khối có tính gắn kết cao. Cho dù có thực hiện tách rời bao nhiêu, thì khối nguyên khối lớn vẫn cần có thời gian để các lập trình viên mới tìm hiểu về khối nguyên khối. Và tăng chi phí liên lạc sẽ tiêu tốn một lượng thời gian ngày càng tăng.
Nhưng nó thực sự phải theo cách này? Chúng ta có phải viết các khối nguyên khối và giữ các kênh liên lạc đến n(n − 1) / 2
đâu n
là số lượng nhà phát triển không?
Chúng tôi biết có những công ty nơi hàng ngàn nhà phát triển đang làm việc cho các dự án lớn ... và nó hoạt động. Vì vậy, phải có một cái gì đó thay đổi kể từ năm 1975.
Khả năng giảm thiểu MMM
Năm 2015, PuppetLabs và IT Revolution đã công bố kết quả của Báo cáo Nhà nước DevOps 2015 . Trong báo cáo đó, họ tập trung vào sự khác biệt giữa các tổ chức hoạt động cao so với hoạt động không hiệu quả cao.
Các tổ chức hiệu suất cao cho thấy một số tính chất bất ngờ. Ví dụ, họ có hiệu suất đúng hạn dự án tốt nhất trong phát triển. Ổn định hoạt động tốt nhất và độ tin cậy trong hoạt động. Cũng như hồ sơ theo dõi bảo mật và tuân thủ tốt nhất.
Một trong những điều đáng ngạc nhiên được nêu bật trong báo cáo là số liệu triển khai mỗi ngày. Nhưng không chỉ triển khai mỗi ngày, họ còn đo lường triển khai / ngày / nhà phát triển và hiệu quả của việc thêm nhiều nhà phát triển trong các tổ chức hiệu suất cao so với hiệu suất không cao.
Đây là biểu đồ từ báo cáo đó -
Trong khi các tổ chức hoạt động thấp phù hợp với các giả định Tháng huyền thoại. Các tổ chức hiệu suất cao có thể mở rộng quy mô số lượng triển khai / ngày / dev theo số lượng nhà phát triển.
Một bài thuyết trình tuyệt vời tại DevOpsDays London 2016 của Gene Kim nói về những phát hiện này.
Làm thế nào để làm nó
Đầu tiên, làm thế nào để trở thành một tổ chức có hiệu suất cao? Có một vài cuốn sách nói về điều này, không đủ chỗ trong câu trả lời này vì vậy tôi sẽ chỉ liên kết với chúng.
Đối với các tổ chức phần mềm và CNTT, một trong những yếu tố quan trọng để trở thành một tổ chức có hiệu suất cao là: tập trung vào chất lượng và tốc độ .
Ví dụ, Ward Castyham giải thích Nợ kỹ thuật vì tất cả những điều chúng tôi cho phép không bị trộn lẫn. Điều này được quản lý chấp nhận vì nó luôn đi kèm với một lời hứa rằng nó sẽ được sửa chữa khi có thời gian.
Không bao giờ có đủ thời gian, và nợ kỹ thuật ngày càng trở nên tồi tệ hơn.
Những điều này làm cho nợ kỹ thuật tăng lên là gì?
- mã kế thừa
- cấu hình thủ công của môi trường
- Kiểm tra bằng tay
- triển khai thủ công
Mã kế thừa Như được định nghĩa trong Làm việc hiệu quả với Mã kế thừa của Michael Feathers là bất kỳ mã nào không có kiểm tra tự động.
Bất kỳ phím tắt thời gian được sử dụng để có được mã để sản xuất; các hoạt động là gánh nặng với việc duy trì khoản nợ này mãi mãi. Sau đó, quá trình triển khai trở nên dài hơn và dài hơn.
Gene kể một câu chuyện trong bài trình bày của mình về một công ty có triển khai dài sáu tuần. Liên quan đến hàng chục ngàn bước cực kỳ dễ bị lỗi, buộc 400 người và họ sẽ làm điều này bốn lần mỗi năm.
Một trong những nguyên lý của DevOps là độ tin cậy đến từ việc triển khai nhỏ hơn thường xuyên hơn.
Thí dụ
Hai bài thuyết trình này cho thấy tất cả những điều mà Amazon đã làm để giảm thời gian họ triển khai mã để sản xuất.
Theo Gene, điều duy nhất được thay đổi theo thời gian trong các tổ chức có hiệu suất cao này là số lượng nhà phát triển. Vì vậy, từ ví dụ của Amazon, bạn có thể nói rằng trong bốn năm họ đã tăng số lần triển khai của họ lên gấp mười lần chỉ bằng cách thêm nhiều người hơn.
Điều này có nghĩa là trong những điều kiện nhất định, với kiến trúc phù hợp, thực hành kỹ thuật phù hợp, chuẩn mực văn hóa phù hợp, năng suất của nhà phát triển có thể mở rộng khi số lượng nhà phát triển được tăng lên. Và DevOps chắc chắn ở giữa tất cả những điều này.