Büyük Ölçekli Platform Güvenilirliği Sağlama – Roblox Blog

Büyük Ölçekli Platform Güvenilirliği Sağlama – Roblox Blog


Herhangi bir ölçeklenebilir dağıtılmış platformu çalıştırmak, müşterilerin ihtiyaç duydukları şeye ihtiyaç duydukları anda sahip olmalarını sağlamak için güvenilirlik taahhüdü gerektirir. Bağımlılıklar, özellikle Roblox kadar büyük bir platformda oldukça karmaşık olabilir. Güvenilir hizmetler oluşturmak, bağımlılıkların karmaşıklığı ve durumu ne olursa olsun, verilen herhangi bir hizmetin kesintiye uğramaması anlamına gelir (örn. mevcut), hatasız çalışacaktır (yani yüksek kalite) ve hatasız (yani hata toleransı).

Güvenilirlik Neden Önemlidir?

Hesap Kimliği ekibimiz, oluşturduğumuz uyumluluk hizmetleri platformun temel bileşenleri olduğundan daha yüksek güvenilirliğe ulaşmaya kendini adamıştır. Bozuk uyum ciddi sonuçlara yol açabilir. Roblox’un doğal çalışmasını engellemenin maliyeti çok yüksektir ve bir arıza ve zayıflamış bir kullanıcı deneyiminden sonra kurtarmak için gereken ek kaynaklar vardır.

Güvenilirliğe tipik yaklaşım, öncelikle kullanılabilirliğe odaklanır, ancak bazı durumlarda terimler karıştırılır ve yanlış kullanılır. Kullanılabilirlik ölçümlerinin çoğu, yalnızca hizmetlerin çalışır durumda olup olmadığını değerlendirirken, bölüm toleransı ve tutarlılık gibi yönler bazen unutulur veya yanlış anlaşılır.

CAP teoremi uyarınca, herhangi bir dağıtılmış sistem bu üç yönden yalnızca ikisini garanti edebilir, bu nedenle uyumluluk hizmetlerimiz yüksek düzeyde kullanılabilir ve bölüm toleranslı olmak için bir miktar tutarlılığı feda eder. Bununla birlikte, hizmetlerimiz aşağıda açıklanan makul mimari değişikliklerle iyi bir tutarlılık elde etmek için çok az fedakarlık yaptı ve mekanizmalar buldu.

Daha yüksek güvenilirliğe ulaşma süreci, olaylar meydana gelmeden önce kusurları önlemek, bulmak, tespit etmek ve düzeltmek için sıkı ölçüm eşleştirme sürekli çalışma ile yinelemelidir. Ekibimiz aşağıdaki uygulamalarda güçlü bir değer belirledi:

  • Doğru ölçüm – Kalitenin müşterilere nasıl teslim edildiği ve bağımlılıkların kaliteyi bize nasıl sağladığı konusunda tam gözlemlenebilirlik oluşturun.
  • proaktif beklenti – Mimari incelemeler ve bağımlılık risk değerlendirmeleri gibi faaliyetler gerçekleştirin.
  • Düzeltmeye öncelik ver – Hizmetimiz ve hizmetimizle bağlantılı bağımlılıklar için olay raporu çözümüne daha fazla dikkat gösterin.

Daha yüksek güvenilirlik oluşturmak, bir kalite kültürü gerektirir. Ekibimiz zaten performans odaklı geliştirmeye yatırım yapıyordu ve bir sürecin başarısının benimsenmesine bağlı olduğunu biliyor. Ekip, bu süreci tam anlamıyla benimsemiş ve uygulamaları standart olarak uygulamıştır. Aşağıdaki şema, sürecin bileşenlerini vurgulamaktadır:

Büyük Ölçekli Platform Güvenilirliği Sağlama - Roblox Blog

Doğru Ölçümün Gücü

Metriklere daha derinlemesine dalmadan önce, Hizmet Düzeyi ölçümleriyle ilgili olarak yapılması gereken hızlı bir açıklama var.

  • SLO (Hizmet Seviyesi Hedefi), ekibimizin hedeflediği güvenilirlik hedefidir (yani %99,999).
  • SLI (Hizmet Düzeyi Göstergesi), belirli bir zaman çerçevesinde elde edilen güvenilirliktir (yani geçen Şubat ayında %99.975).
  • SLA (Hizmet Düzeyi Sözleşmesi), belirli bir zaman diliminde (yani haftada %99,99) tüketicilerimiz tarafından sunulması ve beklenen güvenilirliktir.

SLI, kullanılabilirliği (işlenmeyen veya eksik yanıt yok), hata toleransını (hizmet hatası yok) ve ulaşılan kaliteyi (beklenmeyen hata yok) yansıtmalıdır. Bu nedenle SLI’mızı, bir hizmete gönderilen toplam isteklere kıyasla başarılı yanıtların “Başarı Oranı” olarak tanımladık. Başarılı yanıtlar, zaman ve biçimde gönderilen isteklerdir, yani hayır

bağlantı, hizmet veya beklenmeyen hatalar meydana geldi.

Bu SLI veya Başarı Oranı, tüketicilerin (yani, müşterilerin) bakış açısından toplanır. Amaç, tüketicilerimize sunulan gerçek uçtan uca deneyimi ölçmek ve böylece SLA’ların karşılandığından emin olmamızı sağlamaktır. Bunu yapmamak, müşterilerimizle bağlantı kurmak için tüm altyapı endişelerini göz ardı eden yanlış bir güvenilirlik duygusu yaratacaktır. Tüketici SLI’sine benzer şekilde, herhangi bir potansiyel riski izlemek için bağımlılık SLI’sini topluyoruz. Uygulamada, tüm bağımlılık SLA’ları hizmet SLA’sı ile uyumlu olmalıdır ve bunlarla doğrudan bir bağımlılık vardır. Birinin başarısızlığı, hepsinin başarısızlığı anlamına gelir. Ayrıca hizmetin kendisinden (yani sunucudan) gelen metrikleri izliyor ve raporluyoruz ancak bu, yüksek güvenilirlik için pratik bir kaynak değil.

SLI’lere ek olarak, her derleme, CI iş akışımız tarafından raporlanan kalite metriklerini toplar. Bu uygulama, kalite kapılarının (yani kod kapsamı) güçlü bir şekilde uygulanmasına ve kodlama standardı uyumluluğu ve statik kod analizi gibi diğer anlamlı ölçümlerin raporlanmasına yardımcı olur. Bu konu daha önce başka bir makalede ele alındı, Performansa Dayalı Mikro Hizmetler Oluşturma. Güvenilirlik hakkında konuşurken kalitenin titizlikle gözetilmesi de eklenir, çünkü mükemmel puanlara ulaşmak için ne kadar çok yatırım yaparsak, sistemin olumsuz koşullarda başarısız olmayacağından o kadar emin oluruz.

Ekibimizde iki adet pano bulunmaktadır. Biri, hem Tüketici SLI’si hem de Bağımlılıklar SLI’si için tüm görünürlüğü sağlar. İkincisi, tüm kalite ölçümlerini gösterir. Her şeyi tek bir gösterge panosunda birleştirmek için çalışıyoruz, böylece önemsediğimiz tüm hususlar konsolide edilir ve herhangi bir zaman diliminde raporlanmaya hazır hale gelir.

Başarısızlığı Öngörün

Yapmak Mimari İncelemeler güvenilir olmanın temel bir parçasıdır. İlk olarak, fazlalığın olup olmadığını ve bağımlılıklar azaldığında hizmetin hayatta kalma araçlarına sahip olup olmadığını belirleriz. Tipik çoğaltma fikirlerinin ötesinde, hizmetlerimizin çoğu gelişmiş ikili önbellek hidrasyon teknikleri, ikili kurtarma stratejileri (yerel yük devretme gibi) veya veri kaybı stratejileri (işlem desteği gibi) uyguladı. Bu konular, başka bir blog girişini garanti edecek kadar kapsamlıdır, ancak sonuçta en iyi tavsiye, felaket senaryolarını dikkate alan fikirleri uygulamak ve herhangi bir performans cezasını en aza indirmektir.

Öngörülmesi gereken bir diğer önemli husus, bağlantıyı iyileştirebilecek herhangi bir şeydir. Bu, istemciler için düşük gecikme süresi konusunda agresif olmak ve önbellek kontrol teknikleri, sepetler ve zaman aşımları, devre kesiciler ve yeniden denemeler için performans ilkeleri kullanarak onları çok yüksek trafiğe hazırlamak anlamına gelir. Bu uygulamalar, HTTP ve gRPC’deki önbellekler, mağazalar, kuyruklar ve birbirine bağımlı istemciler dahil tüm istemciler için geçerlidir. Aynı zamanda, hizmetlerden gelen sağlıklı sinyallerin iyileştirilmesi ve durum denetimlerinin tüm kapsayıcı düzenlemelerinde önemli bir rol oynadığının anlaşılması anlamına gelir. Hizmetlerimizin çoğu, durum denetimi geri bildiriminin bir parçası olarak bozulma için daha iyi sinyaller verir ve sağlıklı sinyaller göndermeden önce tüm kritik bileşenlerin çalışır durumda olduğunu doğrular.

Hizmetleri kritik ve kritik olmayan parçalara ayırmanın, en önemli işlevselliğe odaklanmak için yararlı olduğu kanıtlanmıştır. Eskiden aynı hizmette yalnızca yönetici uç noktalarına sahiptik ve bunlar sık ​​kullanılmasa da genel gecikme ölçümlerini etkiledi. Onları kendi hizmetlerine taşımak, her metriği olumlu yönde etkiledi.

Bağımlılık Riski Değerlendirmesi bağımlılıklarla ilgili olası sorunları belirlemek için önemli bir araçtır. Bu, düşük SLI’li bağımlılıkları belirlediğimiz ve SLA hizalaması istediğimiz anlamına gelir. Bu bağımlılıklar, entegrasyon adımları sırasında özel dikkat gerektirir, bu nedenle, yeni bağımlılıkların planlarımız için yeterince olgun olup olmadığını kıyaslamak ve test etmek için fazladan zaman ayırıyoruz. İyi bir örnek, Roblox Hizmet Olarak Depolama için sahip olduğumuz erken benimsemedir. Bu hizmetle entegrasyon, bulguları ve geri bildirimleri iletmek için hata bildirimlerinin dosyalanması ve periyodik senkronizasyon toplantıları gerektiriyordu. Tüm bu çalışmalar, kaynağını ve önceliklerini hızlı bir şekilde belirleyebilmemiz için “güvenilirlik” etiketini kullanır. Karakterizasyon, yeni bağımlılığın bizim için hazır olduğuna güvenene kadar sık ​​sık gerçekleşti. Bu ekstra çalışma, bağımlılığı ortak bir amaç için birlikte hareket etmeyi sağlamayı umduğumuz gerekli güvenilirlik düzeyine çekmeye yardımcı oldu.

Yapıyı Kaosa Getirin

Olayların yaşanması asla arzu edilmez. Ancak bunlar gerçekleştiğinde, daha güvenilir olmak için toplanacak ve öğrenilecek anlamlı bilgiler vardır. Ekibimiz, şirket genelindeki tipik raporun üzerinde ve ötesinde oluşturulmuş bir ekip olay raporuna sahiptir, bu nedenle etkilerinin ölçeğinden bağımsız olarak tüm olaylara odaklanırız. Kök nedeni ararız ve gelecekte bunu hafifletmek için tüm çalışmalara öncelik veririz. Bu raporun bir parçası olarak, diğer ekipleri yüksek öncelikli bağımlılık olaylarını düzeltmeye, uygun çözümle takip etmeye, geriye dönük incelemeye ve bizim için geçerli olabilecek kalıpları aramaya çağırıyoruz.

Takım üretir Hizmet Başına Aylık Güvenilirlik Raporu burada açıklanan tüm SLI’leri, güvenilirlik nedeniyle açtığımız tüm biletleri ve hizmetle ilgili olası olayları içerir. Bu raporları oluşturmaya o kadar alışkınız ki, bir sonraki doğal adım, bunların çıkarılmasını otomatik hale getirmektir. Bu periyodik aktiviteyi yapmak önemlidir ve gelişimimizde güvenilirliğin sürekli izlendiğini ve dikkate alındığını hatırlatır.

Büyük Ölçekli Platform Güvenilirliği Sağlama - Roblox Blog

Enstrümantasyonumuz, bilinen ve beklenen sorunlar oluştuğunda mümkün olan en kısa sürede çağrılabilmemiz için özel ölçümler ve iyileştirilmiş uyarılar içerir. Yanlış pozitifler dahil tüm uyarılar her hafta gözden geçirilir. Bu noktada, tüm belgelerin cilalanması önemlidir, böylece tüketicilerimiz uyarılar tetiklendiğinde ve hatalar meydana geldiğinde ne bekleyeceklerini bilir ve daha sonra herkes ne yapacağını bilir (örneğin, çalışma kitapları ve entegrasyon yönergeleri hizalanır ve sık sık güncellenir).

sonuçta, kalitenin kültürümüzde benimsenmesi, daha yüksek güvenilirliğe ulaşmada en kritik ve belirleyici faktördür.. Günlük işlerimize uygulanan bu uygulamaların şimdiden nasıl sonuç verdiğini gözlemleyebiliriz. Ekibimiz güvenilirliğe takıntılıdır ve bu bizim en önemli başarımızdır. Potansiyel kusurların yaratabileceği etki ve bunların ne zaman ortaya çıkabileceği konusundaki farkındalığımızı artırdık. Bu uygulamaları uygulayan hizmetler, sürekli olarak SLO’larına ve SLA’larına ulaşmıştır. Yaptığımız tüm işleri takip etmemize yardımcı olan güvenilirlik raporları, ekibimizin yaptığı işin bir kanıtıdır ve diğer ekipleri bilgilendirmek ve etkilemek için paha biçilmez derslerdir. Güvenilirlik kültürü bu şekilde platformumuzun tüm bileşenlerine dokunuyor.

Daha yüksek güvenilirliğe giden yol kolay değildir, ancak insanların nasıl bir araya geldiğini yeniden tasarlayan güvenilir bir platform oluşturmak istiyorsanız bu gereklidir.


Alberto, Roblox’ta Hesap Kimliği ekibinde Baş Yazılım Mühendisidir. Birçok AAA oyun başlığında ve yüksek düzeyde ölçeklenebilir mimarilere güçlü bir şekilde odaklanan sosyal medya platformlarında kredileri ile uzun süredir oyun endüstrisinde bulunuyor. Şimdi en iyi geliştirme uygulamalarını uygulayarak Roblox’un büyüme ve olgunluğa ulaşmasına yardımcı oluyor.


Kaynak : https://blog.roblox.com/2022/04/delivering-large-scale-platform-reliability/

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.