terug naar overzicht

06/09/16

Insight insight

Applicatieontwikkeling
Erwin de Rijk, VX Company

Erwin de Rijk

+31 6 46 90 95 76


06/09/16

Onderhoudbaarheid tip 5: Automatiseer de infrastructuur

De afgelopen weken heb ik stil gestaan bij het belang van onderhoudbaarheid van maatwerk applicaties, hoe een Agile ontwikkelaanpak hieraan bijdraagt, hoe de mate van onderhoudbaarheid kan worden gemeten en hoe deze opgebouwde technical debt met refactoring kan worden aangepakt. Vorige week stond ik stil bij de rol van testen en geautomatiseerd testen in het bijzonder. In dit deel aandacht voor de onderliggende infrastructuur.

Rol van de infrastructuur

Onderhoudbaarheid zit niet alleen in de specifieke applicatiecode, maar ook in de onderliggende infrastructuur. Zoals in u003ca href=u0022https://vxcompany.com/kennis/blog/2016/07/25/onderhoudbaarheid-applicaties-onderschatte-kostenpost-zeven-tips/u0022u003edeel 1u003c/au003e besproken bepalen o.a. de herbruikbaarheid, analyseerbaarheid en modulariteit de mate van onderhoudbaarheid van een applicatie. Elke nieuwe release komt uiteindelijk in een productieomgeving terecht en dient te functioneren volgens de gestelde eisen (beschikbaarheid, schaalbaarheid, performance, security, etc.). Pas wanneer ook deze laatste stap geslaagd is, kan de onderhoudbaarheid beoordeeld worden. Een applicatie waarvan de *technicalu003cstrongu003e u003c/strongu003edebt** *op een acceptabel niveau is en de testbaarheid hoog is, kan toch voor veel problemen zorgen bij het in productie nemen.

Veel voorkomende issues

Bij het in productie nemen van een maatwerk applicatie komen vaak de volgende issues voor:rnu003culu003ern tu003cliu003eDoordat beheerders van de productieomgeving de installatie handmatig uitvoeren, is een volledige en kloppende installatie-instructie nodig. Hier zitten geregeldonvolkomenheden in die niet eerder in het proces zijn opgemerkt, met een foutieve inproductiename tot gevolg;u003c/liu003ern tu003cliu003eDoordat er verschillen zijn ontstaan tussen de specificaties van de infrastructuur en de daadwerkelijke infrastructuur, ontstaan issues bij de inproductiename. Waarom werkt het nu wel op de acceptatie-omgeving maar niet op de productie-omgeving?! Dit wordt u003ca class=u0022clru002du002dprimu0022 href=u0022http://searchwindowsserver.techtarget.com/definition/configuration-driftu0022 target=u0022_blanku0022 rel=u0022noopener noreferreru0022u003eConfiguation Driftu003c/au003e genoemd;u003c/liu003ern tu003cliu003eDoor toenemendemodulariteit (en schaalbaarheid) is het aantal (virtuele) machines of containers steeds groter aan het worden. Dit verhoogt de complexiteit en de kans op fouten bij een handmatige update. Bijvoorbeeld wanneer onderdelen vergeten worden bij een installatie.rnu003cfigure class=u0022clearfixu0022u003eu003c/figureu003ernu003cfigure class=u0022clearfixu0022u003eu003c/figureu003ernu003cfigure class=u0022clearfixu0022u003eu003c/figureu003ernu003c/liu003ernu003c/ulu003ernu003cimg class=u0022aligncenteru0022 src=u0022https://vxcompany.com/wp-content/uploads/Onderhoudbaarheid-tip-5-Automatiseer-de-infrastructuur-blog-Victor.jpgu0022 srcset=u0022u0022 alt=u0022onderhoudbaarheid-tip-5-automatiseer-de-infrastructuur-blog-victoru0022 width=u0022437u0022 height=u0022autou0022 data-srcset=u0022https://vxcompany.com/wp-content/uploads/Onderhoudbaarheid-tip-5-Automatiseer-de-infrastructuur-blog-Victor.jpg 437w, https://vxcompany.com/wp-content/uploads/Onderhoudbaarheid-tip-5-Automatiseer-de-infrastructuur-blog-Victor@2x.jpg 874w, https://vxcompany.com/wp-content/uploads/Onderhoudbaarheid-tip-5-Automatiseer-de-infrastructuur-blog-Victor@4x.jpg 1748wu0022 /u003e

Automatiseer de infrastructuur

Door de opkomst Cloud computing en Infrastructure as a Service (IaaS) is tooling voor Infrastructure as Code (IaC) steeds meer beschikbaar gekomen. Tevens groeide de behoefte om sneller applicaties in productie te nemen. Dit zorgde ervoor dat de traditionele silo’s (development en operations) en bijbehorende ‘overdracht’ niet meer wenselijk zijn. Te traag en te veel kans op fouten. Met de opkomst van DevOps teams (agile teams met een mix van development en operations die verantwoordelijk zijn voor de hele application lifecycle) is het mogelijk de infrastructuur te beschrijven in code. Net als de applicatie zelf. Hierdoor is het mogelijk vanuit code de infrastructuur op te tuigen, zonder handmatige handelingen. Voordelen van Infrastructure as Code?rnu003culu003ern tu003cliu003eDe infrastructuur is bij elkedeployment geautomatiseerd op te tuigen, is altijd hetzelfde en daardoor testbaar. Hiermee voorkomen we het ‘u003cemu003eItu003cstrongu003e u003c/strongu003eworksu003cstrongu003e u003c/strongu003eonu003cstrongu003e u003c/strongu003emyu003cstrongu003e u003c/strongu003emachineu003c/emu003e’ probleem;u003c/liu003ern tu003cliu003eWijzigingen in de infrastructuur (bijv. patches op Operating System, Applicatie server, etc.) worden nu in code gemaakt en getest. Door infrastructuur in code te beschrijving, kan gebruik gemaakt worden van de voordelen vanContinuous Integration, zoals versiebeheer en automatische testen;u003c/liu003ern tu003cliu003ePatches, versies van componenten, zijn nu eenvoudig te vinden in een bepaald deel van de infrastructuur. In feite niets anders dan een zoekopdracht in de code. De code is per definitie gelijk aan de productieomgeving. Wat niet gezegd kan worden van eventuele specificaties of een CMDB;u003c/liu003ern tu003cliu003eVeel sneller en goedkoper door het wegvallen van handmatige handelingen. Tevens verkleint een geautomatiseerde uitrol de kans op fouten aanzienlijk. Tooling die veel gebruikt worden voor het automatiseren van infrastructuur zijnu003c/liu003ernu003c/ulu003ernu003ca class=u0022clru002du002dprimu0022 href=u0022https://puppet.com/u0022 target=u0022_blanku0022 rel=u0022noopener noreferreru0022u003ePuppetu003c/au003e, u003ca class=u0022clru002du002dprimu0022 href=u0022https://www.chef.io/chef/u0022 target=u0022_blanku0022 rel=u0022noopener noreferreru0022u003eChefu003c/au003e en u003ca class=u0022clru002du002dprimu0022 href=u0022https://www.ansible.com/u0022 target=u0022_blanku0022 rel=u0022noopener noreferreru0022u003eAnsibleu003c/au003e. Hiermee past deze aanpak bij Continuous Deployment, waarin de deployment over alle OTAP-omgevingen geautomatiseerd plaatsvindt en continu getest kan worden of de hele stack (van userinterface tot en met infrastructuur) voldoet aan de eisen, en dus werkt! Volgende week het laatste deel. Dan staan we stil bij overdraagbaarheid.

Delen