De inrichting van Azure DevOps is een essentieel proces voor organisaties die hun software- of infrastructuurontwikkeling willen optimaliseren. Azure DevOps biedt de mogelijkheid om ontwikkeling, testen, implementatie en beheer in één platform te integreren. Dit artikel beschrijft hoe u Azure DevOps kunt instellen, aandacht besteedt aan de rol van Git-repositories, het gebruik van YAML-bestanden, en de integratie met Azure-resources zoals Key Vault en Azure Data Factory. Ook worden organisatorische overwegingen belicht, zoals het kiezen van de juiste projectstructuur op basis van teamomvang en projectdoelstellingen.
Introductie
Azure DevOps is een platform dat het continu integratie- en continue levering (CI/CD)-proces faciliteert. Het is ontworpen om teams te ondersteunen bij het automatiseren van softwareontwikkeling, testen en implementatie. Het gebruik van Azure DevOps kan leiden tot snellere iteraties, betere kwaliteit en grotere samenwerking. Tijdens de inrichting van Azure DevOps is het belangrijk om rekening te houden met zowel technische aspecten zoals pipelines en opslagplaatsen, als organisatorische factoren zoals teamstructuur en procesaanpassing.
Projectstructuur en organisaties
De keuze voor de juiste projectstructuur is van belang bij de inrichting van Azure DevOps. Als een organisatie bijvoorbeeld bestaat uit meerdere onafhankelijke business units, kan het verstandig zijn om aparte Azure DevOps-organisaties aan te maken voor elk van deze units. Dit helpt bij portfolio management en maakt het eenvoudiger om toegangscontrole en rapportage toe te passen op een hoger niveau. In een andere situatie, waar meerdere teams binnen een organisatie samenwerken aan dezelfde applicaties, kan het gunstiger zijn om één Azure DevOps-project te gebruiken. Zo is alles open en is er mogelijkheid voor co-ownership en innersourcing, waarbij meerdere teams aan dezelfde code werken.
De inrichting van het project hangt dus af van de omvang van de organisatie, de aard van de projecten, en de samenwerking tussen teams. In het geval van Houthakkerij de Spaanplaat, waar vier ontwikkelteams samenwerken aan tien applicaties, is gekozen voor één Azure DevOps-project. De reden is dat de teams een vergelijkbare werkwijze volgen en de code gedeeld kan worden.
Git-repositories en branchstrategie
Git-repositories vormen een centraal element in Azure DevOps. Zij dienen als centrale opslagplaats voor broncode en ondersteunen samenwerking tussen ontwikkelaars. Het instellen van een Git-repository in Azure DevOps is een van de eerste stappen in het inrichtingsproces. Naast de opzet van de repository is het ook belangrijk om een branchstrategie te definiëren. Branches maken het mogelijk om werk in uitvoering te isoleren van voltooide werk of productiecode.
Een goed georganiseerde branchstrategie helpt bij het beheren van wijzigingen en het voorkomen van fouten. Het is aan te raden om een conventie voor branchnamen vast te leggen, zodat het voor teamleden duidelijk is welke branches welke doeleinden dienen. Bijvoorbeeld kan de hoofdbranch main worden gebruikt voor productiecode, terwijl feature/, bugfix/, of release/-branches gebruikt worden voor specifieke veranderingen. Deze strategie zorgt ervoor dat wijzigingen eerst worden getest voordat ze naar productie worden overgedragen.
CI/CD-pipelines
Een van de kernaspecten van Azure DevOps is het inrichten van CI/CD-pipelines. Deze pipelines automatiseren het proces van het bouwen, testen en implementeren van software. Het proces begint met het kiezen van een YAML-bestand dat de pipeline definieert. In Azure DevOps is het mogelijk om bestaande YAML-bestanden te gebruiken of er nieuwe te schrijven. In de praktijk wordt vaak gekozen voor het gebruik van een bestaand YAML-bestand, zoals /azure-data-pipeline/data_pipeline_ci_cd.yml.
Het inrichten van een pipeline omvat verschillende stappen, zoals het selecteren van de juiste broncodeopslagplaats en het kiezen van de juiste build-agent. Bijvoorbeeld kan een pipeline zijn ingesteld om te werken met een Ubuntu-VM, zoals ubuntu-latest. Daarnaast wordt in het YAML-bestand aangegeven welke stappen uitgevoerd moeten worden, zoals het uitvoeren van scripts voor Terraform, testen of het implementeren van de toepassing.
Het gebruik van Terraform in combinatie met Azure DevOps maakt het mogelijk om infrastructuur als code te beheren. Dit betekent dat het opzetten van Azure-resources zoals virtuele machines of key vaults geautomatiseerd kan worden. In het voorbeeld uit de brondata wordt een Terraform-pipeline gebruikt om een virtuele machine te implementeren, waarbij het wachtwoord veilig wordt opgeslagen in een Key Vault. Dit is een essentieel aspect van het beveiligen van Azure-resources.
Integratie met Azure Data Factory
Azure DevOps kan ook worden gebruikt om Azure Data Factory-projecten te beheren. Azure Data Factory is een tool voor het bouwen en beheren van dataflows en data-pipelines. Het koppelen van een Azure DevOps-project aan Azure Data Factory maakt het mogelijk om dataflows te implementeren via CI/CD. Dit vereist het instellen van een codeopslagplaats in Azure Data Factory. Bij de inrichting wordt Azure DevOps Git als opslagplaats gekozen, waarna de hoofdbranch wordt geselecteerd voor samenwerking. Het is ook mogelijk om een hoofdmap op te geven, zoals /azure-data-pipeline/factorydata.
Naast het instellen van de opslagplaats is het ook belangrijk om Azure Data Factory te koppelen aan een Key Vault. Dit is nodig om gevoelige informatie zoals verbindingsgegevens veilig te kunnen opslaan. Het koppelen gebeurt via het toegangsbeleid in de Azure Portal. Voor de Key Vault worden toegangsbeleidregels ingesteld, waarbij het toegangstoevoegingsproces wordt geautomatiseerd. Ook kan de Key Vault-service worden bijgewerkt via Azure DevOps, wat ervoor zorgt dat de verbindingen altijd up-to-date blijven.
Beveiliging en toegangscontrole
Beveiliging is een essentieel aspect bij de inrichting van Azure DevOps. Het beheer van toegangsbeleid en machtigingen is van groot belang om ervoor te zorgen dat alleen geautoriseerde personen toegang hebben tot projecten, opslagplaatsen en geheime informatie. In Azure DevOps is het mogelijk om beleid in te stellen voor toegang aanvragen, voorwaardelijke toegang en meervoudige verificatie. Dit helpt bij het voorkomen van ongeautoriseerde toegang en verhoogt de beveiliging van het project.
Het beheer van gebruikers en machtigingen gebeurt via Microsoft Entra ID. Het is mogelijk om gebruikers toe te voegen, beheerders te benoemen en machtigingen op organisatieniveau in te stellen. Ook kunnen Microsoft Entra-groepen worden gebruikt om groepsbeheer toe te passen. Bijvoorbeeld kan een groep worden ingesteld voor ontwikkelaars, met specifieke toegangsrechten tot bepaalde projecten of opslagplaatsen.
Organisatorische overwegingen en procesaanpassing
Tijdens de inrichting van Azure DevOps is het belangrijk om rekening te houden met organisatorische overwegingen. De keuze voor een Azure DevOps-organisatie of project moet worden gemaakt op basis van de behoeften van de organisatie. Bijvoorbeeld kan het verstandig zijn om een aparte organisatie aan te maken voor elk business unit, als er sprake is van scaled agile of cross-cutting rapportage.
Daarnaast is het mogelijk om het proces binnen Azure DevOps aan te passen. Dit kan worden gedaan via de Agile-hulpprogramma's en werktraceringsartefacten. Bijvoorbeeld kan een proces worden aangepast om het workflow van tickets of taken beter aan te sluiten bij de werkwijze van het team. Dit is vooral van toepassing op Azure Boards, waarin het proces kan worden aangepast of overgenomen.
Conclusie
De inrichting van Azure DevOps vereist zorgvuldige overweging van zowel technische als organisatorische aspecten. Het kiezen van de juiste projectstructuur, het instellen van Git-repositories en CI/CD-pipelines, en het beheren van beveiliging en toegangscontrole zijn allemaal essentieel voor een succesvolle implementatie. Bovendien is het belangrijk om rekening te houden met organisatorische behoeften, zoals teamstructuur, samenwerking en procesaanpassing.
Door Azure DevOps correct in te richten, kunnen organisaties profiteren van een lean en agile aanpak van software- en infrastructuurontwikkeling. Dit zorgt voor snellere iteraties, betere kwaliteit en een naadloze overgang van ontwikkeling naar operations.