Beslist.nl

Migratie .Net applicaties naar Azure

Door René Vermijs, Azure Cloud Solution Architect bij Profit4Cloud

Beslist.nl biedt haar klanten de mogelijkheid om producten binnen een (bestaande) webshop beschikbaar/vindbaar te maken via de website www.beslist.nl. Binnen het proces van beschikbaar maken wordt vanuit beslist.nl periodiek productinformatie opgehaald (pull) bij de webshop van de klant. Deze productinformatie omvat producteigenschappen (gewicht, kleur etc.) en informatie rond het aanbod van het product (zoals voorraad, levertijd, prijs) bij deze specifieke klant. Daarnaast kan de klant op eigen initiatief (ad hoc push) informatie met betrekking tot het aanbod van een product aanbieden aan beslist.nl. Dit laatste om de informatie rond een product zo actueel mogelijk te presenteren op de website van beslist.nl.

Omdat meerdere klanten hetzelfde product kunnen aanbieden waarbij de kwaliteit (hoeveelheid/correctheid) van de aangeleverde productinformatie per aanbieder ten opzichte van elkaar kan afwijken, dient er een waarheidsvinding plaats te vinden. Deze waarheidsvinding is de verantwoordelijkheid van de processing pipelines. Daarnaast zorgen de processing pipelines voor het beschikbaar maken aan de website van de productinformatie in een beslist.nl standaardformaat.

Cloud process

Binnen een Scrum-team is een traject uitgevoerd waarbij de bestaande zelf gehoste (datacenter) processing pipelines zijn gemigreerd naar het Microsoft Azure platform. Hierbij lag de focus om puur op basis van het toepassen van PaaS diensten vanuit het Azure portfolio de gewenste functionele en kwaliteitseisen te realiseren. Serverless hosting (Azure Function App) en containerization (Azure AKS) van functionaliteiten ondersteunen de schaalbaarheidseisen.

De gewenste eigenschappen van diensten zijn uitgedrukt middels ARM-templates, de Azure Infrastructure-as-Code definitie taal. Deze templates zijn te parameteriseren zodat naast een productieomgeving met specifieke eigenschappen ook een acceptatie, ontwikkel of (regressie)test omgeving met (ten opzichte van de productieomgeving) alternatieve ‘sizing’ periodiek of op verzoek geautomatiseerd uitgerold en uiteindelijke opgeruimd kan worden. Elke omgeving is opgenomen in een eigen netwerk context. Dit zodat de omgevingen elkaar niet kunnen beïnvloeden.

Voor projectmanagement, versiebeheer, het via ‘continuous integration’ (CI) bouwen van de deeloplossingen in de cloud en het op een gecontroleerde manier uitrollen middels ‘continuous delivery’ (CD) van deze oplossingen als of binnen Azure diensten is gebruik gemaakt van Azure DevOPS. Dit zowel voor het provisionen van diensten als het uitrollen van applicaties. CI/CD is ingeregeld op basis van triggers vanuit versiebeheer en goedkeuring strategieën richting de productie omgeving. Unit testen zijn onderdeel van de CI pipelines en bepalen de release readiness van functionaliteiten.

Het uitrollen van een ontwikkelomgeving wordt ondersteund door scripting waarbij het mogelijk is om een mix-and-match te definiëren van verschillende code-branches (master, features etc.) van verschillende deeloplossingen. Voor de acceptatie en productie omgevingen zal altijd de master-branches gekozen worden.

Vinger aan de pols

Monitoring van de prestaties van de oplossing in de cloud beslaat de volgende twee categorieën:
1. Azure diensten;
2. Applicatie logica.

Bepaalde diensten worden ingekocht op basis van een vooraf geselecteerde sizing. Met Azure monitoring wordt in de gaten gehouden of de limiet van de sizing gerespecteerd wordt. Loopt men tegen de limieten aan dan heeft dit gevolgen voor de werking van de oplossing en mogelijk de kwaliteit van het resultaat.

Binnen de applicatie logica, bijvoorbeeld uitgevoerd binnen een Azure Function App of Kubernetes POD kunnen onvoorziene situaties optreden. Deze uitzonderingen en gerelateerde diagnostische meldingen worden ondergebracht bij Azure Application Insights waarna via rapportage/dashboarding inzicht verkregen kan worden in de prestaties van de oplossing en eventueel ingegrepen kan worden.

Daarnaast wordt monitoring gebruikt om continu inzage te hebben in de kosten van de cloud oplossing.