De technologie stack van Debiteurenzeker.nl - Xuntos Tech Blog

In een eerder bericht op onze site is te lezen dat Xuntos samen met Incassochecker Nederland (ICNL) begonnen is met een initiatief genaamd Debiteurenzeker. Dit initiatief heeft een applicatie voortgebracht die inspeelt op de de sinds 2018 ingevoerde wet: de Wet ter voorkoming van witwassen en financieren van terrorisme (WWFT). In deze Xuntos Tech Blog duiken we in de technologie stack die deze SaaS applicatie mogelijk maakt.

Business Gears

Achtergrond

Om de stack te begrijpen is het belangrijk om te weten waar de applicatie gebruikt voor kan worden. Debiteurenzeker.nl kan door het bedrijfsleven gebruikt worden om dossiers bij te houden van personen en bedrijven waarmee zaken worden gedaan. Zodat deze getoetst kunnen worden langs wettelijke richtlijnen rondom politiek prominente personen en eigenaars van bedrijven.

Cloud

Om ervoor te zorgen dat de applicatie blijft presteren terwijl er duizenden gebruikers tegelijk mee werken is ervoor gekozen om de applicatie in zijn geheel in de cloud te draaien. Vanwege onze eerdere ervaringen met Azure hebben we weer voor Microsofts sterke platform gekozen.

Hierop draait de applicatie in een  schaalbare App Service omgeving. Op het moment dat de applicatie meer resources nodig heeft, dan wordt het automatisch door Azure opgeschaald. Als het daarna weer rustiger wordt schaalt Azure het ook meteen weer af. Dit zorgt ervoor dat de applicatie blijft performen ook al loggen de medewerkers van ruim 400 organisaties dagelijks in om hun zaken te checken en documenteren.

Efficiënt opslaan en ophalen met Cosmos

Om snel en efficiënt de applicatie data op te slaan en op te halen legt de applicatie een connectie met een Cosmos DB instantie. Microsoft's Azure Cosmos DB leent zich goed voor de hoeveelheid data die deze applicatie tegelijk moet verwerken. Naast de door gebruikers aangemaakte dossiers wordt de Cosmos DB ook gebruikt om data die geaggregeerd wordt uit externe bronnen zoals het register van de Kamer van Koophandel op te slaan voor hergebruik.

DevOps voor snel uitrollen

Natuurlijk wordt voor continuous integration gebruik gemaakt van de pipelines in Azure Devops. Zodra er iets naar de develop branch wordt gepusht in de git repo worden automatisch testen gedraaid en wordt de applicatie uitgerold naar de testomgeving. Voor het uitrollen naar productie wordt gebruik gemaakt van deployment slots in de Azure app service. Zodat de kwaliteit van de applicatie nog een laatste keer gewaarborgd kan worden voordat een swap wordt gedaan en de zojuist uitgerolde code ook live is voor de gebruikers. 

Sterk dankzij sterke code

Uiteraard heb je met bovenstaande infrastructuur nog geen een applicatie. Door de sterke code onze ontwikkelaars schrijven wordt Debiteurenzeker.nl pas echt een succes. De applicatie bestaat uit een front-end single page application, gebouwd in Vue.JS. Om de ontwikkeling van de user experience te versnellen maken we gebruik van Vuetify. De front-end communiceert via een REST API met de backend die gebouwd is in de laatste versie van .NET Core.

Clients genereren door middel van Swagger

In de backend wordt door de package Swashbuckle een Swagger document gegenereerd die we gebruiken als documentatie van de REST API. Verder gebruiken we Swagger documentatie van externe bronnen om met AutoRest automatisch consumers te genereren. 

Als laatste gebruiken we TestCafe om automatische end-to-end tests te faciliteren ten behoeve van regressie testen en andere test scenario's.

Samenvattend: Debiteurenzeker.nl is een combinatie van een .NET Core en Vue applicatie die draait in een Azure app service in samenwerking met Cosmos DB.

~ Geschreven door Victor Remmerswaal en Lorenzo Stads