Delen via


CI/CD-basislijnarchitectuur met Azure Pipelines

In dit artikel wordt een DevOps-werkstroom op hoog niveau beschreven voor het implementeren van toepassingswijzigingen in faserings- en productieomgevingen in Azure. De oplossing maakt gebruik van procedures voor continue integratie/continue implementatie (CI/CD) met Azure Pipelines.

Belangrijk

In dit artikel wordt een algemene CI/CD-architectuur behandeld met behulp van Azure Pipelines. Het is niet bedoeld om de specifieke kenmerken van de implementatie in verschillende omgevingen te behandelen, zoals Azure App Services, Virtual Machines en Azure Power Platform. Details van het implementatieplatform worden behandeld in afzonderlijke artikelen.

Architectuur

architectuurdiagram van een CI/CD-pijplijn met behulp van Azure Pipelines.

Download een Visio-bestand van deze architectuur.

Notitie

Hoewel dit artikel betrekking heeft op CI/CD voor wijzigingen in toepassingen, kunnen Azure Pipelines ook worden gebruikt om CI/CD-pijplijnen te bouwen voor wijzigingen in infrastructuur als code (IaC).

Gegevensstroom

De gegevens stromen als volgt door het scenario:

  1. PR-pijplijn - Een pull-aanvraag (PR) naar Azure Repos Git triggert een PR-pijplijn. Deze pijplijn voert snelle kwaliteitscontroles uit. Deze controles moeten het volgende omvatten:

    • Het bouwen van de code, waarvoor afhankelijkheden uit een afhankelijkheidsbeheersysteem moeten worden opgehaald.
    • Het gebruik van hulpprogramma's voor het analyseren van de code, zoals statische codeanalyse, linting en beveiligingsscans
    • Eenheidstests

    Als een van de controles mislukt, eindigt de pijplijnuitvoering en moet de ontwikkelaar de vereiste wijzigingen aanbrengen. Als alle tests slagen, moet de pijplijn een pull request beoordeling nodig hebben. Als de pull-aanvraagbeoordeling mislukt, eindigt het pijplijnproces en zal de ontwikkelaar de nodige wijzigingen moeten doorvoeren. Als alle controles en PR-beoordelingen zijn geslaagd, wordt de PR succesvol samengevoegd.

  2. CI-pijplijn - Een samenvoeging naar Azure Repos Git activeert een CI-pijplijn. Deze pijplijn voert dezelfde controles uit als de PR-pijplijn, met enkele belangrijke toevoegingen. De CI-pijplijn voert integratietests uit. Integratietests kunnen resource-intensief zijn, zodat het uitvoeren ervan in de CI-pijplijn de ontwikkelingssnelheid en foutdetectie in balans brengt. Het is ook belangrijk om te weten dat het doorgeven van tests in een pull-aanvraag er niet altijd voor zorgt dat ze slagen na het samenvoegen, omdat wijzigingen in de hoofdvertakking nieuwe problemen kunnen veroorzaken, waarbij de noodzaak van het testen na samenvoegen wordt benadrukt. Deze factoren zorgen ervoor dat de CI-pijplijn een betere plaats is voor integratietests dan de PULL-pijplijn. Voor deze integratietests is de implementatie van de oplossing niet vereist, omdat de buildartefacten nog niet zijn gemaakt. Als voor de integratietests geheimen zijn vereist, haalt de pijplijn deze geheimen op uit Azure Key Vault. Als een van de controles mislukt, eindigt de pijplijn en moet de ontwikkelaar de vereiste wijzigingen aanbrengen. Het resultaat van een geslaagde uitvoering van deze pijplijn is het maken en publiceren van buildartefacten.

  3. CD-pijplijntrigger: het publiceren van artefacten activeert de CD-pijplijn.

  4. CD-release naar staging: de CD-pijplijn downloadt de build-artifacten die zijn gemaakt in de CI-pijplijn en implementeert de oplossing in een testomgeving. De pijplijn voert vervolgens acceptatietests uit voor de faseringsomgeving om de implementatie te valideren. Als een acceptatietest mislukt, eindigt de pijplijn en moet de ontwikkelaar de vereiste wijzigingen aanbrengen. Als de tests slagen, kan een handmatige validatietaak worden geïmplementeerd om een persoon of groep te vereisen om de implementatie te valideren en de pijplijn te hervatten.

  5. CD-release naar productie: als de handmatige interventie wordt voortgezet of als er geen handmatige interventie is ingevoerd, wordt de oplossing door de pijplijn naar de productie gebracht. De pijplijn moet rooktesten uitvoeren in productie om te bevestigen dat de release naar verwachting werkt. Als een handmatige interventiestap resulteert in een annulering, mislukt de release of de betrouwbaarheidstests mislukken, wordt de release teruggedraaid, wordt de pijplijn beëindigd en moet de ontwikkelaar de vereiste wijzigingen aanbrengen.

  6. Bewaking : Azure Monitor verzamelt waarneembaarheidsgegevens, zoals logboeken en metrische gegevens, zodat een operator status-, prestatie- en gebruiksgegevens kan analyseren. Application Insights verzamelt alle toepassingsspecifieke bewakingsgegevens, zoals traceringen. Azure Log Analytics wordt gebruikt om al die gegevens op te slaan.

