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ıza karşı 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. Örneğin:
- 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 edemediğ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 durumun 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 tam 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 eylemi veya test senaryosu başlatıldığında hata eylemini veya test senaryosunu çalıştırmak için Hata Çözümleme 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 içerir. Örneğin, uzun süre çalışan bir test senaryosu Hata Çözümleme 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:
- Gerçek dünya senaryolarında oluşabilecek hataların benzetimi/oluşturulması: 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/bunları denetimli bir test ortamında oluşturmak için bir mekanizmaya ihtiyacımız vardır.
- 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 bir işlemdir.
- Çeşitli geliştirme ve dağıtım düzeylerinde birleştirilmiş deneyim: Çeşitli hata türleri 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 kutulu bir 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 aşağı 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:
İstemciden bir kapatma düğümü isteği gönderin.
İ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.
Testin hatasını test açısından doğrulamak için bu hata oluştuğunda hatanın gerçekten gerçekleştiğini bilmesi gerekir. Service Fabric'in sağladığı garanti, düğümün kapanması veya komut düğüme ulaştığında zaten kapalı olmasıdır. Her iki durumda da testin durum hakkında doğru bir şekilde mantık yürütmesi ve doğrulamada başarılı olması veya doğru şekilde başarısız olması gerekir. Aynı hata kümesini yapmak 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, sorunlara geçici bir çözüm bulmak 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 benzetimini tutarlı bir şekilde 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:
- Çoğaltmaların yalnızca bir yazma çekirdeği çoğaltmaya yakalanıyor. Tüm ikincil çoğaltmalar birincil çoğaltmanın arkasında kalır.
- Yazma çekirdeği, çoğaltmaların kapanması nedeniyle (bir kod paketi veya düğümün kapanması nedeniyle) kapanır.
- Çoğaltmaların verileri kaybolduğundan yazma çekirdeği geri alınamıyor (disk bozulması veya makine yeniden oluşturma 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 edebilme özelliği kritik önem taşır. Daha da önemlisi, denetimli koşullarda (günün ortasında tüm mühendisler güvertede) üretim iş yükleriyle bu senaryoların simülasyonunu yapabilme olanağıdır. 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 biri de üretim için olmak üzere üç farklı deneyim kümesi oluşturmaktır. Model şöyleydi:
- Geliştirme ortamında, tek tek yöntemlerin birim testlerine izin veren durum geçişleri oluşturun.
- Test ortamında, çeşitli hata senaryolarını kullanan uçtan uca testlere izin vermek için hatalar oluşturun.
- 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:
- Denetimli hataları yönlendirmek için, tek kutulu bir ortamdan üretim kümelerine kadar olan Hata Çözümleme Hizmeti API'lerini kullanın.
- 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, çok daha hızlı bir koddan dağıtıma işlem hattı ve hizmetleri gerçek dünya yükleri altında test etme olanağı sağlar.
Hata Çözümleme Hizmeti'ni kullanma
C#
Hata Analizi Hizmeti özellikleri, Microsoft.ServiceFabric NuGet paketindeki System.Fabric ad alanında bulunur. 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, kullanmanız için ServiceFabric PowerShell modülü otomatik olarak yüklenir.
Sonraki adımlar
Gerçekten bulut ölçeğinde hizmetler oluşturmak için, hem dağıtımdan önce hem de sonra 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 bunu tam olarak gerçekleştirmesine 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.