Legacy-systemen uitfaseren, hoe doe je dat?

Martijn van de Polder

23 november 2017

Als je software en systemen niet meer integreren met nieuwe systemen, niet meer kan voldoen aan de laatste veiligheidseisen of als zelfs je developers worden geremd door oude technieken, dan spreken we van legacy software. Het woord legacy heeft een negatieve associatie binnen de IT-branche, terwijl met de software op zich niets mis is.

Dat de software wat ouder is, betekent in veel gevallen dat de meeste kinderziektes en bugs eruit zijn. Dat maakt legacy software ten opzichte van het ‘nieuwste van het nieuwste’ betrouwbaarder en stabieler. Vernieuwen is niet noodzakelijk. Het omgekeerde is ook waar: continu vernieuwen betekent in feite dat je altijd met legacy te maken hebt, waarom zou je anders vernieuwen?

Met legacy is op zich niets mis, vinden we bij Enrise. Vaak kunnen legacy-systemen nog jaren mee, mits het voldoet aan moderne veiligheidseisen en te koppelen is met moderne systemen. Toch komt er een moment waarop dat niet meer kan:

  • Je wilt vernieuwen als organisatie, maar de oude software staat die vernieuwing in de weg;
  • Je wilt realtime data ontsluiten via een app, maar je huidige IT vormt daarin een belemmering;
  • Het moment waarop je alleen een flexibeler CMS wilt inzetten*, maar vastzit aan de oude waarbij front-end en back-end samen een geheel vormen;
  • Je hebt hoge licentiekosten die drastisch omlaag kunnen door software te vervangen;
  • In de afgelopen jaren heb je zoveel snelle fixes en verbeteringen doorgevoerd (shortcuts), dat het door de ingewikkelde structuren moeilijk is geworden om nieuwe features te ontwikkelen binnen dezelfde code.

*

Download de CMS keuzegids 2023

Transformeren van legacy-systemen naar flexibele en snel innoverende software doe je niet in een dag. Je hebt immers te maken met enkele uitdagingen:

  1. Software-ontwikkeling is en blijft complex;
  2. Je bestaande IT-infrastructuur is niet gebouwd op verandering en innovatie, maar op stabiliteit en continuïteit;
  3. Huidige IT-systemen zijn niet flexibel en vaak georganiseerd in silo’s, waarbij website, webshop, CRM, etc. niet gemaakt zijn om gegevens uit te wisselen.

Bij Enrise helpen we organisaties bij het oplossen van deze uitdagingen om met of zonder legacy-systemen sneller en efficiënter te kunnen innoveren, nieuwe producten en diensten uit te rollen en de online experience van je klanten te verbeteren. Dat noemen we Digital Agility. Hoe we dat doen, leg ik hier uit.

Big bang versus uitfaseren

Het vernieuwen van software en systemen is een flinke investering, vooral als je complete IT-architectuur op de schop moet. Je moet immers elk aspect herontwerpen, herbouwen, herinrichten en opnieuw leren in gebruik te nemen. Dat kost veel tijd van je mensen en vraagt veel van je IT-budget. Hoe groter en complexer je systeem en infrastructuur, hoe langer het vernieuwingstraject duurt, al pak je het nog zo agile aan. Ga je eenmaal met een ‘big bang’ na maanden ontwikkelen live, dan begint het pas: Je bent niet klaar met software, je zult blijvend moeten verbeteren en doorontwikkelen om te voorkomen dat ook je nieuwe systemen legacy-systemen worden…

Het is onze ervaring dat een livegang met een big bang niet meer van nu is. Je gaat niet maanden of jaren ontwikkelen om op een magisch moment je software officieel in gebruik te nemen en er dan achter te komen wat nog mist. Of erger: dat je erachter komt wat je niet nodig had. We werken zelf al sinds 2011 100% Agile met onder andere Scrum en Kanban, dus het zit in onze aard om live te gaan zodra het kan. Vanaf dat moment bouw je verder uit met de feedback en ervaring van je gebruikers.

