Aracılığıyla paylaş


Azure Pipelines ile CI/CD temel mimarisi

Bu makalede, Uygulama değişikliklerini Azure'daki hazırlama ve üretim ortamlarına dağıtmaya yönelik üst düzey bir DevOps iş akışı açıklanmaktadır. Çözüm, Azure Pipelines ile sürekli tümleştirme/sürekli dağıtım (CI/CD) uygulamalarını kullanır.

Önemli

Bu makale, Azure Pipelines kullanan genel bir CI/CD mimarisini kapsar. Azure Uygulaması Hizmetleri, Sanal Makineler ve Azure Power Platform gibi farklı ortamlara dağıtmanın ayrıntılarını kapsaması amaçlanmamıştır. Dağıtım platformu özellikleri ayrı makalelerde ele alınmıştır.

Mimari

Azure Pipelines kullanan bir CI/CD işlem hattının mimari diyagramı.

Bu mimarinin bir Visio dosyasını indirin.

Not

Bu makale uygulama değişiklikleri için CI/CD'yi kapsasa da Azure Pipelines, kod olarak altyapı (IaC) değişiklikleri için CI/CD işlem hatları oluşturmak için de kullanılabilir.

Veri akışı

Veriler senaryo boyunca aşağıdaki gibi akar:

  1. PR işlem hattı - Azure Repos Git'e yönelik bir çekme isteği (PR) bir çekme isteği işlem hattını tetikler. Bu işlem hattı hızlı kalite denetimleri çalıştırır. Bu denetimler şunları içermelidir:

    • Bağımlılık yönetim sisteminden bağımlılıkları çekmeyi gerektiren kodu oluşturma.
    • Statik kod analizi, lint ve güvenlik taraması gibi kodu analiz etmek için araçların kullanılması
    • Birim testleri

    Denetimlerden herhangi biri başarısız olursa işlem hattı çalıştırması sona erer ve geliştiricinin gerekli değişiklikleri yapması gerekir. Tüm denetimler başarılı olursa işlem hattı bir çekme isteği gözden geçirmesi gerektirmelidir. Çekme isteği gözden geçirmesi başarısız olursa işlem hattı sona erer ve geliştiricinin gerekli değişiklikleri yapması gerekir. Tüm denetimler ve çekme isteği gözden geçirmeleri başarılı bir şekilde birleştirilir.

  2. CI işlem hattı - Azure Repos Git'e birleştirme işlemi bir CI işlem hattını tetikler. Bu işlem hattı, bazı önemli eklemelerle pr işlem hattıyla aynı denetimleri çalıştırır. CI işlem hattı tümleştirme testlerini çalıştırır. Derleme yapıtları henüz oluşturulmadığından, bu tümleştirme testleri çözümün dağıtımını gerektirmemelidir. Tümleştirme testleri gizli diziler gerektiriyorsa işlem hattı bu gizli dizileri Azure Key Vault'tan alır. Denetimlerden herhangi biri başarısız olursa işlem hattı sona erer ve geliştiricinin gerekli değişiklikleri yapması gerekir. Bu işlem hattının başarılı bir şekilde çalıştırılmasının sonucu, derleme yapıtlarının oluşturulması ve yayımlanmasıdır

  3. CD işlem hattı tetikleyicisi - Yapıtların yayımlanması CD işlem hattını tetikler.

  4. Hazırlamaya CD sürümü - CD işlem hattı CI işlem hattında oluşturulan derleme yapıtlarını indirir ve çözümü bir hazırlama ortamına dağıtır. İşlem hattı daha sonra dağıtımı doğrulamak için hazırlama ortamında kabul testleri çalıştırır. Herhangi bir kabul testi başarısız olursa işlem hattı sona erer ve geliştiricinin gerekli değişiklikleri yapması gerekir. Testler başarılı olursa, bir kişinin veya grubun dağıtımı doğrulamasını ve işlem hattını sürdürmesini istemek için el ile doğrulama görevi uygulanabilir.

  5. CD'nin üretime yayımlanması - El ile müdahale sürdürülürse veya el ile müdahale uygulanmazsa işlem hattı çözümü üretime bırakır. İşlem hattı, yayının beklendiği gibi çalıştığından emin olmak için üretimde duman testleri çalıştırmalıdır. El ile müdahale adımı iptale neden olursa, yayın başarısız olursa veya duman testleri başarısız olursa yayın geri alınır, işlem hattı sona erer ve geliştiricinin gerekli değişiklikleri yapması gerekir.

  6. İzleme - Azure İzleyici, bir operatörün sistem durumu, performans ve kullanım verilerini analiz edebilmesi için günlükler ve ölçümler gibi gözlemlenebilirlik verilerini toplar. Uygulama Analizler izlemeler gibi uygulamaya özgü tüm izleme verilerini toplar. Azure Log Analytics tüm bu verileri depolamak için kullanılır.

