INTRODUCTION -> Mature capabilities
“Mature capabilities in technical and management practices” principe komt uit “Accelerate: The Science of Lean Software and DevOps”[1] presenteren de auterus op basis van hun onderzoek de belangrijkste technische en management praktijken die goed presterende DevOps teams hebben aangenomen en blijven verfijnen.
Technische Praktijken
Volgens Acceletate zijn dit de belangrijksye methodes die gebruikt worden gebruikt door goed presterende DevOps-teams:
- Continuous Delivery
- Architecture
- Product and Process
Continuous Delivery
De Accelerate auteurs kozen ervoor om verschillende methodes te combineren onder de paraplu van continue levering (CD). Hoewel CD zelf zijn eigen principe is onder CI/CD, stellen ze vast dat dit deel essentieel is voor een goed presterende DevOps team. Ze spreken over:
- Version Control: op dit vlak gaan we Git bekijken.
- Deployment automation: in de vorm van pipelines. Als ook het automatiseren van server setups.
- Continuous integration (CI): autmatisch testen van software.
- Trunk-based development: version control met hierop verschillende versies die individueel nog gepatched kunnen worden.
- Test automation: automatisch testen van software door Unit Tests, End to end tests en Integration Tests.
- Test data management: beheren van test data in test omgevingen om analoog te blijven aan de echte omgeving.
- Shift left on security (DevSecOps): Security mee opnenem in het ontwikkelproces
- Continuous delivery (CD): constant deployen van software.
Architecture
De architectuur van onze setup is belangrijk niet enkel voor het draaien van de servers maar ook de flexibiliteit.
- Het is belangrijk om testen te kunnen uitvoeren in een geisoleerde omgeving die onze productie omgeving niet beinvloedt.
- We moeren verschillende applicaties en services onafhankelijk van elkaar kunnen uitrollen en updaten
In feite worden de hierboven beschreven kenmerken – testbaarheid en inzetbaarheid – bereikt door het implementeren van de volgende twee architecturale technische principes:
- Loosely coupled architecture. Het doel is dat verschillende componenten van de applicatie onafhankelijk zijn van elkaar. Zo is er weinig coordinatie nodig tussen de verschillende teams wanneer iets moet aangepast worden.
- Empowered teams Wanneer teams individueel kunnen kiezen welke tools gebrikt kunnen worden resulteert dit in snellere doorlooptijd.
Product and Process
DevOps teams moeten niet enkel kijken daar het technische aspect maar ook bedrijsprocessen volgen om hun werk te verbeteren.
- Customer feedback Teams moeten met de klant kunnen comminuceren om feedback te krijgen, en dit al zo vroeg mogelijk.
- Value stream Teams moeten verstaan dat continue verbetering ook waarde oplevert voor de klant
- Working in small batches Kleinere batches zorgen voor snellere oplevering aan klanten, en zetten de feedback loop in actie.
- Team experimentation Teams werken beter als ze individueel mogen experimenteren met ideeen en theorien zonder toestemming van bovenaf.
Management Praktijken
Niet enkel op team niveau moet een organisatie efficient werken, maar ook op management niveau. Een organisatie moet op alle niveaus flexiebel kunnen werken. Een kracht die we tegenwoordig vooral veel in startups zien terugkomen, in grotere organisaties proberen ze dit te verbeteren.
- Lightweight change approval processes. Teams die geen goedkeuringsproces hadden of peer review gebruikten, behaalden een snellere ontwikkelingscyclus en prestaties.
- Monitoring Gebruik gegevens van monitoring tools van de infrastructuur moeten gebruikt worden om dagelijkse besluitvorming te informeren.
- WIP limiteren en werk visualiseren ook voor en naar management toe.
- Een cultuure van leren en ondersteunen op alle niveaus.
- Je teams voorzien van de juiste tools om hun werk te kunnen doen.