Road to Kanaloa part 1
GeriForce begon eind 2015 als een systeem om de planning en overdrachten makkelijker te maken maar ook om de huidige processen beter te beveiligen. Toen Allard Soeters met GeriForce begon was de beste keus om de technieken te gebruiken die hij op dat moment al kende.
De opbouw van de applicatie was erg simpel, een ASP.Net Core MVC project, een Core library en een data library. In de Core library bevond zich de business rules en in het data project de models en data connectie via Entity framework.
Het MVC project draaide op dat moment dnx core. Dnx was het beta project wat nu .net core heet. De reden om in een beta project te starten kwam omdat de release van .net core eraan zat te komen, uiteindelijk kwam deze in Juni 2016. Allard vind dat up to date te blijven in deze snel groeiende technologie wereld erg belangrijk is. Op de cutting edge zitten, zoals dat genoemd word, heeft ook nadelen en gevaren, maar dat voor een andere keer.
In de jaren dat GeriForce groeide werd duidelijk dat de huidige manier van werken niet efficient en niet gericht was op de toekomst. Het update proces van die tijd was zodra er een feature/bug release was werd deze gepusht werd naar onze source control (VSTS). Vanaf daar nam de CD tool het over en werd automatisch de nieuwe versie op een Staging omgeving gezet. Zodra daar de nieuwe functies waren getest werd de update overdag (in die tijd werd er overdag weinig van het systeem gebruik gemaakt) naar de productie omgeving gepusht, daar werd ook nog een laatste check uitgevoerd. Dit had het nadeel dat de IVR (call management proces) voor een feature aan de planning kant ook op het moment van update down zou zijn. Toen in juli 2017 Karim zich bij het team voegde werd het plan opgezet om delen van GeriForce op te splitsen, van een monolith pattern naar een microservice pattern.
De weg naar een microservice pattern kost een lange tijd en brengt problemen met zich mee. De noodzaak was er, maar om niet meteen de grootste stappen te namen hebben wij besloten om een tussen stap in te bouwen om te kijken of GeriForce wel in een microservice pattern zou passen. De grootste valkuil in onze ogen was de database. Deze heeft veel foreign keys en alle microservices hebben met elkaar te maken (zo gedacht). De keuze was gevallen om een shared database traject in te gaan. Dit zou een goede tussenweg zijn om niet volledig op het microservice principe te stappen.
Dit project, genaamd Haumea ging gepaard met het nieuwe design van gericall.nl. Het ontwerpen begon juli 2017 en het systeem werd in januari 2018 in productie gezet. Zie deze blog post voor meer informatie over project Haumea.
In juli 2018 (1 jaar na project Haumea werd bedacht) is project Kanaloa in het leven geroepen. In dit project zal GeriForce het microservices principe volledig implementeren. De belangrijkste reden hiervoor is het steeds verder groeiende systeem. GeriForce begon als een monolith met een aantal functies maar is tegenwoordig al in bijna alle processen te vinden van GeriCall. De services die wij nu hebben staan (vanuit project Haumea) zijn erg complex door de gedeelde data. Het opsplitsen van verantwoordelijkheid zorgt ervoor dat er makkelijker geupdate kan worden. In de huidige architectuur moet bij iedere database update alle projecten worden geupdate. Daarnaast is er in project Haumea veel code gekopieerd vanuit de monolith.
Tijdens project Kanaloa zal iedere microservice opnieuw worden geschreven. In part 2 zal er dieper op de architectuur worden ingegaan en welke technieken worden gebruikt.
- Part 1 – History lesson (deze)
- Part 2 – Architectuur
- Part 3 – Roadmap