Softwareontwikkelmethode DevOps
DevOps (of Dev Ops) is een logisch vervolg en een verbetering van de Agile methode of filosofie. Bij Agile en Scrum zijn de teams al meer multidisciplinair geworden doordat de teams breder zijn geworden. Echter een belangrijke schakel in het in productie nemen van software is het beheer. Bij DevOps wordt de beheerorganisatie meer bij het proces betrokken waardoor software sneller in productie genomen kan worden.
Geschiedenis van DevOps
De geschiedenis van de term DevOps ligt in België. Daar werden zogenaamde DevOps-days gehouden, waarbij ontwikkelaars vanuit het ‘
development’ en beheerders vanuit de ‘
operation
s’ met elkaar van gedachten konden wisselen. Dit geeft ook direct de multidisciplinaire context van DevOps weer: het in een team samenbrengen van Development en Operations: DevOps. Hierdoor ontstaat een team dat zowel verantwoordelijk is voor het beheer en het continu doorontwikkelen van een dienst.
Development vs Operations
Er zijn grote verschillen, die zelfs kunnen conflicteren, tussen een development omgeving en een beheerorganisatie. Een development omgeving wil graag ontwikkelen, veranderen, een beheerorganisatie geeft prioriteit aan een stabiele (productie)omgeving. Wanneer beheer en development niet met elkaar praten, ontstaan er regelmatig ergernissen, conflicten en inefficiëntie. Dit wordt de
‘wall of confusion’ genoemd.
Verantwoording
Door het slechten van de muur tussen het beheer en de ontwikkelaars, ontstaat een team dat verantwoording draagt voor het hele proces. Een consequentie hiervan is dat productieproblemen nu ook van het hele team zijn. In de backlog, waar het
scrum team gebruik van maakt, worden nu dus naast de ontwikkel user stories ook de productie verstorende problemen en incidenten opgeslagen. Dit betekent dus dat de product owner van het scrum team ook verantwoordelijk wordt voor de productieomgeving. Hij bepaalt nu ook de prioritering tussen beheer en ontwikkeling.
Het inzicht wat door de scrum teams wordt verkregen, wordt nu dus niet alleen vanuit de nieuw te ontwikkelen software, de user stories, verkregen, maar ook vanuit de gemelde incidenten en problemen uit productie.
Agile en DevOps
De Agile filosofie zorgt ervoor dat de teamperformance wordt geoptimaliseerd. Bij Agile wordt, op zeer regelmatige basis, werkende software opgeleverd. DevOps gaat nog een stap verder. DevOps zorgt ervoor dat het in productie nemen van het ontwikkelde stuk software ook wordt versneld door in het team ook het beheer in de vorm van de beheerders mee te nemen.
Continuous Integration (CI)
Een van de twee kernprincipes van DevOps is Continuous Integration (CI). Continuous Integration wil zoveel zeggen dat het deployen van de ene omgeving naar een andere omgeving op een snelle, geautomatiseerde manier plaatsvindt. Het kan dus bijvoorbeeld gebruikt worden in traditonele OTAP (
Ontwikkel,
Test,
Acceptatie en
Productie) omgevingen waarbij het deployen van Ontwikkel, naar Test, Acceptatie en Productie geautomatiseerd plaatsvindt. Hierdoor is het mogelijk om snel de nieuwe opgeleverde software te testen en te accepteren.
Continuous Delivery (CD)
Het andere kernprincipe, Continuous Delivery (CD), gaat van hetzelfde concept uit. Echter is het opleveren naar de volgende omgeving volledig geautomatiseerd. Geen mens test meer de software, alles wordt geautomatiseerd getest. Hierdoor kunnen zeer frequent zeer kleine stukjes software opgeleverd worden, zelfs enkele keren per dag. Er is dus eigenlijk geen release meer van software. Omdat de updates (releases) zo klein zijn is de impact van een eventuele fout ook minimaal.
Een paar voorbeelden waar DevOps in combinatie met continuous delivery wordt gebruikt, zijn bedrijven als Amazon en Google. Deze bedrijven releasen dagelijks tientallen wijzigingen.