Bileşenler

  • Azure Repos Git deposu, sürüm denetimi sağlayan bir kod deposu ve işbirliğine dayalı projeler için bir platform görevi görür.

  • Azure Pipelines , uygulama ve altyapı kodunu derlemek, test etmek, paketlemek ve yayınlamak için bir yol sağlar. Bu örnekte aşağıdaki sorumluluklara sahip üç ayrı işlem hattı vardır:

    • ÇEKME isteği işlem hatları, bir çekme isteğinin lint, derleme ve birim testi aracılığıyla birleştirilmesine izin vermeden önce kodu doğrular.
    • KOD birleştirildikten sonra CI işlem hatları çalıştırılır. Çekme isteği işlem hatlarıyla aynı doğrulamayı gerçekleştirir, ancak tümleştirme testi ekler ve her şey başarılı olursa derleme yapıtlarını yayımlar.
    • CD işlem hatları derleme yapıtlarını dağıtır, kabul testlerini çalıştırır ve üretime yayınlar.
  • Azure Artifact Akışları Maven, npm ve NuGet gibi yazılım paketlerini yönetmenize ve paylaşmanıza olanak sağlar. Yapıt akışları, paketleri sürüm oluşturma, yükseltme ve kullanımdan kaldırma dahil olmak üzere paketlerinizin yaşam döngüsünü yönetmenize olanak sağlar. Bu, ekibinizin paketlerinizin en son ve en güvenli sürümlerini kullandığından emin olmanıza yardımcı olur.

  • Key Vault gizli diziler, şifreleme anahtarları ve sertifikalar dahil olmak üzere çözümünüz için güvenli verileri yönetmek için bir yol sağlar. Bu mimaride uygulama gizli dizilerini depolamak için kullanılır. Bu gizli dizilere işlem hattı üzerinden erişilir. Gizli dizilere Azure Pipelines tarafından bir Key Vault göreviyle veya Key Vault'tan gizli diziler bağlanarak erişilebilir.

  • İzleyici , Azure hizmetleri için ölçümleri ve günlükleri, uygulama telemetrisini ve platform ölçümlerini toplayan ve depolayan bir gözlemlenebilirlik kaynağıdır. Uygulamayı izlemek, uyarıları, panoları ayarlamak ve hataların kök neden analizini gerçekleştirmek için bu verileri kullanın.

  • Application Analizler, web uygulamalarınızın performansı ve kullanımı hakkında gerçek zamanlı içgörüler sağlayan bir izleme hizmetidir.

  • Log Analytics çalışma alanı , Azure kaynakları, uygulamaları ve hizmetleri dahil olmak üzere birden çok kaynaktan verileri depolayabileceğiniz, sorgulayabileceğiniz ve çözümleyebileceğiniz merkezi bir konum sağlar.

Alternatifler

Bu makale Azure Pipelines'a odaklansa da şu alternatifleri göz önünde bulundurabilirsiniz:

  • Azure DevOps Server (eski adıyla Team Foundation Server), şirket içi yerine kullanılabilir.

  • Jenkins, derlemeleri ve dağıtımları otomatikleştirmek için kullanılan bir açık kaynak aracıdır.

  • GitHub Actions , CI/CD iş akışlarınızı doğrudan GitHub'dan otomatikleştirmenizi sağlar.

  • GitHub Depoları , kod deposu olarak değiştirilebilir. Azure Pipelines, GitHub depolarıyla sorunsuz bir şekilde tümleşir.

