Hata Analizi Hizmetine Giriş

Hata Analizi Hizmeti, Microsoft Azure Service Fabric üzerinde oluşturulan test hizmetleri için tasarlanmıştır. Hata Analizi Hizmeti ile anlamlı hatalar oluşturabilir ve uygulamalarınızda eksiksiz test senaryoları çalıştırabilirsiniz. Bu hatalar ve senaryolar, bir hizmetin kullanım ömrü boyunca karşılaşacağı çok sayıda durumu ve geçişi denetimli, güvenli ve tutarlı bir şekilde kullanır ve doğrular.

Eylemler, bir hizmeti test için hedefleyen tek tek hatalardır. Bir hizmet geliştiricisi karmaşık senaryolar yazmak için bunları yapı taşları olarak kullanabilir. Örnek:

  • Bir makinenin veya VM'nin yeniden başlatıldığı çeşitli durumların benzetimini yapmak için düğümü yeniden başlatın.
  • Yük dengeleme, yük devretme veya uygulama yükseltme benzetimi yapmak için durum bilgisi olan hizmetinizin bir çoğaltmasını taşıyın.
  • Yeni verileri kabul etmek için yeterli "yedekleme" veya "ikincil" çoğaltma olmadığından yazma işlemlerinin devam edilemediği bir durum oluşturmak için durum bilgisi olan bir hizmette çekirdek kaybını çağırabilirsiniz.
  • Durum bilgisi olan bir hizmette veri kaybını çağırarak tüm bellek içi durumların tamamen silindiği bir durum oluşturun.

Senaryolar, bir veya daha fazla eylemden oluşan karmaşık işlemlerdir. Hata Analizi Hizmeti iki yerleşik eksiksiz senaryo sağlar:

  • Kaos Senaryosu
  • Yük Devretme Senaryosu

Hizmet olarak test etme

Hata Analizi Hizmeti, Service Fabric kümesiyle otomatik olarak başlatılan bir Service Fabric sistem hizmetidir. Bu hizmet hata ekleme, test senaryosu yürütme ve sistem durumu analizi için konak görevi görür.

Hata Analizi Hizmeti

Bir hata eylemi veya test senaryosu başlatıldığında, hata eylemini veya test senaryosunu çalıştırmak için Hata Analizi Hizmeti'ne bir komut gönderilir. Hata Analizi Hizmeti, hataları ve senaryoları güvenilir bir şekilde çalıştırabilmesi ve sonuçları doğrulayabilmesi için durum bilgisi vardır. Örneğin, uzun süre çalışan bir test senaryosu Hata Analizi Hizmeti tarafından güvenilir bir şekilde yürütülebilir. Testler küme içinde yürütülmekte olduğundan, hizmet hatalarla ilgili daha ayrıntılı bilgi sağlamak için kümenin durumunu ve hizmetlerinizi inceleyebilir.

Dağıtılmış sistemleri test etme

Service Fabric, dağıtılmış ölçeklenebilir uygulamalar yazma ve yönetme işini önemli ölçüde kolaylaştırır. Hata Analizi Hizmeti, dağıtılmış bir uygulamanın testini benzer şekilde kolaylaştırır. Test sırasında çözülmesi gereken üç ana sorun vardır:

  1. Gerçek dünya senaryolarında oluşabilecek hataların simülasyonunu yapmak/oluşturmak: Service Fabric'in önemli yönlerinden biri, dağıtılmış uygulamaların çeşitli hatalardan kurtulmasına olanak tanımasıdır. Ancak, uygulamanın bu hatalardan kurtulabildiğinden test etmek için bu gerçek dünyadaki hataların simülasyonunu yapmak/denetimli bir test ortamında oluşturmak için bir mekanizmaya ihtiyacımız vardır.
  2. Bağıntılı hatalar oluşturma özelliği: Sistemdeki ağ hataları ve makine hataları gibi temel hataların tek tek oluşturulması kolaydır. Bu tek tek hataların etkileşimleri sonucunda gerçek dünyada gerçekleşebilecek çok sayıda senaryo oluşturmak önemsiz değildir.
  3. Çeşitli geliştirme ve dağıtım düzeylerinde birleştirilmiş deneyim: Çeşitli hata türlerini gerçekleştirebilen birçok hata ekleme sistemi vardır. Bununla birlikte, tek kutu geliştirici senaryolarından büyük test ortamlarında aynı testleri çalıştırmaya ve bunları üretimdeki testlerde kullanmaya geçiş yaparken bunların tümündeki deneyim kötüdür.

Bu sorunları çözmek için birçok mekanizma olsa da, tek kutu geliştirici ortamından üretim kümelerinde test etmeye kadar gerekli garantilerle aynı işlemi gerçekleştiren bir sistem eksiktir. Hata Analizi Hizmeti, uygulama geliştiricilerinin iş mantığını test etme konusunda odaklanmasına yardımcı olur. Hata Analizi Hizmeti, hizmetin temel alınan dağıtılmış sistemle etkileşimini test etmek için gereken tüm özellikleri sağlar.

Gerçek dünya hata senaryolarının simülasyonu/oluşturulması

Dağıtılmış bir sistemin sağlamlığını hatalara karşı test etmek için hata oluşturacak bir mekanizmaya ihtiyacımız vardır. Teoride, düğüm kapalı gibi bir hata oluşturmak kolay görünse de Service Fabric'in çözmeye çalıştığı tutarlılık sorunları kümesine ulaşmaya başlar. Örneğin, bir düğümü kapatmak istiyorsak gerekli iş akışı aşağıdaki gibidir:

  1. İstemciden bir kapatma düğümü isteği gönderin.

  2. İsteği doğru düğüme gönderin.

    a. Düğüm bulunamazsa başarısız olmalıdır.

    b. Düğüm bulunursa, yalnızca düğüm kapatılırsa döndürülmelidir.

