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, bir arıza ve zayıflamış bir kullanıcı deneyiminden sonra kurtarmak için gereken ek kaynaklarla birlikte çok yüksektir.
Güvenilirliğe yönelik 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 bazı tutarlılıklardan fedakarlık 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ışmasıyla 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:
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 yapı, CI iş akışımız tarafından raporlanan kalite ölçümlerini 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üvenilirlikten bahsederken kalitenin özenle 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. One, hem Consumers SLI hem de Dependencies SLI 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ştirmeye ç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
iş 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 kuyrukları gibi) veya veri kaybı stratejileri (işlemsel destek 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. Ayrıca, 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. Aynı hizmette yalnızca yönetici uç noktalarına sahiptik ve sık kullanılmasalar da genel gecikme ölçümlerini etkilediler. 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'lı 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 olması 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.
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üketicilerimizin uyarılar tetiklendiğinde ve hatalar meydana geldiğinde ne bekleyeceklerini bilmeleri ve ardından herkesin ne yapması gerektiğini bilmeleri için tüm belgelerin cilalanması önemlidir (örneğin, çalışma kitapları ve entegrasyon yönergeleri sık sık hizalanır ve güncellenir).
Sonuç olarak, 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. Yüksek düzeyde ölçeklenebilir mimarilere güçlü bir şekilde odaklanan birçok AAA oyun başlığı ve sosyal medya platformunda kredi ile uzun süredir oyun endüstrisinde yer almaktadır. Şimdi en iyi geliştirme uygulamalarını uygulayarak Roblox'un büyüme ve olgunluğa ulaşmasına yardımcı oluyor.
Sonrası Büyük Ölçekli Platform Güvenilirliği Sağlama İlk çıktı Roblox Blogu.
- "
- a
- Hakkımızda
- Hesap
- Başarmak
- elde
- faaliyetler
- etkinlik
- ilave
- Ek
- Benimseme
- ters
- Bireysel Üyelik Sözleşmesi
- Türkiye
- zaten
- analiz
- Başka
- tahmin
- uygulamalı
- Tamam
- Uygulanması
- yaklaşım
- mimari
- etrafında
- göre
- ilişkili
- Dikkat
- otomatikleştirmek
- kullanılabilirliği
- mevcut
- farkındalık
- Çünkü
- önce
- olmak
- altında
- kıyaslama
- İYİ
- Ötesinde
- Blog
- getirmek
- Böcek
- inşa etmek
- çağrı
- hangi
- durumlarda
- Sebeb olmak
- Çekler
- istemciler
- kod
- kodlama
- toplamak
- nasıl
- işlemek
- taahhüt
- taahhüt
- ortak
- iletişim kurmak
- karşılaştırıldığında
- uyma
- bileşenler
- koşullar
- güven
- emin
- Sosyal medya
- Bağlantı
- Düşünmek
- sürekli
- tüketici
- Tüketiciler
- Konteyner
- çekirdek
- olabilir
- yaratmak
- çevrimiçi kurslar düzenliyorlar.
- Künye
- kritik
- Kültür
- görenek
- Müşteriler
- gösterge paneli
- veri
- derin
- teslim edilen
- teslim
- sağlıyor
- talepleri
- bağlıdır
- Belirlemek
- gelişme
- direkt
- felaket
- dağıtıldı
- aşağı
- tahrik
- sırasında
- Erken
- son uca
- mühendis
- özellikle
- herkes
- her şey
- örnek
- mükemmel
- beklemek
- beklenen
- deneyim
- kapsamlı, geniş
- Başarısızlık
- geribesleme
- Ad
- sabit
- odak
- odaklanır
- odaklanma
- takip et
- takip etme
- Airdrop Formu
- bulundu
- itibaren
- tam
- fonksiyonel
- işlevsellik
- temel
- gelecek
- oyun
- Gates,
- üreten
- gol
- Tercih Etmenizin
- Büyüme
- garanti
- kuralları yenileyerek
- olmak
- olmuş
- Sağlık
- yardım et
- yardım
- yardımcı olur
- okuyun
- Yüksek
- daha yüksek
- özeti
- büyük ölçüde
- Ne kadar
- HTTPS
- fikirler
- belirlemek
- Kimlik
- darbe
- uygulamak
- uygulanan
- önemli
- iyileştirmek
- gelişmiş
- geliştirme
- Diğer
- içerir
- Dahil olmak üzere
- artmış
- sanayi
- etkilemek
- bilgi
- Altyapı
- bütünleşme
- Niyet
- yatırım
- IT
- kendisi
- Bilmek
- bilinen
- ÖĞRENİN
- seviye
- küçük
- yerel
- Uzun
- Bakın
- yapmak
- uygun
- Önemlidir
- olgun
- olgunluk
- anlam
- anlamlı
- anlamına geliyor
- ölçmek
- medya
- toplantılar
- Metrikleri
- karışık
- Daha
- çoğu
- hareketli
- Doğal (Madenden)
- gerekli
- yine de
- işletmek
- operasyon
- orkestrasyon
- sipariş
- Diğer
- tüm
- kendi
- Bölüm
- İnsanlar
- performans
- parçalar
- ağladım
- platform
- Platformlar
- OYNA
- Nokta
- Bakış açısı
- politikaları
- pozitif
- mümkün
- potansiyel
- güç kelimesini seçerim
- uygulama
- mevcut
- Anapara
- öncelik
- sorunlar
- süreç
- kalite
- Hızlı
- hızla
- ulaşmak
- makul
- Kurtarmak
- kurtarma
- yansıtmak
- ilişkin
- güvenilir
- rapor
- Raporlar
- isteklerinizi
- gereklidir
- Kaynaklar
- Yorumları
- Risk
- yol
- Roblox
- Rol
- kök
- koşu
- aynı
- ölçeklenebilir
- ölçek
- duyu
- hizmet
- Hizmetler
- benzer
- beri
- tek
- So
- Sosyal Medya
- sosyal medya
- sosyal medya platformları
- Yazılım
- Yazılım Mühendisi
- biraz
- özel
- durmak
- standart
- Durum
- mağaza
- stratejileri
- güçlü
- başarı
- başarılı
- destek
- sistem
- konuşma
- takım
- teknikleri
- şartlar
- test
- The
- bu nedenle
- üç
- bilet
- zaman
- süre
- birlikte
- hata payı
- araç
- konu
- Konular
- iz
- trafik
- anlayış
- us
- değer
- doğrulamak
- Görüntüle
- görünürlük
- hafta
- Ne
- olup olmadığını
- süre
- olmadan
- İş
- çalışma
- olur