Microsoft DevOps ile güvenilir sistemleri nasıl çalıştırır?
Microsoft, ticari İnternet'in ilk günlerinden bu yana karmaşık çevrimiçi platformlar çalıştırmıştır. Bu arada sistemlerin kullanılabilir, sağlıklı ve güvenli kalmasını sağlamak için önemli bir dizi uygulamayı geliştirmiş olduk. Bu uygulamalar, canlı site kültürünü korumaya ve geliştirmeye yönelik daha büyük bir girişimin bir parçasıdır.
Canlı site kültürü
Canlı site kültürü, canlı sitenin deneyimini ve güvenilirliğini diğer her şeye göre önceliklendirmek için bir kuruluşun odağıdır. Sonuçta, müşteriler bulut ve internet tabanlı hizmetlerle günümüzde hizmet sağlayıcıları arasında oldukça kolay bir şekilde geçiş yapabilir ve müşteri güveninin önemini büyük ölçüde büyütebilir. Canlı site her zaman kullanılabilir olmalı ve müşterilere söz verilen şekilde performans göstermelidir.
Başarılı bir canlı site kültürüne katkıda bulunabilecek çeşitli faktörler vardır.
Önce canlı site
Canlı site deneyimini ilk kez kullanmak, başarılı bir platformun ayrılmaz bir parçasıdır. Ekipler tüm odaklarını yeni ve parlak özelliklere koyamaz ve bu özelliklerin kullanıcılara sunulduğu yolu göz ardı edebilir. Müşterilerimizin kesintisiz platform erişimine sahip olmasını sağlamaya yardımcı olan güvenli dağıtım uygulamalarına güveniyoruz. Bu durum, sürümlü hizmet güncelleştirmelerinin kapalı kalma süresi olmadan yayınlanması söz konusu olduğunda özellikle karmaşık olabilir.
Özellik bayrakları aracılığıyla pozlamayı denetleme
Halkalarımız ve aşamalarımız aracılığıyla dağıtım yaparak özellik bayraklarıyla pozlamayı denetledikçe, zaman zaman üretimde bir sorun keşfediyoruz. Tüm otomasyonumuza ve incelemelerimize rağmen, bazı şeyler bazen yine de gerçekleşir. Dedikleri gibi, üretim gibi bir yer yok!
Genellikle, bir sorun olduğunda sistem durumu izleme ve telemetri bizi uyarır. Geliştirici, ' main
de bir dal oluşturabilir, bir düzeltme yapabilir ve isteği içine main
alabilir. Aynı genel iş akışının tutulması, geliştiricilerin farklı bir kod değişikliği için bağlam değiştirmesi veya farklı bir işlem öğrenmesi gerekmeyecek anlamına gelir.
Bir düzeltme dağıtımını ele almak için bir adım daha gerekir. Bu adım, değişikliği sürüm dalında tek tek seçmektir. Her hafta içi sabah geçerli sürüm dalından bir düzeltme dağıtımı çalıştırıyoruz, ancak bunu acil düzeltmeler için isteğe bağlı olarak da yapabiliriz. Düzeltme aslında üretime ilk olarak yayın dalından isabet eder. Ancak ilk olarak main
geliştirdiğimiz için, sürümünden main
yeni bir yayın dalı oluşturulduğunda bir sonraki sprint'i gerilemeyeceğini biliyoruz.
Dağıtım halkaları ve aşamaları olmasa da şirket içi ürünlerin sürümleri büyük ölçüde aynıdır. Ayrıca, farklı yapılandırmalar ve veri şekilleri üzerinde el ile daha fazla test yaptığımızdan, yayın dalını kesmek ve ürünü müşterilerin eline bırakmak arasında daha uzun bir kuyruk vardır.
Güvenlik kişisel olarak alınmalıdır
Odak noktası, güvenlik açıklarını gerçek ve kişisel hale getirmektir. Bu, insanların gerçekten önemsemesini sağlar. Ayrıca kodda olsun veya olmasın sistem genelinde güvenlik risklerini bulmak ve ele almak için savaş oyunlarından kapsamlı bir şekilde yararlanıyoruz. Kırmızı ekip, bir iletişim kutusunu baş aşağı çevirerek koda girildiğini gösterebildiğinde, kod sahibini sorunu çözmesi ve başka hiçbir yerde tekrar gerçekleşmediğinden emin olması için gerçekten motive eder. Bu tür bir rekabet, olası bir XSS riskiyle ilgili statik analiz uyarısından çok daha gerçek ve kişiseldir. Savaş oyunları ve diğer güvenlik alıştırmaları aracılığıyla bu tür bir kültür ve dinamik oluşturuyoruz. Kişiler birbirlerinin koduna girmek veya girişimleri engellemekle gururlanıyorlar. Bu, güvenli bir kod kültürü ekler.
Her saldırı vektörlerini planlayamıyoruz, ancak yapabileceğimiz bir ihlal olacağını varsaymak ve bu ihlale ne kadar hızlı tepki vereceğimizdir. Ekiplerimiz için birçok güvenlik çalışması yapıldı.
Sonunda insanlar hata yapar. Bazen yavaşlar ve dosya paylaşımlarında parola depolama gibi işlemler yaparlar. Onlara yapmamalarını söyleyebiliriz ve onları güvenlik eğitimine gönderebiliriz ve başka şeyler de yapabiliriz. Çoğu kişi öğrenir, ancak sistemi bozmak için yalnızca bir kişi gerekir. Her türlü en iyi deneyim listelerine sahip olabilirsiniz, ancak bunu gerçek yapmazsanız, insanların hata yapacaklarını varsaymak gerekir. Bu, kritik işlemlerin izlendiğinden emin olmak için belirli bir gözetim düzeyi gerektirir.
Mühendislik bir operasyon ortağından daha fazlasıdır
Canlı siteyi mühendislik ekibinin sorumluluklarının önemli bir parçası haline getirmek için erken saatlerde öğrendik. Bu bizim için çok büyüktü çünkü geçmişte bir kişi bir şeyler dağıtabilir, hafta sonu için ayrılabilir ve Pazartesi günü geri dönerek müşteri desteği ve operasyon ekiplerinin hafta sonu boyunca ilgilendiği 900 müşteri sorununu bulabilirdi. Canlı site sorunlarının bedelini mühendisliğin ödemesi önemlidir. Aksi takdirde, bu sorunlardan kaçınan sistemler oluşturmak için teşvik yoktur. 02:00'de kırdığınız bir şeyi düzeltmek için çağrıldığınızda, hatırlarsınız.
Bu sorumluluğu geliştirdiğimizde Canlı site, tüm ekibin mantrası haline gelen en önemli şeydir. Bu, şu anda sahip oldukları müşteri deneyimidir ve yalnızca bir vergi değildir. Bu aslında insanların bizden saydığımız bir şey ve biz bununla gurur alıyoruz. Ürünümüzün ayırt edici bir özelliği olmalıdır.
Üretim telemetrisi hizmetinizin sinyalidir
Neredeyse her şeyin ters gidebileceği hızlı bir dünyada hayatta kalmak için harika uyarı sistemlerine ihtiyacımız var. Eyleme dönüştürülemez uyarılar, yedekli uyarılar veya aşırı uyarı birimleri tüm uyarıları yoksaymanıza neden olur. Çok fazla uyarı oluşturmak kolaydır, bu nedenle işlem gerçekten basit bir soruya indirgeniyor: Bu uyarı eyleme dönüştürülebilir mi? Bu, doğru müşteri sorunlarıyla ilgilenmemizi ve bunları mümkün olan en kısa sürede işlememizi sağlar.
Mühendislik ekibi eyleme dönüştürülebilir uyarılara sıfırlanırken, özellikle gece yarısı ortaya çıkan birçok sorunun en azından geçici olarak benzer düzeltmelere sahip olma eğiliminde olduğunu fark ettiler. Bunun sonucunda yük devretme ve kendi kendini iyileştirme konusunda daha iyi olan sistemlere odaklanıldı. Şimdi sorunlar ortaya çıkar, uyarılar oluşturun ve ardından mühendislik ekibinin düzeltmek için sabaha kadar beklemesi için kendilerini yeterince iyi düzeltin. Mühendislik ekibi geceleri diğer insanları ayakta tutan bir şeyler atsaydı bu olmazdı. Artık bu iyileştirmeleri yalnızca özellik hızının değil mühendislik geliştirme hızının da bir parçası olarak dengelemek için çalışıyor.
Özet
Canlı bir site kültürünü benimsemek, Microsoft'un yazılım oluşturma ve sunma şeklini etkiledi. Mühendislik ekiplerini güvenlik ve operasyonların önemli bir parçası haline getirerek kodumuzun kalitesi ve son kullanıcı deneyimi önemli ölçüde geliştirilmiştir. Operasyonların tam katılımcısı olmak, mühendisliği önemli bir paydaş haline getirerek daha iyi operasyonlar için tasarlanmış sistemlere neden olmuştur.