Test açısından hatayı doğrulamak için testin bu hatanın oluştuğunda hatanın gerçekten gerçekleştiğini bilmesi gerekir. Service Fabric'in sağladığı garanti, komut düğüme ulaştığında düğümün kapanması veya zaten kapalı olmasıdır. Her iki durumda da test durum hakkında doğru bir şekilde neden olabilir ve doğrulamada başarılı veya başarısız olabilir. Aynı hata kümesini gerçekleştirmek için Service Fabric dışında uygulanan bir sistem birçok ağ, donanım ve yazılım sorununa neden olabilir ve bu da önceki garantileri sağlamasını engelleyebilir. Daha önce belirtilen sorunların varlığında, Service Fabric sorunları geçici olarak çözmek için küme durumunu yeniden yapılandıracaktır ve bu nedenle Hata Çözümleme Hizmeti doğru garanti kümesini vermeye devam edecektir.

Gerekli olayları ve senaryoları oluşturma

Gerçek dünya hatalarının simülasyonunu sürekli olarak yapmak zor olsa da, bağıntılı hatalar oluşturma özelliği daha da zordur. Örneğin, aşağıdaki işlemler gerçekleştiğinde durum bilgisi olan kalıcı bir hizmette veri kaybı oluşur:

  1. Çoğaltmaya yalnızca çoğaltmaların yazma çekirdekleri eklenir. Tüm ikincil çoğaltmalar birincil çoğaltmanın arkasında kalır.
  2. Yazma çekirdeği, çoğaltmaların kapanması nedeniyle (bir kod paketi veya düğümün kapanması nedeniyle) kapanır.
  3. Çoğaltmaların verileri kaybolduğundan yazma çekirdeği geri alınamıyor (disk bozulması veya makinenin yeniden boyutlandırılıyor olması nedeniyle).

Bu bağıntılı hatalar gerçek dünyada gerçekleşir ancak tek tek hatalar kadar sık gerçekleşmez. Üretimde gerçekleşmeden önce bu senaryoları test etme özelliği kritik öneme sahiptir. Daha da önemlisi, denetimli koşullarda üretim iş yükleriyle bu senaryoların benzetimini yapabilme özelliğidir (günün ortasında tüm mühendisler güvertede olur). Bu, üretimde ilk kez saat 02:00'de gerçekleşmesinden çok daha iyidir.

Farklı ortamlarda birleştirilmiş deneyim

Geleneksel olarak uygulama, biri geliştirme ortamı, biri testler ve diğeri de üretim için olmak üzere üç farklı deneyim kümesi oluşturmaktır. Model:

  1. Geliştirme ortamında, tek tek yöntemlerin birim testlerine izin veren durum geçişleri oluşturun.
  2. Test ortamında, çeşitli hata senaryolarını kullanan uçtan uca testlere izin vermek için hatalar oluşturun.
  3. Doğal olmayan hataları önlemek ve hataya son derece hızlı insan yanıtı olduğundan emin olmak için üretim ortamını el değmemiş tutun.

Service Fabric'te Hata Analizi Hizmeti aracılığıyla bunu tersine çevirmeyi ve geliştirici ortamından üretime kadar aynı metodolojiyi kullanmayı teklif ediyoruz. Bunu başarmanın iki yolu vardır:

  1. Denetimli hatalara neden olmak için, tek kutulu bir ortamdan üretim kümelerine kadar Olan Hata Analizi Hizmeti API'lerini kullanın.
  2. Kümeye hataların otomatik olarak indüksiyonuna neden olan bir ateş vermek için Hata Analizi Hizmeti'ni kullanarak otomatik hatalar oluşturun. Yapılandırma aracılığıyla hata oranının denetlenmesi, aynı hizmetin farklı ortamlarda farklı şekilde test edilmesine olanak tanır.

Service Fabric ile hataların ölçeği farklı ortamlarda farklı olsa da, gerçek mekanizmalar aynı olacaktır. Bu sayede çok daha hızlı bir kod-dağıtım işlem hattı ve hizmetleri gerçek dünya yükleri altında test etme olanağına sahip olursunuz.

Hata Analizi Hizmetini Kullanma

C#

Hata Analizi Hizmeti özellikleri, Microsoft.ServiceFabric NuGet paketindeki System.Fabric ad alanındadır. Hata Analizi Hizmeti özelliklerini kullanmak için nuget paketini projenize başvuru olarak ekleyin.

PowerShell

PowerShell'i kullanmak için Service Fabric SDK'sını yüklemeniz gerekir. SDK yüklendikten sonra ServiceFabric PowerShell modülü kullanmanız için otomatik olarak yüklenir.

Sonraki adımlar

Gerçekten bulut ölçeğinde hizmetler oluşturmak için, hem dağıtım öncesinde hem de sonrasında hizmetlerin gerçek dünya hatalarına dayanabilmesini sağlamak kritik önem taşır. Günümüzde hizmet dünyasında hızla yenilik yapabilme ve kodu hızla üretime taşıyabilme özelliği çok önemlidir. Hata Analizi Hizmeti, hizmet geliştiricilerinin tam olarak bunu yapmalarına yardımcı olur.

Yerleşik test senaryolarını kullanarak uygulamalarınızı ve hizmetlerinizi test edin veya Hata Analizi Hizmeti tarafından sağlanan hata eylemlerini kullanarak kendi test senaryolarınızı yazın.