Happy Software Developer

Waarom, wat en hoe: over CI/CD

08 januari 2024

2 minuten

Waarom?

Nieuwe functionaliteit van (of reparaties aan) software moet snel en gecontroleerd in productie worden genomen.

Wat?

Softwareontwikkeling stopt niet met het schrijven van programmaregels. Voordat iets gaat werken en het productie daglicht gaat zien zijn er talrijke controles nodig. Stel je voor dat je al die controles steeds maar weer opnieuw en handmatig moet uitvoeren. Dan kan snel al gauw van de wensenlijst. En gecontroleerd? Eigenlijk ook, want hoewel er controles worden uitgevoerd, de uitvoering is mensenwerk. Niet iedereen werkt op dezelfde manier en soms wordt er ook weleens een stapje vergeten.

Hoe?

Door de verschillende stappen achter elkaar te zetten creëer je als het ware een pijpleiding (pipeline) waarin de applicatie van A naar Z stroomt. Op de lasnaden zit een controlepunt. Als het resultaat positief is, dan kan de applicatie verder stromen. Elk ander resultaat zorgt ervoor dat het proces stopt of een andere route neemt. In jargon heet dit proces CI/CD - continuous integration/continuous delivery en deployment.

Elke wijziging in de software start de stroom langs de controlepunten. Een voorbeeld hiervan is een automatische test. In een goed opgezet systeem zijn hier meerdere van. Je test alle randvoorwaarden van de applicatie. Elk denkbaar scenario is afgevangen met een test. Waarschijnlijk niet in den beginne, maar gedurende de levensduur van de applicatie komen er situaties voor die vooraf niet voorzien waren. Deze zogenaamde ‘edge cases’ voegen we vervolgens toe aan een van de test-controlepunten en bij elke volgende uitvoering is ook die situatie afgedekt.

Projecten die geen gebruik maken van externe programmabibliotheken zijn heel zeldzaam. De meeste Java projecten gebruiken Spring Boot en die kent er een aantal. Keerzijde van dit gebruik is dat je niet weet wat je met deze afhankelijkheden naar binnen haalt. Een veiligheidscontrole die hier uitkomst biedt is bijvoorbeeld de ‘OWASP dependency checker’. Bijna dagelijks wordt de database met kwetsbaarheden in software bijgewerkt en de OWASP controleslag maakt duidelijk of en waar mogelijk exploitatiegevaar schuilt.

Nadat alle controlepunten succesvol zijn doorlopen (integration) is de applicatie klaar om afgeleverd te worden (delivery). Het afleveren kan plaatsvinden op een of meer locaties (omgevingen). Het oudste acroniem in IT-land is waarschijnlijk OTAP - ontwikkel, test, acceptatie, productie. Echter, hoe meer omgevingen er in gebruik zijn, hoe duurder het verbruik is. Afhankelijk van het risico kan er een omgeving (of twee) worden overgeslagen. Afhankelijk van de complexiteit kan een omgeving ook automatisch worden opgebouwd en weer afgebroken.

Het kan nog efficiënter. Ook de aflevering kan namelijk een gecontroleerd proces starten (deployment). In dit proces zijn bijvoorbeeld diagnoses met betrekking tot de gezondheid van de applicatie opgenomen (of deze wel start deze en/of benaderbaar is) In moderne omgevingen is het mogelijk om twee versies van de applicatie naast elkaar te draaien. Een algoritme bepaalt welke versie van de applicatie de verwerking mag verzorgen. Zo kun je de nieuwe functionaliteit voor een beperkte groep gebruikers beschikbaar stellen en gecontroleerd testen in de omgeving waar het allemaal om draait: productie.

Dit alles lijkt veel werk en dat is het ook, maar de investering betaalt zich al gauw terug in de vorm van het snel en gecontroleerd in productie nemen van nieuwe functionaliteit van (of reparaties aan) software. Met een goed ingericht proces is het mogelijk tegemoet te komen aan de veeleisende gebruikers en het voor blijven lopen op de concurrentie.

© 1987-2025 - Onno Huijgen - Alle rechten voorbehouden.