De grote beweging van migreren naar de cloud heeft geleid tot een nieuwe mogelijkheden voor het ontwikkelen en distribueren van software. Om efficiënt gebruik te maken van de mogelijkheden die de Cloud biedt, kan je je software ontwikkelproces daaraan aanpassen. Traditioneel werken veel bedrijven met een ontwikkelproces met veel handmatige acties, waardoor je bij een oplevering van software te maken krijgen met een aantal zaken die tijdrovend zijn, foutgevoelig zijn en tot downtime kunnen leiden. Het gaat dan bijvoorbeeld om:
- Testen van de nieuwe software. Dit gaat in veel gevallen handmatig.
- Productieomgeving klaarmaken.
- Oplevering in een compleet bestand.
- Als het systeem werkt met databases, dan is het vaak ook nog belangrijk om de update van (een kopie van) de productiedatabase te testen.
Dit zijn dus nogal wat handmatige en foutgevoelige acties. Je kunt je daarom wel voorstellen hoeveel beter het is om dit deel te automatiseren zodat je met een druk op de knop kunt deployen tot aan de acceptatieomgeving. Niet alleen beter voor de kwaliteit van het geheel, maar het scheelt ook veel tijd. Deze manier van ontwikkelen waarbij je zoveel mogelijk automatiseerd en erop gericht bent vaak en snel releases te doen, heet Continuous Delivery.
Wat is Continuous Delivery?
Continuous Delivery is een strategie waarmee software zo snel en efficiënt mogelijk wordt ontwikkeld en gedeployed. Het idee van Continuous Delivery is dat je een betrouwbaar en incrementeel verbeterend proces creeert dat herhaalbaar toe te passen is om software van concept naar klant te brengen. Bij Continuous Delivery gaat dit geautomatiseerd van de developmentfase tot aan accepteptatiefase, het deployen naar de productieomgeving is hierin nog een handmatige stap die gemaakt moet worden.
Continuous Delivery is daarom de eerste stap naar Continuous Deployment.
Continuous Delivery vs Continuous Deployment
Wanneer je het Continuous Delivery proces goed hebt ingericht dan is het voor beheerders de taak om het ingepakte bestand uit te pakken, de infrastructuurafhankelijke instellingen juist te zetten en de database scripts te draaien (wanneer nodig). Deze laatste stappen zijn te overzien, maar dit blijven handmatige acties en dus foutgevoelige stappen.
Continuous deployment gaat een stap verder dan continuous delivery en staat geen handmatige acties meer toe. Elke goedgekeurde wijziging moet in principe in een automatische deployment resulteren. Maar ook het handmatig testen bijvoorbeeld is niet meer toegestaan. Sterker nog, zelfs de servers waarop de software draait moeten automatisch ingericht worden in het proces.
Voordelen van Continuous Deployment
Het belangrijkste van Continuous Deployment is het zo eenvoudig mogelijk maken van het deployen van software naar de productieomgeving zonder de kwaliteit van de software in gevaar te brengen. Daarnaast neemt het belang van snel nieuwe code online kunnen zetten toe, zodat je snel kunt inspelen op klantwensen, nieuwe marktontwikkelingen of bugs in je code. Ook is het steeds belangrijker dat het online brengen van een nieuwe release geen downtime met zich meebrengt. Met de juiste inrichting van Continuous Deployment is dat mogelijk.
In veel organisaties ontstaan de problemen in de verschillende organisatorische lagen en dan met name tussen de afdeling van softwareontwikkeling en de afdeling die verantwoordelijk is voor het in productie zetten en beheren van de software. Het is daarom van cruciaal belang dat deze partijen op een lijn zitten en nauw samenwerken om het proces juist in te richten.
Continuous Deployment en Hosting
De hosting en infrastructuur zijn hierdoor onderdeel van het ontwikkelproces geworden. Doordat je invloed moet kunnen uitoefenen op de inrichting van de hostingstack is het van belang dat hosting flexibel is en dat je voldoende controle hebt om je eigen hostingstack in te richten.
Heb je een bepaalde software nodig op je server, bijvoorbeeld een bepaalde PHP-extensie? Dan wil je niet afhankelijk zijn van een systeembeheerder of hostingpartij om die software te installeren. Dat wil je geautomatiseerd als onderdeel van je ontwikkelproces regelen, zodat je ook op dit punt geen handmatige acties meer nodig hebt. Met onze innovatieve hostingoplossingen is het mogelijk om deze DevOps-werkwijze te realiseren. Bij het uitrollen van een test- acceptatie- of productieomgeving wordt de omgeving geautomatiseerd opgezet inclusief de software-afhankelijkheden die je hebt gedefinieerd in je eigen configuratiebestanden. Infrastructuur wordt daarmee onderdeel van je ontwikkelproces. Dat geeft je een grote mate van vrijheid en flexibiliteit en zorgt voor een veranderende rol van de hostingpartij. Lees meer over de DevOps-werkwijze en de rol van containers binnen je infrastructuur in ons artikel DevOps & Docker: onlosmakelijk verbonden.
Wij hebben veel expertise opgebouwd met het automatiseren van IT-infrastructuur, waarbij het faciliteren van ontwikkelprocessen in combinatie met een stabiele, high-performing productieomgeving centraal staat.
Wil je weten hoe wij dit doen voor onze klanten? Neem dan contact met ons op of volg onze CI/CD training!