Het NS Besturing 3.0 programma behelst de vervanging van het legacy systeem VKL door toekomstbestendige applicaties ten behoeve van de bijsturing van personeel, dienstregeling en materieel.
De uitdaging bij dit project
Besturing 3.0 behelst een uitgebreide en complexe omgeving waarvoor een dito complexe en flexibele ontwikkelstraat (OTAP) nodig is. Het aanmaken van de verschillende omgevingen in de ontwikkelstraat was erg tijdrovend. Ook was het instellen en synchroon houden van de configuratie van de omgevingen een secuur en foutgevoelig proces dat een zeer zorgvuldige uitvoering vereiste. Dit alles om ervoor te zorgen dat een correcte en representatieve omgeving beschikbaar is op het moment dat de omgeving wordt overgedragen van de ontwikkelteams naar de operatie.
De ontwikkel- en testomgevingen (OT) zijn in beheer bij de NS, de acceptatie- en productieomgevingen (AP) worden als managed service omgeving afgenomen bij Conclusion. In dit verband is samen gewerkt aan enerzijds automatische provisioning en anderzijds regie-op-OTAP. Doel van dit traject was het verkrijgen van één versie van de waarheid over platform en configuratie. En daarmee de snelheid van uitrol van (wijzigingen) op omgevingen versnellen en het aantal fouten en/of verstoringen reduceren. Hierin is gebruik gemaakt van verschillende technieken, zoals GitHub, Jenkins, Puppet, Oracle Weblogic, Java, Oracle RAC, Maven, Ant, en Linux.
Hoe Conclusion dit aangepakt heeft met Continuous Delivery
Bij de uitvoering van het traject is een aantal uitgangspunten van Continuous Delivery in acht genomen en gebruik gemaakt van model gebaseerde werkwijzen. De Development Engineers en de Operations Engineers werkten bij dit traject intensief met elkaar samen. Om ervoor te zorgen dat alle engineers voor de omgeving een gezamenlijk doel voor ogen hadden, was een goede definitie van de omgeving noodzakelijk. De engineers werkten bij elkaar, op dezelfde locatie aan hetzelfde platform en configuratie. Dit zorgde voor een prettige samenwerking en liet de afstemming over details van het traject soepel en snel verlopen.
De definitie van de omgeving werd volledig omgezet in een Puppet model en opgeslagen in een gedeelde GIT repository. Dankzij het Puppet model is het mogelijk om de omgeving hoog frequent op te bouwen, te wijzigen en te toetsen op juistheid. Iedere wijziging die leidt tot een niet-werkende omgeving kan binnen enkele seconden worden teruggedraaid. Dankzij het gebruik van een GIT repository zijn alle wijzigingen direct voor alle engineers beschikbaar en wijzigingen traceerbaar. Op deze wijze werkte het team van NS en Conclusion iteratief naar een goed werkend platform, volgens een moderne DevOps wijze.