Kaynak Denetimi (Azure ile Real-World Cloud Apps Oluşturma)
Tarafından Rick Anderson, Tom Dykstra
Fix It Project'i indirin veya E-kitap indirin
Azure ile Gerçek Dünya Bulut Uygulamaları Oluşturma e-kitabı, Scott Guthrie tarafından geliştirilen bir sunuyu temel alır. Bulut için web uygulamalarını başarıyla geliştirmenize yardımcı olabilecek 13 desen ve uygulama açıklanmaktadır. E-kitap hakkında bilgi için ilk bölüme bakın.
Kaynak denetimi yalnızca ekip ortamları için değil tüm bulut geliştirme projeleri için gereklidir. Geri alma işlevi ve otomatik yedeklemeler olmadan kaynak kodu ve hatta Word bir belgeyi düzenlemeyi düşünmezsiniz ve kaynak denetimi, bu işlevleri proje düzeyinde size bir sorun olduğunda daha da fazla zaman kazandırabilecekleri bir proje düzeyinde sunar. Bulut kaynağı denetim hizmetleriyle artık karmaşık kurulum konusunda endişelenmeniz gerekmez ve en fazla 5 kullanıcı için ücretsiz Azure Repos kaynak denetimi kullanabilirsiniz.
Bu bölümün ilk bölümünde göz önünde bulundurulması gereken üç temel en iyi yöntem açıklanmaktadır:
- Otomasyon betiklerini kaynak kod olarak değerlendirin ve bunları uygulama kodunuzla birlikte sürümleyin.
- Gizli dizileri (kimlik bilgileri gibi hassas veriler) hiçbir zaman kaynak kodu deposuna iade etme.
- DevOps iş akışını etkinleştirmek için kaynak dalları ayarlayın.
Bölümün geri kalanında Visual Studio, Azure ve Azure Repos bu desenlerin bazı örnek uygulamaları verilmiştir:
- Visual Studio'da kaynak denetimine betik ekleme
- Hassas verileri Azure'da depolama
- Visual Studio ve Azure Repos'de Git kullanma
Otomasyon betiklerini kaynak kod olarak ele alın
Bir bulut projesi üzerinde çalışırken işleri sık sık değiştiriyor ve müşterileriniz tarafından bildirilen sorunlara hızlı bir şekilde tepki vermek istiyorsunuz. Her Şeyi Otomatikleştirme bölümünde açıklandığı gibi, hızlı yanıt vermek için otomasyon betiklerinin kullanılması gerekir. Ortamınızı oluşturmak, ortamınıza dağıtmak, ölçeklendirmek vb. için kullandığınız tüm betiklerin uygulama kaynak kodunuzla eşitlenmiş olması gerekir.
Betikleri kodla eşitlenmiş durumda tutmak için bunları kaynak denetim sisteminizde depolayın. Daha sonra, geliştirme kodundan farklı olan üretim kodundaki değişiklikleri geri almanız veya hızlı bir düzeltme yapmanız gerekirse, hangi ayarların değiştiğini veya hangi ekip üyelerinin ihtiyacınız olan sürümün kopyalarına sahip olduğunu izlemeye çalışmak için zaman kaybetmenize gerek yoktur. İhtiyacınız olan betiklerin ihtiyacınız olan kod tabanıyla eşitlenmiş olduğundan ve tüm ekip üyelerinin aynı betiklerle çalıştığından emin olabilirsiniz. Daha sonra üretime veya yeni özellik geliştirmeye yönelik sık erişimli bir düzeltmenin test ve dağıtımını otomatikleştirmeniz gerekip gerekmediğine bakılmaksızın, güncelleştirilmesi gereken kod için doğru betiği elde edersiniz.
Gizli dizileri iade etme
Kaynak kod deposuna genellikle çok fazla kişi erişebilir ve parolalar gibi hassas veriler için uygun şekilde güvenli bir yer olabilir. Betikler parola gibi gizli dizileri kullanırsa, bu ayarları kaynak koda kaydedilmemeleri için parametreleştirin ve gizli dizilerinizi başka bir yerde depolayın.
Örneğin Azure, yayımlama profillerinin oluşturulmasını otomatikleştirmek için yayımlama ayarlarını içeren dosyaları indirmenize olanak tanır. Bu dosyalar, Azure hizmetlerinizi yönetme yetkisine sahip kullanıcı adlarını ve parolaları içerir. Yayımlama profilleri oluşturmak için bu yöntemi kullanırsanız ve bu dosyaları kaynak denetimine iade ederseniz, deponuza erişimi olan herkes bu kullanıcı adlarını ve parolalarını görebilir. Parola şifrelenmiş olduğundan ve varsayılan olarak kaynak denetimine dahil edilmeyen bir .pubxml.user dosyasında olduğundan, parolayı yayımlama profilinin kendisinde güvenle depolayabilirsiniz.
DevOps iş akışını kolaylaştırmak için kaynak dalları yapılandırma
Deponuzda dalları uygulama şekliniz hem yeni özellikler geliştirmenizi hem de üretimdeki sorunları çözmenizi etkiler. Burada, çok sayıda orta ölçekli ekibin kullandığı bir desen yer alır:
Ana dal her zaman üretimdeki kodla eşleşir. Ana öğesinin altındaki dallar, geliştirme yaşam döngüsünün farklı aşamalarına karşılık gelir. Geliştirme dalı, yeni özellikleri uyguladığınız yerdir. Küçük bir ekip için yalnızca ana ve geliştirmeniz olabilir, ancak genellikle insanların geliştirme ve ana arasında bir hazırlama dalı olması önerilir. Bir güncelleştirme üretime taşınmadan önce son tümleştirme testi için hazırlamayı kullanabilirsiniz.
Büyük takımlar için her yeni özellik için ayrı dallar olabilir; daha küçük bir ekip için herkesin geliştirme dalını denetlemesini isteyebilirsiniz.
Her özellik için bir dalınız varsa, A Özelliği hazır olduğunda kaynak kodu değişikliklerini geliştirme dalı ile diğer özellik dalları arasında birleştirirsiniz. Bu kaynak kodu birleştirme işlemi zaman alabilir ve özellikleri ayrı tutarken bu çalışmayı önlemek için bazı takımlar özellik geçişleri ( özellik bayrakları olarak da bilinir) olarak adlandırılan alternatif bir uygulama uygular. Bu, tüm özelliklerin tüm kodunun aynı dalda olduğu, ancak kodda anahtarları kullanarak her özelliği etkinleştirdiğiniz veya devre dışı bırakabileceğiniz anlamına gelir. Örneğin, Özellik A'nın Düzelt uygulama görevleri için yeni bir alan olduğunu ve Özellik B'nin önbelleğe alma işlevi eklemiş olduğunu varsayalım. Her iki özelliğin kodu da geliştirme dalında olabilir, ancak uygulama yalnızca bir değişken true olarak ayarlandığında yeni alanı görüntüler ve yalnızca farklı bir değişken true olarak ayarlandığında önbelleğe almayı kullanır. Özellik A yükseltilmeye hazır değilse ancak Özellik B hazırsa, Özellik A düğmesi kapalı ve Özellik B düğmesi açık durumdayken kodun tümünü Üretim'e yükseltebilirsiniz. Ardından Özellik A'yı tamamlayabilir ve daha sonra kaynak kodu birleştirmeden yükseltebilirsiniz.
Özellikler için dallar veya geçişler kullansanız da kullanmasanız da, bunun gibi bir dallanma yapısı kodunuzu geliştirme aşamasından üretime çevik ve tekrarlanabilir bir şekilde akışla aktarmanızı sağlar.
Bu yapı, müşteri geri bildirimlerine hızlı bir şekilde tepki vermenizi de sağlar. Üretime hızlı bir düzeltme yapmanız gerekiyorsa, bunu çevik bir şekilde verimli bir şekilde de yapabilirsiniz. Ana veya hazırlamadan bir dal oluşturabilir ve hazır olduğunda bunu ana ve aşağı doğru geliştirme ve özellik dallarında birleştirebilirsiniz.
Üretim ve geliştirme dallarının ayrılmasıyla bunun gibi bir dallanma yapısı olmadan, bir üretim sorunu sizi üretim düzeltmenizle birlikte yeni özellik kodunu tanıtma pozisyonuna sokabilir. Yeni özellik kodu tam olarak test edilmeyebilir ve üretime hazır olmayabilir ve hazır olmayan değişiklikleri yedeklemek için çok fazla çalışma yapmanız gerekebilir. Ya da değişiklikleri test etmek ve dağıtmaya hazırlamak için düzeltmenizi ertelemeniz gerekebilir.
Daha sonra Visual Studio, Azure ve Azure Repos'da bu üç desenin nasıl uygulanabileceğinizi gösteren örnekler göreceksiniz. Bunlar ayrıntılı adım adım nasıl yapılır yönergeleri yerine örneklerdir; Gerekli tüm bağlamı sağlayan ayrıntılı yönergeler için, bölümün sonundaki Kaynaklar bölümüne bakın.
Visual Studio'da kaynak denetimine betik ekleme
Betikleri Visual Studio çözüm klasörüne ekleyerek Visual Studio'daki kaynak denetimine ekleyebilirsiniz (projenizin kaynak denetiminde olduğu varsayılır). İşte bunu yapmak için bir yol.
Çözüm klasörünüzdeki betikler için bir klasör oluşturun ( .sln dosyanızın bulunduğu klasör).
Betik dosyalarını klasörüne kopyalayın.
Visual Studio'da projeye bir çözüm klasörü ekleyin.
Ayrıca betik dosyalarını çözüm klasörüne ekleyin.
Betik dosyaları artık projenize dahil edilir ve kaynak denetimi sürüm değişikliklerini ve buna karşılık gelen kaynak kodu değişikliklerini izliyor.
Hassas verileri Azure'da depolama
Uygulamanızı bir Azure Web Sitesinde çalıştırırsanız, kimlik bilgilerinin kaynak denetiminde depolanmasını önlemenin bir yolu da bunları Azure'da depolamaktır.
Örneğin, Düzelt uygulaması Web.config dosyasında, üretimde parolalara ve Azure depolama hesabınıza erişim sağlayan bir anahtara sahip olacak iki bağlantı dizesini depolar.
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\MyFixItMembership.mdf;Initial Catalog=MyFixItMembership;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="appdb" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\MyFixItTasks.mdf;Initial Catalog=aspnet-MyFixItTasks;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="StorageAccountName" value="fixitdemostorage" />
<add key="StorageAccountAccessKey" value="[accesskeyvalue]" />
</appSettings>
Bu ayarlar için gerçek üretim değerlerini Web.config dosyanıza yerleştirirseniz veya bunları dağıtım sırasında eklemek üzere bir Web.config dönüşümü yapılandırmak üzereWeb.Release.configdosyasına yerleştirirseniz, bunlar kaynak depoda depolanır. Veritabanı bağlantı dizelerini üretim yayımlama profiline girerseniz, parola .pubxml dosyanızda olur. ( .pubxml dosyasını kaynak denetiminden dışlayabilirsiniz, ancak ardından diğer tüm dağıtım ayarlarını paylaşma avantajını kaybedersiniz.)
Azure, Web.config dosyasının appSettings ve bağlantı dizeleri bölümleri için bir alternatif sunar. Azure yönetim portalında bir web sitesinin Yapılandırma sekmesinin ilgili bölümü aşağıdadır:
Bu web sitesine bir proje dağıttığınızda ve uygulama çalıştığında, Azure'da depoladığınız değerler Web.config dosyasındaki değerleri geçersiz kılar.
Yönetim portalını veya betikleri kullanarak Azure'da bu değerleri ayarlayabilirsiniz. Her Şeyi Otomatikleştir bölümünde gördüğünüz ortam oluşturma otomasyon betiği bir Azure SQL Veritabanı oluşturur, depolama ve SQL Veritabanı bağlantı dizelerini alır ve bu gizli dizileri web sitenizin ayarlarında depolar.
# Configure app settings for storage account and New Relic
$appSettings = @{ `
"StorageAccountName" = $storageAccountName; `
"StorageAccountAccessKey" = $storage.AccessKey; `
"COR_ENABLE_PROFILING" = "1"; `
"COR_PROFILER" = "{71DA0A04-7777-4EC6-9643-7D28B46A8A41}"; `
"COR_PROFILER_PATH" = "C:\Home\site\wwwroot\newrelic\NewRelic.Profiler.dll"; `
"NEWRELIC_HOME" = "C:\Home\site\wwwroot\newrelic" `
}
# Configure connection strings for appdb and ASP.NET member db
$connectionStrings = ( `
@{Name = $sqlAppDatabaseName; Type = "SQLAzure"; ConnectionString = $sql.AppDatabase.ConnectionString}, `
@{Name = "DefaultConnection"; Type = "SQLAzure"; ConnectionString = $sql.MemberDatabase.ConnectionString}
)
Gerçek değerlerin kaynak depoda kalıcı hale getirilmemesi için betiklerin parametrelendirildiğini göreceksiniz.
Geliştirme ortamınızda yerel olarak çalıştırdığınızda, uygulama yerel Web.config dosyanızı okur ve bağlantı dizeniz web projenizin App_Data klasöründeki bir LocalDB SQL Server veritabanına işaret eder. Uygulamayı Azure'da çalıştırdığınızda ve uygulama bu değerleri Web.config dosyasından okumaya çalıştığında, geri aldığı ve kullandığı şey, Web.config dosyasındakiler değil, Web Sitesi için depolanan değerlerdir.
Visual Studio ve Azure DevOps'ta Git kullanma
Daha önce sunulan DevOps dallanma yapısını uygulamak için herhangi bir kaynak denetim ortamını kullanabilirsiniz. Dağıtılmış ekipler için en iyi şekilde bir dağıtılmış sürüm denetim sistemi (DVCS) çalışabilir; diğer takımlar için merkezi bir sistem daha iyi çalışabilir.
Git popüler bir dağıtılmış sürüm denetim sistemidir. Kaynak denetimi için Git'i kullandığınızda, deponun tüm geçmişini yerel bilgisayarınızda içeren tam bir kopyasına sahip olursunuz. Birçok kişi ağa bağlı olmadığınızda çalışmaya devam etmek daha kolay olduğundan işleme ve geri alma işlemleri gerçekleştirmeye, dal oluşturup değiştirmeye vb. devam edebilirsiniz. Ağa bağlı olsanız bile, her şey yerel olduğunda dallar oluşturmak ve dalları değiştirmek daha kolay ve daha hızlıdır. Ayrıca diğer geliştiricileri etkilemeden yerel işlemeler ve geri alma işlemleri de yapabilirsiniz. Ayrıca, işlemeleri sunucuya göndermeden önce toplu işleyebilirsiniz.
Azure Repos hem Git hem de Team Foundation Sürüm Denetimi (TFVC; merkezi kaynak denetimi) sunar. Azure DevOps ile çalışmaya buradan başlayın.
Visual Studio 2017 yerleşik, birinci sınıf Git desteği içerir. Bunun nasıl çalıştığını gösteren hızlı bir tanıtım aşağıda verilmiş.
Visual Studio'da bir proje açıkken, Çözüm Gezgini'da çözüme sağ tıklayın ve ardından Kaynak Denetimine Çözüm Ekle'yi seçin.
Visual Studio, TFVC (merkezi sürüm denetimi) veya Git kullanmak isteyip istemediğinizi sorar.
Git'i seçip Tamam'a tıkladığınızda Visual Studio, çözüm klasörünüzde yeni bir yerel Git deposu oluşturur. Yeni depoda henüz dosya yok; Git işlemesi yaparak bunları depoya eklemeniz gerekir. Çözüm Gezgini'da çözüme sağ tıklayın ve ardından İşleme'ye tıklayın.
Visual Studio, işleme için tüm proje dosyalarını otomatik olarak hazırlar ve Eklenen Değişikliklerbölmesindeki Takım Gezgini'nde listeler. (İşlemeye dahil etmek istemediğinizler varsa, bunları seçebilir, sağ tıklayabilir ve Dışla'ya tıklayabilirsiniz.)
Bir işleme açıklaması girin ve İşleme'ye tıklayın; Visual Studio işlemeyi yürütür ve işleme kimliğini görüntüler.
Artık bazı kodları depodakilerden farklı olacak şekilde değiştirirseniz farkları kolayca görüntüleyebilirsiniz. Değiştirdiğiniz bir dosyaya sağ tıklayın, Değiştirilmemiş ile Karşılaştır'ı seçin ve kaydedilmemiş değişikliğinizi gösteren bir karşılaştırma görüntüsü alırsınız.
Yaptığınız değişiklikleri kolayca görebilir ve iade edebilirsiniz.
Dal oluşturmanız gerektiğini varsayalım; bunu Visual Studio'da da yapabilirsiniz. Takım Gezgini'ndeYeni Dal'a tıklayın.
Bir dal adı girin, Dal Oluştur'a tıklayın ve Kullanıma Alma dalı'nı seçtiyseniz Visual Studio yeni dalı otomatik olarak kullanıma alır.
Artık dosyalarda değişiklik yapabilir ve bunları bu dalda iade edebilirsiniz. Ayrıca dallar arasında kolayca geçiş yapabilirsiniz ve Visual Studio dosyaları kullanıma almış olduğunuz dalla otomatik olarak eşitler. Bu örnekte _Layout.cshtml dosyasındaki web sayfası başlığı, HotFix1 dalında "Sık Erişimli Düzeltme 1" olarak değiştirilmiştir.
Ana dala geri dönerseniz, _Layout.cshtml dosyasının içeriği otomatik olarak ana daldaki içeriğine geri döner.
Bu, hızlıca dal oluşturmanın ve dallar arasında ileri geri çevirmenin basit bir örneğidir. Bu özellik , Her Şeyi Otomatikleştirme bölümünde sunulan dal yapısı ve otomasyon betiklerini kullanarak yüksek oranda çevik bir iş akışı sağlar. Örneğin, Geliştirme dalında çalışıyor, main'ın dışında bir sık erişimli düzeltme dalı oluşturabilir, yeni dala geçebilir, değişikliklerinizi orada yapabilir ve işleyebilir ve ardından Geliştirme dalı'na geri dönüp yaptığınız işe devam edebilirsiniz.
Burada gördüğünüz, Visual Studio'da yerel bir Git deposuyla nasıl çalıştığınızdır. Ekip ortamında genellikle değişiklikleri ortak bir depoya da gönderebilirsiniz. Visual Studio araçları, uzak bir Git deposuna işaret etmenizi de sağlar. bu amaçla GitHub.com kullanabilir veya git ve Azure Repos iş öğesi ve hata izleme gibi diğer tüm Azure DevOps özellikleriyle tümleştirilmiş olarak kullanabilirsiniz.
Elbette çevik dallanma stratejisini uygulayabilmenizin tek yolu bu değildir. Merkezi bir kaynak denetimi deposu kullanarak aynı çevik iş akışını etkinleştirebilirsiniz.
Özet
Kaynak denetim sisteminizin başarısını, ne kadar hızlı bir değişiklik yapabileceğinize göre ölçün ve güvenli ve öngörülebilir bir şekilde canlı hale getirin. Bir veya iki gün el ile test yapmak zorunda olduğunuz için değişiklik yapmaya korkuyorsanız, bu değişikliği dakikalar içinde veya en kötü ihtimalle bir saatten uzun sürmeyecek şekilde işlem açısından veya test açısından yapmanız gerekenleri kendinize sorabilirsiniz. Bunu yapmak için bir strateji, bir sonraki bölümde ele alacağımız sürekli tümleştirme ve sürekli teslimi uygulamaktır.
Kaynaklar
Dallanma stratejileri hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:
- Team Foundation Server 2012 ile Yayın İşlem Hattı Oluşturma. Microsoft Desenleri ve Uygulamaları belgeleri. Dallanma stratejilerinin tartışılması için 6. bölüme bakın. Danışmanlar özellik dalları arasında geçiş yapar ve özellikler için dallar kullanılıyorsa, bunları kısa süreli (en fazla saat veya gün) tutan danışmanlar.
- Sürüm Denetimi Kılavuzu. ALM Rangers tarafından dallanma stratejileri kılavuzu. İndirmeler sekmesindeki Dallanma Strategies.pdf bölümüne bakın.
- Özellik GeçişLi Yazılım Geliştirme. MSDN Dergisi makalesi.
- Özellik İki Durumlu Düğmesi. Martin Fowler'ın blogundaki özellik geçişlerine / özellik bayraklarına giriş.
- Özellik Geçişleri ve Özellik Dalları. Dylan Smith'in özellik geçişleriyle ilgili başka bir blog gönderisi.
Kaynak denetimi depolarında tutulmaması gereken hassas bilgileri işleme hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:
- Parolaları ve diğer hassas verileri ASP.NET ve Azure App Service dağıtmak için en iyi yöntemler.
- Azure Web Siteleri: Uygulama Dizeleri ve Bağlantı Dizeleri Nasıl Çalışır? Web.config dosyasındaki verileri geçersiz
connectionStrings
kılanappSettings
Azure özelliğini açıklar. - Azure Web Sitelerinde özel yapılandırma ve uygulama ayarları - Stefan Schackow ile.
Hassas bilgileri kaynak denetiminin dışında tutmaya yönelik diğer yöntemler hakkında bilgi için bkz. ASP.NET MVC: Özel Ayarları Kaynak Denetiminin Dışında Tut.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin