MMM은 무엇입니까
먼저 Brook의 법칙의 맥락을 설명하고 싶습니다. 그가 1975 년에 다시 만들었다는 가정은 무엇입니까?
한 달은 한 달에 한 사람이 수행 한 작업을 나타내는 가상의 작업 단위입니다. Brooks의 법에 따르면 수개월 동안 유용한 작업을 측정하는 것은 불가능합니다.
출처 : https://en.wikipedia.org/wiki/The_Mythical_Man-Month
과거에는 복잡한 프로그래밍 프로젝트가 큰 모놀리스 시스템을 의미했습니다. 또한 Brooks는 개발자 간의 의사 소통없이 그리고 작업과 작업을 수행하는 사람들 사이에 복잡한 상호 관계를 설정하지 않고 작업 할 수있는 개별 작업으로 완벽하게 분할 할 수 없다고 주장합니다.
이것은 응집력이 높은 소프트웨어 모놀리스에서 매우 사실입니다. 얼마나 많은 디커플링이 수행 되더라도 여전히 큰 모노리스는 새로운 프로그래머가 모노리스에 대해 배우는 데 필요한 시간을 요구합니다. 또한 통신 오버 헤드가 증가하여 사용 가능한 시간이 계속 증가합니다.
그러나 실제로 이런 식이어야합니까? 우리는 모놀리스를 작성하고 개발자 수는 n(n − 1) / 2
어디에서 의사 소통 채널을 유지해야 n
합니까?
우리는 수천 명의 개발자가 대규모 프로젝트를 수행하고있는 회사가 있다는 것을 알고 있습니다. 따라서 1975 년 이후 변경된 것이 있어야합니다.
MMM 완화 가능성
2015 년 PuppetLabs와 IT Revolution은 2015 년 DevOps 보고서 상태 결과를 발표했습니다 . 이 보고서에서는 성과가 높은 조직과 비 성능의 구별에 중점을 두었습니다.
고성능 조직은 예상치 못한 속성을 보여줍니다. 예를 들어, 개발시 프로젝트 기한이 가장 좋습니다. 최고의 운영 안정성 및 운영 안정성. 최고의 보안 및 규정 준수 추적 기록뿐만 아니라
보고서에서 강조된 놀라운 점 중 하나는 일일 배포 메트릭입니다. 그러나 하루에 한 번의 배포뿐만 아니라 배포 / 일 / 개발자를 측정했으며 고성능 조직과 비 성능 조직에 더 많은 개발자를 추가하는 데 따른 영향을 측정했습니다.
이 보고서의 그래프입니다-
성과가 저조한 조직은 신화 적 인간의 달 가정과 일치합니다. 고성능 조직은 개발자 수에 따라 배포 / 일 / 개발 수를 선형으로 확장 할 수 있습니다.
Gene Kim의 DevOpsDays London 2016 에서 훌륭한 발표 가 이러한 결과에 대해 이야기합니다.
그것을하는 방법
먼저, 고성능 조직이되는 방법은 무엇입니까? 이것에 대해 이야기하는 두 권의 책이 있습니다.이 답변에 충분한 공간이 없으므로 링크로 연결하겠습니다.
소프트웨어 및 IT 조직의 경우 고성능 조직이되기위한 중요한 요소 중 하나는 품질과 속도에 중점을 둡니다 .
예를 들어 Ward Cunningham은 기술 채무에 대해 우리가 고쳐 놓지 않은 모든 것을 설명합니다 . 이것은 시간이있을 때 수정 될 것이라는 약속이 항상 있기 때문에 경영진에 의해 수용됩니다.
시간이 충분하지 않고 기술 부채가 점점 악화되고 있습니다.
기술 부채가 증가하는 원인은 무엇입니까?
- 레거시 코드
- 환경의 수동 구성
- 수동 테스트
- 수동 배포
레거시 코드 Michael Feathers의 레거시 코드 로 효과적으로 작업에 정의 된대로 자동화 된 테스트가없는 코드가 있습니다.
코드를 프로덕션으로 가져 오는 데 언제든지 단축키가 사용됩니다. 운영은이 부채를 영원히 유지해야합니다. 그러면 배포 프로세스가 점점 길어집니다.
Gene은 6 주 동안 배포 한 회사에 대한 프레젠테이션에서 이야기를 전합니다. 400 명을 묶는 수만 건의 극도로 오류가 많은 지루한 단계가 포함되어 있으며 매년 4 번이 작업을 수행합니다.
DevOps의 장점 중 하나는 안정성이 소규모 배포를 더 자주 수행한다는 것입니다.
예
이 두 프레젠테이션은 Amazon이 코드를 프로덕션에 배포하는 데 걸리는 시간을 단축하기 위해 수행 한 모든 작업을 보여줍니다.
Gene에 따르면이 고성능 조직에서 시간이 지남에 따라 변경되는 유일한 것은 개발자 수입니다. 따라서 아마존 사례에서 4 년 만에 더 많은 사람을 추가함으로써 배포가 10 배 증가했다고 말할 수 있습니다.
이는 특정 조건 하에서 올바른 아키텍처, 올바른 기술 관행, 올바른 문화적 규범에 따라 개발자 수가 증가함에 따라 개발자 생산성 이 확장 될 수 있음을 의미합니다. 그리고 DevOps는 분명히이 모든 것의 중간에 있습니다.