In het eerste artikel hadden we het over CI of Continuous Integration. In dit artikel kijken we naar de andere helft van het CI/CD acroniem, Continuous Delivery. Continuous Delivery neemt de build afkomstig van het CI-proces over en plaatst deze in een acceptatieomgeving voor verdere evaluatie, voordat de code wordt gepromoveerd naar productie (de uitgebrachte versie).
Als we even een stap terug doen, is CI de planning, codering, testen en ontwikkelen van software in een snel herhalend iteratief proces. Automatische systemen compileren en testen de applicatie terwijl softwareontwikkelaars de code controleren in een versiebeheersysteem. De resulterende code uit elke iteratie voedt het CD-proces. Het CD-proces maakt de pijplijn compleet voor de ontwikkeling, levering en onderhoud van software.
Wat is Continuous Delivery?
Het eindresultaat van CI is een nieuwe gestabiliseerde versie van de applicatie met nieuwe functionaliteit en bug fixes. Na de testfase in het CI-proces neemt het CD-gedeelte over. In het CD-proces wordt de software van de ontwikkelomgeving overgeplaatst naar één of meerdere testomgevingen voor verdere evaluatie. De teams van Development en Operations (DevOps) beslissen samen met andere aandeelhouders wanneer en óf een versie naar productie wordt uitgebracht. Een geautomatiseerd proces zorgt voor de uitrol wanneer geïnitieerd.
Net als de CI-fase bestaat de CD-fase uit vier delen: Release, Deploy, Operate en Monitor. De cyclus kan echter meerdere malen worden herhaald en uitgezet in verschillende omgevingen voor verschillende testen voordat de uiteindelijke release naar productie gaat.
Alhoewel sommige processen direct naar productie kunnen worden uitgezet, wordt meeste software verplaatst naar een kopie van de productieomgeving, meestal acceptatie of staging genoemd. De geautomatiseerde tests en monitoring gaan door in de acceptatieomgeving terwijl verschillende aandeelhouders de nieuwe functionaliteiten evalueren. Het diagram hieronder toont het CD-gedeelte van het CI/CD proces aan de rechterkant.
- Development brengt de build uit naar het CD-proces.
- Operations zet de applicatie uit naar de productie- of acceptatieomgeving
- Aandeelhouders maken gebruik van de applicatie.
- Geautomatiseerde systemen bewaken de beschikbaarheid, prestaties en functionaliteit.
- Feedback van gebruikers en testresultaten gaan terug naar de CI-planningsfase.
Het verschil tussen acceptatie en productie
Productie is de live en actieve versie van een API, webapplicatie of website. Eventuele bugs in de software of gebreken in de infrastructuur hebben direct invloed op de eindgebruiker van het product. Alhoewel sommige processen direct naar productie wordt uitgebracht, anderen worden kritisch bekeken voor de algemene release.
De acceptatieomgeving biedt aandeelhouders de mogelijkheid om de laatste versie te kunnen bekijken, gebruiken en evalueren voordat de applicatie naar productie wordt geplaatst. Verschillende soorten taken kunnen nog plaatsvinden in acceptatie voordat het Operations team een versie naar productie vrij geeft.
- Usability testing. Het User Experience team werkt met echte eindgebruikers om er zeker van te zijn dat de applicatie makkelijk te gebruiken is en dat ze bepaalde taken kunnen uitvoeren.
- Belastbaarheidstesten. Wat gebeurt er wanneer meerdere gebruikers (duizenden bijvoorbeeld) gebruik maken van de applicatie tegelijkertijd? Kan de software en hardware deze stress aan?
- Soak testing. Hoe goed kan een systeem de stress aan over langere periodes?
- Evaluatie van aandeelhouders. De aandeelhouders beoordelen of de versie acceptabel is en klaar is om uitgezet te worden naar productie. Aandeelhouders kunnen van de Management afdeling zijn, maar ook van Quality Assurance or User Experience afdelingen of gebruikers die bereid zijn om feedback te geven.
Waarom gebruik maken van Continuous Delivery?
Continuous Integration en Continuous Delivery helpen Development en Operations teams om nieuwe software en functionaliteit sneller naar de gebruikers te leveren met minder bugs. Andere voordelen van Continuous delivery zijn o.a.:
- Minder risico. Kleine veranderingen betekent dat er minder snel iets fout kan gaan, wanneer dat gebeurt is het snel en gemakkelijk om die veranderingen te verhelpen of terug te draaien.
- Snellere feedbacklus. Directe communicatiekanalen van Operations en aandeelhouders maken het mogelijk dat Development snel kan reageren op feedback.
- Verbeterde reactietijd op veranderingen in de markt. U bent in staat om sneller te reageren op de veranderende vraag van de consumenten, zoals de focus van het product of verschuivingen in de toestellen die gebruikt worden voor toegang tot uw product.
- Vermindering van knelpunten. Met kleinere en frequente updates kunt u knelpunten elimineren die anderszijds worden veroorzaakt door het uitbrengen van grote updates. Zo kost het bijvoorbeeld veel minder tijd om een release van 12 wijzigingen te verwerken in vergelijking met honderden of duizenden wijzigingen veroorzaakt door langere sprints.
Wat is het verschil tussen Continuous Delivery en Continuous Deployment?
Zowel Continuous Delivery en Continuous Deployment volgen de CI-fase van het ontwikkelingsproces; Continuous Deployment is echter volledig geautomatiseerd. Met Continuous Deployment is de uitrol automatisch mits de versie de geautomatiseerde testen kan doorstaan.
Aan de andere kant is de Continuous Delivery afhankelijk van Development en Operations teams wanneer de software wordt vrijgegeven. Wanneer de teams hebben besloten, activeren ze het geautomatiseerde proces dat de applicatie naar productie vrijgeeft.
Focus op automatisering
Net als CI is CD sterk afhankelijk van geautomatiseerde processen. Geautomatiseerde processen importeren software, updaten de infrastractuur en data, voeren testen uit zoals een proeftesten, belastbaarheidstesten of soak testing. Bij Continuous Delivery is de uitrol naar productie altijd slechts een paar klikken verwijderd. In productie zijn geautomatiseerde processen continu de beschikbaarheid-, prestatie- en functionaliteit-gegevens aan het monitoren en verzamelen.
Uptrends en uw acceptatieomgeving
Uw acceptatie omgeving moet een afspiegeling zijn van uw productie omgeving en Uptrends monitoring is daar onderdeel van. U kunt uw monitoring instellen als integraal onderdeel van uw CD automatisering en testing. Als uw acceptatie omgeving direct toegankelijk is vanaf het web (met of zonder authenticatie), kan Uptrends’ uitgebreide netwerk van meer dan 200 controlestations wereldwijd uw API’s of websites testen op beschikbaarheid, prestaties en functionaliteit. Zo niet, dan kunt u ook Persoonlijk Controlestations overwegen die zich binnen uw netwerk bevinden, zodat u Uptrends achter uw firewall kunt gebruiken. Meer hierover in het volgende artikel.
Later: Uptrends en uw CI/CD processen (binnenkort verwacht)