Alle IT-kennis onder één wereldwijd dak
Werken bij de beste IT dienstverlener van Nederland?
Resultaat door passie voor IT
Start trefwoorden te typen om de site te doorzoeken. Druk enter om te verzenden.
Generative AI
Cloud
Testing
Artificial intelligence
Security
October 23, 2020
De voordelen van het bouwen van een Devops cultuur zijn duidelijk. DevOps praktiseert het integreren van teams die eerst in silo’s werkten binnen de software ontwikkel life cycle, van Dev naar Acceptatie naar Ops. Dit resulteert in zowel snellere innovatie als verbeterde product kwaliteit. De voordelen zijn dermate overtuigend dat bijna alle bedrijven die software bouwen bewegen naar een sterke DevOps cultuur en een volwassen tool chain creeren om dit mogelijk te maken.
Deze blog beschrijft hoe het Snowflake Cloud Data Platform applicatie ontwikkelaars in staat stelt om hun DevOps-processen te simplificeren. Deze eerste blog is onderdeel van een serie van drie blogs waar ik: DevOps, Technische implementatie van Continuous Integration / Continuous deployment (CI/CD) en Testen met Snowflake in detail zal bespreken.
In deze eerste blog, bespreek ik zes onderwerpen die gerelateerd zijn aan de essentiële bouwblokken voor het implementeren van CI/CD:
DevOps is een cross-functionele systeemontwikkelingscultuur die tot doel heeft systeemontwikkeling (Dev) en de operatie van dat systeem (Ops) te verenigen.
DevOps is een van de belangrijkste pilaren die agile software delivery mogelijk maken met de volgende bedrijfsmatige resultaten:
Hoewel DevOps al lang een no-brainer is voor reguliere software ontwikkeling, blijft de wereld van databases wat achter. Graag geef ik een doorkijk waarom dat is.
Database DevOps (in het bijzonder voor data warehouses) is gecompliceerd en heeft een aantal unieke uitdagingen:
Database DevOps vereist dat alle database objecten in de vorm van scripts opgeslagen worden in source control en het automatiseren van hun uitrol. Er zijn twee benaderingen voor database schema change management, te weten: declaratieve/status gebaseerd en imperatief/migratie gebaseerd. Hier volgt een korte uitleg van deze twee methodes:
In de onderstaande illustratie is dit nogmaals weergeven:
Het Snowflake Cloud Data Platform is ontworpen om organisaties in staat te stellen om data-intensieve applicaties zonder limitaties op performance , gelijktijdigheid of schaal te bouwen. Vanwege zijn multicluster, shared data architectuur, schaalt het horizontaal en verticaal naar gebruik, waardoor het snelle response tijden levert, ongeacht de load. Hier volgen enkele manieren waarop Snowflake de aanpassing naar DevOps-processen versimpelt:
Hoewel er uiteraard tooling beschikbaar is voor database changemanagement, zijn er weinig goede en werkbare tools beschikbaar voor de imperatieve benadering vergeleken met de declaratieve benadering.
De bovenstaande tabel geeft een doorkijk in het spectrum van tools. In mijn beoordeling van bovenstaande tools op volwassenheid en gebruiksgemak, vind ik Snowchange een zeer bruikbare tool omdat het flexibel en hierdoor altijd is aan te passen op de specifieke wensen van de organisatie.
Snowchange(externe link) is een python-gebaseerde open-source tool en is beschikbaar onder een Apache License (version 2.0). Het beheert alle objecten van Snowflake. Wanneer Snowchange gecombineerd wordt met version control en een CI/CD tool, dan zijn we in staat database veranderingen te akkorderen en uit te rollen via een pipleine. Uiteraard blijft het van belang dat we hierbij gebruik maken van moderne software delivery practices. Als zodanig speelt Snowchange een kritische rol in het in staat stellen van Database (of Data) DevOps.
CI/CD is de backbone om DevOps mogelijk te maken. Het overbrugt het gat tussen ontwikkeling en de operatie door de automatisering van de realisatie, het packagen en het testen binnen de software ontwikkeling. Hieronder is een voorbeeld van een model dat de verschillende CI/CD pipeline-stadia laat zien.
Dit voorbeeld van een CI/CD pipeline bestaat uit het CI deel (de bouw pipeline) en het CD deel (de uitrol pipeline), welke de volgende stappen bevatten:
CI Pipeline
CD Pipeline
In iedere fase van de CI/CD pipeline zijn de continue monitoring en feedback van de monitoring geintegreerd. Ieder probleem dat men tegenkomt in een van de fasen, wordt automatisch gerapporteert (met, bijvoorbeeld ALM Octane of Jira) en de CI/CD workflow wordt gestopt om zo de correctie uit te voeren en snel door te kunnen in het proces. Het CI/CD pipeline-ontwerp is gebaseerd op de best practises die door Sogeti zijn opgenomen. Voor een dieper begrip van het implementeren van Kwaliteit voor DevOps, verwijs ik naar ons boek ‘Quality for DevOps Teams‘.
Voor de implementatie van CI/CD is Azure DevOps een perfecte plaats om als Code Repository te dienen, om de CI/CD pipelines te bouwen, voor test management en tevens het inzicht te geven in het proces van uitrol via een dashboard. Door deze samenhang van functionalteit kies ik graag voor Azure DevOps. De componenten van Azure DevOps die ik in mij werk gebruik licht ik hieronder toe:
Azure Repos is een set van version control tools die ik gebruik om code te beheren. Het is hierin essentieel om een ‘release branching strategie’ te kiezen en te maken. Ik gebruik releaseflow, het is een trunk-based branching and merging strategie die Microsoft ook voor de Visual Studio producten gebruikt en inmiddels ook een industrie standaard is.
Azure Pipeline is een cloud dienst die continuous integration (CI) and continuous delivery (CD) combineerd en consistente test and bouw code aflevert aan een doel. Ik voer hierin bijvoorbeeld de release pipeline uit via een op YAML gebaseerde pipeline.
Azure Test suite bevat tools voor zowel verkennende en handmatige tests maar juist ook continue geautomatiseerde tests zijn hierin zeer goed te doen.
Azure DevOps dashboards zijn aanpasbare interactieve dashboards die real-time informatie leveren. Ik gebruik deze dashboards om de status van bouw, uitrol en vrijgave weer te geven aan mijn stakeholders.
In mijn volgende blog ga ik dieper in op de technische implementatie van CI/CD met Snowflake waarbij ik gebruik maak van Azure DevOps en Snowchange. Ik zal je hierbij door iedere configuratiestap begeleiden om Snowchange en Azure DevOps in te zetten in jouw situatie. Ondertussen benieuwd naar meer informatie? Neem gerust contact met mij op of bekijk onze Data & Business Analytics services.