Stappenplan voor een efficiënte DevOps-aanpak
Het belang van DevOps bij het vermijden van downtime is duidelijk, maar hoe pak je DevOps effectief aan? Hoe begin je? Waar moet je op letten? En hoe zorg je dat je teams zo efficiënt mogelijk samenwerken. Wij geven een aantal tips & best practices uit onze eigen ervaring.
Hou bij dit stappenplan altijd het einddoel in gedachten: het continu leveren van uitstekende diensten. Dat betekent dus een combinatie van continuiteit – lees Uptime – en korte(re) ontwikkelcycli voor nieuwe releases. De business bepaalt de prioriteiten op basis van meerwaarde voor de klanten. Op die manier creëer je één groot proces waarin IT samenwerkt met de business. Om dat te realiseren zijn er drie grote stappen nodig.
1. Agile Development
De basis voor een DevOps-aanpak is Agile Development. Daar zonder is DevOps nagenoeg onmogelijk. Mocht je nog geen ervaring hebben met Agile Development, is dat de eerste stap die je moet zetten.
De meeste Agile-methodes – waarvan Scrum zeker de bekendste is – proberen risico’s te verminderen door applicaties te ontwikkelen in korte overzichtelijke periodes (iteraties of sprints genoemd). Elke sprint is een miniatuurproject en omvat alle noodzakelijke taken: planning, analyse, ontwerp, tests en documentatie. Het is de bedoeling om na iedere sprint iets bruikbaars op te leveren.
Aan het eind van de sprint wordt het product getoond, gebeuren er unit-testen en wordt het product en proces beoordeeld. Doordat men het product ziet wordt het allemaal concreter en komen er nieuwe ideeën. Aansluitend wordt er dan naar de projectprioriteiten gekeken en bepaald wat er de volgende sprint gedaan wordt.
Cruciaal bij Agile Development is Version Control. Daarvoor wordt gebruik gemaakt van een Version Control System (VCS). Dat beheert de code repository, de centrale plaats waar alle code verzameld wordt. In elk VCS kopieer je het stuk code waaraan je werkt (de branch of trunk) uit de centrale repository en plaats je het terug als je klaar bent. De uitdaging zit ‘em in de integratie. Want de code die ontwikkelaar A schrijft, interageert natuurlijk met code die ontwikkelaar B schrijft of geschreven heeft. Je code werkt misschien wel met de code zoals jij die hebt gedownload, maar misschien is intussen andere code aangepast of zijn er andere wijzigingen. Op het moment dat ontwikkelaar A zijn code terug in de repository zet, moet dit stuk opnieuw geïntegreerd worden. Het is een wetmatigheid dat hoe meer tijd er verloopt tussen het downloaden en terug uploaden van code, hoe groter de kans is op conflicten oftewel integration hell. Op dat moment komt Continuous Integration, de volgende stap in ons DevOps-verhaal om de hoek kijken.
Agile Development ligt om twee redenen aan de basis van DevOps. Enerzijds laat het toe om voortdurend – en snel – nieuwe functionaliteiten toe te voegen, wat ervoor zorgt dat ontwikkelaars en systeembeheerders sneller op elkaar kunnen afstemmen. Anderzijds ligt de nadruk bij Agile Develoment op directe communicatie, bij voorkeur als persoonlijk contact, in plaats van geschreven verslaglegging. Dat bevordert open communicatie tussen teamleden.
2. Continuous Integration
Continuous Integration betekent dat je snel en geautomatiseerd nieuwe releases kan uitrollen op een andere omgeving. Dit kan in de klassieke Ontwikkeling-Testing-Acceptatie-Productie lijn, maar ook in eventuele zijlijnen. De afstand tussen ontwikkelaars en testers zo klein mogelijk houden is het doel. Daarvoor bestaan er heel wat tools. Bij Combell maken we bijvoorbeeld gebruik van Jenkins, Hudson en Bamboo voor continuous integration.
3. Continuous Delivery
Continuous Delivery (CD) hanteert min of meer hetzelfde principe, alleen is er sprake van nog meer automatisering en nog minder afbakening van een release. Continuous Delivery gaat nieuwe releases vrijwel automatisch uitrollen, zonder menselijk ingrijpen. Een nieuwe release passert automatisch via een testframework – auomated acceptance testing dus – dat standaardrisico’s filtert en bij goedkeuring de release meteen in productie zet.
4. Continuous Development
De finale doelstelling is continuous development. Daarbij wordt niet langer gewacht om de resultaten van een aantal sprints te verzamelen in een nieuwe release, maar wordt elk afgeleverd stukje na goedkeuring ook meteen uitgerold, zodat gebruikers er effectief van profiteren. Op die manier vervaagt de hele cyclus en krijg je eigenlijk een continu proces van nieuwigheden die nagenoeg meteen live gaat.
Het moet niet gezegd worden dat je om dit te bereiken heel wat expertise en samenwerking nodig hebt, heel wat automatisering moet voorzien én je processen en procedures op orde moet hebben. DevOps is een aanpak die constant door het ganse team gedragen moet worden. Het is een eindeloos verhaal van constante feedback en bijsturing.
Download ons gratis DevOps e-book