Onderdelen

  • Een Azure Repos Git-opslagplaats fungeert als een codeopslagplaats die versiebeheer en een platform voor samenwerkingsprojecten biedt.

  • Azure Pipelines biedt een manier om toepassings- en infrastructuurcode te bouwen, testen, verpakken en vrijgeven. In dit voorbeeld zijn drie afzonderlijke pijplijnen met de volgende verantwoordelijkheden:

    • PR-pijplijnen valideren code voordat een pull-aanvraag kan worden samengevoegd via linting, bouwen en eenheidstests.
    • CI-pipelines draaien nadat de code is samengevoegd. Ze voeren dezelfde validatie uit als PR-pijplijnen, maar voegen integratietesten toe en publiceren build-artefacten als alles slaagt.
    • CD-pijplijnen implementeren buildartefacten, voer acceptatietests uit en release naar productie.
  • Azure Artifact Feeds kunt u softwarepakketten beheren en delen, zoals Maven, npm en NuGet. Met artefactfeeds kunt u de levenscyclus van uw pakketten beheren, waaronder versiebeheer, promotie en buiten gebruik stellen van pakketten. Dit helpt u ervoor te zorgen dat uw team de nieuwste en veiligste versies van uw pakketten gebruikt.

  • Key Vault- biedt een manier om beveiligde gegevens voor uw oplossing te beheren, waaronder geheimen, versleutelingssleutels en certificaten. In deze architectuur wordt het gebruikt om toepassingsgeheimen op te slaan. Deze geheimen worden geopend via de pijplijn. Geheimen kunnen worden geopend door Azure Pipelines met een Key Vault-taak of door geheimen te koppelen vanuit Key Vault.

  • Monitor is een waarneembaarheidsresource waarmee metrische gegevens en logboeken, toepassingstelemetriegegevens en metrische platformgegevens voor de Azure-services worden verzameld en opgeslagen. Gebruik deze gegevens om de toepassing te bewaken, waarschuwingen, dashboards in te stellen en hoofdoorzaakanalyse van fouten uit te voeren.

  • Application Insights is een bewakingsservice die realtime inzicht biedt in de prestaties en het gebruik van uw webtoepassingen.

  • Log Analytics-werkruimte een centrale locatie biedt waar u gegevens uit meerdere bronnen kunt opslaan, opvragen en analyseren, waaronder Azure-resources, toepassingen en services.

Alternatieven

Hoewel dit artikel zich richt op Azure Pipelines, kunt u deze alternatieven overwegen:

  • Azure DevOps Server kan worden gebruikt als een lokale alternatief.

  • Jenkins- is een opensource-hulpprogramma dat wordt gebruikt voor het automatiseren van builds en implementaties.

  • GitHub Actions kunt u uw CI/CD-werkstromen rechtstreeks vanuit GitHub automatiseren.

  • GitHub-opslagplaatsen kunnen worden vervangen door de codeopslagplaats. Azure Pipelines kan naadloos worden geïntegreerd met GitHub-opslagplaatsen.

