Hizmet Dayanıklığı Arttırmada 4 Pratik Adım

Hizmet Dayanıklığını Arttırmada 4 Pratik Adım

Hizmet dayanıklığı sistemlerinizde gelişebilecek olası performans hatalarını hızlı bir şekilde önceden belirleyip azaltabilmenizi sağlar. Böylece hizmetinizin dayanıklığını arttırmada ilk adımı atmış olursunuz.

Eskiden kullanılan yazılımların çalışabilmesi için sadece bir web sunucusunun ve veritabanının olması yeterliydi. Ancak, modern yazılımlarda sistemler çok daha karmaşık bir oluşumdur. Bugünlerde yazılım tasarımcıları, genel ve özel cloud, sunucu sanallaştırması ve daha birçok karmaşıklarla uğraşıyor.

Hem eski tür hem de yeni tür yazılımlar başarısız olabilmektedir. Ama eski tarzdaki uygulamalar için esnek yazılım oluşturmak modern yazılımlara kıyasla daha kolaydı.

Resilient ”esnek” sistemin teknik anlamı, başarısız olmasına rağmen müşteri ve kullanıcı tarafından işlevselliğini koruyan sistemdir. Dayanıklılığı anlamak için örneğin seller, kuraklık veya yangınlardan kaçabilen çevre ekosistemi düşünebilirsiniz. Hizmet dayanıklığı sağlayacak esnek bir tasarım, ortalama onarım süresini iyileştirmek için tasarlanmıştır.

Hizmet dayanıklığı geliştirmenizi sağlayacak 4 teknik:

1. Yollanan güncellemeleri uygulayın

10 veya 100 sunucu çalıştırdığınızda hepsini aynı anda güncellemeyin. Bunun yerine, her seferinde sadece bir sunucuyu güncelleyerek durumunu takip edin. Microsoft’ta Yazılımı Nasıl Test Ediyoruz kitabında, öncelikle yakın zamanda güncellenmiş sunucuların sadece dahili çalışan sunuculara yönlendirmeniz önerilir. Tasarlanmış sürümün yalnızca bir tanesinin stabil olduğuna karar verildiğinde müşterilere bırakılması tavsiye edilir. Bu sayede ödeme yapan müşteriler en stabil sürümü görebilmektedir. Bu süreç boyunca çalışanlar aslında beta testçileri olarak görev alır.

Kanarya dağıtımı olarak da bilinen bu yöntem, ödeme yapan müşteriye sorunlar yansımadan belirlenebilmesini sağlar. Genel sürüm yayınlanmadan önce çözülmesi gereken bir performans sorununu gösteren her şeyi toplamanız ve loglamanız gereklidir. Buna ek, otomatik izlemeden, raporlama yazılımından ve beta kullanıcılarınızdan gelen geri bildirimleri not almalısınız. Böylece, tekrardan test yapmanıza gerek kalmadan sorunları tanımlayabilirsiniz.

2. İşlevselliği yeniden deneyin ve hizmetleri asenkron hale getirin

Eski yöntemli geleneksel web hizmetleri eş zamanlı bir sisteme sahiptir. İstek gönderdikten sonra yanıtın gelmesi beklenir. Ancak eş zamanlı sistemlerde bekleme süreleri çok uzun olabilmektedir. Herhangi bir girişim başarısız olduğunda, işlemlerin tamamı zaman aşımı ve başarısızlık riskleriyle karşı karşıya kalır.

Hizmet esnekliğini sağlamanın bir başka yolu da bekleme süresinin bağlantısını kesmektir. Açık kaynak veritabanları örneğin Redis bağlantıyı otomatik keser. Redis, bilgileri iletmeden önce bir sunucunun veritabanı yanıtlarının doğru olduğundan emin olmak için güncel olmayan bilgileri hızla sunucuya geri gönderir. Böylece, sunucu veritabanından yanıt beklerken fazaldan bekleme süresini keser.

3. Üretimde sentetik işlemlerle test yapın

Gözlemlenebilirlik problemi: Elle test edilip her şeyin normal ve yolunda gözükmesine denir.

Bir destek mühendisi, hataların kaynağını ve zamanını belirleyebilen bir test komut dosyası oluşturdu. BU şekilde, loglama yapılırken zaman aşımına uğrama sorununun çözülmesini sağladı.

Sentetik işlemler: Üretimde çalışan ve kullanıcı deneyimi bilgileri sağlayan küçük test komut dosyalarına denir. Bazı çerçeveler bunları kullanıma hazır verir. Ancak bazıları bir test aracına ihtiyaç duyar. 

Ancak bu teknik tüm uygulamalarda işe yaramaz. Sentetik işlemlerin eklenmesi, diğer projelere daha fazla zaman harcayabilecek zaman ve enerji gerektirir. Bu yüzden gereksiz işlemlere zaman kaybetmek istemiyorsanız sorunun gerçekten var olduğundan emin olmalısınız. Performans düştüğünde herkesin fark edebileceği, çalışma süresi yüksek dahili sistemlerde bu teknik gereksizdir. Çünkü işlemler sistemin performansı zorlandığında kullanıcının aldığı deneyimin kalitesi düşer.

4. Fazlalıklar için mühendislik, peki sonra…

Hizmet dayanıklığı sağlarken sadece fazlalıklarla uğraşmak için mühendislik yaptığınız anlamına gelmez. Bunun için test yapmanız gerektiği anlamına gelir. Netflix’in yarattığı Chaos Monkey’in üretilmesinin ardındaki fikir, belirli hatalar yaratıp bunları test etmekti. Küçük bir amaçla bir ara verilmesi, gerçek bir hata ortaya çıkarıyorsa, tüm işleri tekrardan yükleyin ve fazlalık yaratın.

Fazlalık testi yapmak, Chaos Monkey‘i kullanmak zorunda olduğunuz ya da kendi yazılımınızı yazmanız gerektiği anlamına gelmez. Bunlarla uğraşmak yerine, zorunlu hatalardan oluşan bir test planı hazırlayın. Böylece başarısızlık durumunda ne olduğunu önceden öğrenebilirsiniz. Bu şekilde aslında yarattığınız fazlalığın başarısız olmadığını ve düzeltme yapmanın daha kolay olduğunu fark edeceksiniz.

İlginizi Çekebilecek Makaleler​

LLM (Large Language Models) Nedir?

Günümüzde yapay zeka ve makine öğrenmesi, teknolojinin birçok alanında devrim niteliğinde ilerlemeler kaydetmiştir. Bu ilerlemelerin merkezinde yer alan büyük dil modelleri (LLM – Large Language

Devamı »
Message Broker Nedir?

Message broker, birçok farklı uygulama veya sistem arasında iletişim kurmak için kullanılan bir yazılım aracıdır. Bu araç, bir uygulama tarafından gönderilen mesajları bir veya daha

Devamı »
Loglama Nedir?

Loglama, bilgisayar sistemlerindeki olayları, hataları ve diğer önemli durumları kaydetme işlemidir. Bu kayıtlar, sistem yöneticileri ve geliştiriciler tarafından, sistemlerin işleyişini anlamak, hataları tespit etmek ve

Devamı »
Vcenter Üzerinden ESXI Upgrade’i Nasıl Yapılır?

Öncelikle herkese merhaba arkadaşlar, sizlere Vcenter üzerinde ESXI hostunuzu nasıl upgrade edeceğinizi anlatacağım. Öncelikle hangi versiyona yükselteceksek o versiyonun ISO dosyasını indiriyoruz. Ardından Vcenter’ımızı açıyoruz.

Devamı »