DevOps met Microsoft Azure en VSTS Deel 1: een introductie
Er wordt de laatste tijd veel gesproken over DevOps. Hoewel DevOps op zich los staat van Cloud computing, kan de Cloud wel gezien worden als een ‘enabler’ voor DevOps. Nu het gebruik van de Cloud meer en meer ingeburgerd raakt, zien we dat de discussie rondom, en zelfs de introductie van DevOps in een stroomversnelling komt. In deze blogserie kijken we op welke manier Microsoft Azure en Visual Studio Team Services ondersteunend kunnen zijn aan de introductie van DevOps in uw organisatie.
Bepaalde onderdelen in dit blog zijn inmiddels enigzins verouderd. Via de button onderaan deze pagina kunt u een volledig geactualiseerd versie van de blogserie downloaden.
Snel inspelen op een veranderende markt
Eén van de belangrijke drijfveren om te starten met DevOps is de behoefte van bedrijven om steeds sneller in te spelen op de veranderende markt. Hoe sneller nieuwe ideeën en/of producten aan de klant aangeboden kunnen worden, hoe beter! Met behulp van Agile processen hebben Developmentafdelingen al een slag gemaakt in het iteratief en snel opleveren van kleine delen software. Dit in tegenstelling tot de watervalmethode die een aantal jaren geleden nog veelvuldig toegepast werd. Als we Agile goed toepassen betekent dit dat er vaker een release opgeleverd wordt vanuit Development. Het wil echter nog niet zeggen dat deze release ook snel en zonder problemen in productie geplaatst kan worden!
DevOps is aanvullend aan Agile. Het verbetert de samenwerking, communicatie en integratie tussen ‘Development’ en ‘Operations’ en draagt er aan bij dat opleveringen vanuit ‘Development’ ook daadwerkelijk ‘production ready’ zijn. Hierdoor kunnen opleveringen gestandaardiseerd, snel en veilig in productie genomen worden door ‘Operations’ zodat deze zo snel mogelijk waarde toevoegen voor de klant.
Leerproces op basis van feedback
DevOps stimuleert een korte ‘release cycle’. Door de nauwe samenwerking tussen Development en Operations ontstaat een continue stroom aan feedback tussen beide afdelingen. Belangrijk hierbij is vooral het leerproces dat gevoed wordt door de feedback.
Een voorbeeld… Bij het toepassen van DevOps levert Development niet meer alleen een stuk software op, maar zorgt het ook voor (geautomatiseerde) configuratieinstellingen van de test- en/of productieomgevingen. Hierdoor wordt het voor Operations veel eenvoudiger om de software ook daadwerkelijk in productie te zetten. Operations kan Development ondersteunen bij het zo optimaal aanleveren van deze configuratieinformatie. Operations op haar beurt, deelt monitoringinformatie over de performance en stabiliteit van de software actief met Development. Dit levert Development een beter inzicht in de kwaliteit van de opleveringen, Ze kunnen direct zien wat de impact van een bepaalde wijziging op productie is en kunnen, indien nodig, direct anticiperen.
De feedback vanuit de productieomgeving is niet alleen voor Development van belang maar heeft ook business value. De Product Owner (binnen een Agile project) maakt voor ieder increment dat opgeleverd wordt een inschatting van de waarde die wordt toegevoegd. Op basis van de feedback vanuit Operations kan de Product Owner de eerdere inschatting valideren en indien nodig kan hij/zij een verfijning aanbrengen in de backlog.
Doordat het proces van ‘in productie name’ van opgeleverde software veelvuldig en gezamenlijk wordt uitgevoerd, zal dit steeds beter en sneller verlopen. Er is sprake van een continu leerproces dat uiteindelijk resulteert in een hogere beschikbaarheid van de dienst en een aanzienlijk kleinere kans op mislukkingen!
Figuur 1. Continu leerproces op basis van feedback tussen Development, Operations en Product Owner
Cultuur, processen en tools
DevOps wordt enerzijds gezien als een ‘social movement’ waarbij een cultuur geschapen wordt waarbinnen de afdelingen Development en Operations samenwerken. Anderzijds is het een verzameling van processen en tools die deze samenwerking ondersteunt en optimaliseert. In deze blogserie zullen we de focus leggen op de tools die Microsoft Azure biedt en op welke manier dit ondersteund kan werken aan bepaalde processen. In de praktijk zal dit niet genoeg blijken. Er dient minimaal evenveel aandacht besteed te worden in het creëren van de juiste cultuur binnen de organisatie!
Samenvattend
DevOps stimuleert een snellere ‘time to market’. Het verhoogt de kwaliteit van de software en standaardiseert de in productie name daarvan. Dit resulteert in een effectieve organisatie die snel in staat is om een idee en/of kans om te zetten in waarde voor de klant. Het spreekt voor zich dat organisaties die DevOps onder de knie krijgen een aanzienlijk voordeel hebben t.o.v. hun concurrenten!
Softwareontwikkelingstraject
Voordat we ingaan op de manier waarop Microsoft Azure en VSTS ondersteunend kunnen zijn aan DevOps, is het goed om eens te kijken naar een eenvoudige release cycle in een traditioneel softwareontwikkelingsproces. Onderstaand figuur geeft dit proces schematisch weer.
Figuur 2. Schematische weergave van softwareontwikkelingsproces.
Het Development team bestaat uit één of meerdere ontwikkelaars die verantwoordelijk zijn voor het opleveren van de gevraagde functionaliteit. Het team maakt gebruik van een PC en/of laptop met daarop Visual Studio en gebruikt Team Foundation Server (TFS) als ‘source control’ systeem. Veelal wordt TFS daarnaast ingezet als ondersteuning van de Agile werkwijze van het team. Er wordt gebruik gemaakt van geautomatiseerde builds vanuit waar ook de unittesten en de deployment naar de ontwikkel- en/of test servers geregeld wordt. Uiteindelijk zal er een (handmatige) overdracht plaatsvinden naar de afdeling Operations, die de oplevering in de productieomgeving plaatst.
Veel organisaties maken voor de ondersteuning van dit softwareontwikkelingsproces gebruik van resources in hun eigen datacenter. Ze hebben een eigen TFS server en het developmentteam beheert de eigen ontwikkel- en/of testservers. De productieomgeving valt veelal niet onder de verantwoordelijkheid van het developmentteam en bevat daarom niet per definitie dezelfde configuratie als de ontwikkel- en/of testomgeving.
Opvallend is, dat er vaak geen directe feedbackloop is vanuit Operations terug naar Development. Een softwarerelease wordt door Development ontwikkeld, getest en vervolgens overgedragen naar Operations. Communicatie tussen beide afdelingen vindt vaak alleen plaats als er problemen ontstaan bij de in productie name en/of in productie zelf.
De combinatie van Azure, Visual Studio Online en DevOps
Microsoft Azure, in combinatie met Visual Studio Team Services (VSTS), biedt voor ieder van de genoemde onderdelen in het softwareontwikkelingsproces een aantal interessante alternatieven en mogelijkheden. Zo kan het developmentteam in plaats van TFS gebruik maken van een door Microsoft beheerde VSTS omgeving. Daarnaast kunnen Azure Virtual Machines gebruikt worden voor het snel (geautomatiseerd) ‘in de lucht’ brengen van ontwikkel- en of testomgevingen. Gaan we nog een stap verder dan maken we
gebruik van de standaard ‘bouwblokken’ van het Azure ‘PaaS’ of ‘SaaS’ platform en deployen we webapplicaties direct naar ‘Azure Websites’. In deze variant komt een aanzienlijk deel van de configuratie en het beheer van de (productie) omgeving te vervallen. Standaard features zoals ‘roll-forward’ en ‘rollback’ zijn hierbij krachtige hulpmiddelen om een oplevering gecontroleerd van ontwikkel, naar test en uiteindelijk naar productie door te zetten.
De in VSTS en Azure ingebouwde monitoring- en managementfunctionaliteit biedt Development en Operations de mogelijkheid om applicaties continue te monitoren en daar waar nodig direct in te grijpen. Dit alles met het doel om de stroom van opleveringen vanuit Development snel, gecontroleerd en voorspelbaar naar productie te krijgen.
In de eerstvolgende blog kijken we hoe Visual Studio Team Services kan bijdragen aan DevOps!
Wordt vervolgd…
Ga naar deel 2 van deze blogserie: DevOps met Visual Studio Team Services en Azure: Visual Studio Team Services.
Edward Bakker is Microsoft Azure MVP en solutions architect bij Delta-N. Hij focust zich op oplossingen gebaseerd op het Microsoft Azure platform.