Mikro hizmet için DevTest ve DevOps çözümleri

Boards
Container Registry
Kubernetes Hizmeti
Pipelines
GitHub

Mikro hizmet mimarileri, gevşek olarak bağlanmış hizmetlerin koleksiyonları olarak tasarım uygulamaları.Microservice architectures design applications as collections of loosely coupled services. Mikro hizmetler mimarisinde, hizmetler ayrıntılı ve protokoller hafif.In a microservices architecture, services are fine-grained and protocols are lightweight. Mikro hizmetler, kaygıların ve bağımlılıkların ayrılmasıyla ilgili avantajlar sağlar.Microservices offer benefits such as clear separation of concerns and decoupling of dependencies.

Mikro hizmetler, geleneksel tek parçalı uygulamalar ile karşılaştırıldığında geliştirme döngüsündeki karmaşıklıkları ortaya çıkarabilir.Microservices introduce complexities in the development cycle compared to traditional monolithic applications. Geleneksel olarak, geliştirme, işlem ve depolama bileşenlerini yalıtılmış olarak yapılandıran ve çalıştıran uygulama yığınının yerel veya sanal çoğaltmasında oluşur.Traditionally, development occurs in a local or virtual replica of the application stack, which configures and runs compute and storage components locally in isolation. Mikro hizmet modelinde, geliştiricilerin hizmetlerini var olan mimariye karşı test etmeniz, derleme ve dağıtım zamanına kaydetme sırasında tümleştirme sorunlarını yakalayabilmeleri ve tümleşik yapıların uygulamanın yaşam döngüsü üzerinde temiz tutulması gerekir.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.

Geliştirme testi (DevTest) , geliştirmeyi hızlandırmak için geliştirme aşamasının başlarında testi tümleştiren bir yazılım geliştirme yaklaşımına sahiptir.Development testing (DevTest) is a software development approach that integrates testing early in the development phase to speed development. DevOps , geliştirme döngüsünü kısaltmak ve yüksek kaliteli sürekli teslim sağlamak için yazılım GELIŞTIRME ve BT işlemlerini birleştiren bir uygulamalar kümesidir.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 , uygulama dağıtımlarını otomatikleştirmek için açık kaynaklı bir kapsayıcı düzenleme sistemidir.Kubernetes is an open-source container orchestration system for automating application deployments.

Bu çözüm mimarisi, bir Azure Kubernetes hizmeti (AKS) mikro hizmet uygulamasının hızlı yinelemeli geliştirilmesi Için DevTest Içinde DevOps kullanan bir geliştirme ve dağıtım ortamını modeller.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.

MimariArchitecture

