Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 App Services, Sanal Makineler ve Azure Power Platform gibi farklı ortamlara dağıtmanın ayrıntılarını kapsamaya yönelik değildir. Dağıtım platformu özellikleri ayrı makalelerde ele alınmıştır.
Mimarlık
CI/CD işlem hattının Azure Pipelines kullanarak mimari diyagramı
Bu mimarinin 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.
Dataflow
Veriler senaryo boyunca aşağıdaki gibi akar:
çekme isteği işlem hattı - Azure Repos Git'e yönelik çekme isteği (PR), ç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 PR incelemesi gereklidir. PR incelemesi başarısız olursa işlem hattı sona erer ve geliştirici gerekli değişiklikleri yapmak zorunda kalır. Tüm denetimler ve PR incelemeleri geçerse, PR başarılı bir şekilde birleşir.
CI işlem hattı - Azure Repos Git'e birleştirme işlemi 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. Tümleştirme testleri yoğun kaynak kullanabilir, bu nedenle CI işlem hattında çalıştırmak geliştirme hızını ve hata algılamayı dengeler. Ana daldaki değişiklikler yeni sorunlara yol açabileceğinden, çekme isteği testlerinden geçilmesi her zaman birleştirmeden sonra da başarılı olacaklarını garanti etmez, bu nedenle birleştirme sonrası testlerin yapılması gerekmektedir. Bu faktörler CI işlem hattını, tümleştirme testleri için PR işlem hattından daha iyi bir yer haline getirir. 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 boru hattının başarılı bir şekilde çalıştırılmasının sonucu, yapı eserlerinin oluşturulması ve yayımlanmasıdır.
CD işlem hattı tetikleyicisi - yapıtların yayımlanması CD işlem hattınıtetikler.
CD yayınını hazırlama aşaması - CD işlem hattı, CI işlem hattında oluşturulan derleme öğelerini indirir ve çözümü bir hazırlık 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ına devam etmesini sağlamak için el ile bir doğrulama görevi uygulanabilir.
CD sürümünün üretime - El ile müdahale devam ettirilirse veya el ile müdahale uygulanmazsa, işlem hattı çözümü üretime sürer. Pipeline, 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.
İzleme - Azure İzleyici, 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. Application Insights, izleme verileri gibi izler de dahil olmak üzere, uygulamaya özgü tüm izleme verilerini toplar. Azure Log Analytics tüm bu verileri depolamak için kullanılır.
Bileşen
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ı kodu oluşturma, test etme, paketleme ve yayınlamanın bir yolunu sağlar. Bu örnekte aşağıdaki sorumluluklara sahip üç ayrı işlem hattı vardır:
- PR işlem hatları, bir PR'ın birleştirilmesine izin vermeden önce kodu linting, derleme ve birim testi aracılığıyla doğrular.
- Kod birleştirildikten sonra CI işlem hatları çalışır. Çekme isteği işlem hatlarıyla aynı doğrulamayı gerçekleştirirler, ancak tümleştirme testi eklerler ve her şey başarılı olursa oluşturma çıktılarını yayımlarlar.
- CD işlem hatları derleme çıktıları dağıtır, kabul testlerini çalıştırır ve üretime sürer.
Azure Artifact Feeds 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önetmenin bir yolunu sağlar. Bu mimaride uygulama sırlarını depolamak için kullanılır. Bu sırlar işlem hattı üzerinden erişilir. Gizli dizilere Azure Pipelines tarafından bir Key Vault göreviyle veya Anahtar Kasasıgelen gizli dizileri bağlama yoluyla 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 Insights, 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.
Alternatif
Bu makale Azure Pipelines'a odaklansa da şu alternatifleri göz önünde bulundurabilirsiniz:
Azure DevOps Server şirket içi yerine kullanılabilir.
Jenkins, derlemeleri ve dağıtımları otomatikleştirmek için kullanılan açık kaynak bir araçtı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 Service, 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ırlık ve üretim ortamları 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 ile mümkün olmayan işletim sistemi bileşenlerine ve hizmetlerine bağlı 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, 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 yayın 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ım yapmaktadır.
- Daha iyi kod kalitesi - Lint ve birim testi gibi CI işlem hatlarındaki kalite geçitleri daha yüksek kaliteli koda neden olur.
- yayınlama riskini azaltma - Uygun CI/CD uygulamaları, yeni özellikleri yayınlama riskini önemli ölçüde azaltır. Dağıtım, yayınlanmadan önce test edilebilir.
- Artan ü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 hata veya geriye dönüş sayısını azaltsa da yine de meydana gelmektedir. 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.
Dikkatler
Bu önemli noktalar, bir iş yükünün kalitesini artırmak için kullanılabilecek bir dizi yol gösteren ilke olan Azure Well-Architected Framework'ün yapı taşlarını uygular. Daha fazla bilgi için bkz. Microsoft Azure Well-Architected Framework .
Operasyonel mükemmellik
Altyapınızı tanımlamak ve işlem hatlarınızda 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. Bu bağlamda, genellikle dağıtım veya yapılandırma sırasında hassas bilgilerin (API anahtarları, parolalar veya diğer gizli bilgiler gibi) belirteçlerle veya yer tutucularla değiştirildiği bir süreci ifade eder.
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 bilgiler 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 Kendi bünyenizde barındırılan aracıları kullanmayı göz önünde bulundurun. Ayrıca, yüksek hacimli derlemeler çalıştırıyorsanız, kendinize ait aracıları da göz önünde bulundurabilirsiniz. Yüksek derleme hacmi durumlarında, yerel aracılar, derlemeleri maliyeti etkin bir şekilde hızlandırmak için kullanılabilir.
Application Insights 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ı, örneğin sürüm kontrolüne eklenebilir ve versiyonlanabilir.
Yeniden kullanımı teşvik etmek ve işlem hatlarını basitleştirmek için YAML Şablonları 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ırma .
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. Daha fazla test kullanıcısı veya kullanıcı temel lisansına ek olarak, gereken eşzamanlı işlem hatlarına bağlı olarak daha fazla ücret uygulanabilir.
Güvenlik
Microsoft tarafından barındırılan aracıların mı yoksa şirket içinde barındırılan aracıların mı kullanılacağını 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:
- DevOps nedir?
- Microsoft'ta DevOps - Azure DevOps ile nasıl çalıştığımız
- Azure DevOps Projeleri ile .NET için CI/CD işlem hattı oluşturma
- Azure Repos nedir?
- Azure Pipelines nedir?
- Azure DevOps
- App Service'e genel bakış
- Azure İşlevlerine Giriş
- Azure Key Vault temel kavramları
- Azure Monitor'a genel bakış