DevTest och DevOps för PaaS-lösningar

Boards
Azure DevOps
Pipelines
GitHub

I PaaS (Platform as a Service) är en tjänst leverantör en plattform för klienter att utveckla, köra och hantera program utan att behöva bygga och underhålla infrastrukturen.In platform as a service (PaaS) cloud computing, a service provider delivers a platform for clients to develop, run, and manage applications without having to build and maintain infrastructure. Lösnings utveckling baserad på resurser och tjänster i Azure Platform tar bort behovet av att hantera virtuella datorer, virtuella nätverk, diskar och relaterade konfigurationer.Solution development based on Azure Platform resources and services removes the overhead of managing virtual machines, virtual networks, disks, and related configurations.

Utvecklings testning (DevTest) är en program utvecklings metod som integrerar testning tidigt i utvecklings fasen.Development testing (DevTest) is a software development approach that integrates testing early in the development phase. DevOps är en uppsättning metoder som kombinerar program utveckling och IT-åtgärder för att förkorta utvecklings cykeln och tillhandahålla kontinuerlig leverans med hög kvalitet.DevOps is a set of practices that combine software development and IT operations, to shorten the development cycle and provide continuous delivery with high quality.

Den här lösnings arkitekturen kombinerar minskad omkostnader och en DevOps-verktygskedjan för att stödja snabba DevTest iterationer och en snabb utvecklings miljö med PaaS-resurser.This solution architecture combines reduced overhead and a DevOps toolchain to support rapid DevTest iteration cycles and a fast development environment with PaaS resources.

ArkitekturArchitecture

Diagram som visar konfigurationen av DevTest och DevOps för ett PaaS-program.

  1. Utvecklare använder GitHub Codespaces förkonfigurerade utvecklings miljöer för att undvika att manuellt konfigurera utvecklings miljöer.Developers use GitHub Codespaces pre-configured development environments to avoid manually configuring development environments. Utvecklare kan använda Codespaces i webbläsaren eller med Visual Studio Code.Developers can use Codespaces in-browser or through Visual Studio Code.

  2. Käll koden finns i GitHub databaser, som kan integreras sömlöst med Azure DevOps.Source code is available in GitHub repos, which integrate seamlessly with Azure DevOps.

  3. I likhet med Azure DevOps anger GitHub-åtgärder automatiserade versioner för att utlösa vid GitHub incheckningar eller pull-begäranden.Similar to Azure DevOps, GitHub Actions sets automated builds to trigger on GitHub commits or pull requests. I den aktuella lösningen publicerar åtgärden build artefakter till ett paket käll paket för GitHub för distribution.In the current solution, the build action publishes artifacts to a GitHub Package source package for deployment.

  4. Azure-tavlor ansluter tillbaka till GitHub-databaser för att generera arbets objekt från automatiserade och manuella tester och spårar allt arbete i utvecklings cykeln.Azure Boards connects back to GitHub Repos to generate work items from automated and manual testing, and tracks all work in the development cycle.

  5. Utvecklare skapar en funktion eller åtgärdar grenar som associerar arbets objekt med utveckling av sprintar eller cykler, och spårar all kod med uppgifter och krav.Developers create feature or fix branches that associate work items with development sprints or cycles, tracking all code with tasks and requirements. Med den här metoden kan utvecklare ha en aktiv lösning för utveckling av utveckling som är avgörande för smidig program varu utveckling.With this approach, developers maintain an active development loop velocity that is critical to agile software development.

  6. Azure-pipeliner är en lösning för Azure PaaS-distributioner.Azure Pipelines is the solution for Azure PaaS deployments. Azure-pipeline hanterar kontinuerlig distribution (CD) och versions aktiviteter, som använder de paket versioner som exponeras av GitHub-åtgärder.Azure Pipelines handles continuous deployment (CD) and release tasks, which consume the package versions exposed by GitHub Actions builds. Azure-pipelines använder Azure Key Vault för att på ett säkert sätt använda hemligheter som autentiseringsuppgifter och anslutnings strängar som krävs för att kunna släppa och distribuera konfigurationer.Azure Pipelines uses Azure Key Vault to securely consume secrets like credentials and connection strings required for release and deployment configurations.

  7. Distributions uppgifter för Azure-pipeline har särskilt stöd för Azure PaaS-resurser, inklusive distribution av webb program:Azure Pipelines deployment tasks specifically support Azure PaaS resources, including web application deployments:

    1. I samband med kontinuerliga versioner från GitHub-åtgärder distribuerar en kontinuerlig version den senaste applikations versionen till en utvecklings miljö.In conjunction with the continuous builds from GitHub Actions, a continuous release deploys the latest application build to a Development environment.
    2. Pipelinen befordrar den valda versionen för testning till nästa distributions ring, test miljö.The pipeline promotes the build selected for testing up to the next deployment ring, the Test environment.
    3. När bygget har klarat alla test, höjs det och mellanlagras i nästa yttre ring efter UAT (User Accepting testing).After the build passes all tests, it's promoted and staged in the next outer ring for User Acceptance Testing (UAT).

    Alla tre DevTest-miljöerna finns under en rabatterad Azure DevTest-prenumeration.All three DevTest environments exist under a discounted-cost Azure DevTest Subscription. Azure policy kan lägga till ytterligare regler för storlek och antal app Services-eller PaaS-databaser för att begränsa kostnaderna.Azure Policy can add additional rules for the size and number of App Services or PaaS databases to limit costs.

  8. När lösningens kvalitet når ett produktions tillstånd utlöser Azure pipelines en produktions version.When solution quality reaches a Production state, Azure Pipelines triggers a Production release. Pipelinen begränsar produktions distributioner till det minsta antal som krävs.The pipeline limits Production deployments to the minimum number necessary.

    För en App Service kan en pipeline-version distribuera mål versionen till produktions resursen i app-facket för för produktion och sedan byta platser till produktion på plats.For an App Service, a Pipelines release can deploy the targeted build version to the Production resource in the Pre-Production app slot, and then swap slots to Production in place. Om något går fel under växlingen av för produktion till produktion kan App Service återställa växlingen för extra distributions säkerhet.If something goes wrong during the swap of Pre-Production to Production, App Service can roll back the swap for extra deployment safety.