Mikro hizmet uygulaması için DevTest ve DevOps yapılandırmasını gösteren diyagram.

  1. Geliştiriciler, yerel mikro hizmet sürümlerini geliştirme Kubernetes kümesi bağlamında çalıştırmak için Kubernetes Ile yerel işlem kullanır.Developers use Local Process with Kubernetes to run their local microservice versions within the context of the development Kubernetes cluster. Hizmetin hata ayıklaması sırasında kümeye bağlanma, tam uygulama bağlamında hızlı test ve geliştirmeye izin verir.Connecting to the cluster while debugging the service allows quick testing and development in the full application context.

  2. Her mikro hizmet kod temeli, kaynak denetimi için ayrı bir GitHub kod deposu kullanır.Each microservice codebase uses a separate GitHub code repository for source control.

  3. GitHub eylemleri , mikro hizmet kapsayıcı görüntülerini oluşturur ve bunları Azure ContainerRegistry 'ye gönderir.GitHub Actions builds the microservice container images and pushes them to Azure Container Registries. GitHub eylemleri Ayrıca sürekli tümleştirme (CI) veya yayın için etiket depoları için en son depolar etiketini güncelleştirir.GitHub Actions also updates the latest tag of repositories for continuous integration (CI), or tags repositories for release.

  4. GitHub eylemleri otomatikleştirilmiş test, Azure boardsiçin iş öğeleri oluşturur ve tüm iş öğelerini tek bir yerde yönetilebilir hale getirir.GitHub Actions automated testing generates work items for Azure Boards, making all work items manageable in one place.

  5. Visual Studio Code uzantıları Azure Boards ve GitHub tümleştirmesini destekler.Visual Studio Code extensions support Azure Boards and GitHub integration. Azure Boards iş öğelerinin GitHub depolarıyla ilişkilendirilmesi, geliştirme döngüsünü ileri doğru bir şekilde sunarak koda yönelik gereksinimlere yol açar.Associating Azure Boards work items with GitHub repos ties requirements to code, driving the development loop forward.

  6. Tümleştirme dalında birleştirilmiş işlemeler, DevTest kapsayıcı kayıt defterlerine GitHub eylemleri derlemeleri ve Docker gönderimleri tetikler.Commits merged into the integration branch trigger GitHub Actions builds and Docker pushes to the DevTest container registries. Her mikro hizmetin kapsayıcı kayıt defterlerinde kendi deposu vardır ve GitHub depoları paraleldir.Each microservice has its own repository in Container Registries, paralleling the GitHub repositories. CI derlemeleri, genellikle en son başarılı mikro hizmet derlemelerini temsil eden en son ile etiketlenebilir.CI builds are usually tagged with latest, representing the most recent successful microservice builds.

  7. Azure Pipelines , apply güncelleştirilmiş Container Registry görüntülerinin DevTest Kubernetes kümelerine dağıtımını tetiklemek Için Kubernetes komutunu çalıştırır.Azure Pipelines runs the Kubernetes apply command to trigger deployment of the updated Container Registry images to the DevTest Kubernetes clusters. Azure, sürekli dağıtım (CD) işlemini basitleştirecek katılımsız Container Registry çekmeleri çalıştırmak için AKS kimlik doğrulamasını yapabilir.Azure can authenticate AKS to run unattended Container Registry pulls, simplifying the continuous deployment (CD) process.

    Azure Pipelines, yayın ve dağıtım yapılandırması için gereken kimlik bilgileri ve bağlantı dizeleri gibi gizli dizileri kullanmak için Azure Key Vault kullanır.Azure Pipelines uses Azure Key Vault to securely consume secrets like credentials and connection strings required for release and deployment configurations.

  8. Uygulamanın bir sürümü kalite güvencesi (QA) testi için hazırlandıktan sonra, Azure Pipelines bir QA sürümü tetikler.When a version of the application is ready for quality assurance (QA) testing, Azure Pipelines triggers a QA release. İşlem hattı, sonraki artımlı sürümle ilgili tüm görüntüleri Etiketler, Kubernetes bildirimini resim etiketlerini yansıtacak şekilde güncelleştirir ve apply komutunu çalıştırır.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. Bu örnekte, bir geliştirici bir hizmette yalıtımda yineleme yaparken, yalnızca CI/CD aracılığıyla tümleşik olan derlemeler dağıtıma taşınır.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. Test bir hizmetin dağıtım için bir sürümünü onayladıktan sonra, GitHub eylemleri DevTest Container Registry bir üretim Container Registry bir yayını yükseltir.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. GitHub eylemleri, uygun sürüme sahip görüntüleri Etiketler ve bunları üretim Container Registry, kapsayıcı kayıt defteri en iyi yöntemleriniizleyerek gönderir.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 üretime bir yayın oluşturur.Azure Pipelines creates a release to Production. İşlem hattı, üretim ortamının yanlışlıkla veya yanlış dağıtımdan korunması için onay kapıları ve ön aşama ve son aşama koşullarını uygular.The pipeline imposes approval gates and pre-stage and post-stage conditions to protect the Production environment from inadvertent or incorrect deployment.

Uygulama, genel olarak dağıtılmış veritabanı katmanı için Azure Cosmos DB kullanır.The application uses Azure Cosmos DB for its globally distributed database tier.

Tüm hizmetler ve ortamlar ölçümleri Azure izleyici'ye bildirir.All services and environments report metrics to Azure Monitor.

Bu çözümde, tek bir Azure Active Directory (Azure AD) hem DevTest hem de üretim aboneliklerinin kimliğini yönetir.In this solution, a single Azure Active Directory (Azure AD) manages identity for both the DevTest and Production subscriptions. Azure rol tabanlı erişim denetimi (Azure RBAC) korunan kaynaklarla erişimi kısıtlayarak, üretim kaynaklarının yetkisiz veya yanlışlıkla değiştirilmesini önler.Azure role-based access control (Azure RBAC) restricts access to protected resources, preventing unauthorized or inadvertent modification of Production resources. Geliştiriciler, DevTest sanal ortamlarında üretimde olduğu gibi aynı erişim denetimi düzeylerine sahip değildir.Developers don't have the same access control levels in Production as in their DevTest sandboxes.

BileşenlerComponents

  • Azure DevTest Labs , ortamları oluşturmak için gerekli tüm araçlara ve yazılıma sahip laboratuarlar sağlar.Azure DevTest Labs provides labs that have all the necessary tools and software to create environments. Geliştiriciler, onayları beklemeden kaynakları verimli bir şekilde kendi kendinize yönetebilir.Developers can efficiently self-manage resources without waiting for approvals. DevTest Labs ile takımlar, laboratuvar başına maliyetleri denetleyebilir ve kaynakları düzenleyebilir, geliştiricilerin sanal değerlerini maliyet kısıtlamalarına göre işletmek için izin ve esneklik sağlar.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 , sürüm denetimi ve işbirliği için bir kod barındırma platformudur.GitHub is a code hosting platform for version control and collaboration. GitHub Kaynak denetimi deposu tüm proje dosyalarını ve bunların düzeltme geçmişini içerir.A GitHub source-control repository contains all project files and their revision history. Geliştiriciler depodaki kodu katkıda bulunmak, tartışmak ve yönetmek için birlikte çalışabilir.Developers can work together to contribute, discuss, and manage code in the repository.

  • GitHub eylemleri , CI, otomatikleştirilmiş test ve kapsayıcı dağıtımlarını kapsayan, derleme ve yayın iş akışlarının bir paketini sağlar.GitHub Actions provides a suite of build and release workflows, covering CI, automated testing, and container deployments.

  • Azure boards , yazılım projelerine yönelik işi yönetmeye yönelik bir hizmettir.Azure Boards is a service for managing work for software projects. Azure Boards, Scrum ve Kanban yöntemleri, özelleştirilebilir panolar ve tümleşik raporlama için yerel destek dahil olmak üzere zengin bir özellik kümesi sunar.Azure Boards brings a rich set of capabilities including native support for Scrum and Kanban methodologies, customizable dashboards, and integrated reporting.

  • Azure Pipelines , güncelleştirilmiş Container Registry görüntülerini Kubernetes kümelerine otomatik olarak dağıtabilecek, tam özellıklı bir CI/CD hizmetidir.Azure Pipelines is a fully featured CI/CD service that can automatically deploy updated Container Registry images to Kubernetes clusters.

  • Azure Key Vault , API anahtarları, parolalar ve sertifikalar gibi gizli dizileri güvenli bir şekilde depolar ve erişimi sıkı bir şekilde denetler.Azure Key Vault securely stores and tightly controls access to secrets like API keys, passwords, and certificates. DevOps senaryolarında Key Vault hakkında daha fazla bilgi için bkz. Azure 'Da devsecops ve GitHub 'Daki devsecops.For more information about Key Vault in DevOps scenarios, see DevSecOps in Azure and DevSecOps in GitHub.

  • Azure Container Registry , tüm kapsayıcı dağıtımı türleri için özel kayıt defterlerinde kapsayıcı görüntülerini ve yapıtları oluşturmayı, depolamayı ve yönetmeyi destekler.Azure Container Registry supports building, storing, and managing container images and artifacts in private registries for all types of container deployments.

  • Azure Kubernetes hizmeti , Azure 'a karmaşıklık, sorumluluk ve operasyonel ek yükün çoğunu boşaltarak yönetilen Kubernetes kümelerini dağıtmayı kolaylaştırır.Azure Kubernetes Service makes it simple to deploy managed Kubernetes clusters by offloading much of the complexity, responsibility, and operational overhead to Azure.

  • Azure Active Directory (Azure AD) kurumsal kimlik platformu, Kullanıcı erişimini yönetmek için çoklu oturum açma ve çok faktörlü kimlik doğrulaması sağlar.Azure Active Directory (Azure AD) enterprise identity platform provides single sign-on and multifactor authentication to govern user access. Tek bir Azure AD, abonelikler genelinde tüm ortamların kimliğini yönetebilir.A single Azure AD can manage identity for all environments across subscriptions. Azure rol tabanlı erişim denetimi (Azure RBAC) korunan kaynaklarla erişimi kısıtlayarak, üretim kaynaklarının yetkisiz veya yanlışlıkla değiştirilmesini önler.Azure role-based access control (Azure RBAC) restricts access to protected resources, preventing unauthorized or inadvertent modification of production resources.

  • Azure Cosmos DB , yüksek kullanılabilirlik, çok bölgeli uygulamalar ve hem SQL hem de NoSQL API 'leri destekleyen, tam olarak yönetilen, yaygın olarak dağıtılmış bir hizmet olarak veritabanıdır.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, Azure DevOps ile tümleştirilen ve DevTest korumalı alanlardaki maliyetleri yönetmek için düşük maliyetli katmanlardan oluşan yerel bir Cosmos DB öykünücüsü gibi DevTest özelliklerini içerir.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 izleyici , hem üretim hem de DevTest ortamlarını izleyebilir.Azure Monitor can monitor both Production and DevTest environments. Azure Izleyici, VM işletim sistemleri ve kilitlenme bilgi döküm dosyalarından günlük verilerini toplar ve Azure Güvenlik Merkezi'nde görüntülenmek üzere toplar.Azure Monitor collects log data from VM operating systems and crash dump files, and aggregates them for viewing in Azure Security Center.

