Thijs Bardoel is onze Teamlead & Software Engineer. Binnen zijn functie stuurt hij het softwareteam aan en daagt hij hen uit om met vernieuwingen en verbeteringen te komen. Daarnaast is hij MT lid én besteed hij een groot van zijn tijd om te ontwikkelen aan de vele softwareproducten die Gepro heeft en onderhoudt. In deze blog beschrijft Thijs hoe de DevOps werkwijze is geïntegreerd in onze Agile werkmethodiek.
Gedisciplineerd software ontwikkelen
Eén van onze bedrijfsdoelen is continue verbeteren. In het software engineering ontwikkelteam is ruim een jaar geleden gekozen voor de DevOps aanpak. Gepro ontwikkelt veel software modules. In fases wordt software gespecificeerd, geschreven, getest en vervolgens gepubliceerd. In het verleden waren veel handmatig acties nodig om software te publiceren waardoor teveel fouten ontstonden. Er is gekozen voor een strakke integratie van softwareontwikkeling en productiebeheer: DevOps.
DevOps is hip
Op onze producten draait een omvangrijke software stack, waarbij zorgvuldig releasemanagement essentieel is. DevOps is hip. Voor de niet ingewijden: Het betekent Development (Dev) en Operations (Ops) en is voor Gepro een standaard werkwijze. DevOps draait allemaal om verbeteren van het (software) product, inclusief het code proces van de onderliggende software.
Tijdens de software engineering worden de bovengenoemde fases doorgelopen, waar we te maken krijgen met vraagstukken én uitdagingen. Eén van de belangrijke aspecten van het ontwikkelen van software is de kwaliteit en stabiliteit.
Het verhogen van kwaliteit wordt veelal gedaan door veel te testen, maar ook dan moet je erg consequent te werk te gaan. Het automatiseren kan daarin behulpzaam zijn om de testdekking te verhogen. Daar zijn de eerste stappen in gemaakt door het team.
Ook het automatisch vrijgeven van software is een nieuwere discipline en zeker even belangrijk. Want het verhoogt de softwarekwaliteit en bespaard tijd en is daarom al ingevoerd.
DevOps is integratie van ontwikkelen en vrijgeven
Nadat de software ontwikkeld en getest is, wordt het vrijgegeven naar onze klant. Dit proces is goed te automatiseren en is de afgelopen jaar bij ons een nieuwe discipline geworden.
DevOps is een verzamelnaam en staat voor alle technieken die bij software engineering komt kijken. Dit wordt gedaan door het zo veel mogelijke automatiseren van de infrastructuur en de werkstromen.
De DevOps aanpak is een onderdeel van onze ‘daily scrum’ aanpak. In (sprint) cycli van twee weken wordt onze software gepland, gemaakt en gebouwd. Het continue integreren (Continuous Integration, CI) en continue leveren (Continuous Delivery, CD) zijn twee aspecten die vaak aan de orde zijn bij Embedded toepassingen. Beide termen lichten we kort toe.
DevOps en Continuous Integration
In principe wordt de gebouwde code continue getest. Dit wordt zowel mogelijk automatisch gedaan, omdat de ontwikkelaar helpt problemen te vinden en op te lossen. Deze efficiënte manier van werken heeft als grootste voordeel dat sneller problemen wordt gelokaliseerd. Gepro maakt gebruik van GitHub (versiebeheer systeem) en met het maken van een release in GitHub wordt met één druk op de knop het CI-proces gestart.
Publiceren door Continious Delivery
Bij Gepro hebben we het CI/CD proces omarmd en vergaand doorgevoerd. De software wordt ontwikkeld met een versiebeheersysteem en staat veilig in de cloud bij GitHub. Elke nieuwe functie (Delivery pipeline) is zichtbaar voor het software team en wordt afzonderlijk getest en gepubliceerd. Omdat het opgedeeld is in kleine brokken is het overzichtelijker en is de productietijd significant korter en is de kwaliteit hoger.
Vrijgave naar de klant
De software wordt op een speciale buildserver gecompileerd waarna het resultaat bij het project in de cloud gezet wordt. Deze release staat nu klaar om vrijgegeven te worden naar de klant, dit is de pre-release fase.
Het definitief vrijgeven gebeurt niet automatisch, zodat de software engineer nog in gelegenheid is voor een laatste controle en nog de (verplichte) release notes kan toevoegen. Na deze laatste controle wordt de software daadwerkelijk vrijgegeven waarna er weer een automatisch proces gaat lopen die de software op onze SharePoint omgeving zet. Onze klanten kunnen op deze sharepoint omgeving de laatste software versie vinden.
Hierdoor heeft de klant altijd de laatst vrijgegeven software beschikbaar zonder dat de software over de mail verstuurd wordt.
Foutloze software bestaat niet, wel bijna
Dit hele proces voorkomt menselijke fouten in het opleveren van software, waardoor onze kwaliteit gewaarborgd is. Daarnaast scheelt het veel tijd voor de klant en onszelf natuurlijk.
- De klant hoeft bijvoorbeeld niet meer in de mailbox te zoeken naar die ene softwareversie. Daarnaast zijn er veel minder releases nodig naar de klant om tot een voorspelbare kwaliteit te komen.
- Voor Gepro is het automatiseren van het release proces ook tweeledig. Ten eerste heeft de engineer een controlerende rol gekregen waardoor er geen menselijke fouten gemaakt kunnen worden. Ten tweede scheelt het tijd, waar er voorheen veel tijdrovende acties uitgevoerd moesten worden is dat nu een stuk sneller te doen.
Foutloze software bestaat niet, maar we kunnen wel alles aan doen om fouten te voorkomen. DevOps is een krachtige methodiek waarbij we dicht bij dat doel komen!
Ben je benieuwd naar de mogelijkheden om samen te werken of misschien om bij ons te werken?
Neem contact met ons op en we plannen een kennismaking!