Ana içeriğe geç

Chaos Engineering

Türkçe karşılığı
kaos mühendisliği
Okunuşu
keyos encinıring

Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/chaos-engineering

Kısaca

Chaos engineering, bir sisteme sunucu çökertmek gibi kasıtlı arızalar enjekte ederek sistemin beklendiği gibi çalışmaya devam ettiğini doğrulama pratiğidir.

Chaos engineering nedir?

Chaos engineering, gerçek kesintilere yol açmadan önce zayıflıkları bulmak için sistemin parçalarını bilerek bozan kontrollü deneyler yürütme disiplinidir. Tipik deneyler bir sunucuyu kapatır, konteynerleri öldürür, ağ gecikmesi ekler, bir diski doldurur ya da bir bağımlılığın hata döndürmesini sağlar. Uygulama, 2010'ların başında Netflix'in kendi canlı sunucularını rastgele sonlandırmaya başlayarak akış hizmetinin bu kayıptan sağ çıkabildiğinden emin olmasıyla tanınır hale geldi.

Her deney bilimsel yöntemi izler. Önce kararlı durumu, yani ödeme başarı oranı gibi ölçülebilir normal davranışı tanımlarsınız; sonra bir hipotez kurarsınız, örneğin bir veritabanı replikası arızalanırsa sitenin SLO'su içinde kalacağı; ardından arızayı enjekte eder ve sonuçları karşılaştırırsınız. Deneyler küçük başlar, bir test ortamında ya da sınırlı bir etki alanıyla (blast radius) yapılır ve kullanıcılar etkilenirse deneyi anında durduran bir iptal anahtarı bulunur.

Bir yangın tatbikatı gibidir: bir çıkışın tıkalı olduğunu keşfetmek için gerçek bir yangını beklemek yerine kontrollü koşullarda pratik yapar ve ters giden şeyi düzeltirsiniz. Chaos engineering, arızaların sürekli yaşandığı ve etkileşimlerin tamamen akıl yürütülemeyecek kadar karmaşık olduğu, Kubernetes üzerindeki mikroservisler gibi dağıtık sistemlerde en yararlıdır. Birçok ekip ayrıca, mühendislerin birlikte arıza enjekte ettiği ve olay müdahalelerini pratik ettiği planlı oturumlar olan game day'ler düzenler.

Chaos engineering sıklıkla yük testi ve stres testiyle karıştırılır. Yük testi bir sistemin beklenen trafik altında nasıl performans gösterdiğini kontrol eder, stres testi sistemi sınırlarının ötesine iter; chaos engineering ise trafiği normal tutarak dayanıklılığı, yani hata toleransını, failover'ı, yeniden denemeleri, zaman aşımlarını ve uyarıları test etmek için bileşenleri bozar. Amaç kaos için kaos değil, sistemin arızayı zarifçe ele aldığına dair güvendir.

Önemli noktalar

  • Chaos engineering, gizli zayıflıkları ortaya çıkarmak için bilerek gerçek arızalar enjekte eder.
  • Her deney ölçülebilir bir kararlı durumdan ve net bir hipotezden başlar.
  • Deneyler etki alanını küçük tutar ve istenen her an iptal edilebilir.
  • Failover, yeniden denemeler, zaman aşımları ve uyarılar gibi dayanıklılık özelliklerini test eder.
  • Yük testi trafik ekler; chaos engineering normal trafik altında bileşenleri bozar.

Örnek

İki basit kaos deneyibash
# Hypothesis: the web service stays healthy if one of its pods dies
kubectl get pods -l app=web

# Inject the failure: delete one pod at random
kubectl delete "$(kubectl get pods -l app=web -o name | shuf -n 1)"

# Add 200 ms of network latency on a test server (Linux)
sudo tc qdisc add dev eth0 root netem delay 200ms

# Watch error rates and latency, then remove the injected delay
sudo tc qdisc del dev eth0 root netem

Sık sorulan sorular

Chaos engineering canlı ortamda yapılır mı?

Olgun ekipler deneyleri canlı ortamda çalıştırır, çünkü gerçek trafik ve gerçek yapılandırmalar yalnızca orada vardır. Test ortamlarında başlarlar, etki alanını kullanıcıların ya da sunucuların küçük bir bölümüyle sınırlarlar ve temel metrikler bozulursa otomatik olarak dururlar.

Chaos engineering ile test arasındaki fark nedir?

Bir test bilinen bir durumu kontrol eder ve ya geçer ya da başarısız olur. Chaos engineering ise karmaşık bir sistemin bir şey bozulduğunda nasıl davrandığını araştıran bir deneydir ve çoğu zaman kimsenin test yazmayı düşünmediği sorunları ortaya çıkarır.

Game day nedir?

Game day, bir ekibin, örneğin tüm bir availability zone'u kapatmak gibi arızalara bilerek yol açtığı ve bunları algılayıp onlardan kurtulmayı pratik ettiği planlı bir oturumdur. Hem sistemi hem de ekibin olay müdahalesini test eder.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar