Mikro hizmet mimarisi, modern yazılım mühendisliğini, bina için, test ve dağıtma için sağlam otomasyonlar ile yeniden şekillendirmiştir.Bu yaklaşım, takımların paralel, ölçek bileşenleri seçici olarak çalışabilmelerini ve mikro hizmet ortamları için özelleştirilmiş CD boru hatları uygulamalarını uygulamalarını sağlar.Bu kılavuz, sürekli teslimat araçlarıyla birlikte yürür ve Azure Devasaları kullanarak sürekli bir şekilde teslim edilen bir bulut-sonsuz platform sağlar.
Mikro hizmetlerde Sürekli Teslimat nedir?
Sürekli Teslimat, her kod değişikliğinin otomatik olarak inşa edildiği bir yazılım mühendisliği uygulamasıdır ve üretime serbest bırakılması için hazırlanmaktadır. Mikro hizmet mimarisinde, CD bu prensibi her bir hizmete genişletir.Bir monolithic sanatifact, takımlar birden bağımsız hizmet dağıtılır, her biri kendi boru hattı ile.Bu, hataların patlamasına ve geri bildirim döngülerini azaltır.
Microservices Sürekli Teslimat
Azure DevOps spesifiklerine girmeden önce, mikro hizmetlerin tanıtılmasının eşsiz engellerini bilmek önemlidir:
- [FONT:0) Servise bağlı olarak:[Döneticiler:[Döneticiler, mesaj kuyrukları veya etkinlik akışları ile iletişim kurmaksızın dağıtım dağıtımları koordine etmek, sözleşmeleri bozmadan koordine etmek değildir.
- [FONT:0)Infrastructure karmaşıklığı:[Dönetici:[Dönetici: 1 ) Her hizmet kendi veritabanı, önbellek veya hesap kaynaklarına ihtiyaç duyabilir, dağıtılabilir birimlerin sayısını artırır.
- [FONT:0)Environment tutarlılık: [DÜDÜDÜDÜDÜDÜDÜSTRİYESİ:0)Environment tutarlılık:[DÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜ, test, eğitim, eğitim ortamları, sorunların erken yakalanması için birbirine çok yakın bir şekilde benzemelidir.
- [FONT:0)Versioning ve rollback: Bir hizmetin başarısız bir dağıtım başkalarını etkilememelidir, ancak geri uyumluluk devam ederken yeniden yapılan değişiklikler zorlanabilir.
- [FONT:0)Observability:[Dönetici:[Dönetici:0) Merkezi olmayan giriş, ölçümler ve yönlendirme olmadan, birden çok hizmetteki konuların kök nedeni zaman alıcıdır.
Azure DevOps, bu zorlukların, sürüm kontrolü, otomatik boru hatları, gizli yönetim, izleme entegrasyonu ve altyapı-as-code ile ilgili bir dizi entegre araçla ilgilidir.
Azure DevOps: Bir Genel Bakış
Azure DevOps, bir şemsiye altında birlikte geliştirme araçları sağlayan bir Microsoft platformudur. Her biri sürekli teslimatta rol oynuyor:
- [FONT:0) Azure Boards [Dönetici: 1) Çalışma izleme ve çevik planlama.
- [FONT:0) Azure Repos[[DÜDÜT:1) – Sınıf politikaları ile havuzları ve talepleri çekmeleri.
- [FONT:0) Azure Boru hatları[[Dönem: 1)) – CI/CD boru hatları oluşturmak, test etmek ve Linux, Mac ve Windows ajanları desteklemek için.
- [FONT:0) Azure Test Planı [Dönetici: 1) Manual ve açıklayıcı test araçları.
- [FONT=0) Azure Artifacts[[[Dönetici: 1 ) – Maven, npm, NuGet ve Python için Paket yönetimi.
Mikro hizmet bağlamında, Azure Boru hatları temel taşıdır, ancak diğer hizmetler konteyner iş akışı ile yerel olarak Azure Repos uygulama kodu inceleme politikaları, Azure Artifacts, paylaşılan kütüphanelere ev sahipliği yapmaktadır (örneğin Microsoft-santrikalar için doğal bir seçim yapın) ve Azure Boards, konteynerler için çalışma öğelerini de entegre eder.
Azure Repos ile Up Version Control
Başarılı bir CD boru hattı güvenilir versiyon kontrolü ile başlar. Azure Repos hem Git hem de Team Foundation Version Control (TFVC) Mikro hizmetler için, Git, dağıtılmış doğası ve şube esnekliği nedeniyle tercih edilen seçenektir.
Her mikro hizmet kendi depolarında oturmalıdır - kod paylaşımı ve atom işlerinin basitleştirilmesi için daha sofistike boru hatların her işlemi yeniden inşa etmesine ve klasör yolu bağımsız olarak dağıtmasına olanak sağlar.Bu, bazı kuruluşlar da monorepo (tüm hizmetleri içeren tek bir depo depozit) sahip olur.
CD için anahtar sürüm kontrol uygulamaları şunları içerir:
- [FONT=0)Branch politikaları:[Dönetici:[Dönetici:0) Talep değerlendirmeleri, başarılı inşalar ve politika kontrolleri ana veya serbest bırakma şubelerine girmeden önce kontroller gerektirir.
- [FONT=0)Branching stratejisi: [Dönetici: [Dönder: 1] A GitHub Flow veya GitFlow varyantları iyi çalışır.Dış şubeleri (örneğin, 03) belirli ortamlara dağıtım hatları tetikleyebilir.
- [FONT:0]Semantic sürüm:[Dönetici: 1 ) Tag, [[[Döneticileri ile serbest bırakır.[Döneticileri, 3. ), koda geri dönmek için eserler geri almak için.
Azure Repos, Azure Boruları ile hizmet kancaları ile entegre eder, bu yüzden bir itti işlemi otomatik olarak etkilenen servis için inşa edilmiş bir CI inşasına başlayabilir.
Azure Boruları ile CI/CD boru hatları
Boru Hattı olarak
Azure Boruları, kodun yanında depolanan YAML tabanlı boru tanımlarını destekler. Bu “kömüllü kod olarak” yaklaşımı, sürümleme, reproducability ve işbirliği sağlar. Mikro hizmet için tipik bir CI/CD boru hattı aşamalar içerir: inşa etmek, birim testleri, yayınlar, geliştirme, işletme testleri, dağıtma testleri, duman testleri yapmak ve nihayet üretime dağıtmak.
En az YAML örneği:
trigger: branches: include: - main - develop paths: include: - services/user-service/* pool: vmImage: ubuntu-latest variables: serviceName: user-service stages: - stage: Build jobs: - job: Build steps: - script: dotnet build - script: dotnet test - task: PublishBuildArtifacts@1
Yol filtre GÜNCÜ:3) Bu, boru hattının yalnızca bir monorepo'da bu özel servis rehberine yapıldığı zaman tetikler. polirepos için, her havuzun kendi başına var.
Multi-Stage Boruları
Azure Boruları, birden fazla aşamayı tanımlamanıza olanak sağlar (Yap, Test, Deploy) tek bir YAML dosyasında onay verebilir. Onaylar ve kapılar, üretim dağıtımlarından önce manuel imzaları uygulamak için her aşamada eklenebilir. Örneğin, bir dağıtım başarılı bir otomatik test çalıştırmak isteyebilir, üretim yöneticisinden bir onay gerekebilir.
Çevre gruplarının birden fazla hizmeti hedef almasını sağlayın. Örneğin, bir “Ürün” ortamı mikro hizmet için tüm AKS ad uzaylarını kaplayabilir. Aynı çevreye iş birliği her hizmet güncellemesinden sonra sağlık kontrolleri tarafından kontrol edilebilir.
İşbirlikleri
Doğru dağıtım stratejisini seçmek mikro hizmetlerin süresi ve risklerini en aza indirmek için kritiktir. Azure Boruları serbest bırakma işleri ve dağıtım şablonları aracılığıyla birkaç desen destekler.
BlueGreen Deployments
Bluegreen deployment iki aynı ortamı (mavi ve yeşil) korumak içerir. Herhangi bir zamanda, sadece bir tanesi canlıdır. Yeni bir sürüm aktif ortama dağıtılır, test edilir ve sonra trafik geçiş yapılır. Azure DevOps bu dağıtım grupları veya Kubernetes adı alanlarını kullanarak uygulamaktadır. Örneğin, boru hatları “yeşil” bir yuvaya dağıtılır, bir sağlık kontrolü yapar ve sonra yeni slota kadar yük bakiyesini günceller.
Canary releases
Canary yavaş yavaş yavaş kullanıcıların küçük bir yüzdesi yeni sürüme geçer, hata oranları ve geç kalmışlık gibi. Azure DevOps Azure App Servis dağıtım yuvaları veya AKS trafik bölmesi ile bütünleştirir.A canary stage may deploy to a subset of pods (e.g., 10% kilo) and after anwatch?
Demiryolu Updates
Demiryolu güncelleştirmeleri, yeni olan eski sürüm örneklerini tamamen yerine getirir, doğru şekilde yapılandırılırsa sıfır kesinti süresi garanti eder. Azure DevOps, Kubernetes'in yeni sürümdeki varsayılan veya App Service dağıtım yuvalarını otomatik olarak kullanabilir.
Özel Bayraklar
Özel bayraklar özel aktivasyondan çift dağıtım.Bir toggle arkasında bitmemiş özellikleri içeren kod dağıtabilirsiniz ve hazır olduğunda bunları döndürür. Azure DevOps yerleşik bir bayrak yönetim sistemi sağlamaz, ancak üçüncü taraf hizmetleri ile entegre eder (LaunchDarkly, Split) veya Azure App Konsülasyonunun özelliği yönetimi kullanabilirsiniz.
Kod olarak Altyapı
Mikro hizmetler altyapı otomatik ve sürüm kontrollü olduğunda geliştirir. Azure DevOps, ayrı bir dağıtım birimi olarak Kod (IaC) olarak Altyapıyı destekler.
En iyi uygulama, hizmet kodu gibi sırları depolamak için altyapı tanımlarını depolamak. Azure Boru Hattı, uygulama dağıtmadan önce, 03. 5 veya 5 °D'yi çalıştıran ayrı bir aşamaya sahip olabilir.Bu, Azure Key Vault'u veritabanı bağlantı noktaları gibi sırları depolamak ve onları dağıtım zamanında çekmek için tam olarak garanti eder.
Azure DevOps ayrıca özel kilitler gibi çevre koruma kuralları sunuyor, aynı çevreye eşzamanlı dağıtımları önlemek için - birçok hizmet üretim altyapısını paylaştığında kritik.
Konteynerizasyon ve Orkestration
Konteynerler mikro hizmet için doğal bir uyum içindedir, çevreler boyunca tutarlı koşu zamanları sağlar. Azure DevOps boru hatları Docker görüntülerini inşa edebilir, Azure Konteyner Kayıt (ACR)'ye itin ve onları Azure Kubernetes Servisi'ne (AKS) veya diğer orkestralara dağıtabilir.
Örnek Docker, YAML'de görev ve itiş:
- task: Docker@2 displayName: Build and push Docker image inputs: containerRegistry: 'ACR Service Connection' repository: 'my-user-service' command: buildAndPush Dockerfile: '**/Dockerfile' tags: | $(Build.BuildId) latest
Sonraki bir aşamada Helm grafiği veya Kubernetes, Azure Kubernetes Hizmet görevi kullanılarak yapılır.Sistemize edilmiş dağıtımlar için Helm'i kullanın, çevreye farklı konfigürasyonlara izin verin (örneğin, çoğaltma, kaynak sınırları).
Azure Boruları ayrıca, dağıtım zamanında Key Vault'tan çevresel değişkenleri enjekte ederek, Docker görüntülerinde sert kodlanmış kimliklerden kaçınarak kapsayıcı uygulamalar için sırları yönetebilir.
Güvenlik ve Sır Yönetimi
Mikro hizmetler CD boru hatları API anahtarları, bağlantı dizeleri ve sertifikalar gibi hassas bilgileri ele almalıdır. Azure DevOps Azure Key Vault ile güvenli bir şekilde depolamak ve sırları almak için Azure Key Vault ile entegre eder. Anahtar Vault ile bağlantılı kütüphane değişken grupları kullanın: boru hatları onları iş başında alır ve onları Kubernetes sırlarına dönüştürür.
Ayrıca, Azure DevOps dış hizmetlere kimlik doğrulamayı yönetmek için hizmet bağlantıları sunar (ACR, AKS, Azure Resource Manager). Bu bağlantılar Azure AD hizmet analarını veya yönetilen kimlikleri kullanır, boru hatlarında statik kimliklerin ihtiyaçlarını ortadan kaldırır.
Azure DevOps içindeki Rol tabanlı erişim kontrolü (RBAC) sadece yetkili ekiplerin boru hatları değiştirebileceğini veya üretim dağıtımlarını onaylayabildiğini garanti eder. Bu kodu incelemeleri uygulama için bu kod değerlendirmelerini birleştirin.
İzleme ve Geri Bildirim Halkaları
Sürekli teslimat dağıtımda bitmiyor; hizmetlerin sağlığı ve performansı konusunda geri bildirim gerektirir. Azure DevOps Azure Monitor ve Uygulama İçgörüleri toplamak için Azure Monitor ve Uygulama İçgörüleri toplamak için entegre eder ve takip edebilirsiniz.Başlangıç kapıları yapılandırabilirsiniz, uygulama sağlığını başarılı bir şekilde ilan etmeden önce kontrol edebilirsiniz.
Örneğin, bir boru hattı, belirli bir süre için bir eşin altında hata oranını doğrulamayı sağlayabilir.Eğer kapı başarısız olursa, sürüm otomatik olarak geri gönderilir. Azure Borularında, kapılar bir aşamada dağıtım işinde tanımlanır:
- stage: Deploy jobs: - deployment: Production environment: 'Production' strategy: runOnce: deploy: steps: - script: kubectl apply -f deploy.yaml on: failure: steps: - script: kubectl rollout undo deployment/my-service postDeploySteps: - task: QueryAzureMonitorAlerts@1 inputs: connectedServiceNameARM: 'Azure subscription' ResourceGroupName: 'my-rg' SeverityFilter: 'Sev0,Sev1' TimeRange: 5
Ayrıca, Azure Boards ile entegre edin: Eğer bir izleme uyarı yangınları, bir iş öğesi otomatik olarak oluşturulabilir, bu olayın neden olduğu serbest bırakılmasına bağlantı kurabilir.
Faydaları ve En İyi Uygulamaları
Azure DevOps ile mikro hizmet için sürekli teslimat uygulamak ölçülebilir avantajlar getiriyor:
- [FONT:0)Hızlı zaman pazarlama: Otomatik boru hatları manuel çabayı azaltır ve paralel servis sürümlerine izin verir.
- [FONT:0)Redüklenmiş risk:[Dönetici:0) Küçük, otomatik test ve rollback yetenekleri ile artan değişiklikler başarısızlık etkisini en aza indirir.
- [FONT:0)Scalability:[Dönetici:[Dönetici: 0,3) Azure DevOps birçok hizmet ve çevrede yüzlerce boru hattı idare edebilir.
- [FONT=0)Üye Olmayan platform:[Dönemli kaynak kontrolü, CI/CD, test ve izleme entegre edilir, end-to-end izability sağlar.
Azure DevOps'ın mikro hizmet için en çok çıkmasını sağlamak için, bu en iyi uygulamaları takip edin:
- [FONT:0)Hızlı boru hatları tut:[Dönetici:[Dönetici:0) Sürekli olarak boru hatları kullanın:[Dönlendirme, koşullu infaz ve uzun inşa süreleri önlemek için paralel işler kullanın. Bina sadece yol filtreleri kullanarak hizmetleri düşünün.
- [FONT:0)Standartize şablonları:[Döneticiler:[Döneticiler:0) Standartlaştırılan şablonlar:[Döneticiler:[Döneticiler:0)) · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
- [FONT:0)Embrace altyapısı kod olarak:) Her zaman koddan otomatik olarak sipariş edilen ortamlar, manuel değil.
- [FONT:0) Dağıtım yuvalarını veya kanary dağıtımlarını kullanın: Tam rollout'dan önce yeni versiyonlar test edin ve anında geri dönme yeteneğinizi tut.
- [FONT:0] Her şeyi izleyin: [Dönetici sağlık kontrolleri, loglar ve performans ölçümleri erken sorunları yakalamak için boru hatlarınıza.
- [FONT:0)Güvenli sırları:[Dönemli kodda hiçbir zaman gizli depolama; Anahtar Pencere ve değişken gruplar kullanın.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Azure DevOps, mikro hizmet mimarilerinde sürekli teslimat yapmak için kapsamlı, esnek bir platform sağlar.In version control, otomatik boru hatları, dağıtım stratejileri, altyapı otomasyonu ve izleme, ekipler bağımsız olarak her hizmet için hızlı, güvenilir ve güvenli bir şekilde yayınlayabilirler.Diğerleri için Azure DevOps hizmetlerinizi özel mimari kalıplarınıza adapte etmek için - mikro hizmet hatları, sunucusuz işlevleri veya sanal makineleri kullanmaya başlayın.