AlternatiflerAlternatives

  • Azure Repos , git deposu barındırma için GitHub 'a alternatiftir.Azure Repos is an alternative to GitHub for Git repository hosting. Azure Repos, Azure Boards ve Azure Pipelines tüm Azure DevOps Services, geliştiricilerin DevOps etkinlikleri için ihtiyaç duyduğu Hizmetleri birleştirerek aynı portalı ve Kullanıcı arabirimini kullanır.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.

  • Hizmet bağlantısı veya kimlik doğrulaması gibi Azure Pipelines bulunan bazı tümleştirmeler, doğrudan Azure omurgasında mevcut değildir.Some integrations available in Azure Pipelines, such as service connection or authentication directly into the Azure backbone, don't currently exist in GitHub Actions. Bu gereksinimler için, CI ve derleme etkinlikleri için GitHub eylemleri yerine Azure Pipelines kullanmayı göz önünde bulundurun.For these needs, consider using Azure Pipelines instead of GitHub Actions for CI and build activities.

  • Yaygın olarak dağıtılmış bir sistemde, mikro hizmetleri ayrı depolara ayırmanın avantajları vardır.In a widely distributed system, there are benefits to separating microservices into individual repositories. Sahiplik ve izin ayrımı daha basittir ve farklı dillerdeki projelerin tek bir depoyla daha kolay korunması daha kolaydır.Separation of ownership and permission is simpler, and projects in different languages are easier to maintain than with a single repository. Ancak, aynı dilde veya çalışma zamanında daha az mikro hizmet içeren çözümlerde, proje için tek bir git deposunun saklanması daha kolay olabilir.However, in solutions with fewer microservices all in the same language or runtime, maintaining a single Git repository for the project may be easier.

Sonraki adımlarNext steps