DevTest a DevOps pro řešení mikroslužeb

Boards
Container Registry
Kubernetes Service
Pipelines
GitHub

Architektury mikroslužeb navrhují aplikace jako kolekce volně vázaných služeb.Microservice architectures design applications as collections of loosely coupled services. V architektuře mikroslužeb jsou služby jemně odstupňované a protokoly jsou odlehčené.In a microservices architecture, services are fine-grained and protocols are lightweight. Mikroslužby nabízejí výhody, jako je jasné oddělení potíží a devazby závislostí.Microservices offer benefits such as clear separation of concerns and decoupling of dependencies.

Mikroslužby zavádějí do vývojového cyklu složitosti v porovnání s tradičními monolitické aplikacemi.Microservices introduce complexities in the development cycle compared to traditional monolithic applications. K vývoji obvykle dochází v místní nebo virtuální replice zásobníku aplikace, který konfiguruje a spouští výpočetní součásti a komponenty úložiště místně v izolaci.Traditionally, development occurs in a local or virtual replica of the application stack, which configures and runs compute and storage components locally in isolation. V modelu mikroslužeb potřebují vývojáři testovat své služby proti stávající architektuře, průběžně zachytit problémy s integrací při sestavování a nasazování a udržovat integrovaná sestavení čistě v průběhu životního cyklu aplikace.In a microservice model, developers need to test their services against the existing architecture, catch integration issues early to save on build and deployment time, and keep integrated builds clean over the lifecycle of the application.

Vývojové testování (DevTest) je přístup k vývoji softwaru, který integruje testování na začátku ve fázi vývoje a urychluje vývoj.Development testing (DevTest) is a software development approach that integrates testing early in the development phase to speed development. DevOps je sada postupů, které kombinují vývoj softwaru a IT operace za účelem zkrácení vývojového cyklu a zajištění vysoké kvality průběžného doručování.DevOps is a set of practices that combine software development and IT operations to shorten the development cycle and provide high-quality continuous delivery. Kubernetes je open source systém pro orchestraci kontejnerů pro automatizaci nasazení aplikací.Kubernetes is an open-source container orchestration system for automating application deployments.

Tato architektura řešení modeluje prostředí pro vývoj a nasazení, které používá DevOps v DevTest pro rychlé iterativní vývoj aplikace mikroslužeb Azure Kubernetes Service (AKS) .This solution architecture models a development and deployment environment that uses DevOps in DevTest for rapid iterative development of an Azure Kubernetes Service (AKS) microservice application.

ArchitekturaArchitecture

Diagram znázorňující konfiguraci DevTest a DevOps pro aplikaci mikroslužeb.

  1. Vývojáři používají místní proces s Kubernetes ke spouštění místních verzí mikroslužeb v rámci kontextu vývojového clusteru Kubernetes.Developers use Local Process with Kubernetes to run their local microservice versions within the context of the development Kubernetes cluster. Připojení ke clusteru během ladění služby umožňuje rychlé testování a vývoj v plném kontextu aplikace.Connecting to the cluster while debugging the service allows quick testing and development in the full application context.

  2. Každý základ mikroslužeb používá samostatné úložiště kódu GitHub pro správu zdrojového kódu.Each microservice codebase uses a separate GitHub code repository for source control.

  3. Akce GitHubu sestaví image kontejnerů mikroslužeb a najdou je do kontejnerů Azure Container Registry.GitHub Actions builds the microservice container images and pushes them to Azure Container Registries. Akce GitHubu také aktualizují nejnovější značku úložišť pro průběžnou integraci (CI) nebo úložiště značek pro vydanou verzi.GitHub Actions also updates the latest tag of repositories for continuous integration (CI), or tags repositories for release.

  4. Automatizované testování akcí GitHubu generuje pracovní položky pro Azure boards, které umožní spravovat všechny pracovní položky na jednom místě.GitHub Actions automated testing generates work items for Azure Boards, making all work items manageable in one place.

  5. Rozšíření Visual Studio Code podporují Azure boards a integraci GitHubu.Visual Studio Code extensions support Azure Boards and GitHub integration. Přidružení pracovních položek Azure Boards s úložištěm GitHub spojuje požadavky na kód a řídí smyčku vývoje předá.Associating Azure Boards work items with GitHub repos ties requirements to code, driving the development loop forward.

  6. Potvrzení Sloučená do aktivační větve triggeru akce GitHubu sestavení a Docker push do registrů kontejnerů DevTest.Commits merged into the integration branch trigger GitHub Actions builds and Docker pushes to the DevTest container registries. Každá mikroslužba má své vlastní úložiště v registrech kontejnerů, které je paralelní v úložištích GitHubu.Each microservice has its own repository in Container Registries, paralleling the GitHub repositories. Sestavení CI jsou obvykle označena jako Poslední a představují nejnovější úspěšná sestavení mikroslužeb.CI builds are usually tagged with latest, representing the most recent successful microservice builds.

  7. Azure Pipelines spustí příkaz Kubernetes apply , který aktivuje nasazení aktualizovaných imagí Container Registry do clusterů Kubernetes DevTest.Azure Pipelines runs the Kubernetes apply command to trigger deployment of the updated Container Registry images to the DevTest Kubernetes clusters. Azure dokáže ověřit AKS pro spouštění bezobslužných Container Registry přijetí změn, což zjednodušuje proces průběžného nasazování (CD).Azure can authenticate AKS to run unattended Container Registry pulls, simplifying the continuous deployment (CD) process.

    Azure Pipelines používá Azure Key Vault k bezpečnému využívání tajných kódů, jako jsou přihlašovací údaje a připojovací řetězce, které jsou vyžadovány pro nasazení a vydání.Azure Pipelines uses Azure Key Vault to securely consume secrets like credentials and connection strings required for release and deployment configurations.

  8. Pokud je verze aplikace připravená na testování kvality (QA), Azure Pipelines spustí vydání služby QA.When a version of the application is ready for quality assurance (QA) testing, Azure Pipelines triggers a QA release. Kanál označí všechny příslušné image s další přírůstkovou verzí, aktualizuje manifest Kubernetes tak, aby odrážel značky obrázku, a spustí apply příkaz.The pipeline tags all appropriate images with the next incremental version, updates the Kubernetes manifest to reflect the image tags, and runs the apply command. V tomto příkladu se může stát, že vývojář bude při izolaci služby na izolaci přesunout do nasazení pouze sestavení integrovaná přes CI/CD.In this example, while a developer may be iterating on a service in isolation, only builds integrated via CI/CD are moved over to deployment.

  9. Po otestování schválené verze služby pro nasazení akce GitHubu propaguje vydání z DevTest Container Registry do produkčního Container Registry.After testing has approved a version of the service for deployment, GitHub Actions promotes a release from the DevTest Container Registry to a Production Container Registry. Akce GitHubu označí obrázky odpovídající verzí a vloží je do produkčního Container Registry podle osvědčených postupů registru kontejneru.GitHub Actions tags the images with the appropriate version and pushes them into the Production Container Registry, following container registry best practices.

  10. Azure Pipelines vytvoří vydání verze do produkčního prostředí.Azure Pipelines creates a release to Production. Kanál ukládá brány schválení a podmínky předběžného a následného zpracování, aby se chránilo provozní prostředí před neúmyslným nebo nesprávným nasazením.The pipeline imposes approval gates and pre-stage and post-stage conditions to protect the Production environment from inadvertent or incorrect deployment.

