Kaos Mühendisliği Nedir?

Perform Yazılım
6 min readNov 19, 2021

--

Kaos mühendisliği, rastgele kesintiler karşısında esnekliğini doğrulamak için kasıtlı olarak başarısızlık ve hatalı senaryolar sunan dağıtılmış yazılımı test etme yöntemidir. Bu kesintiler, uygulamaların öngörülemeyen şekillerde yanıt vermesine ve baskı altında kırılmasına neden olabilir.

Tahmin edebileceğiniz aksilikler için test yapmak çok önemlidir. Ancak dijital dönüşüm ve bulutta yerel mimarinin getirdiği karmaşıklık nedeniyle ekiplerin, uygulamaların üretimin “kaosuna” dayanabilmesini sağlayacak bir yola ihtiyacı vardır. Kaos mühendisliği, kuruluşların her koşulda ayakta kalabilen sağlam, esnek bulut tabanlı uygulamalar sunabilmesi için bu ihtiyaca yanıt verir.

Uygulayıcılar, istikrarsız davranışları test etmek için yazılımı kontrollü, simüle edilmiş bir krize tabi tutarlar. Kriz, teknik, doğal veya kötü niyetli olaylar, örneğin veri merkezi kullanılabilirliğini etkileyen bir deprem veya uygulamalara ve web sitelerine bulaşan bir siber saldırı olabilir. Yazılım performansı düştüğünde veya başarısız olduğunda, kaos mühendislerinin bulguları, geliştiricilerin koda esneklik eklemesini sağlar, böylece uygulama acil bir durumda bozulmadan kalır.

Kaos mühendisleri testlerinde kendilerine güvenleri arttıkça daha fazla değişken değiştirir ve felaketin kapsamını genişletirler. Birçok felaket senaryosu ve sonucu, kaos mühendislerinin uygulamalara ve mikro hizmetlere ne olduğunu daha iyi modellemelerine olanak tanır ve bu da onlara, mükemmel yazılım ve bulutta yerel altyapı için geliştiricilerle paylaşmaları için artan zeka sağlar.

Kaos mühendisliğinin tarihi:

Netflix, zorunluluktan dolayı kaos mühendisliğine öncülük etti. 2009'da çevrimiçi video sağlayıcısı, eğlencesini büyüyen bir kitleye ulaştırmak için AWS bulut altyapısına geçti. Ancak bulut, artan bağlantılar ve bağımlılıklar gibi yeni karmaşıklıklar getirdi. Eğlence firmasının veri merkezlerinde gördüğü yük dengeleme sorunlarından daha fazla belirsizlik yarattı. Buluttaki herhangi bir temas noktası başarısız olursa, izleyicilerin deneyiminin kalitesi düşebilir. Bu nedenle Netflix organizasyon karmaşıklığını azaltmaya ve üretim kalitesini yükseltmeye çalıştı.

2010'da ise Netflix, bulut hizmetlerini nasıl ele aldığını test etmek için prodüksiyon yazılımı örneklerini rastgele kapatmak için bir teknolojiyi tanıttı. Bunu da bir sunucu odasında bir maymunu serbest bırakmaya benzeterek adını “Chaos Monkey” koydu.

