Beren op de weg naar daily deployments

Beren op de weg naar daily deployments

7 Redenen waarom je bang bent voor daily deployment (maar je het toch zou moeten doen)

We komen het regelmatig tegen. Een bedrijf stapt over op OutSystems, want met low-code kun je sneller, beter en flexibeler software ontwikkelen. Waterval wordt Agile en the sky is the limit. Tot op een gegeven moment toch een grens wordt bereikt.

Wat eerst heel snel en wendbaar leek – iteraties van twee à drie weken – blijkt toch niet snel genoeg. Bug fixing neemt veel tijd in beslag en verzoeken uit de business stapelen zich op. Ogenschijnlijk kleine aanpassingen duren lang, omdat grote features hun livegang tegenhouden. Urgente zaken worden aangepakt met hot fixes, maar dit is geen structurele oplossing. Het IT team loopt opnieuw vast en je realiseert je dat je terug bent gevallen in je oude werkwijze. Agile is in de praktijk een reeks kleine watervallen geworden.

Voor echte flexibiliteit is het tijd voor de volgende stap: daily deployment. Hierbij heb je je software pipeline volledig geoptimaliseerd. Er zijn geen blokkades meer. Op ieder moment kun je iets door de straat naar productie brengen. Je bent een voorspelbare partner voor de business en de klant, je levert kwaliteit en houdt je zonder moeite aan gemaakte beloftes. Je Software Development Life Cycle (SDLC) loopt als een zonnetje.

Waarschijnlijk schieten er nu allemaal redenen te binnen waarom daily deployment niet werkt voor jouw organisatie. We lopen ze even langs.

1. Door daily deployment komen onze grote features in gevaar

Het eerste wat je moet doen als je voor daily deployment gaat, is afhankelijkheden wegnemen, zowel op het gebied van business acceptance als technische afhankelijkheden in de vorm van grote features. Op technisch vlak biedt feature toggling een uitkomst. Met feature toggling kan een stukje code ‘aan’ en ‘uit’ worden gezet waardoor verschillende functionaliteiten veilig naast elkaar kunnen bestaan, zonder dat ze elkaar blokkeren of ondermijnen.

2. We hebben nu al te weinig tijd

Testen, bugfixing, kwaliteitscontrole, compliance, release documenting. Het is vaak al moeilijk genoeg om in een iteratie van twee weken alles gedaan te krijgen, hoe ga je dit in een dagelijkse cyclus passen? Het antwoord is: maak je releases klein en ga zoveel mogelijk automatiseren. Daily deployment vereist dat je alle handmatige acties elimineert.

Door release klein te maken, is het veel makkelijker om te achterhalen – mocht er toch een bug op productie zijn – waar het euvel zit. Deze oplossing is niet perfect, maar je leadtime om een bug te achterhalen en te fixen is vele malen kleiner.

3. We hebben niet elke dag iets voor productie, waarom zouden we die moeite doen?

Omdat het kan! Flauw antwoord natuurlijk, maar zo is het wel. Tenzij je Google of Amazon bent, heb je waarschijnlijk niet iedere dag iets om naar productie te brengen. Maar als het eens nodig is om morgen iets te releasen, ben je blij dat het kan. En je zult zien dat als de mogelijkheid er is, er ook vaker gebruik van wordt gemaakt. Bovendien maakt het je leven makkelijker, omdat je nu nog maar één proces hebt, of je nu iets wilt releasen, kwaliteit wilt controleren, een hotfix moet doorvoeren of iets live wil zetten voor je klant.

4. Maar dan gaan we naar productie met code die niet af is!

Hier beschermt OutSystems ons, want code die niet af is, kun je niet publiceren. Als er geen scherm is die de code aanroept, kan hij niet gebruikt worden. En om te voorkomen dat bestaande functionaliteiten omvallen door iets waar je die dag mee bezig bent geweest, bouw je een aantal controles in. Feature toggles helpen ons om features af te schermen zolang deze nog niet door de business zijn geaccepteerd. Met dagelijks deployen zien we de volgende ochtend of er fouten zijn en die kunnen we dan direct herstellen.

Daily deployment elimineert de situatie dat je na twee weken bouwen erachter komt dat je in het proces technical debt hebt opgebouwd, maar waar? Je vergrendelt kwaliteitschecks in je dagelijkse processen en ‘shift left’ wordt eindelijk realiteit.

5. Ik wil niet opnieuw onze werkwijze omgooien

Een dagelijkse iteratie vergt inderdaad een andere werkwijze dan een tweewekelijkse iteratie. Als je de transitie van waterval naar scrum Agile nog vers in het geheugen hebt, zul je van dit bericht misschien buikpijn krijgen. Wees gerust, daily deployment is niet moeilijk, het vergt alleen discipline om iedere dag het actielijstje af te vinken. Je team moet nieuwe gewoontes aanleren. Wanneer dat is gelukt heb je meer ruimte voor de leuke dingen: bouwen.

Als je een developer vraagt hoeveel tijd hij of zij aan code besteedt, is het antwoord vaak 40 tot 50%. De rest gaat op aan bugs en issues oplossen en saai handwerk. Wanneer je overstapt op daily deployment en de randprocessen zoveel mogelijk automatiseert (het streven is 100%), werk je efficiënter, heb je geen routinewerk meer en besteed je al snel 60 tot 70% van de tijd aan coderen. De kwaliteit van het geleverde product gaat omhoog en je team heeft meer werkplezier.

6. Hoe houden we in de waan van de dag langetermijndoelen in de gaten?

Als je iedere dag naar productie gaat en de business iedere dag aanvragen kan indienen, wie houdt dan de stip aan de horizon in de gaten? Dat doe je gezamenlijk als team. Jullie moeten hierover in gesprek blijven met elkaar, met de product owner en het management. Samen bepalen jullie waar de prioriteiten liggen.

Het is ook belangrijk om te overleggen met stakeholders over de transitie naar daily deployment en de business hierin mee te nemen. Dit betekent afspraken maken en verwachtingen managen.

7. Ja maar compliance?!

Compliance speelt een rol in iedere organisatie, bij sommige meer dan andere. Enterprises hebben strikte compliance-regels waar iedere nieuwe release voor livegang op moet worden getoetst. Dit hoeft daily deployment niet in de weg te staan als er een duidelijke scheiding is tussen productie en livegang, bijvoorbeeld door feature toggles.

Overigens kan compliance ook geautomatiseerd worden. Je kunt bijvoorbeeld limiteren welke handelingen in welke omgevingen zijn toegestaan of welke data gebruikt mogen worden. Als een feature niet aan deze check voldoet, komt hij niet door de pijplijn.

Het kan en mag leuker. Vergeet die beren!

Ben je al overtuigd of klinkt het je nog te mooi om waar te zijn? Verschillende bedrijven zijn al succesvol overgestapt op daily deployment en wij begeleiden een aantal van onze klanten die onderweg zijn naar dit proces. Voor het verbeteren van je Software Development Life Cycle werkt daily deployment als een versneller en het maakt software development ook gewoon leuker.

Meer weten? Ik vertel je graag hoe CoolProfs kan helpen jouw SDLC te verbeteren.

Door Jeroen Bezemer, Chief Technology Officer, Principal consultant, CoolProfs