Bu makale, Azure Pipelines ile genel CI/CD uygulamalarına odaklanır. Dağıtmayı düşünebileceğiniz bazı işlem ortamları şunlardır:

  • App Services , web uygulamalarını, REST API'leri ve mobil arka uçları barındırmaya yönelik HTTP tabanlı bir hizmettir. En sevdiğiniz dilde geliştirme yapabilirsiniz ve uygulamalar hem Windows hem de Linux tabanlı ortamlarda kolayca çalışır ve ölçeklendirilir. Web Apps hazırlama ve üretim gibi dağıtım yuvalarını destekler. Bir uygulamayı hazırlama yuvasına dağıtabilir ve üretim yuvasına bırakabilirsiniz.

  • Azure Sanal Makineler, yüksek düzeyde denetim gerektiren veya Web Apps (örneğin, Windows GAC veya COM) ile mümkün olmayan işletim sistemi bileşenlerine ve hizmetlerine bağlı olan iş yüklerini işler.

  • Azure Power Platform , kullanıcıların altyapı veya teknik uzmanlığa gerek kalmadan uygulama oluşturmasına, dağıtmasına ve yönetmesine olanak tanıyan bir bulut hizmetleri koleksiyonudur.

  • Azure İşlevleri, uygulama oluşturmak için kullanabileceğiniz sunucusuz bir işlem platformudur. İşlevler ile, hizmetleri tümleştirmek için tetikleyicileri ve bağlamaları kullanabilirsiniz. İşlevler ayrıca hazırlama ve üretim gibi dağıtım yuvalarını da destekler. Bir uygulamayı hazırlama yuvasına dağıtabilir ve üretim yuvasına bırakabilirsiniz.

  • Azure Kubernetes Service (AKS), Azure'da yönetilen bir Kubernetes kümesidir. Kubernetes bir açık kaynak kapsayıcı düzenleme platformudur.

  • Azure Container Apps , kapsayıcılı uygulamaları sunucusuz bir platformda çalıştırmanıza olanak tanır.

Senaryo ayrıntıları

Uygulama veya altyapı değişikliklerini dağıtmak için kanıtlanmış CI ve CD uygulamalarının kullanılması aşağıdakiler gibi çeşitli avantajlar sağlar:

  • Daha kısa sürüm döngüleri - Otomatik CI/CD işlemleri, el ile gerçekleştirilen uygulamalardan daha hızlı dağıtım yapmanızı sağlar. Birçok kuruluş günde birden çok kez dağıtılır.
  • Daha iyi kod kalitesi - Lint ve birim testi gibi CI işlem hatlarındaki kalite geçitleri daha yüksek kalite koduna neden olur.
  • Serbest bırakma riskinin azalması - Uygun CI/CD uygulamaları, yeni özelliklerin yayınlanma riskini önemli ölçüde azaltır. Dağıtım, yayınlanmadan önce test edilebilir.
  • Daha fazla üretkenlik - Otomatik CI/CD, geliştiricilerin yeni özelliklere odaklanabilmeleri için el ile tümleştirmeler ve dağıtımlar üzerinde çalışmalarına engel olur.
  • Geri almaları etkinleştirme - Uygun CI/CD uygulamaları, yayımlanan hataların veya regresyonların sayısını azaltsa da yine de oluşur. CI/CD, önceki sürümlere otomatik geri almayı etkinleştirebilir.

Olası kullanım örnekleri

Aşağıdakiler için Azure Pipelines ve CI/CD işlemlerini göz önünde bulundurun:

  • Uygulama geliştirme ve dağıtım yaşam döngülerini hızlandırma.
  • Otomatik derleme ve yayın sürecine kalite ve tutarlılık oluşturma.
  • Uygulama kararlılığını ve çalışma süresini artırma.

Dikkat edilmesi gereken noktalar

Bu önemli noktalar, bir iş yükünün kalitesini artırmak için kullanılabilecek bir dizi yol gösteren ilke olan Azure İyi Tasarlanmış Çerçeve'nin yapı taşlarını uygular. Daha fazla bilgi için bkz . Microsoft Azure İyi Tasarlanmış Çerçeve.

