Niels deelt zijn ervaring met DevOps en Open Social

DrupalJam 2016

Tijdens DrupalJam mocht onze developer Niels van der Molen zijn ervaringen delen met een volle zaal geïnteresseerden.

Niels deelt zijn DevOps ervaringen op DrupalJam 2016

Op 12 mei 2016 vond het jaarlijks terugkerende evenement DrupalJam plaats. DrupalJam 2016 was een bijzondere editie voor GoalGorilla. Niels van der Molen had de eer om namens GoalGorilla een presentatie te verzorgen. Niels (Medior Developer) werkt inmiddels drie jaar bij GoalGorilla, nadat hij zijn master Human Media Interactie afrondde. Een volle zaal in De Fabrique te Utrecht luisterde toe hoe Niels The future of DevOps in Open Social presenteerde. In deze presentatie werd vanuit het DevOps perspectief gekeken op het Open Social project. Open Social is een Drupal 8 distributie voor sociale community's, gebaseerd op het succesvolle platform Greenpeace Greenwire.

 

Presentatie Niels van der Molen
Klik om de presentatie van Niels te bekijken

Microservices als abstractie tussen developers en application team

Niels omschreef in zijn presentatie de wensen die vandaag de dag bestaan rondom DevOps in drie culturen: een cultuur van experimenteren, een cultuur van verbetering en aanpassing en een cultuur van delen en samenwerken. Deze culturen brengen kansen en uitdagingen met zich mee voor de toekomst. Binnen de monolithic architecture wordt er doorgaans gewerkt met application developers en operation teams. Tussen deze developers en de teams, die afhankelijk van elkaar werken, blijken frustraties te bestaan in beide kampen. Het is bijvoorbeeld vaak onduidelijk waar de verantwoordelijkheden liggen wanneer problemen optreden op een productie omgeving. Verder is het is lastig om nieuwe versies en services aan een bestaande monolithic toe te passen.

Een abstractielaag tussen het application team en de developers biedt de oplossing voor het probleem. Op deze manier zijn de teams met elkaar verbonden én kunnen ze aan beide kanten van de abstractielaag onafhankelijk van elkaar doen waar ze goed in zijn. De vraag die echter ontstaat bij deze abstractielaag is: Hoe is deze toe te passen bij een monolithic architecture? Vooral op applicatieniveau is deze vraag vrijwel onmogelijk te beantwoorden.

Door middel van microservices is het echter toch mogelijk om abstractie toe te brengen in de werkwijze. Door applicaties in kleine containers te plaatsen wordt de abstractie toegepast. Het idee van werken met deze microservices staat nog in de kinderschoenen. Tot nu toe was het delen van de operation code van een monolithic applicatie erg lastig, vaak vond dit plaats met documentatie. Containers maken het echter mogelijk om gemakkelijk samen te werken en te delen. In een open source community kunnen direct toepasbare Docker images gedeeld worden. Docker Hub is een goed voorbeeld van waar dit al gebeurt.

Continuous integration en de continuous delivery pipeline

Een ander onderwerp dat Niels besprak was continuous integration (CI) en de continuous delivery pipeline. CI vormt de belangrijke eerste stap in een continuous delivery pipeline, zoals te zien is in de onderstaande afbeelding. Als deze stap doorlopen is ontstaat er een artifact waar de applicatie in staat. Klaar voor productie is de applicatie dan nog niet, vaak is er nog behoefte aan user tests, security tests of stress test op een productie omgeving. Hoe professioneler het product des te professioneler de pipeline moet zijn. Hoe verder in de pipeline hoe verder de zekerheid dat het goed is. De cycle time vormt een belangrijk aspect bij continuous delivery. Interessant is om te zien waar de vertraging optreedt in de pipeline. Wanneer dit duidelijk is kan deze namelijk efficiënter worden gemaakt om het proces te versnellen. Vooral wanneer er veel releases of aanpassingen zijn is het goed om de cycle time te verkorten. Belangrijk in het concept van continuous delivery zijn feature toggles en het gebruik van artifacts in plaats van version control systemen. 

De continuous delivery pipeline gepresenteerd tijdens DrupalJam 2016
De continuous delivery pipeline

Hoe wordt dit alles geïmplementeerd bij Open Social?

Vroeger maakte GoalGorilla gebruik van Vagrant en Puppet om een ontwikkelingsomgeving op te zetten. Er waren weliswaar workflows, maar deze veroorzaakten problemen waardoor ze niet altijd goed werden toegepast. Er werd gereleased met GIT en scripts. Jenkins werd gebruikt voor het CI systeem en de testen draaiden niet automatisch maar op basis van dagelijkse pull requests. De resultaten waren zichtbaar in Jenkins en konden worden ingezien met tools. Echter werd er niet altijd actie ondernomen op de resultaten van tests. 

Inmiddels wordt altijd gewerkt met een Docker workflow. Met een gitflow wordt gewerkt om feature branches aan te maken. Als dit werk gedaan is wordt het gepusht naar GitHub. Hierna wordt een beeld gestart op de Travis CI, deze maakt de Docker containers, installeert de website en draait unit en functionele testen. Als dit werk klaar is wordt een pull request aangemaakt in GitHub, deze voorspelt of een eventueel toekomstige merge goed zal verlopen. Wanneer deze test goed gaat, zal de check in de CI ook goed gaan, zo geeft Travis zekerheid over je merge. Als deze merge plaatsvindt wordt op de Docker Hub een build gestart om een Docker image te maken, aan de hand van de Docker file. Dit is de laatste stap die plaats vindt binnen het Continuous Integration systeem. 

De belangrijkste verandering van dit alles is de cultuurverandering. Mensen willen dat het werk wat ze doen geen problemen voor de rest oplevert. Door het doorlopen van de checks wordt er goed werk afgeleverd, de nigthly build maakt al het tijdelijke werk heel snel zichtbaar voor het team. Zo blijft men op de hoogte van wat een ander gedaan heeft.

Hoe het hele proces voor Open social in zijn werk gaat is te zien in de onderstaande video.

De presentatie leverde veel positieve reacties op. Bovendien waren de aanwezigen enthousiast over deze nieuwe werkwijze en Open Social. Benieuwd naar Open Social? Het prototype kan nu getest worden op www.GetOpenSocial.com. DrupalJam 2016 was nog meer dan in de vorige edities een enorm succes. Onze dank gaat uit naar de organisatie en aanwezigen, tot volgend jaar!

 

credits headerafbeelding: Imre Gmelig Meijling

 

Beheerder
GoalGorilla

Bekijk ook onze andere nieuwsartikelen

Klik voor onze award winnende klanten