Een Agile aanpak is er dus op gericht om gefaseerd te werken, klein te beginnen en dat uit te bouwen. Je kunt je legacy-systemen dus beter uitfaseren, waarbij je ze opdeelt in stukken (services of componenten) om die vervolgens stuk voor stuk te verbeteren, te herbouwen en te vervangen. Het voordeel is dat je in korte tijd al live kan met iets nieuws, terwijl je oude systemen gewoon actief blijven zolang dat nodig is.

Opdelen geeft inzicht

Als wij starten met een uitfaseringstraject, dan kijken we eerst naar wat er nu draait, wat daarin bedrijfskritisch is en hoe we systemen kunnen opdelen in hapklare brokken.

Is je systeemlandschap eenmaal in kaart gebracht, dan heb je goed inzicht in de software, services, en componenten die nu je verouderde systeem vormen.

Je legacy-systeem opdelen

Alle services en componenten tegelijk vervangen is complex en raden we je niet aan. Begin daarom klein. Ontwikkel  bijvoorbeeld eerst een flexibele front-end-laag voor je websites en apps. Zorg dat een goede businesslogica-laag je front-end kan bedienen met informatie uit je bestaande systemen. Op deze manier vernieuw  je aan de voorkant nieuwe software, terwijl je aan de achterkant je legacy-systemen stap voor stap  uitfaseert.

Het voordeel is dat je in korte tijd al live kan met iets nieuws, terwijl je oude systemen gewoon actief blijven zolang dat nodig is.

Doordat je je systemen hebt opgedeeld wordt de samenwerking tussen je interne teams en externe partijen eenvoudiger, aangezien niet meer iedereen aan hetzelfde systeem hoeft te ontwikkelen. Zo kun je tegelijkertijd in-house met je eigen mensen en buiten je organisatie met je technisch partner bouwen aan je nieuwe IT-omgeving. Voordeel van een gefaseerde aanpak is ook dat het uitwisselen van jouw domeinkennis met nieuwe collega’s of je leveranciers makkelijker en sneller gaat.

Futureproof: flexibel en schaalbaar met microservices

Vroeg of laat is je nieuwe systeem ook aan vernieuwing toe. Maar als je het goed inricht, bestaat die vernieuwing alleen uit onderhoud en doorontwikkeling en zul je niet weer tegen een groot legacy-systeem aanhikken. Om je meer flexibiliteit te geven in het verplaatsen, uitbreiden, schalen en onderhouden van je systemen, kun je nog een stap verder gaan.

Nieuw te ontwikkelen software verwerk je bij voorkeur in een systeemlandschap op basis van nog kleinere, losse services, de zogeheten microservices. Je maakt daarmee bijvoorbeeld aparte services voor je orderproces, betaalproces, en je logistieke proces. Deze zogeheten containertechnologie maken je microservices  afzonderlijk configureerbaar, schaalbaar en vervangbaar. Het is namelijk vele malen eenvoudiger, sneller en goedkoper om een microservice te vernieuwen dan een compleet systeem waar alle services gecombineerd zijn.

Je legacy-systeem opdelen en vervolgens verwerken tot flexibele microservices

Dagelijks doorontwikkelen

Het opknippen van je legacy-systeem tot op microservices-niveau is niet nieuw. Grote jongens als Netflix en Airbnb werken bijvoorbeeld allang zo en wij richtten het in voor onder andere Mijndomein. Als je net als hen dagelijks je digitale omgeving wilt verbeteren en vernieuwen, dan moet je het vervangen van je oude systemen tot hoge prioriteit maken in het komende jaar. Zoals gezegd hoeft dat niet ineens en ook niet maanden te duren. Begin klein: Zorg voor inzicht en ga van daaruit verder verfijnen, vervangen en verbeteren. Het uitfaseren van legacy-systemen maakt innovatie stukken eenvoudiger.