Skip naar content

Waarom het zo belangrijk is om software proactief te onderhouden

Software proactief onderhouden is ontzettend belangrijk. Van oudsher is het echter een onderwerp dat zelfs developers liever mijden op feestjes; en dat zegt heel wat. Het is helaas een noodzakelijk kwaad om ervoor te zorgen dat software bij de tijd blijft, maar het kan op de lange termijn een hele hoop ellende voorkomen.

Developers

Bij Digital Natives updaten wij alle projecten die we in beheer hebben mínstens één keer per maand. Bij dringende securityupdates voeren we ze zelfs zo snel mogelijk uit. We monitoren continu of er nieuwe versies zijn uitgebracht van de softwarepakketten die we gebruiken, en schatten per situatie in op welke termijn deze toegepast moeten worden.

Het blijft echter een erg abstract onderwerp. Daarom begrijpen we heel goed dat onze klanten soms vraagtekens zetten bij het nut en de urgentie van het proactief onderhouden van de software.

In dit artikel hoop ik je van antwoorden te voorzien.

"Het staat als een huis"

Een huis. Iedereen kan zich direct een beeld voor de geest halen: groot of klein, een rijtjeshuis of een boerderij; het valt haast niet te bevatten hoeveel verschillende vormen ervan bestaan. Toch bestaan huizen grofweg uit dezelfde onderdelen. Een fundering, muren, ramen, plafonds en als je mazzel hebt zelfs een dak.

Iedereen die het geluk heeft een dak boven hun hoofd te hebben, weet echter ook dat dat er meer komt kijken bij het hebben van een huis: onderhoud.

Een gemiddelde woning heeft ongeveer iedere vijf jaar een schilderbeurt nodig, (half)jaarlijks moet er een goede dosis onkruid uit de tuin gewied worden en na een jaar of dertig moet het dak er toch écht een keer aan geloven. Zo zijn er talloze onderdelen die onderhoud nodig hebben. Sommige regelmatig, andere gelukkig maar één keer in je leven.

Je kunt er natuurlijk voor kiezen dit allemaal achterwege te laten. Je woongenot lijdt er niet direct onder, maar je loopt wel degelijk steeds meer risico's. Zo kan het zijn dat de sloten in je woning verouderd zijn, waardoor er (steeds) grotere kans is op inbraak. Of je kozijnen beginnen te rotten omdat ze niet netjes onderhouden zijn. Er duikt uiteindelijk een keer iets op dat écht niet kan wachten.

En dan zijn de rapen gaar. De kosten voor herstel lopen in zo'n situatie vaak enorm uit de hand. Om nog maar niet te spreken van onherstelbare schade veroorzaakt door diefstal of andere invloeden van buitenaf.

In softwareland is het niet veel anders.

Softwareland

De digitale producten die wij ontwikkelen verschillen enorm van elkaar. Toch hebben ze meer overeenkomsten dan je in eerste instantie zou verwachten. Net als het gemiddelde huis worden digitale producten ontwikkeld op basis van dezelfde concepten en technieken.

Veel van onze projecten zijn gebaseerd op open source softwarepakketten. We werken op het moment bijvoorbeeld veel met Laravel en Craft CMS voor de back-end, in combinatie met Vue.js en Nuxt.js voor de front-end. Ieder van deze pakketten wordt beheerd door een organisatie die ervoor zorgt dat de software goed onderhouden en klaar voor de toekomst is. Vaak maken zij, binnen hun eigen software, ook weer veelvuldig gebruik van kleinere open source projecten.

Technologie is verandering

Waar het onderhoud van een huis voornamelijk gedicteerd wordt door weersinvloeden en natuurlijke slijtage, ligt dat bij software net iets anders. Technologische ontwikkelingen volgen elkaar namelijk in rap tempo op. Een stuk software dat vandaag als hypermodern wordt bestempeld kan over een jaar alweer hopeloos achterhaald zijn. Ontwikkelaars van (open source) software ervaren dus continu de druk om hun producten te verbeteren om bij de tijd te blijven.

Je zou deze druk op het beheer van software kunnen vergelijken met de invloed van het weer op een huis. Zolang je alles goed onderhoudt heb je er geen last van en kan het zelfs heel positief zijn.

Het feit dat technologie zich zo snel ontwikkelt biedt aan de ene kant veel kansen, aan de andere kant brengt het ook risico's met zich mee. Zo komen er soms kwetsbaarheden (ook wel vulnerabilities) aan het licht in bestaande software die misbruikt kunnen worden met behulp van nieuwe technieken. Zolang je niets doet om zoiets actief te verhelpen (door te updaten), wordt de kans steeds groter dat iemand (of iets) er misbruik van maakt.

Risico's

