TrainServiceBus (TSB) project voor NS

Klantcase Codepeople


De Nederlandse Spoorwegen heeft sinds 2015 gewerkt aan de nieuwe generatie On-Board Information Services (OBIS). De nieuwe generatie OBIS biedt reizigers een volledig geautomatiseerd reisinformatie service.

Technisch Consultant Marco Corina (Codepeople) heeft sinds de beginfase van OBIS gewerkt aan het TrainServiceBus (TSB) project. Het TSB-systeem is een koppeling tussen de hardware en/of IT van de trein en de OBIS-componenten van de NS. TSB moet zorgen voor de communicatie van en naar de trein. Marco was de 1e ontwikkelaar van het TSB-systeem en dus verantwoordelijk voor het opzetten van het hele project. Vanaf het begin is TSB modulair opgebouwd. Hierdoor had het systeem een duidelijke scheiding tussen trein-afhankelijke en trein-onafhankelijke delen. En met de rest van de OBIS-componenten werd op een trein-agnostische manier gecommuniceerd.

Communicatie tussen trein en 'wal’

TSB zorgt voor de communicatie tussen trein en 'wal’ en vice versa. Kortom, het systeem is verantwoordelijk voor het beschikbaar maken van reisinformatie aan de treinreizigers. Denk hierbij aan: buitenboordaanduiding op stations en automatische omroepen in de trein cabines (door middel van een text-to-speech softwarepakket) en het doorgeven van reisinformatie aan de boordcomputer van de machinist. Ook wordt van een trein data verzameld, zodat NS dit kan gebruiken voor analyses en het “leven” in de trein kan monitoren.

Het is nu mogelijk om nieuwe treininterfaces aan het TSB toe te voegen. Marco heeft gewerkt aan een plug-and-play oplossing. De TSB is in Python3 ontwikkeld, met uitzondering van een klein aantal performance-kritische delen die in C++ zijn ontwikkeld. De TSB draait op een CentOS 7 omgeving. Deze architectuur heeft het makkelijker gemaakt om nieuwe treinen aan het TSB te koppelen, en dus aan OBIS.

Nieuw architectuurdesign en aangepast deployment mechanisme

TSB is als “monoliet” software gestart en in 2021 naar een architectuuraanpassing gegaan. Hierdoor worden verschillende componenten op functioneel niveau in afzonderlijke microservices uitgerold. De modulaire architectuur waarmee TSB was ontwikkeld, leende zich voor de omzetting naar microservices. Op basis hiervan zijn bij de NS afzonderlijke teams gecreëerd, waarbij ieder team de verantwoordelijkheid heeft op één (en sommige gevallen meerdere) microservice(s). De microservice architectuur heeft ervoor gezorgd dat ook het deployment mechanisme aanpast werd, waardoor alleen de benodigde componenten naar een trein werden uitgerold.

Onze collega Marco heeft dus de TSB opgeleverd: vanaf initiatie- en definitiefase tot ontwerp en realisatie van het hele component!