Aanbevelingen
met Microsoft
Azure Devops.

Microsoft Azure Devops is een platform dat mogelijkheden biedt voor versiebeheer, rapportage, projectbeheer en geautomatiseerde pipelines voor het testen en releasen van nieuwe code. Dit platform ondersteunt op verschillende manieren erg fijn in onze data science projecten. Zo borgen wij er alle code met Git versiebeheer en staan de Agile scrumboards hier opgeslagen, zodat we externe stakeholders toegang kunnen geven voor inzicht in de voortgang van de projecten. Tijdens onze TechDay van afgelopen maand hebben we ingezoomd op het onderdeel waarin geautomatiseerde pipelines ingericht kunnen worden.

Deze pipelines worden ook wel CI/CD pipelines genoemd. CI staat voor Continuous Integration, wat wil zeggen dat code door de fases build – test – merge gaat. Als er in een van deze fases iets misgaat, zal de pipeline niet verder gaan, en worden de developers op de hoogte gebracht van deze fout. Als de CI fase wél succesvol verlopen is, gaat het proces door met CD: Continuous Delivery of Continuous Deployment. Deze termen worden door elkaar heen gebruikt. Opvolgend aan de eerste stap, wordt de code gereleased naar een productieomgeving. De namen zeggen het eigenlijk al: dit gaat geheel automatisch. Deze manier van releasen heeft meerdere voordelen: de structuur van de pipelines wordt eenmalig bepaald, en kan daarna eindeloos hergebruikt worden om dezelfde omgeving opnieuw uit te rollen. Daarnaast biedt het de mogelijkheid om heel snel kleine wijziging door te voeren in een productieomgeving, dus producten/modellen kunnen heel snel opgeleverd worden. Uiteraard dien je wel op de juiste manier de pipeline eenmalig ingericht te hebben. Dat doen we met zogenaamde YAML scripts.

In deze bestanden wordt beschreven uit welke stappen een pipeline moet bestaan en in welke volgorde die stappen uitgevoerd moeten worden. Om het praktisch en tastbaar te maken, heeft iedereen zijn of haar eigen recommender system van de vorige techday gebruikt om in productie te gaan brengen. In een YAML script stond dan bijvoorbeeld dat een wijziging op de master branch van de Git repository als trigger fungeert voor de pipeline. Daarna wordt er gekozen voor een specifieke Python installatie, worden alle benodigde Python packages geïnstalleerd en wordt alle code inclusief benodigdheden ingepakt in een Zip bestand. Deze stappen horen bij het CI-deel van het proces. Als dit succesvol verlopen is, gaat de pipeline verder met het CD-deel. In dit deel wordt het Zip bestand geopend en in productie gebracht naar een Azure Function App. Een Function App is een van de vele beschikbare resources in de Microsoft Azure Cloud, waarmee het mogelijk wordt om code in productie te brengen. Het mooie van Function Apps is dat je verschillende triggers kunt kiezen voor het uitvoeren van je Python code. In het geval van recommender systems willen we dat het model opnieuw getraind zal worden zodra er nieuwe data beschikbaar is. De opslag van de data vindt eveneens plaats in de cloud, waarmee dit gelijk allemaal veilig en versleuteld is.

Door het gebruik van de pipelines en de keuze om een productieomgeving in de cloud te gebruiken, zorgen we ervoor dat we heel snel kleine wijzigingen in de code tot uitvoering kunnen brengen in de productieomgeving, zonder dat we keer op keer handmatig het release-proces hoeven te herhalen.

Heb je vragen over dit onderwerp of is dit relevant voor jouw organisatie? Neem dan contact op om te sparren met een van onze data consultants.

Geschreven door

Martijn Oele

Data scientist
martijn.oele@datasciencelab.nl

Vragen over onze techday?

    *