Projecten
2023·Full-stack engineer

Upgrade achterkant van het Nalatenschap portaal

Volledig nieuwe Kotlin-backend, vervanging van het mailsysteem, migratie naar Keycloak en MariaDB.

KotlinVert.xKeycloakMariaDBDevOpsJUnit

Tegelijk met de modernisering van de voorkant pakten we ook de achterkant van het nalatenschap portaal aan. Waar de front-end profiteerde van een geleidelijke micro-frontend strategie, vroeg de back-end om een meer fundamentele ingreep. De bestaande stack — een oudere Java-backend, MySQL, een eigen mail-implementatie en handmatig beheerde gebruikersaccounts — was inmiddels meer ballast dan basis.

We hebben een volledig nieuwe Kotlin-backend gebouwd op Vert.x. Daarvoor was een goede reden: het portaal is event-driven en doet veel I/O — externe registers bevragen, mails versturen, documenten genereren, statussen synchroniseren. Vert.x past daar uitstekend op. Kotlin als taal heeft het team in staat gesteld veiligere code te schrijven met minder boilerplate dan in Java, terwijl we toch in dezelfde JVM-wereld bleven.

Het mailsysteem hebben we vervangen door een online campagne mailer. Dat lijkt een detail, maar e-mails spelen in dit portaal een grote rol: bevestigingen, herinneringen, verzoeken om aanvullende informatie. Met de nieuwe oplossing krijgen we per bericht inzicht in bezorgstatus, opens en bounces, en kunnen we templates beheren zonder een release te hoeven doen. Dat ontlast zowel de ontwikkelaars als de operationele teams.

De autorisatie is gemigreerd naar Keycloak. Hiermee verdween een grote categorie maatwerk: wachtwoordbeleid, brute-force bescherming, sessiebeheer, federatie en rolmodel zitten nu in een bewezen, gestandaardiseerde laag. Dit is precies het soort werk dat je niet zelf wil bouwen: de security-implicaties van fouten zijn groot, en het heeft niets met het kerndomein van het portaal te maken.

De databasemigratie van MySQL naar MariaDB lijkt klein, maar gaf ons de gelegenheid om jaren oude tabelstructuren en stored procedures op te schonen. We hebben transactiegrenzen helder gemaakt, indices opnieuw beoordeeld en data-integriteitscontroles toegevoegd die er voorheen ontbraken. Het resultaat: voorspelbaardere prestaties, schonere query's en minder verrassingen onder load.

Voor mij waren twee dingen leidend: dat het portaal op geen enkel moment offline mocht, en dat we het oude systeem niet langer in leven moesten houden dan strikt nodig. We hebben de migratie daarom gefaseerd uitgevoerd, met dubbele schrijfacties en gerichte schaduwlezingen, zodat we het gedrag van oud en nieuw konden vergelijken voordat we de knoop omdraaiden.

Wat overblijft is een backend die robuuster, sneller en veiliger is, en die past bij het tempo waarin de organisatie nieuwe functionaliteit wil toevoegen. Vooral de combinatie van Kotlin/Vert.x voor de logica, Keycloak voor identiteit en een externe campagne mailer voor communicatie heeft zich in de praktijk uitstekend bewezen.

Meer werk

Andere projecten