Operasyonel mükemmellik

  • Altyapınızı tanımlamak ve işlem hatlarınıza dağıtmak için Kod Olarak Altyapı (IaC) uygulamayı göz önünde bulundurun.

  • VSTS marketinde bulunan Belirteç Oluşturma Görevlerinden birini kullanmayı düşünün. Bağlamda genellikle hassas bilgilerin (API anahtarları, parolalar veya diğer gizli diziler gibi) dağıtım veya yapılandırma sırasında belirteçlerle veya yer tutucularla değiştirildiği bir işleme başvurur.

  • Ortamlarınızın yapılandırma değişikliklerini yönlendirmek için yayın tanımlarınızda Yayın Değişkenleri'ni kullanın. Yayın değişkenleri, yayının tamamına veya belirli bir ortama göre kapsamlendirilebilir. Gizli dizi bilgileri için değişkenleri kullanırken asma kilit simgesini seçtiğinizden emin olun.

  • Güvenli bir sanal ağda çalışan kaynaklara dağıtıyorsanız Şirket içinde barındırılan aracıları kullanmayı göz önünde bulundurun. Ayrıca, yüksek hacimli derlemeler çalıştırıyorsanız şirket içinde barındırılan aracıları da göz önünde bulundurabilirsiniz. Yüksek derleme hacimli durumlarda, şirket içinde barındırılan aracılar, derlemeleri maliyet açısından verimli bir şekilde hızlandırmak için kullanılabilir.

  • Uygulama Analizler ve diğer izleme araçlarını yayın işlem hattınızda mümkün olduğunca erken kullanmayı göz önünde bulundurun. Birçok kuruluş yalnızca üretim ortamında izlemeye başlar. Diğer ortamlarınızı izleyerek, geliştirme sürecinin önceki bölümlerinde hataları tanımlayabilir ve üretim ortamınızdaki sorunlardan kaçınabilirsiniz.

  • Üretim için ayrı izleme kaynakları kullanmayı göz önünde bulundurun.

  • Klasik arabirim yerine YAML işlem hatlarını kullanmayı göz önünde bulundurun. YAML işlem hatları diğer kodlar gibi işlenebilir. YAML işlem hatları kaynak denetimine iade edilebilir ve örneğin sürüm oluşturulabilir.

  • Yeniden kullanımı teşvik etmek ve işlem hatlarını basitleştirmek için YAML Şablonları'nı kullanmayı göz önünde bulundurun. Örneğin, PR ve CI işlem hatları benzerdir. Her iki işlem hattı için de tek bir parametreli şablon kullanılabilir.

  • El ile kullanıcı kabul testi, performans ve yük testi ve geri alma gibi etkinlikleri desteklemek için hazırlama ve üretim dışında ortamlar oluşturmayı göz önünde bulundurun.

Maliyet iyileştirme

Maliyet iyileştirmesi, gereksiz giderleri azaltmanın ve operasyonel verimlilikleri iyileştirmenin yollarını aramaktır. Daha fazla bilgi için bkz . Maliyet iyileştirme sütununa genel bakış.

Azure DevOps maliyetleri, kuruluşunuzda erişim gerektiren kullanıcı sayısına ve gerekli eşzamanlı derleme/yayın sayısı ve test kullanıcılarının sayısı gibi diğer faktörlere bağlıdır. Daha fazla bilgi için bkz . Azure DevOps fiyatlandırması.

Bu fiyatlandırma hesaplayıcısı , Azure DevOps'un 20 kullanıcıyla çalıştırılmasına yönelik bir tahmin sağlar.

Azure DevOps, kullanıcı başına aylık olarak faturalandırılır. Ek test kullanıcılarına veya kullanıcı temel lisanslarına ek olarak eşzamanlı işlem hatlarına bağlı olarak daha fazla ücret uygulanabilir.

Güvenlik

  • Microsoft tarafından barındırılan aracıları mı yoksa şirket içinde barındırılan aracıları mı kullanacağınızı seçerken Microsoft tarafından barındırılan aracıları kullanmanın güvenlik avantajlarını göz önünde bulundurun.

  • Ortamlarda yapılan tüm değişikliklerin işlem hatları aracılığıyla yapıldığından emin olun. Rol tabanlı erişim denetimlerini (RBAC) en az ayrıcalık ilkesine göre uygulayarak kullanıcıların ortamlara erişmesini önleyin.

  • Bağımlılıkları izlemek, lisansları yönetmek, güvenlik açıklarını taramak ve bağımlılıkları güncel tutmak için Azure Pipelines'daki adımları tümleştirmeyi göz önünde bulundurun.

Sonraki adımlar

CI/CD ve Azure DevOps hakkında daha fazla bilgi edinmek için aşağıdaki kaynakları gözden geçirin: