[...]
Ik lees met interesse deze draad mee. Over jouw stukje hierboven: dat heb ik zelf nooit goed begrepen: waarom zou je een webapplicatie altijd naar de laatste versie van alles willen hebben? Ja...beveiligingszaken maar ik heb klanten die nog een oeroude versie van Laravel draaien en prima. 'Never touch a running system.'. Die ga ik echt niet bijwerken naar 12.x nu. En dus heb ik al die kosten ook niet...
Daarom gaat de ballon 'lage draaikosten en weinig tot geen onderhoud' bij mij niet op.
Sterk punt — en het is inderdaad tweezijdig. Wat ik nu zeg is dus deels een tegenspraak:
Waarom wij wél altijd updaten
In ons geval gaat het om
evoluerende enterprise-level producten. We ontwikkelen continu door: nieuwe features, herschreven componenten, verbeteringen. Voor ons is het dus de norm dat applicaties constant up-to-date blijven.
We hechten bovendien veel waarde aan het werken met moderne technieken. Dat stelt ons in staat om onze infrastructuur uniform te houden: servers, pakketten, versies, configuraties — alles gestroomlijnd.
Het resultaat: nagenoeg geen overhead qua systeembeheer.
Praktijkvoorbeeld: servermigratie onder druk:
Een paar jaar geleden ging een van onze serverleveranciers failliet. De melding kwam véél te laat: we zouden binnen een week automatisch overgezet worden naar een andere partij — midden op de werkdag, terwijl onze software 24/7 cruciaal draait.
We hebben de overstap naar een andere provider direct zelf in gang gezet én de situatie benut om onze volledige stack te updaten: OS, database, PHP-versies, alles. Mijn lead developer en ik hebben dat binnen 12 uur gerealiseerd (terwijl ik zelf overigens strontziek was, dus dat met veel pauzes tussendoor).
Ter vergelijking: een ex-werkgever van mij, die bij dezelfde partij zat, had een extreem gefragmenteerde codebase — verschillende versies, stacks, afhankelijkheden. Gevolg:
- 8 klanten raakten data kwijt.
- Websites lagen wekenlang plat.
- Voor sommige klanten moesten nieuwe sites worden gebouwd, tegen verlies, omdat upgraden meer zou kosten dan opnieuw beginnen.
Ironisch genoeg: de projecten die ik daar destijds had opgezet, zijn probleemloos gemigreerd.
(Terzijde: voor PHP 5.x zijn officiële packages tegenwoordig niet eens meer makkelijk te installeren.)
-- Einde voorbeeldsituatie
Doordat al onze producten dezelfde featureset en werkwijze delen, kunnen we elk project met één enkele fix updaten. Een visuele bug, een security-update, of een wijziging door een browserupdate: het maakt niet uit. Eén fix, en al onze producten worden (wel los, maar snel) gepatcht — meestal binnen een half uur. Langer is een uitzondering.
En dat is niet alleen efficiënt. Het voorkomt ook dat onze developers diep in specifieke legacy-code moeten duiken. Iedereen kan overal in werken dankzij de consistente structuur. Het voorkomt alle "maar ik ben daar niet bekend mee" situaties, want iedereen werkt hetzelfde. Daarnaast kunnen wij continu features van product A meenemen naar product B en weten we exact wat de consequenties ervan zullen zijn voor we het überhaupt doen.
Onze keuze voor vanilla JavaScript helpt daar enorm bij. We hebben nooit hoeven migreren van jQuery naar React, Angular of iets anders. Onze code is lean en helder. Veel concurrenten zitten intussen vast in verouderde libraries of frameworks, waardoor updates duur en pijnlijk zijn — of simpelweg uitblijven. En dat zie je terug in hun product. Dat kost klanten.
Praktijkvoorbeeld: wat ‘vastzitten’ echt betekent:
Een van onze concurrenten kan nog steeds geen urenboekingen over 00:00 heen verwerken. Nachtploegen moeten handmatig worden gesplitst. Toen een klant vroeg of dit opgelost kon worden, was het antwoord:
"Dat kunnen we niet — dat zit te diep in het systeem."
Dat is ons nog nooit overkomen. Alles in onze producten is aanpasbaar.
Geen technische schuld, geen verborgen magie, geen backward compatibility hacks.
Onze codebase is 100% helder en up-to-date.
En dat laatste gezegd te hebben; Ons grootste product, heeft een codebase welke volgens mij kleiner is dan React JS op zichzelf... Intussen misschien net iets groter.
---------------------------------
Maar... ‘Never touch a running system’ is óók waar
En toch ben ik het ook volledig met je eens:
We hebben projecten die al jaren stabiel draaien en nooit meer worden aangeraakt. Vooral maatwerkproducten die we niet meer actief onderhouden.
Maar zelfs díé producten ontkwamen niet aan een paar noodzakelijke upgrades. Denk aan de overgang van PHP 4.x of 5.x naar 8.3. In onze eigen producten was dat letterlijk 5 minuten werk — warnings, wat deprecations fixen, en door.
Bij projecten die gebouwd zijn op zware frameworks? Een nachtmerrie. Wat bij ons een upgrade is van een paar minuten, kan daar weken duren of onmogelijk zijn.
Moraal van het verhaal:
Je kunt een draaiend systeem lang met rust laten, maar op een gegeven moment komt er altijd een moment waarop je tóch moet upgraden. Alleen al vanwege zero-days of technische afhankelijkheden die gewoon verdwijnen.
De producten welke ik maak zijn bedoeld om nog zeker 20, als niet 50 jaar een rol te hebben in onze samenleving. Het zijn geen producten met een "houdbaar t/m" datum.
[Reactie gewijzigd door CapnCrinkle op 22 april 2025 17:36]