I den här lösningen hanterar en enskild Azure Active Directory (Azure AD) identitet för både DevTest och produktions prenumerationer.In this solution, a single Azure Active Directory (Azure AD) manages identity for both the DevTest and Production subscriptions. Rollbaserad åtkomst kontroll i Azure (Azure RBAC) begränsar åtkomsten till skyddade resurser, vilket förhindrar otillåten eller oavsiktlig ändring av produktions resurser.Azure role-based access control (Azure RBAC) restricts access to protected resources, preventing unauthorized or inadvertent modification of Production resources. Utvecklare har inte samma åtkomst kontroll nivåer i produktionen som i deras DevTest-sand box.Developers don't have the same access control levels in Production as in their DevTest sandboxes.

Terraform etablerar och ändrar resurser för varje miljö, anpassad storlek, instans antal och andra egenskaper.Terraform provisions and modifies resources for each environment, tailoring size, instance count, and other properties. Den aktuella lösningen modellerar en miljö stack med Azure App Service, Azure cache för Redis och Azure SQL Database.The current solution models an environment stack of Azure App Service, Azure Cache for Redis, and Azure SQL Database.

Azure Monitor fungerar över prenumerationer för att övervaka alla miljöer och samla in loggar, krasch dum par rapporter och program data.Azure Monitor works across subscriptions to monitor all environments and collect logs, crash dump reports, and application data.

KomponenterComponents

  • GitHub är en kod värd plattform för versions kontroll och samarbete med andra integrerade funktioner:GitHub is a code hosting platform for version control and collaboration, with other integrated features:

    • En GitHub- databas för käll kontroll innehåller alla projektfiler och deras revisions historik.A GitHub source-control repository contains all project files and their revision history. Utvecklare kan samar beta för att bidra, diskutera och hantera kod i lagrings platsen.Developers can work together to contribute, discuss, and manage code in the repository.
    • GitHub Codespaces tillhandahåller utvecklare med förkonfigurerade utvecklings miljöer som omfattar biblioteks beroenden, användar konfiguration och tillägg.GitHub Codespaces provide developers with pre-configured development environments that cover library dependencies, user configuration, and extensions. Utvecklare kan etablera codespaces i GitHub och använda dem antingen i webbläsaren eller via Visual Studio Code.Developers can provision codespaces in GitHub, and use them either in-browser or through Visual Studio Code.
    • GitHub-åtgärder tillhandahåller en uppsättning bygg-och release-arbetsflöden, som täcker kontinuerlig integrering (CI), automatiserad testning och Azure Resource Manager (arm) mall eller container distributioner.GitHub Actions provide a suite of build and release workflows, covering continuous integration (CI), automated testing, and Azure Resource Manager (ARM) template or container deployments.
    • Med GitHub packages-paket är värd tjänsten värd för program varu paket och använder dem som beroenden i projekt.GitHub Packages package hosting service allows hosting software packages and using them as dependencies in projects.
  • Azure-kort är en tjänst för att hantera arbete för program varu projekt.Azure Boards is a service for managing work for software projects. Azure-kort ger en omfattande uppsättning funktioner, inklusive inbyggt stöd för Scrum-och kanban-metoder, anpassningsbara instrument paneler och integrerad rapportering.Azure Boards brings a rich set of capabilities including native support for Scrum and Kanban methodologies, customizable dashboards, and integrated reporting.

  • Azure-pipeliner distribuerar de virtuella dator avbildningarna.Azure Pipelines deploys the VM application images. Pipelines kan också distribuera de virtuella dator resurserna, via Azure Resource Manager arm-mallar.Pipelines can also deploy the VM resources themselves, through Azure Resource Manager (ARM) templates. Den här infrastrukturen som kod kan vara kontrollerad och KONFIGURERAD för CI/CD och se till att infrastrukturen förblir uppdaterad.This infrastructure-as-code can be source controlled and configured for CI/CD, ensuring that the infrastructure remains up to date.

  • Azure Key Vault säkert lagrar och tätt styr åtkomsten till hemligheter som API-nycklar, lösen ord och certifikat.Azure Key Vault securely stores and tightly controls access to secrets like API keys, passwords, and certificates. Mer information om Key Vault i DevOps-scenarier finns i DevSecOps i Azure och DevSecOps i GitHub.For more information about Key Vault in DevOps scenarios, see DevSecOps in Azure and DevSecOps in GitHub.

  • Azure AD Enterprise Identity Platform tillhandahåller enkel inloggning och multifaktorautentisering för att styra användarnas åtkomst till resurser.Azure AD enterprise identity platform provides single sign-on and multifactor authentication to govern user access to resources. I det aktuella scenariot fungerar Azure AD med Azure RBAC för att begränsa åtkomsten per miljö.In the current scenario, Azure AD works with Azure RBAC to restrict access per environment.

  • Terraform är ett verktyg från tredje part som etablerar och ändrar resurser per miljö.Terraform is a third-party tool that provisions and modifies resources per environment. Den aktuella lösningen etablerar en miljö stack med Azure App Service, Azure cache för Redis och Azure SQL Database.The current solution provisions an environment stack of Azure App Service, Azure Cache for Redis, and Azure SQL Database.

    Terraform har även stöd för konfiguration och distribution av plattforms oberoende infrastruktur i Azure och andra moln leverantörer.Terraform also supports cross-platform infrastructure-as-code configuration and deployment across Azure and other cloud providers. Med infrastruktur som kod kan utvecklare validera infrastruktur ändringar på samma sätt som de validerar kod ändringar.Infrastructure-as-code lets developers validate infrastructure changes the same way they validate code changes.

  • Azure App Service är en helt hanterad webb värd tjänst för att skapa webb program.Azure App Service is a fully managed web hosting service for building web apps. App Service stöder DevOps-funktioner som CD, paket hantering, mellanlagrings miljöer, anpassade domäner och TLS/SSL-certifikat.App Service supports DevOps capabilities like CD, package management, staging environments, custom domains, and TLS/SSL certificates.

  • Azure cache för Redis tillhandahåller ett InMemory-datalager baserat på program vara med öppen källkod, vilket förbättrar prestanda och skalbarhet för program som förlitar sig på Server dels data lager.Azure Cache for Redis provides an in-memory data store based on the open-source software Redis, which improves performance and scalability of applications that rely heavily on backend data stores.

  • Azure SQL Database är en fullständigt hanterad PaaS-databas motor som hanterar de flesta databas hanterings funktioner som uppgradering, uppdatering, säkerhets kopiering och övervakning, utan användar inblandning.Azure SQL Database is a fully managed PaaS database engine that handles most database management functions like upgrading, patching, backups, and monitoring, without user involvement.

  • Azure policy styr resurser för att uppfylla organisationens standarder och efterlevnad.Azure Policy governs resources to meet organizational standards and compliance. I en DevTest-roll kan Azure Policy reglera och begränsa antal och kostnader för virtuella datorer.In a DevTest role, Azure Policy can regulate and limit the number and costs of VMs. Granskning kan ge insikter och spåra användningen av virtuella DevTest-datorer.Auditing can provide insights and track the usage of the DevTest VMs.

  • Azure Monitor kan övervaka både produktions-och DevTest miljöer.Azure Monitor can monitor both Production and DevTest environments. Azure Monitor kan samla in loggdata från virtuella dator operativ system och krasch dum par och aggregera dem för visning i Azure Security Center.Azure Monitor can collect log data from VM operating systems and crash dump files, and aggregate them for viewing in Azure Security Center. Application Insights är en funktion i Azure Monitor som fungerar med App Service för att övervaka program prestanda och problem.Application Insights is a feature of Azure Monitor that works with App Service to monitor application performance and issues.

ÖvervägandenConsiderations

Att utveckla en Azure SQL Database Design som stöder webbappen korrekt är viktigt att tänka på.Developing an Azure SQL Database design that adequately supports the web app is an important consideration. Käll kontroll och versions hantering är lika viktigt för data scheman som för kod och versioner.Source control and versioning are as important for data schemas as for code and builds.

Verktyg som Entity Framework kan tillhandahålla käll kontroll för databas schema ändringar via migreringar.Tools like Entity Framework can provide source control for database schema changes via migrations. Migreringar codify ändringar i databas strukturen och ger metoder för att både gå framåt och återställa ändringar om problem uppstår.Migrations codify changes to the database structure and provide methods to both advance forward and roll back changes if issues occur.

AlternativAlternatives

  • Även om den här arkitekturen använder Azure-pipelines för distributioner kan GitHub-åtgärder också utföra PaaS-distributioner.While this architecture uses Azure Pipelines for deployments, GitHub Actions can also perform PaaS deployments.

  • Vissa integreringar som är tillgängliga i Azure-pipeliner, till exempel tjänst anslutning eller autentisering direkt till Azure-stamnätet, finns för närvarande inte i GitHub-åtgärder.Some integrations available in Azure Pipelines, such as service connection or authentication directly into the Azure backbone, don't currently exist in GitHub Actions. För dessa behov bör du överväga att använda Azure-pipeliner i stället för GitHub-åtgärder för CI-och build-aktiviteter.For these needs, consider using Azure Pipelines instead of GitHub Actions for CI and build activities.

  • Även om terraform är ett kraftfullt verktyg för miljö hantering, är en av dess huvud funktioner dess plattforms oberoende funktioner.While Terraform is a powerful environment management tool, one of its main features is its cross-platform capabilities. För program som bara finns i Azure bör du överväga att använda ARM-mallar i stället för terraform för resurs distributioner.For applications that exist solely in Azure, consider using ARM templates instead of Terraform for resource deployments. ARM-mallar har direkt Microsoft-support, har sina egna uppgifter i Azure-pipelines och kan distribuera funktioner eller egenskaper som inte är omedelbart tillgängliga i terraform.ARM templates have direct Microsoft support, have their own tasks in Azure Pipelines, and may be able to deploy features or properties that aren't immediately available in Terraform.

Nästa stegNext steps