Er kleven verschillende risico's aan software die niet actief onderhouden wordt. Ruwweg kunnen we deze risico's opdelen in twee categorieën:

  1. Securityrisico's
  2. Veroudering

Securityrisico's

Stel je voor dat de sloten in je woning hopeloos verouderd zijn, of dat je zelfs helemáál geen sloten hebt — omdat dat vroeger de gewoonte was. De kans dat een kwaadwillende misbruik maakt van die situatie wordt steeds groter naarmate meer mensen van zo'n kwetsbaarheid afweten.

Software werkt ongeveer hetzelfde: het wordt altijd ontwikkeld in de huidige tijdsgeest met de huidige technieken. Het blijft mensenwerk, en mensen kunnen de toekomst nu eenmaal niet voorspellen. Hoe goed software ook getest wordt, er kan in de loop der tijd altijd iets ontdekt worden waar misbruik van kan worden gemaakt.

Op internet zijn er partijen die misbruik proberen te maken van bekende security vulnerabilities. Dit gebeurt veelal geautomatiseerd, door gespecialiseerde stukjes software die geschreven zijn om zoveel mogelijk websites te testen op dit soort gebreken. In het ergste geval kunnen zij toegang krijgen tot vertrouwelijke data of zelfs rechtstreeks tot de server.

In zo'n geval mag je van geluk spreken als het om een white hat hacker gaat. Zij melden kwetsbaarheden (soms tegen betaling) maar hebben geen intentie om de integriteit van het product aan te tasten. In het ergste geval gaat het wél om een kwaadwillende. In dat geval is de kans op een datalek groot.

Er zijn veel facetten die bijdragen aan de veiligheid van een product, waar we hier niet te diep op in gaan. Zorgen dat de software die gebruikt wordt up-to-date is, is een heel belangrijk onderdeel. En gelukkig redelijk makkelijk te realiseren. Proactief updaten dus.

Veroudering

Het andere grote risico dat op de loer ligt wanneer je software niet actief onderhoudt is obsolescence: de tijd heeft het product ingehaald.

Bij Digital Natives streven we er altijd naar om duurzame relaties aan te gaan met onze klanten. Dat betekent dat een platform nooit 'af' is. Vanaf de eerste oplevering wordt het wat ons betreft namelijk pas écht interessant. Vanaf dat moment kunnen we enorm veel leren van onze gebruikers, en stap voor stap het product verbeteren. Dit doen we samen met de organisatie en haar gebruikers, op basis van een vast doorontwikkelproces dat we Evolve noemen.

Platformen van vijf jaar of ouder zijn voor ons dus geen uitzondering. Om dit soort producten levensvatbaar te houden is het van vitaal belang om regelmatig stil te staan bij de techniek waarop deze ontwikkeld zijn:

  • Zijn er sindsdien nieuwe technieken of concepten ontwikkeld die de beheerbaarheid ten goede komen?
  • Hebben er grote updates plaatsgevonden in de softwarepakketten waarop het platform gebaseerd is? Wanneer komen die er aan?
  • Strookt de manier waarop de site in eerste instantie ontwikkeld is nog met de bijgestelde doelen van het platform?
  • Is de bestaande techniek in staat toekomstige ambities van het platform te faciliteren?
  • Zijn er in het verleden technische keuzes gemaakt die herzien moeten worden?

Hoe meer aandacht aan bovenstaande vraagstukken besteed wordt, des te effectiever nieuwe wensen en inzichten verwerkt kunnen worden.

Doordenderende trein

Je zou een platform met zo'n lange levensduur kunnen vergelijken met een doordenderende trein. Naarmate de tijd vordert worden er steeds meer wagons aan de trein gehangen in de vorm van nieuwe functionaliteit. Hoe langer de trein wordt, des te moeilijker het is om onverwachts bij te sturen.

De wagons aan de voorkant hebben na verloop van tijd onderhoud nodig om te garanderen dat alle volgende wagons goed blijven functioneren. En soms is het beter om één van die oude wagons in zijn geheel te vervangen. Als dit soort risico's vooraf in kaart wordt gebracht en adequaat uit de weg wordt genomen kun je de trein zo lang maken als je wilt.

Doe je dit niet, dan wordt het steeds lastiger om nieuwe features toe te voegen.

Conclusie

Om een lange levensduur van een platform te garanderen is het dus heel belangrijk om te zorgen dat de software bij de tijd blijft. Dit geldt voor de gebruikte softwarepakketten, maar ook voor de code die specifiek is ontwikkeld voor het product. Het neemt (grote) risico's weg op het gebied van security en gaat de veroudering van het product tegen.

Helaas voelt het vaak als een investering die 'niets oplevert', omdat veranderingen vaak niet direct tastbaar zijn. Op de lange termijn kan het echter het verschil maken tussen een achterhaald product en een sterk platform dat bestand is tegen de tand des tijds.