Dit jaar was de 9de editie van J-FALL in Ede, de grootste Java conferentie in Nederland.
Met 1800+ deelnemers, 64 (internationale) sprekers, 50+ stands en 50+ sessies!
Als ik het vergelijk met vorig jaar, lag dit jaar de focus meer op de nieuwe features en details van Java. We zien met de half jaarlijkse releases van de JDK, natuurlijk dat er veel functionaliteiten, in een snel tempo worden toegevoegd.
Veel nieuwe features
Tijdens J-FALL hebben ze veel nieuwe features toegelicht zoals Amber (Language features toevoegen), Loom (Virtual threads), Panama (Connectie tussen JVM en (non-Java) APIs) en Valhalla (Verrijken van objecten met value objects en user-defined primitives). Zelf ben ik erg enthousiast met de komst van het project Loom. Het introduceert virtual threads die niet verbonden zijn met OS threads om concurrency op te lossen. Meer hierover kan je hier vinden.
Dit event biedt ook een mooie kans om met verschillende bedrijven te sparren over hun applicatie architectuur en hun kijk op technologie en Java in de toekomst.
Natuurlijk heb ik ook wat leuke en interessante sessies bijgewoond, die ik graag wil toelichten. In de titel staat de spreker tussen haakjes:
Distributed tracing (Ana Maria Mihalceanu)
De komst van microservices heeft veel voordelen opgeleverd, echter brengt het ook extra complexiteit met zich mee. Een van deze zaken is bijvoorbeeld de tracing door je netwerk van services.
In afbeelding 1 is te zien welke tools en fameworks er gebruikt zijn op het gebied van tracing. Het is begonnen bij X-Trace waarna Zipkin kwam. Het populaire Spring framework maakt gebruik van dit framework. OpenTelemetry combineert het beste van OpenTracing en OpenCensus.
Sampling met behulp van OpenTelemetry
Grote softwaresystemen verwerken veel requests die idealiter worden getraceerd. Echter als je al deze tracing gaat verwerken en behandelen dan is het te veel. Een techniek die gebruikt kan worden is om deze requests te samplen om zo een algemeen beeld te krijgen van de requests.
Er werden 3 verschillende vormen van sampling beschreven:
- Bij latency sampling sample je requests die voorbij een bepaalde latency zijn.
- Status sampling is gebaseerd op status codes van je requests, denk bijvoorbeeld aan 404 of ERROR.
- Daarnaast is het mogelijk om te samplen op combinaties van policies.
Demo
In de demo werd een quarkus applicatie getoond die requests verwerkt en deze vervolgens doorstuurt naar de Jaeger server. Ook werden er verschillende implementaties getoond van de verschillende tracing policies binnen een microservice architectuur.
Link naar de code vind je hier.
Migratie van kritische systemen binnen de NS (Arjen Jansen, Marije de Heus)
Treinen zijn kritisch voor onze mobiliteit en infrastructuur. De NS beheert grote systemen die ons helpen om van A naar B te komen. Denk hierbij aan de software voor treinborden, in de trein en allerlei andere processen.
In deze sessie kregen we inzicht in hoe de NS een kritisch systeem aan het migreren is naar een nieuw IT-landschap.
In afbeelding 4 is te zien dat de applicatie gebruik maakt van de Oracle stack en de Enterprise Service Bus. Voor de NS is deze architectuur niet meer werkbaar. Ze kunnen hun deployments niet zelf doen, changes implementeren duurt uren, veel JMS endpoints, 23 EARs om te beheren, 13 database schema’s en 1 repository met 210 modules.
Volgens het team zorgt deze stack voor veel problemen waardoor doorontwikkeling niet soepel verloopt. Daarom hebben ze gekozen om over te stappen naar een microservice architectuur met PostgreSQL, Openshift, Kubernetes, Springboot, RedHat AMQ en meer.
Wat ik mooi vind is dat dit een klassiek geval is van een migratie. Men wil van een grote monoliet, gemaakt met behulp van Oracle, over naar een microservice architectuur met behulp van OpenSource frameworks.
Migratie strategieën
In de sessie zijn meerdere strategieën besproken. Om maar met iets simpels te beginnen, de big bang. Hopelijk hoef ik niemand te overtuigen dat dit geen goede oplossing is, en zeker niet voor kritische systemen. Bij de uitrol van het nieuwe systeem wil ik ook nog graag de trein kunnen nemen.
Er zijn twee opties besproken die ik wel interessant vond en waar ik dieper op in wil gaan:
Uitfaseren
De eerste optie die besproken is, is het uitfaseren van delen, en dit lijkt op het Strangler Pattern. Hierbij zouden delen van het nieuwe BAM-systeem geleidelijk worden toegevoegd en het oude systeem worden vervangen.
Echter zou dit met integriteit van data lastig worden. Dan zou het BAM geleidelijk de data persistence moeten overzetten naar de nieuwe BAM en dan zit de integriteit in beide systemen. En zoals we weten is dit heel verwarrend en kan dit voor onstabiele situaties zorgen. Daarnaast wil het team de oude code niet of nauwelijks nog aanpassen wegens de hoge complexiteit.
Shadowing
Het team heeft uiteindelijk gekozen om een nieuwe BAM naast de oude te ontwikkelen.
Ze gaan het nieuwe systeem ontwikkelen en vervolgens de data van het oude systeem ‘kopiëren’ naar het nieuwe systeem. De data die wordt uitgestuurd vanuit de oude BAM en de nieuwe BAM worden vervolgens gecontroleerd door middel van hun custom validator. Hiermee garanderen ze dat de output in ieder geval gelijk blijft.
Waar ik zelf benieuwd naar ben is hoe ze garanderen dat de input op eenzelfde manier ontvangen wordt. Dus de interfaces van de systemen zouden gelijk moeten zijn. Hierop is niet verder ingegaan.
De oplossing vind ik wel heel logisch, aangezien dit systeem zeer belangrijk is voor de NS. Men wil zeker zijn dat het nieuwe systeem op z’n minst zo goed is als het oude systeem, gegeven de input en de output.
In mijn optiek is het een ingewikkeld traject, omdat ze complexiteit weg willen halen zonder functionaliteit te veranderen. Dus ze gaan hun database en code versimpelen. Daarbij is het noodzakelijk om goede tests te ontwikkelen die het bewijs leveren van de integriteit en stabiliteit van het nieuwe systeem.
Tot slot
J-Fall was weer heel interessant dit jaar. De grote bedrijven zoals AWS, Red Hat, de overheid en ING waren aanwezig. Ook waren er veel nieuwe stands die ik zelf niet had verwacht zoals Randstad, IKEA, Postcode Loterij etc. We zien dus dat veel bedrijven interesse hebben in Java en de ontwikkeling daarin. Zelf zie ik dat veel bedrijven overgaan op microservices gemaakt met een Java framework in Java of Kotlin. Er zijn grote ambities om systemen te vernieuwen en te verbeteren. Ik denk dat dit een goede insteek is en ben blij om het te zien. Door middel van vernieuwing gaat het makkelijker worden om systemen uit te breiden en te beheren.
De sprekers waren zoals elk jaar weer top. Het is fijn om live informatie te kunnen krijgen over de laatste ontwikkelingen en waar de markt tegenaan loopt en hoe men dit oplost. Dit heeft mij in ieder geval nieuwe inzichten gegeven en een beter beeld gegeven van het Java landschap.
SynTouch de “Open Source Way”
Ook binnen SynTouch hebben we een Open Source practice, die bedrijven helpt om oplossingen te bieden met behulp van open source producten zoals bijvoorbeeld ook via Java frameworks.
Mocht je hier meer over willen weten, neem dan contact met ons op.