Dit artikel is gericht op algemene CI/CD-procedures met Azure Pipelines. Hier volgen enkele rekenomgevingen waarvoor u kunt overwegen om te implementeren:

  • App Service- is een HTTP-service voor het hosten van webtoepassingen, REST API's en mobiele back-ends. U kunt zich in uw favoriete taal ontwikkelen en toepassingen eenvoudig uitvoeren en schalen in zowel Windows- als Linux-omgevingen. Web Apps ondersteunt implementatieslots zoals staging en productie. U kunt een toepassing implementeren in een staging-site en deze vrijgeven aan de productiesite.

  • Virtuele Azure-machines verwerken werkbelastingen waarvoor een hoge mate van controle is vereist, of die afhankelijk zijn van onderdelen en services van het OS die niet mogelijk zijn met Web Apps.

  • Azure Power Platform is een verzameling cloudservices waarmee gebruikers toepassingen kunnen bouwen, implementeren en beheren zonder dat hiervoor infrastructuur of technische expertise nodig is.

  • Azure Functions is een serverloos rekenplatform dat u kunt gebruiken om toepassingen te bouwen. Met Functions kunt u triggers en bindingen gebruiken om services te integreren. Functies ondersteunen ook implementatieslots zoals staging en productie. U kunt een toepassing implementeren in een staging-site en deze vrijgeven aan de productiesite.

  • AKS - (Azure Kubernetes Service) is een beheerd Kubernetes-cluster in Azure. Kubernetes is een opensource-containerindelingsplatform.

  • Azure Container Apps kunt u toepassingen in containers uitvoeren op een serverloos platform.

Scenario-details

Het gebruik van bewezen CI- en CD-procedures voor het implementeren van wijzigingen in toepassingen of infrastructuur biedt verschillende voordelen, waaronder:

  • kortere releasecycli - Geautomatiseerde CI/CD-processen stellen u in staat om sneller te implementeren dan met handmatige procedures. Veel organisaties implementeren meerdere keren per dag.
  • Betere codekwaliteit : kwaliteitspoorten in CI-pijplijnen, zoals linting en eenheidstests, resulteren in code van hogere kwaliteit.
  • Verminderd risico op het vrijgeven van - De juiste CI/CD-procedures verlagen het risico op het vrijgeven van nieuwe functies aanzienlijk. De implementatie kan worden getest vóór de release.
  • Verhoogde productiviteit : met geautomatiseerde CI/CD kunnen ontwikkelaars niet meer werken aan handmatige integraties en implementaties, zodat ze zich kunnen richten op nieuwe functies.
  • Terugdraaibewerkingen inschakelen: hoewel de juiste CI/CD-procedures het aantal bugs of regressies verlagen dat wordt uitgebracht, vinden ze nog steeds plaats. CI/CD kan geautomatiseerde terugdraaiacties naar eerdere releases inschakelen.

Mogelijke gebruiksvoorbeelden

Overweeg Azure Pipelines- en CI/CD-processen voor:

  • De ontwikkelings- en implementatielevenscycli van toepassingen versnellen.
  • Kwaliteit en consistentie bouwen in een geautomatiseerd build- en releaseproces.
  • De stabiliteit en uptime van toepassingen vergroten.

Overwegingen

Met deze overwegingen worden de pijlers van het Azure Well-Architected Framework geïmplementeerd. Dit is een set richtlijnen die kunnen worden gebruikt om de kwaliteit van een workload te verbeteren. Zie Microsoft Azure Well-Architected Frameworkvoor meer informatie.