Kaos mühendisliği Netflix gibi kuruluşlarda olgunlaştı ve Gremlin (2016 https://gremlin.com/) gibi teknolojilerin daha hedefli ve bilgiye dayalı hale gelmesini sağladı. Bilim, kendilerini bulut yazılımlarını ve etkileşim kurdukları şirket içi sistemleri bozmaya adayan ve onları esnek hale getirmeye adayan uzmanlaşmış kaos mühendisleri üretti. Şimdi, kaos mühendisliği yerleşik bir meslektir ve bulut yazılımını stabilize etmek için yönetilen sorunları karıştırır.

Kaos mühendisliği nasıl çalışır?

Kaos mühendisliği, yazılımın beklenen davranışını anlamakla başlar.

1- Hipotez.

Mühendisler kendilerine bir değişkeni değiştirirlerse ne olacağını sorarlar. Hizmetleri rastgele sonlandırırlarsa, hizmetin kesintisiz devam edeceğini varsayarlar. Soru ve varsayım bir hipotez oluşturur.

2- Test yapmak.

Hipotezi test etmek için, kaos mühendisleri, yük testiyle birlikte simüle edilmiş belirsizliği düzenler ve uygulamayı sunan hizmetlerde, altyapıda, ağlarda ve cihazlarda karışıklık belirtilerini izler. Yığındaki herhangi bir başarısızlık hipotezi bozar.

3- Patlama yarıçapı.

Mühendisler, arızaları yalıtarak ve inceleyerek, kararsız bulut koşullarında neler olduğunu anlayabilir. Testin neden olduğu herhangi bir hasar veya etki, “patlama yarıçapı” olarak bilinir. Kaos mühendisleri, testleri kontrol ederek patlama yarıçapını yönetebilir.

4- Analizler.

Keşifler, yazılım geliştirme ve teslim sürecine girdiler oluşturur, bu nedenle yeni yazılımlar ve mikro hizmetler, öngörülemeyen olaylara daha iyi dayanacaktır.

Üretim ortamlarına verilen zararı azaltmak için, kaos mühendisleri üretim dışı bir ortamda başlar, ardından kontrollü bir şekilde yavaş yavaş üretime uzanır. Bir kez kurulduktan sonra, kaos mühendisliği hizmet düzeyi göstergeleri ve hedeflerine ince ayar yapmanın, uyarıları iyileştirmenin ve daha verimli panolar oluşturmanın etkili bir yolu haline gelir, böylece ortamınızı doğru bir şekilde gözlemlemek ve analiz etmek için ihtiyacınız olan tüm verileri topladığınızı bilirsiniz.

Kaos mühendisliğini kim kullanır?

Kaos mühendisliği genellikle DevOps içindeki küçük ekiplerden kaynaklanır ve genellikle hem üretim öncesi hem de üretim ortamlarında çalışan uygulamaları içerir. Birçok sisteme dokunabileceğinden, kaos mühendisliğinin organizasyon genelinde grupları ve paydaşları etkileyen geniş etkileri olabilir.

Donanımı, ağları ve bulut altyapısını kapsayan bir kesinti, ağ ve altyapı mimarları, risk uzmanları, güvenlik ekipleri ve hatta satın alma görevlilerinin girdi ve katılımını gerektirebilir ki bu da iyi bir şeydir. Testin kapsamı ne kadar büyük olursa, kaos mühendisliği o kadar kullanışlı olur.

Küçük bir ekip genellikle kaos mühendisliği çabasına sahip olup yönetse de, genellikle ve zaten küçük ekiplerden girdi gerektiren ve küçük ekiplere fayda sağlayan bir yöntemdir.

Kaos testinin faydaları:

Uygulamalarınızın sınırlarını test ederek elde edebileceğiniz iç görüler, geliştirme ekipleriniz ve genel işiniz için pek çok fayda sağlar. İşte sağlıklı, iyi yönetilen bir kaos mühendisliği uygulamasının sadece birkaç faydası.

  • Dayanıklılığı ve güvenilirliği artırır:

Kaos testi, yazılımın stres altında nasıl performans gösterdiği ve nasıl daha dayanıklı hale getirileceği konusunda kuruluşun zekasını zenginleştirir.

  • Yeniliği hızlandırır:

Kaos testinden elde edilen zeka, yazılımı daha dayanıklı hale getiren ve üretim kalitesini iyileştiren tasarım değişikliklerini uygulayabilen geliştiricilere geri döner.

  • İşbirliğini geliştirir:

Avantajları gören tek grup geliştiriciler değildir. Kaos mühendislerinin deneylerinden elde ettikleri iç görüler, teknik grubun uzmanlığını yükselterek yanıt sürelerine ve daha iyi işbirliğine yol açar.

  • Olay yanıtını hızlandırır:

Bu ekipler, hangi arıza senaryolarının mümkün olduğunu öğrenerek sorun giderme, onarım ve olay müdahalesini hızlandırabilir.

  • Müşteri memnuniyetini artırır:

Artan esneklik ve daha hızlı yanıt süreleri, daha az arıza süresi anlamına gelir. Geliştirme ve SRE ekiplerinden daha fazla yenilik ve işbirliği, verimlilik ve yüksek performansla yeni müşteri taleplerini hızla karşılayan daha iyi yazılım anlamına gelir.

  • İş sonuçlarını artırır:

Kaos testi ayrıca daha hızlı değer elde etme, zaman, para ve kaynak tasarrufu sağlayarak ve daha iyi bir sonuç üreterek bir kuruluşun rekabet avantajını genişletebilir.Bir kuruluşun yazılımı ne kadar esnek olursa, tüketiciler ve ticari müşteriler, dikkatleri dağılmadan veya hayal kırıklığına uğramadan hizmetlerinden o kadar fazla yararlanabilir.

Kaos mühendisliğinin zorlukları ve tuzakları:

Kaos testinin faydaları açık olmasına rağmen, üzerinde düşünülerek yapılması gereken bir uygulamadır. İşte en önemli endişeler ve zorluklar.

  • Gereksiz hasar:

Kaos testiyle ilgili en büyük endişe, gereksiz hasar potansiyelidir. Kaos mühendisliği, haklı testlerin izinlerini aşan gerçek dünya kaybına yol açabilir. Uygulama güvenlik açıklarını ortaya çıkarmanın maliyetini sınırlamak için kuruluşlar, belirlenen patlama yarıçapını aşan testlerden kaçınmalıdır. Amaç, patlama yarıçapını kontrol etmektir, böylece gereksiz yere yeni arıza noktaları oluşturmadan arızanın nedenini tam olarak belirleyebilirsiniz.

  • Gözlenebilirlik eksikliği:

Bu kontrolü kurmak, söylemek ve yapmaktan daha kolay olabilir. Bir patlama yarıçapının etkileyebileceği tüm sistemlerde uçtan uca gözlemlenebilirlik ve izleme eksikliği yaygın bir sorundur. Kapsamlı gözlemlenebilirlik olmadan, kritik bağımlılıkları kritik olmayan bağımlılıklara karşı anlamak veya düzeltmelere öncelik vermek için bir hatanın veya bozulmanın gerçek iş etkisini anlamak için yeterli bağlama sahip olmak zor olabilir. Görünürlük eksikliği, ekiplerin bir sorunun kesin kök nedenini belirlemesini de zorlaştırabilir ve bu da düzeltme planlarını karmaşıklaştırabilir.

  • Belirsiz başlangıç sistemi durumu:

Diğer bir sorun, test çalıştırılmadan önce sistemin başlangıç durumunun net bir resmine sahip olmaktır. Bu netlik olmadan ekipler, testin gerçek etkilerini anlamakta zorluk çekebilir. Bu, kaos testinin etkinliğini azaltabilir ve probleme açık sistemleri daha büyük risk altına sokabilir ve patlama yarıçapını kontrol etmeyi zorlaştırabilir.

Kaos mühendisliğine nasıl başlanır?

Herhangi bir bilimsel deneyde olduğu gibi, kaos mühendisliğine başlamak biraz hazırlık, organizasyon ve sonuçları izleme ve ölçme yeteneği gerektirir.

1- Ortamınızın başlangıç durumunu bilin.
İyi kontrol edilen bir kaos testi planlamak, testin etkilerini anlayabilmek için ortamınızın uygulamalarını, mikro hizmetlerini ve mimari tasarımını anlamalısınız. Son durumla karşılaştırabileceğiniz bir temele sahip olmak, test sırasında izleme ve sonrasında sonuçları analiz etmek için bir plan oluşturur.

2- Neyin yanlış gidebileceğini sorun ve bir hipotez kurun.
Sistemin başlangıç durumu hakkında net bir fikir edinerek, neyin yanlış gidebileceğini sorun. Hizmet düzeyi göstergelerini ve hizmet düzeyi hedeflerini anlayın ve bunları sistemin baskı altında nasıl çalışması gerektiğine dair bir varsayım oluşturmak için bir temel olarak kullanın.

3- Her seferinde bir değişken kaosu tanıtın.
Patlama yarıçapını kontrol altında tutmak için, sonuçların etkisini anlayabilmek için her seferinde yalnızca biraz kaos uygulayın. Deneyi belirli koşullar altında iptal etmeye hazır olun, böylece üretim yazılımına hiçbir zarar gelmez ve bir şeyler ters giderse geri alma planınız da olur. Test sırasında, sistem esnekliğini geliştirmek için odaklanılacak alanları keşfetmek için hipotezi çürütmeye çalışın.

4- Sonuçları izleyin ve kaydedin.

Uygulama davranışındaki tüm nüansları kaydetmek için deneyi izleyin. Uygulamanın nasıl yanıt verdiğini ve testlerin ekiplerin beklentilerini karşılayıp karşılamadığını görmek için sonuçları analiz edin. Yavaşlamaların ve arızaların kesin kök nedenlerini anlamak için araştırma araçlarını kullanın.

Kaosu kontrol etmek:

Gremlin (https://www.gremlin.com/) gibi çözümler, kaos mühendisliği deneylerini planlamak ve yürütmek için önemli yönetim araçları sağlar. Ekiplerin bunları aynı veya daha büyük yığınların gelecekteki deneylerine uygulayabilmeleri için deneyleri tekrarlanabilir ve ölçeklenebilir hale getirir.

  • Dynatrace’in otomatik ve akıllı gözlemlenebilirliği, kaos testinin etkilerine ilişkin iç görüler sağlar, böylece mühendisler kaos deneylerini dikkatle yönlendirebilir. Dynatrace, patlama yarıçapını izlemek için kaos deneylerinden geçen sistemleri gözlemler. Tam yazılım yığını genelinde görünürlük ile Dynatrace, kaos testinin maruz kaldığı hataların temel nedenini izole etmek için çok önemli bağlamsal analiz sağlar.
  • Dynatrace’den etkin izleme, kaos testi yapan mühendisler için temel bir panoramik bir bakış açısı sunarak, onların bağımlılıkları anlamalarına ve kesintilerin sistemi genel olarak nasıl etkileyeceğini tahmin etmelerine yardımcı olur. Kaos amaçlanandan daha ileri giderse, Dynatrace’ten alınan bilgiler, ekiplerin uygulamanın işlevselliğine yönelik herhangi bir fiili zararı hızla düzeltmesine yardımcı olur.

Kuruluşlar, dijital dönüşümün herhangi bir aşamasında uygulama esnekliği elde edebilir ve kaos mühendisliği harika bir araçtır. Bununla birlikte, ateşle oynamadan önce, bu yaklaşımın getirebileceği çok sayıda arıza senaryosunu tahmin etmek ve bunlarla başa çıkmak için doğru önlemleri almak çok önemlidir.

Detaylı bilgi için lütfen tıklayınız.

--

--

Perform Yazılım
Perform Yazılım

No responses yet