Microsoft AZ-400: Paket Yönetimi ve Yapıt Yönetimi — Çalışma kılavuzu
Şunun bir parçası: Microsoft DevOps Engineer Expert AZ-400 — Çalışma kılavuzu. Doğrulanmış cevaplarla şurada pratik yapın: Microsoft sınav merkezi, veya şurada süreli deneme sınavları çözün: ExamRoll.io.
Genel Bakış
Paket yönetimi, Azure DevOps’ta tekrarlanabilir derlemelerin, güvenilir dağıtımların ve güvenli tedarik zincirlerinin bel kemiğidir. Azure Artifacts; NuGet, npm, Maven, Gradle ve Evrensel paketler gibi ekosistemlerde paket depolama ve yönetimini merkezileştirirken, genel kayıt defterlerinden yukarı akış önbelleklemesini ve yükseltme, saklama ve izinler için ayrıntılı denetimleri mümkün kılar. Anlamsal sürüm oluşturma otomasyonu ve güvenlik/uyumluluk araçlarıyla birleştiğinde, dahili ve harici bağımlılıkların büyük ölçekte nasıl üretildiğini, keşfedildiğini, onaylandığını ve tüketildiğini standartlaştırmanıza olanak tanır.
Azure Artifacts Temel Kavramları
Akış (feed), paketler için depolama ve erişim denetimi birimidir. Ekipler genellikle akışları ürüne, platforma veya güven sınırına göre düzenler (örneğin, yukarı akış aracılığıyla tüm genel OSS bağımlılıkları için bir akış, paylaşılan dahili kütüphaneler için bir akış ve her ürün için ayrı bir akış). Akışlar, her biri kendi istemci araçlarına sahip birden çok paket türünü destekler.
Görünümler (view), tek bir akış içinde aşamalı bir yükseltme modeli uygular:
- local: yeni yayınlanan tüm paketler burada görünür
- prerelease: beta/gecelik derlemeleri erken benimseyenlere ve entegrasyon işlem hatlarına sunmak için kullanılır
- release: yalnızca üretim için onaylanmış paketler, geniş çaplı tüketim için buraya yükseltilir Tüketiciler, kararsız içerikten otomatik olarak kaçınmak için belirli bir görünüme işaret eder. Etki alanını kontrol etmek için yayın sürecinizin bir parçası olarak sürümleri yükseltin veya düşürün.
Yukarı akış kaynakları (upstream sources), bir akışı genel kayıt defterlerine (NuGet.org, npmjs.com, Maven Central) bağlar. Etkinleştirildiğinde, geliştiriciler genel bağımlılıkları akışınız üzerinden çözer. Azure Artifacts, kullanılan tam sürümleri şeffaf bir şekilde vekil sunucu olarak kullanır ve önbelleğe alır; bu da güvenilirliği artırır, internet bağlantısı olmayan (air-gapped) senaryoları mümkün kılar ve daha sonra yeni yukarı akış indirmelerini devre dışı bırakarak tedariki “dondurmanıza” olanak tanır. İlkelere uymak için her akış başına hangi yukarı akışların etkinleştirileceğini belirleyebilirsiniz.
Depolama maliyetlerini düşürürken önemli olanı korumak için saklama (retention) politikaları uygulanır. Paket başına en son N sürümü tutmak, yalnızca release görünümüne yükseltilen sürümleri saklamak ve eski prerelease sürümlerini otomatik olarak silmek için politikalar tanımlayın. Belirli sürümleri temizlemeden muaf tutmak için sabitleyin (örneğin, uzun ömürlü bir ürün dalına gömülü olanlar). İzlenebilirlik ile depolama maliyetini dengelemek için saklama pencerelerini denetim ve geri alma gereksinimleriyle uyumlu hale getirin.
Akış izinleri en az ayrıcalık ilkesini takip eder:
- Owner: akış ayarlarını, izinleri, görünümleri ve saklama politikalarını yönetir
- Contributor: paketleri yayınlar, listeden çıkarır, kullanımdan kaldırır ve yükseltir; akış düzeyindeki ayarları değiştiremez
- Reader: yalnızca paketleri geri yükler/tüketir; paketleri değiştiremez Not: “Collaborator” bir Azure Artifacts akış rolü değildir. Bu terimle karşılaşırsanız, amaçlanan yeteneğini (genellikle “yayınlayabilir”) Azure Artifacts’teki Contributor rolüyle eşleştirin.
Paket Ekosistemlerini Yönetme
NuGet (dotnet/C#)
- Sürüm Oluşturma: SemVer 2.0.0’ı tercih edin (ör. 1.4.0, 1.4.1-alpha.3+build.45). Ön sürüm etiketleri, dağıtımı görünümler aracılığıyla sınırlar; release görünümünün tüketicileri asla -alpha/-beta varyantlarıyla karşılaşmaz.
- Yayınlama:
undefined
veya
undefined
, ardından akış uç noktanıza
undefined
veya
undefined
komutlarını kullanın. Azure Pipelines NuGet görevlerini kullanın ve kalite kapılarında prerelease/release görünümlerine yükseltin.
- Tüketme:
undefined
dosyasını akışın kaynak URI’si ile (isteğe bağlı olarak bir görünüme göre kapsamlandırılmış) yapılandırın.
undefined
veya NuGet Restore görevi aracılığıyla geri yükleyin.
- Kimliği doğrulanmış akışlar: Azure Artifacts Credential Provider’ı (son dotnet SDK’larına dahil edilmiştir) veya NuGet Authenticate işlem hattı görevini kullanın. Geliştiriciler için Visual Studio/Azure CLI aracılığıyla oturum açın; CI için, derleme hizmeti sorumlusuna (build service principal) gerektiği gibi Reader/Contributor izinleri verin.
npm (JavaScript/TypeScript)
- Kapsamlı paketler: dahili paketleri
undefined
gibi bir kuruluş kapsamında yayınlayın. Kapsamlar, doğal olarak akış izinleriyle eşleşir ve projeler arası tüketimi kısıtlamaya olanak tanır.
- .npmrc:
undefined
,
undefined
ayarlarını yapın ve isteğe bağlı olarak çoklu kayıt defteri kurulumları için
undefined
ayarlayın. CI’da, geçici bir kimlik doğrulama jetonu eklemek için npm Authenticate görevini kullanın. Yerel geliştirme için, bir PAT ile
undefined
yapın.
- Özel kayıt defteri: Azure Artifacts, npmjs.com’a yukarı akış bağlantısı olan özel bir npm kayıt defteri olarak işlev görür. Onaylanmamış ön sürümleri engellemek için yalnızca release görünümünden tüketin.
Maven ve Gradle (Java/Kotlin)
- Yayınlama (Maven):
undefined
dosyasında akışınıza işaret eden
undefined
‘ı ve
undefined
dosyasında kimlik bilgileriyle (PAT veya hizmet bağlantısı) bir sunucu girişini tanımlayın. Azure Pipelines’da
undefined
veya Maven görevini kullanın.
- Yayınlama (Gradle):
undefined
eklentisini uygulayın ve
undefined
yapılandırın, ardından
undefined
ile yayınlayın.
- Bağımlılık çözümü: akış uç noktanızı (isteğe bağlı olarak görünüm sonekiyle) Gradle’daki
undefined
bölümüne veya Maven için
undefined
‘deki
undefined
bölümüne ekleyin. Geliştirme derlemeleri için SNAPSHOT’ı benimseyin ve kararlı tüketiciler için yayın sürümlerini release görünümüne yükseltin.
Evrensel paketler (ikili bloblar, betikler, modeller)
- Sürüm Oluşturma: SemVer tarzı veya tamsayı sürümlerini takip edin; her yayın değişmezdir. Bunu, dile özgü ekosistemlere uymayan yapıtlar için kullanın.
- Yayınlama/indirme görevleri: işlem hatlarında Azure DevOps görevleri olan Universal Publish ve Universal Download’u veya Azure CLI’yı (
undefined
/
undefined
) kullanın. Azure DevOps hizmet bağlantısı veya oturum açmış kimlik aracılığıyla kimlik doğrulaması yapın.
- Kullanım alanları: RBAC, saklama ve yükseltme özelliklerine ihtiyaç duyduğunuz ancak dile özgü araçların olmadığı paylaşılan CLI’lar, IaC modülleri, test verileri, ML modelleri veya diller arası varlıklar.
Güvenlik ve Uyumluluk Kontrolleri
Güvenlik açığı taraması, commit ve derleme zamanında zorunlu kılınmalıdır. Bilinen güvenlik açığına sahip bağımlılıkları tespit eden ve yükseltme rehberliği sağlayan araçları entegre edin. Birçok Azure DevOps ortamında SonarQube, bağımlılık riskini ortaya çıkaran kurallar da dahil olmak üzere sorunları işaretlemek için kalite kapısı (quality gate) stratejisinin bir parçası olarak kullanılır; ekosistemler genelinde daha kapsamlı CVE kapsamı için bunu Snyk, Mend/WhiteSource veya Black Duck gibi özel SCA araçlarıyla tamamlayabilirsiniz. .NET için
undefined
ve npm için
undefined
ek sinyaller sağlayabilir; Java için ise OWASP Dependency-Check bir derleme adımı olarak eklenebilir.
Lisans uyumluluğu, SBOM’ların veya manifest dosyalarının onaylanmış bir lisans izin listesine (allowlist) göre taranmasıyla sağlanır. Kısıtlanmış lisanslar tespit edildiğinde derlemeleri engellemek için Black Duck genellikle Azure Pipelines’a eklenir. Tarama raporlarını pipeline artifact’leri olarak saklayın ve denetlenebilirlik için bunları release’lere ekleyin.
İzin verilen/engellenen paketler, anlık istisnalar yerine bir ilke (policy) olarak uygulanmalıdır:
- Tüketicileri release görünümüyle sınırlandırın; yalnızca incelenmiş (vetted) sürümleri promote edin.
- Bir dondurma (freeze) gerektiğinde yeni upstream indirmelerini devre dışı bırakarak yalnızca önbelleğe alınmış sürümlerin kullanılabilir olmasını sağlayın.
- Ad alanlarını (namespaces) kısıtlamak için npm scope’larını ve feed başına izinleri kullanın.
- İzin verilmeyen paketler veya lisanslar durumunda derlemeleri başarısız kılmak için pipeline denetimleri ekleyin ve onay iş akışı olarak artifact promotion’ı kullanın.
Denetim ve yönetişim, upstream önbellekleme özelliğine sahip merkezi feed’lerden yararlanır: paket girişi için tek bir dar boğaz (choke point), değişmez (immutable) geçmişler ve SBOM oluşturma için tutarlı kaynak takibi (provenance) elde edersiniz.
Sürüm Otomasyonu ve Saklama Ekonomisi
Anlamsal sürüm oluşturma (Semantic versioning), otomasyon ile en kolay şekilde sürdürülür:
- GitVersion, sürümleri tahmin edilebilir bir şekilde hesaplamak için Git geçmişinizi ve branch adlandırma kurallarınızı okur (örneğin, main
1.4.0üretir, feature/*1.5.0-feature.3üretir). Modu (Mainline veya Continuous Delivery), ön sürüm (pre-release) etiketlerini ve etiket (tag) kaynaklarını yapılandırın. Hesaplanan sürümü, paketlemeden (packing) önce csproj, package.json veya Gradle’ın version özelliğine enjekte edin. - Otomatik sürüm artırma, commit anlambilimini (semantics) veya PR etiketlerini takip edebilir. Örneğin, chore sürümü artırmaz, feat minor sürümü artırır, fix patch sürümü artırır; breaking-change ise major sürümü artırır. buildNumber’ı ayarlamak için bir pipeline adımı kullanın ve sürümü pack/publish görevlerine geçirin.
- Ön sürüm (pre-release) etiketleri, branch’in amacını yansıtmalıdır (örneğin, feature üzerinde -alpha, release branch’lerinde -rc). Ön sürümleri (prerelease) prerelease görünümünde yayınlayın ve staging başarılı olduğunda release’e promote edin.
Saklama ve depolama maliyeti yönetimi, proaktif bir ilke gerektirir:
- Otomatik temizleme: N gün/sürüm sonra eski, promote edilmemiş sürümleri silmek için feed başına saklama (retention) ilkesini yapılandırın. Uzun destek ufuklarına sahip kritik kütüphaneler için periyotları uzatın.
- Sabitleme (Pinning): Uzun ömürlü ürünlere veya uyumluluk anlık görüntülerine (snapshots) gömülü olan sürümleri silinmekten muaf tutmak için açıkça sabitleyin (pin).
- Depolama optimizasyonu: Herkese açık paketlerin kopyalarını yerel olarak yayınlamak yerine upstream önbelleğe almayı tercih edin ve ek yükü (overhead) azaltmak için pratik olan yerlerde feed’leri birleştirin. Feed depolama alanının büyümesini izleyin ve ilke eşiklerini periyodik olarak ayarlayın.
Upstream Kaynaklarına Özgü Detaylar:
- NuGet: NuGet.org paketlerini proxy’lemek ve önbelleğe almak için upstream olarak https://api.nuget.org/v3/index.json adresine bağlanın.
- npm: npmjs.com bağımlılıklarını kimliği doğrulanmış feed’inizin arkasında önbelleğe almak için https://registry.npmjs.com adresine bağlanın.
- Maven: Kurumsal tüketicilerin tek bir URL ile sizin feed’iniz üzerinden çekim yapabilmesi için Maven Central’a (ör. https://repo.maven.apache.org/maven2) bağlanın.
### Pratik Problem Senaryosu
Adobe’nin, genel kayıt defterlerindeki (registry) kararsızlıktan kaynaklanan kesintileri azaltırken ve lisans politikalarını uygularken, çoklu bulut ve diller arasında paket yönetişimini standartlaştırması gerekiyor. Ekipler, şirket içi NuGet, npm ve Maven artifaktlarını yayınlıyor ve büyük, diller arası CLI araçlarını paylaşıyor.
- Merkezi akışlar ve üst akışlar oluşturun
- Eylem: Üç adet Azure Artifacts akışı oluşturun: “oss-upstream” (NuGet.org, npmjs.com, Maven Central’a üst akışlarla), “shared-libs” (şirket içi kütüphaneler) ve “productA” (uygulama seviyesi paketler). Tüm akışlarda görünümleri (local, prerelease, release) etkinleştirin.
- Gerekçe: “oss-upstream” tek giriş/önbellekleme noktası haline gelir; “shared-libs” ve “productA” ise güven sınırlarını ve yükseltme iş akışlarını ayırır.
- İstemci tüketimini görünümler aracılığıyla yapılandırın
- Eylem: Çalışma zamanı (runtime) tüketicileri için nuget.config, .npmrc, settings.xml/Gradle repolarını her akışın
releasegörünümüne, entegrasyon testi pipeline’ları için iseprereleasegörünümüne yönlendirin. - Gerekçe: Görünümler, istemci yapılandırmalarını değiştirmeden yalnızca yükseltilmiş ve onaylanmış paketlerin üretim tüketicilerine ulaşmasını sağlar.
- Semantik sürümleme ile yayınlamayı uygulayın
- Eylem: Kütüphaneler ve uygulamalar için CI’a GitVersion ekleyin.
dotnet pack,npm version(pipeline tarafından kontrol edilen, Git etiketlemesi olmadan) ve Gradle/Maven sürüm alanlarına sürüm enjeksiyonunu yönlendirin.localgörünümüne yayınlayın; başarılı CI sonrasıprereleasegörünümüne yükseltin; hazırlık (staging) testlerinden sonrareleasegörünümüne otomatik olarak yükseltin. - Gerekçe: Git akışıyla uyumlu deterministik sürümleme, tutarlı ön sürüm etiketleri ve otomasyona hazır yükseltmeler sağlar.
- Kimliği doğrulanmış akışları ve geliştirici deneyimini güvence altına alın
- Eylem: Pipeline’larda NuGet Authenticate ve npm Authenticate görevlerini kullanın; geliştirici makineleri için Azure Artifacts Credential Provider’ı etkinleştirin; Maven settings.xml sunucularını Azure DevOps değişken grupları aracılığıyla döndürülen PAT’ler ile yapılandırın.
- Gerekçe: Sorunsuz, token tabanlı kimlik doğrulama, kimlik bilgisi yayılmasını önler ve etkileşimli olmayan CI geri yüklemelerini destekler.
- Güvenlik açığı ve lisans politikasını uygulayın
- Eylem: Build’lere SonarQube kalite kapıları ekleyin; lisans izin listelerini zorunlu kılmak ve izin verilmeyen lisanslara veya yüksek önem dereceli CVE’lere sahip build’leri engellemek için Black Duck’ı entegre edin. npm ve .NET için
npm auditvedotnet list package --vulnerablekomutlarını çalıştırın; SBOM’ları build artifaktları olarak yayınlayın. - Gerekçe: Birden fazla tamamlayıcı tarayıcı, kör noktaları azaltır; Black Duck, büyük ölçekte lisans uyumluluğu sağlarken, SonarQube ve ekosistem araçları güvenlik gerilemelerini erken yakalar.
- Girişi kontrol edin ve gerektiğinde dondurun
- Eylem: Üst akış indirmelerine yalnızca “oss-upstream” üzerinden izin verin; tedariki dondurmak için olay müdahalesi sırasında yeni üst akış girişlerini devre dışı bırakın. Build’leri sürdürmek için önbelleğe alınmış paketlere güvenin.
- Gerekçe: Bir kontrol noktası, genel bir kayıt defterinin (registry) güvenliği ihlal edildiğinde veya kararsız olduğunda hızlı bir şekilde sınırlama yapılmasını sağlar.
- Saklama ve sabitleme uygulayın
- Eylem: shared-libs ve productA için son 5 sürümü saklayın; 30 günden eski, yükseltilmemiş sürümleri silin; LTS dallarına ve mevzuat temellerine bağlı sürümleri sabitleyin.
- Gerekçe: Otomatik temizlik, depolama maliyetini düşürürken, sabitlemeler denetlenebilirliği ve geri alma imkanını korur.
- En az ayrıcalıkla erişim yetkisi verin
- Eylem: Platform mühendisliğine Sahipler (Owners) atayın; yayınlama/kullanımdan kaldırma yapması gereken kütüphane bakımcılarına Katkıda Bulunanlar (Contributors) atayın; yalnızca sürüm artifaktlarını tüketen ürün ekiplerine Okuyucular (Readers) atayın.
- Gerekçe: Yetenekleri sorumluluklarla uyumlu hale getirir; geliştiriciler geniş yönetici hakları olmadan listelemeden çıkarabilir/kullanımdan kaldırabilir.
- Diller arası araçlar için Evrensel Paketler (Universal Packages)
- Eylem: Şirket içi CLI’ları ve IaC modüllerini Universal Publish/Download görevleri aracılığıyla Evrensel Paketler (Universal packages) olarak yayınlayın; bunları semantik olarak sürümleyin ve görünümler aracılığıyla yükseltin.
- Gerekçe: Dile özgü olmayan varlıklar için tutarlı bir tüketim modeliyle RBAC, saklama ve yükseltme imkanı sağlar.
- Ölçümleyin ve yineleyin
- Eylem: Akış depolama alanını, önbellek isabet oranlarını ve yükseltme hazırlık sürelerini takip edin; saklama eşiklerini, üst akış politikalarını ve yükseltme kriterlerini buna göre ayarlayın.
- Gerekçe: Sürekli ayarlama, portföy ölçeği geliştikçe güvenilirliği, maliyet verimliliğini ve uyumluluğu sürdürür.
← İzleme · Tüm alanlar · Çevik Planlama ve İş Yönetimi →
Bu soruları çözün → · ExamRoll.io’da süreli pratik →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Sınavınızı geçin →