Aplikace používá Azure Cosmos DB pro svou globálně distribuovanou databázovou vrstvu.The application uses Azure Cosmos DB for its globally distributed database tier.

Všechny služby a prostředí hlásí metriky do Azure monitor.All services and environments report metrics to Azure Monitor.

V tomto řešení spravuje jedna Azure Active Directory (Azure AD) identitu pro DevTest i produkční předplatná.In this solution, a single Azure Active Directory (Azure AD) manages identity for both the DevTest and Production subscriptions. Řízení přístupu na základě role v Azure (Azure RBAC) omezuje přístup k chráněným prostředkům a zabraňuje neoprávněným nebo neúmyslným úpravám produkčních prostředků.Azure role-based access control (Azure RBAC) restricts access to protected resources, preventing unauthorized or inadvertent modification of Production resources. Vývojáři nemají stejné úrovně řízení přístupu v produkčním prostředí, jako ve svých DevTestch izolovaných prostorech.Developers don't have the same access control levels in Production as in their DevTest sandboxes.

KomponentyComponents

  • Azure DevTest Labs poskytuje Labs, které mají všechny potřebné nástroje a software pro vytváření prostředí.Azure DevTest Labs provides labs that have all the necessary tools and software to create environments. Vývojáři můžou efektivně spravovat prostředky bez čekání na schválení.Developers can efficiently self-manage resources without waiting for approvals. Pomocí DevTest Labs můžou týmy řídit náklady a regulovat prostředky na testovací prostředí. díky udělení oprávnění a flexibility vývojářům provozují své izolované prostory v rámci omezení nákladů.With DevTest Labs, teams can control costs and regulate resources per lab, granting developers permission and flexibility to operate their sandboxes within cost constraints.

  • GitHub je platforma pro hostování kódu pro správu verzí a spolupráci.GitHub is a code hosting platform for version control and collaboration. Úložiště správy zdrojového kódu GitHub obsahuje všechny soubory projektu a jejich historii revizí.A GitHub source-control repository contains all project files and their revision history. Vývojáři můžou společně spolupracovat, diskutovat a spravovat kód v úložišti.Developers can work together to contribute, discuss, and manage code in the repository.

  • Akce GitHubu poskytují sadu pracovních postupů pro sestavení a vydání, které pokrývají CI, automatizované testování a nasazení kontejnerů.GitHub Actions provides a suite of build and release workflows, covering CI, automated testing, and container deployments.

  • Azure boards je služba pro správu práce pro softwarové projekty.Azure Boards is a service for managing work for software projects. Azure Boards přináší bohatou sadu funkcí, včetně nativní podpory pro Scrumí a metodologie kanbanu, přizpůsobitelných řídicích panelů a integrovaných sestav.Azure Boards brings a rich set of capabilities including native support for Scrum and Kanban methodologies, customizable dashboards, and integrated reporting.

  • Azure Pipelines je plně funkční služba CI/CD, která může automaticky nasazovat aktualizované image Container Registry do Kubernetes clusterů.Azure Pipelines is a fully featured CI/CD service that can automatically deploy updated Container Registry images to Kubernetes clusters.

  • Azure Key Vault bezpečně ukládá a přísně ovládá přístup k tajným klíčům, jako jsou klíče rozhraní API, hesla a certifikáty.Azure Key Vault securely stores and tightly controls access to secrets like API keys, passwords, and certificates. Další informace o Key Vault v DevOps scénářích najdete v tématu DevSecOps v Azure a DevSecOps v GitHubu.For more information about Key Vault in DevOps scenarios, see DevSecOps in Azure and DevSecOps in GitHub.

  • Azure Container Registry podporuje vytváření, ukládání a správu imagí kontejnerů a artefaktů v privátních registrech pro všechny typy kontejnerových nasazení.Azure Container Registry supports building, storing, and managing container images and artifacts in private registries for all types of container deployments.

  • Služba Azure Kubernetes usnadňuje nasazení spravovaných clusterů Kubernetes tím, že přenese z provozu velkou složitost, zodpovědnost a provozní režii do Azure.Azure Kubernetes Service makes it simple to deploy managed Kubernetes clusters by offloading much of the complexity, responsibility, and operational overhead to Azure.

  • Platforma pro podnikové identity Azure Active Directory (Azure AD) poskytuje jednotné přihlašování a vícefaktorové ověřování, aby bylo možné řídit přístup uživatelů.Azure Active Directory (Azure AD) enterprise identity platform provides single sign-on and multifactor authentication to govern user access. Jedna služba Azure AD může spravovat identitu pro všechna prostředí v rámci předplatných.A single Azure AD can manage identity for all environments across subscriptions. Řízení přístupu na základě role v Azure (Azure RBAC) omezuje přístup k chráněným prostředkům a zabraňuje neoprávněným nebo neúmyslným úpravám produkčních prostředků.Azure role-based access control (Azure RBAC) restricts access to protected resources, preventing unauthorized or inadvertent modification of production resources.

  • Azure Cosmos DB je plně spravovaná, široce distribuovaná databáze jako služba, která podporuje vysokou dostupnost, aplikace s více oblastmi a rozhraní API SQL i NoSQL.Azure Cosmos DB is a fully managed, widely distributed database-as-a-service that supports high availability, multi-region applications, and both SQL and NoSQL APIs. Azure Cosmos DB zahrnuje DevTest funkce, jako je místní emulátor Cosmos DB, který se integruje s Azure DevOps, a nižší náklady na správu nákladů v DevTestch izolovaných prostorech.Azure Cosmos DB includes DevTest features like a local Cosmos DB emulator that integrates with Azure DevOps, and low-cost tiers for managing costs in DevTest sandboxes.

  • Azure monitor můžou monitorovat produkční i DevTest prostředí.Azure Monitor can monitor both Production and DevTest environments. Azure Monitor shromažďuje data protokolu z operačních systémů virtuálních počítačů a souborů se stavem systému a agreguje je pro zobrazení v Azure Security Center.Azure Monitor collects log data from VM operating systems and crash dump files, and aggregates them for viewing in Azure Security Center.

AlternativyAlternatives

  • Azure Repos je alternativou k GitHubu pro hostování úložiště Git.Azure Repos is an alternative to GitHub for Git repository hosting. Díky Azure Repos, Azure Boards a Azure Pipelines se všechna Azure DevOps Services používají stejný portál a uživatelské rozhraní a konsolidují vývojáři služeb potřebují aktivity DevOps.With Azure Repos, Azure Boards, and Azure Pipelines, all Azure DevOps Services use the same portal and user interface, consolidating the services developers need for DevOps activities.

  • Některé integrace dostupné v Azure Pipelines, jako je například připojení služby nebo ověřování přímo v páteřní síti Azure, v současnosti neexistují v akcích GitHubu.Some integrations available in Azure Pipelines, such as service connection or authentication directly into the Azure backbone, don't currently exist in GitHub Actions. Pro tyto potřeby zvažte použití Azure Pipelines namísto akcí GitHubu pro aktivity CI a Build.For these needs, consider using Azure Pipelines instead of GitHub Actions for CI and build activities.

  • V široce distribuovaném systému jsou k dispozici výhody pro oddělení mikroslužeb do jednotlivých úložišť.In a widely distributed system, there are benefits to separating microservices into individual repositories. Oddělení vlastnictví a oprávnění je jednodušší a projekty v různých jazycích je snazší spravovat než pomocí jediného úložiště.Separation of ownership and permission is simpler, and projects in different languages are easier to maintain than with a single repository. Nicméně v řešeních s menším počtem mikroslužeb ve stejném jazyce nebo modulu runtime může být snazší údržba jednoho úložiště Git pro daný projekt.However, in solutions with fewer microservices all in the same language or runtime, maintaining a single Git repository for the project may be easier.

Další krokyNext steps