e
sv

Ethereum istemcilerini test etmek için kaos mühendisliğinden yararlanma

avatar

Yazılım Method

  • e 0

    Mutlu

  • e 0

    Eğlenmiş

  • e 0

    Şaşırmış

  • e 0

    Kızgın

  • e 0

    Üzgün

Bu makale, kaos mühendisliği ilkeleri hakkında bir çalışma bilgisi sağlar, yazılım geliştirmedeki kullanımını tartışır ve kullanımının blok zinciri geliştirmeye nasıl genişletilebileceğini araştırır.

Bu makalenin öğretici kısmı, Ethereum istemcilerinin test edilmesi için kaos mühendisliğinden yararlanmak için ChaosETH çerçevesinin nasıl kullanılacağını gösterir. Bu strateji, sözleşme ağ üyeleri tarafından geniş çapta benimsenmeden önce akıllı sözleşmelerdeki kusurları (bazen “karanlık borçlar” olarak anılır) belirlemek için yardımcı olabilir.

İçindekiler

Kaos mühendisliği nedir?

Kaos mühendisliği, bir üretim ortamında meydana gelebilecek türbülanslı koşullara dayanıklı ve hataya daha dayanıklı hale getirmek için dağıtılmış bir sistem üzerinde deneyler yapma uygulamasıdır. Konsept, Casey Rosenthal liderliğindeki bir ekibin yazılım kullanılabilirliğini ve sistem esnekliğini test etmekten sorumlu olduğu Netflix'e kadar kolayca izlenebilir .

Kaos mühendisliği, kaos mühendislerine rehberlik edecek beş ileri ilkeye sahiptir. Kaos mühendisliğini düzgün bir şekilde uyguladığınızdan emin olmak için bu ilkeleri izleyin:

  1. Hedef sistemin kararlı durum davranışını tanımlayan bir hipotez kurun
  2. Gerçek dünyadaki durumları ve olayları düşünün
  3. Bu ortamda güven oluşturmak için üretim ortamında deneyler yürütün
  4. Dağıtılmış sistemler karmaşık olduğundan deneyleri sürekli çalışacak şekilde otomatikleştirin
  5. Deneylerin müşterileri etkilemesini önlemek için patlama yarıçapını en aza indirin

Gördüğünüz gibi, bu ilkeler geleneksel test tekniklerinden çok farklıdır.

Kaos mühendisliği blok zinciri geliştirmede neden faydalıdır?

Blockchain teknolojisi, dağıtılmış defter teknolojisinin bir alt kümesidir ve dağıtılmış merkezi olmayan uygulamalar oluşturmak için kullanılır. Bu dağıtılmış durum, aslında bilgisayarlar olan eşler arası bir düğüm ağı oluşturularak elde edilir. Bir sistem daha yaygın olarak benimsendikçe ve daha fazla bilgisayara bağlandıkça karmaşıklığı artar.

Cardano Quick News on Twitter: "E-posta hizmetinizde bir hata varsa, insanlar ciddi bir şey değil sadece şikayet edeceklerdir. Ancak bir blok zincirinde bir hata varsa, insanlar para kaybedebilir. Şimdi bu ciddi. blockchain.Ve onlar Cardano'nun kalbindeler.#Cardano $ada #ada / Twitter”

E-posta hizmetinizde bir hata varsa, insanlar sadece şikayet edecek, ciddi bir şey değil. Ancak bir blok zincirinde bir hata varsa, insanlar para kaybedebilir. Şimdi bu ciddi. Güvenlik ve istikrar bir blok zinciri için en önemli şeylerdir. Ve onlar en önemli şeydir. Cardano'nun kalbi.#Cardano $ada #ada

Aşırı yüklenmiş işletim sistemleri, bellek yönetiminden kaynaklanan hatalar veya ağ bölümleri nedeniyle istemciler aracılığıyla bir blok zincirinde hatalar ve zayıflıklar meydana gelebilir. Bir Ethereum istemcisini dağıtmak, yalnızca kendisine önemli kaynaklar sağlayan bir işletim sisteminde mümkündür.

Kaos mühendisliğinin dağıtılmış sistemlere çok uygun olduğu göz önüne alındığında, Ethereum ağı gibi bir blok zincirinde katılan her müşterinin esnekliğini sağlamada faydalı olabilir.

Bir blok zincirine kaos mühendisliği ilkelerini enjekte etmek için deneyler tasarlarken akılda tutulması gereken bazı noktalar şunlardır:

  • Kaos mühendisliği deneyleri, fikir birliği mekanizması, ağ, depolama katmanları, katılan düğümlerin tanımlanması ve yetkilendirilmesi, akıllı sözleşmeler, zincir içi etkileşim ve yönetişim üzerine odaklanmalıdır.
  • Geliştirme ve test ağları üzerinde deneyler yapılabilir, ancak bundan sonra üretimde yapılmalıdır.
  • Bu uygulamalar para gerektireceğinden, üretimde deneyler yapıldığında patlama yarıçapını en aza indirmek önemlidir.
  • Bir istemci uygulamasında kaosa neden olmak için benzer mimariler ve bilinen güvenlik açıkları hakkında bilgi sahibi olmak uygundur.

Neden Ethereum istemcileri?

Bu makale özellikle kaos mühendisliğini Ethereum istemci uygulamalarına dahil etmeyi kapsar. Bununla birlikte, Web3'te kaos enjekte etme kavramının, tüm blok zincirlerinin tüm merkezi olmayan uygulamaları için geçerli olduğunu belirtmek önemlidir.

Ethereum, büyük merkezi olmayan platformların operasyonel omurgası haline geldi ve şunlara sahip:

  • Diğer blok zincirlerinden daha yüksek benimseme
  • Çok aktif geliştirici toplulukları
  • Kolay erişilebilir bir üretim ortamı
  • Diğer blok zincirlere kıyasla daha fazla basitlik

Tam bir Ethereum istemcisi için kaos testi uygulamak

Canlı bir Ethereum istemcisinde kaos testi için uygun planlama aşağıdakileri içermelidir:

  • Test edilecek Ethereum istemcisinin mimarisinin kapsamlı bir şekilde anlaşılması
  • Sistem modelini benimsemek için planlama
  • Kabul edilen Ethereum istemcisine göre aşağıdakileri işlemek:
    • İstemciden gelen uygun olmayan yedek ayarlara dayalı aramalar
    • Yanlış ayarlanmış zaman aşımları
    • Yeterince dayanıklı olmayan veya kullanımdan kaldırılan bağımlılıklar
    • Tek başarısızlık noktaları
    • ardışık hatalar

Öğretici: Bir Go-Ethereum istemcisi ile kaos mühendisliği deneyi

Bu öğreticide, bir Ethereum istemcisinin üretimde ne kadar esnek olduğunu ölçen yeni bir çerçeve olan ChaosETH'nin bir Go-Ethereum (Geth) istemcisinde kaos mühendisliği deneyleri yürütmek için nasıl kullanılacağını göstereceğiz.

kaosETH

ChaosETH, Long Zhang ve İsveç'teki KTH Kraliyet Teknoloji Enstitüsü'ndeki meslektaşları tarafından oluşturuldu . ChaosETH, Ethereum istemcilerinin esnekliğini değerlendirmek ve böylece Ethereum blok zincirini daha güvenilir hale getirmek için tasarlandı. Çalışma yoluyla, ChaosETH:

  • Kararlı durum davranışlarını belirlemek için Ethereum istemcilerini izler
  • İstemcilere sistem çağrısı çağırma hatalarını aktif olarak enjekte eder
  • Hata enjeksiyonunun ortaya çıkan davranışını izler
  • Ortaya çıkan davranışı kararlı durum davranışıyla karşılaştırır
  • Doğrudan üretimden bir esneklik raporu üretir

Başlayalım!

1. Adım: Geliştirme ortamını oluşturun

Sanal makineyi barındıracağınız bir bulut hizmeti sağlayıcısı seçin veya Docker'ı kurup yapılandırın . İşletim sistemi olarak Ubuntu çalıştıran bir sanal makine örneği oluşturun ve 30303 numaralı bağlantı noktasını açın. Bu, Ethereum istemcisinin dinlediği varsayılan bağlantı noktasıdır.

Adım 2: Hedef Ethereum istemcisini oluşturun ve çalıştırın

Ardından, Ethereum istemcisinin en son kararlı sürümünü edinin. Geth istemcisiyle gidelim.

Belgelerin sağladığı yükleme adımlarını izleyerek istemciyi oluşturun. Kaos mühendisliği bazı gözlemlenebilirlik özellikleri gerektirir, bu nedenle Geth'in metrikler için dokümantasyon desteğinde izleme özelliklerini etkinleştirmek için seçenekler eklemeniz gerekir.

İşletim sisteminize veya araçlarınıza bağlı olarak Geth istemcisini kurmanın birçok yolu vardır. Bu yazıda Docker'ı kullanacağız ve komutu bir kabuk üzerinde çalıştıracağız:

 liman işçisi ethereum/istemci-go çekin
# ve şununla çalıştırma:\
docker run -it -p 30303:30303 ethereum/client-go

3. Adım: Gözlenebilirlik için bir Docker kapsayıcısı oluşturun

İzleme işlevlerini etkinleştirmek için Geth istemcisinin yanında InfluxDB kullanacağız. Aşağıdaki komutu kullanın:

 docker run -p 8086:8086 -d --name influxdb -v influxdb:/var/lib/influxdb influxdb:1:8

Şimdi, aşağıdaki komutları yürüterek InfluxDB kapsayıcısını yapılandırın:

 docker exec -it influxdb bash

Bu komutu kapsayıcının içinde çalıştırın:

 akın

Ardından, InfluxDB kabuğunda şu komutları yürütün:

 CREATE DATABASE kaosu
"KAOSET" ÜZERİNDE SAKLAMA POLİTİKASI "rp_chaoseth" OLUŞTUR SÜRE 999d ÇOĞALTMA 1 VARSAYILAN
TÜM AYRICALIKLARLA ŞİFRE xxx İLE USER geth OLUŞTURUN

Artık konteyner hazır. Geth istemcisini, gözlemlenebilirlik ölçümleri ve diğer seçeneklerle birlikte çalıştırmaya devam edebilirsiniz. Geth, aralarından seçim yapabileceğimiz 500'den fazla farklı ölçüm sağlar.

İstemci, önceki denemelerden sonra yeniden başlatılsa bile bir kök kullanıcı tarafından çalıştırılmalıdır. Bu nedenle, sistem çağrısı izleme ve hata enjektörü için sudo gereklidir.

Veri dizini, örneğin ekstra disk alanı göz önüne alındığında, komutta bir seçenek olarak belirtilmelidir. Bu yapılmazsa, bunun yerine örneğin işletim sistemi sürücüsünde kalıcı hale gelir.

Bir müşterinin eşlerinden tutarlı yapılandırmalar gereklidir, bu nedenle bir hedef eş sayısı belirteceğiz; Geth istemcisi için varsayılan maksimum eş sayısı olduğundan 50 kullanacağız.

Uygulama düzeyinde izleme için gözlemlenebilirlik metrikleri dahil edilmiştir.

Son olarak, terminali boşaltmak için Geth istemcisini arka planda çalıştırabilir ve çıktıyı istediğiniz yere yönlendirebilirsiniz.

Ortaya çıkan komut şöyle görünecektir:

 sudo nohup ./geth --datadir=/data/eth-data \
  --maxpeers 50 \
  --metrics --metrics.pahalı \
  --metrics.influxdb --metrics.influxdb.database DB_NAME --metrics.influxdb.username geth --metrics.influxdb.password DB_PASS \
  >> geth.log 2>&1 &

4. Adım: İstemciyi senkronize edin ve ölçümleri gözlemleyin

Tüm senkronizasyon süreci yaklaşık üç gün sürer ve durum https://ethernodes.org/ adresinden izlenebilir.

Dağıtıldığında, eşitleme tamamlandıktan sonra istemcinin sabit durum davranış ölçümlerini gözlemleyen bir client_monitor.py betiği vardır. Aşağıdaki komut, istemci monitörünü sürece ekleyecek ve ayrıca metrik verileri 8000 bağlantı noktasındaki Prometheus'ta bir uç nokta olarak besleyecektir:

 nohup sudo ./client_monitor.py -p CLIENT_PID -m -i 15 --data-dir=CLIENT_DATA_DIR >/dev/null 2>&1 &

Metrik verilerini Prometheus'tan sıyırmak için aşağıdaki komut dosyasını config dosyanıza ekleyin:

 scrape_configs:
  - iş_adı: 'client_monitoring'
    static_configs:
      - hedefler: ['172.17.0.1:8000']

Alternatif olarak, aşağıdaki gibi bir Grafana panosu oluşturarak verileri görselleştirebilirsiniz: ./visualization/Grafana - Syscall Monitoring.json dosyası.

Orijinal deneydeki kararlı durum analizi, iki farklı izleme oturumu sırasında yakalanan verilerin ölçümlerini gösterir.

Yakalanan Veri Tablosu

Çözüm

Kaos mühendisliği ve blok zinciri teknolojisi nispeten yenidir, ancak bunların önemi geniş çapta benimsenerek kanıtlanmış ve onaylanmıştır.

Bu makalede, kaos mühendisliği ilkelerine genel bir bakış sağladık, ChaosEth çerçevesini tanıttık ve bir GETH istemcisinin dayanıklılık testi için ChaosETH çerçevesinden nasıl yararlanılacağını gösterdik.

Ethereum istemcileri üzerinde kaos mühendisliği uygulamak, bir DApp veya akıllı sözleşmenin yaşam döngüsü sırasında meydana gelebilecek olası hataları belirlemek için kritik öneme sahiptir.

Ethereum istemcilerini test etmek için kaos mühendisliğinden yararlanma yazısı ilk olarak LogRocket Blog'da yayınlandı.

etiketlerETİKETLER
Üzgünüm, bu içerik için hiç etiket bulunmuyor.

Sıradaki içerik:

Ethereum istemcilerini test etmek için kaos mühendisliğinden yararlanma