Operationele uitmuntendheid

  • Overweeg om IaC- (Infrastructure as Code) te implementeren om uw infrastructuur te definiëren en te implementeren in uw pijplijnen.

  • Overweeg om een van de tokenisatietaken te gebruiken beschikbaar in de VSTS Marketplace. In de context wordt vaak verwezen naar een proces waarbij gevoelige informatie (zoals API-sleutels, wachtwoorden of andere geheimen) wordt vervangen door tokens of tijdelijke aanduidingen tijdens de implementatie of configuratie.

  • Gebruik releasevariabelen in uw releasedefinities om configuratiewijzigingen van uw omgevingen aan te sturen. Releasevariabelen kunnen worden beperkt tot een volledige release of een bepaalde omgeving. Wanneer u variabelen gebruikt voor geheime informatie, moet u ervoor zorgen dat u het hangslotpictogram selecteert.

  • Overweeg het gebruik van zelfgehoste agents als u implementeert naar resources die zich bevinden in een beveiligd virtueel netwerk. U kunt ook zelfgehoste agents overwegen als u een grote hoeveelheid builds uitvoert. In gevallen van grote buildvolumes kunnen zelf-hostende agents worden gebruikt om builds op een kostenefficiënte manier te versnellen.

  • Overweeg het gebruik van Application Insights en andere bewakingshulpprogramma's zo vroeg mogelijk in uw release-pijplijn. Veel organisaties beginnen alleen te bewaken in hun productieomgeving. Door uw andere omgevingen te bewaken, kunt u fouten eerder in het ontwikkelproces identificeren en problemen in uw productieomgeving voorkomen.

  • Overweeg het gebruik van afzonderlijke bewakingsbronnen voor productie.

  • Overweeg het gebruik van YAML-pijplijnen in plaats van de klassieke interface. YAML-pijplijnen kunnen worden behandeld als andere code. YAML-pijplijnen kunnen bijvoorbeeld worden ingecheckt bij broncodebeheer en versiebeheer.

  • Overweeg het gebruik van YAML-sjablonen om hergebruik te bevorderen en pijplijnen te vereenvoudigen. Pr- en CI-pijplijnen zijn bijvoorbeeld vergelijkbaar. Er kan één geparameteriseerde sjabloon worden gebruikt voor beide pijplijnen.

  • Overweeg omgevingen te maken buiten fasering en productie om activiteiten te ondersteunen, zoals handmatig testen van gebruikersacceptatie, prestaties en belastingstests en terugdraaiacties.

Kostenoptimalisatie

Kostenoptimalisatie gaat over manieren om onnodige uitgaven te verminderen en operationele efficiëntie te verbeteren. Zie Overzicht van de pijler kostenoptimalisatievoor meer informatie.

Azure DevOps-kosten zijn afhankelijk van het aantal gebruikers in uw organisatie dat toegang nodig heeft, samen met andere factoren, zoals het aantal gelijktijdige build-/releases dat vereist is en het aantal testgebruikers. Zie Prijzen voor Azure DevOpsvoor meer informatie.

Deze prijscalculator biedt een schatting voor het uitvoeren van Azure DevOps met 20 gebruikers.

Azure DevOps wordt gefactureerd per gebruiker per maand. Er kunnen meer kosten in rekening worden gebracht, afhankelijk van de benodigde gelijktijdige pijplijnen, naast eventuele extra testgebruikers of basislicenties van gebruikers.

Veiligheid

  • Houd rekening met de beveiligingsvoordelen van het gebruik van door Microsoft gehoste agents bij het kiezen of u door Microsoft gehoste of zelf-hostende agents wilt gebruiken.

  • Zorg ervoor dat alle wijzigingen in omgevingen worden uitgevoerd via pijplijnen. Implementeer op rollen gebaseerd toegangsbeheer (RBAC) op basis van het principe van minimale bevoegdheden, waardoor gebruikers geen toegang hebben tot omgevingen.

  • Overweeg stappen in Azure Pipelines te integreren om afhankelijkheden bij te houden, licenties te beheren, beveiligingsproblemen te scannen en afhankelijkheden op de hoogte te houden.

Volgende stappen

Bekijk de volgende bronnen voor meer informatie over CI/CD en Azure DevOps: