Majbur bo'lmang: Konstantinopol va Ethereum mijozlarini yangilash uchun eng yaxshi amaliyotlar

Dasturiy ta'minotni yangilash, xavfsizlik kamchiliklarini tuzatish, xatolarni tuzatish yoki yangi xususiyatlarni qo'shish, odatda har kuni foydalanadigan dasturlar uchun juda yaxshi narsa va biz ularni qo'llash haqida ikki marta o'ylamaymiz. Ammo infratuzilmaning asosiy qismlarini yangilash, shuningdek, bog'liq dasturlar uchun kutilmagan xatti-harakatlar yoki kutilmagan xatti-harakatlar kiritganda yoki boshqa hollarda o'z vaqtida yangilamaslik buzilishiga olib kelishi mumkin. Bu masala kichik va katta korxonalarga tegishli va blockchain bundan mustasno emas.

Alchemy-da biz mijozlarimizga ishonchli, kengaytiriladigan va tezkor Ethereum infratuzilmasini xizmat sifatida taqdim etamiz, shuning uchun ular tugunlarni ushlab turish bilan kurashmasliklari va o'zlarining ilovalarini yaratishga e'tibor berishlari kerak. Ish jarayonida biz tarmoq vilkalari va mijozlar yangilanishlarini eng yaxshi boshqarish bo'yicha ko'plab saboqlarni (ba'zan qiyin yo'lni) o'rgandik. Yaqinlashib kelayotgan Konstantinopolning vilkasi bilan biz bu bizning eng yaxshi tajribalarimiz bilan bo'lishish uchun ajoyib imkoniyat bo'ladi deb o'yladik.

Bu Ethereum infratuzilmasini ishonchli, bajaruvchi va kengaytiradigan usulda ishga tushiradigan ko'plab bloglardagi birinchi xabarlar.

Konstantinopol

Konstantinopol - bu Ethereum tizimidagi navbatdagi yangilanish va beshta EIPni amalga oshiradi, aslida Ethereum 2.0 tomon katta yo'l xaritasining qismi hisoblanadi. U erda ma'lum o'zgarishlarni muhokama qiladigan ko'plab xabarlar mavjud, ammo diqqatga sazovor tomoni shundaki, bu munozarali bo'lmagan qattiq vilkalar bo'lgani uchun, jamiyat yangi vilkalar qabul qiladi, tokenlar va boshqa holatlar yangilanmagan tugunlarga tushadi.

Bu sizga qanday ta'sir qiladi?

Dasturni ishlab chiquvchilar uchun sizning tuguningizni Konstantinopolga mos keladigan versiyasiga yangilashingiz kerak yoki u tarmoqning qolgan qismiga mos kelmasligi mumkin 7,080,000. Ethereum mijozlari zanjirning qattiq vilkalaridan eng so'nggi xabarni olishlari mumkin va taxmin qilingan fork sanasidan oldin mijozning barqaror, mos versiyasini chiqaradilar. geth va paritet. Agar siz o'zingizning Ethereum mijoz tuguningizni boshqarayotgan bo'lsangiz, ethereum mijozingizni qattiq vilkalar bilan mos keladigan versiyaga yangilashingiz kerak bo'ladi; paritetlik 2.1.10-barqaror yoki undan yuqori, geth esa 1.8.20 yoki undan yuqori bo'lishi kerak.

Qattiq vilkalar yangilanishlari kam va uzoq bo'lishi kerak, ammo Ethereum mijoz yangilanishlari ancha keng tarqalgan bo'lishi mumkin. Agar siz xizmatni zanjirga bog'liq holda ishlayotgan bo'lsangiz, mijozingizni yangilab turish xavfsizlik kamchiliklarini tuzatish yoki yangi funktsiyalarni jalb qilish uchun foydali bo'lishi mumkin. Biroq, siz o'zingizning arizangizga kutilmagan muammolarni kiritmaslik uchun ehtiyot bo'lishingiz kerak.

Eng yaxshi amaliyotlar

Agar siz Ethereum blockchain bilan doimiy aloqada bo'lishni talab qiladigan xizmat bilan ishlayotgan bo'lsangiz, eng yaxshi ikkita eng yaxshi amaliyotlar sizning tugunlaringizni yangilaganda potentsial katastrofik xatolardan xalos qiladi. Biz ushbu blog postiga turtki bo'lgan juda yomon yangilanishlarning real stsenariylarini ko'rib chiqamiz.

Bir nechta tugunlarni ishga tushirish

Ethereum infratuzilmasini saqlashning eng yaxshi amaliyoti sifatida ko'plab tugunlarni ishga tushirishni tavsiya etamiz, chunki ko'plab afzalliklar, shu jumladan ishonchlilik va kengayish imkoniyatlari ortadi. Ammo, bu sizning tizimingizga doimiylik va nomuvofiqlik masalalarini kiritishi mumkin, biz buni keyingi bloglarda muhokama qilamiz.

Yangilanish haqida gap ketganda, bir nechta tugunlarni ishga tushirish bir qator qo'shimcha foyda keltiradi:

  1. Qo'shimcha tugunlar yangilanish noto'g'ri amalga oshirilsa va tugunni tiklanmaydigan qilib qo'ysa, zaxira vazifasini bajaradi
  2. Tugunlarni aylanish usulida yangilashda yuqori imkoniyatlar va to'xtab qolish yo'q
  3. Kutilayotgan xatti-harakatni ta'minlash uchun yangilangan tugunlarni asl tugunlari bilan taqqoslaydigan regressiya sinovlariga ruxsat beradi

Qayta tiklanmaydigan tugunning stsenariyida to'liq to'liq arxivlash tugunini to'liq sinxronlashtirish uchun ikki hafta vaqt ketishi mumkin. Zaxiralashsiz, bu ishlamaydigan vaqtning qabul qilinishi mumkin bo'lmagan miqdori.

1-misol: Buggy DB migratsiyasi

Paritetni 1.X.X dan 2.X.X gacha ko'targanda biz ko'rgan bitta masala bu ma'lumotlar bazasidagi buzilish edi. Yangilanish ichiga tarixiy bloklar uchun getLog so'rovlari uchun bo'sh natijalarga olib keladigan gul filtridagi blok raqamlarini noto'g'ri o'zgartirgan ichki MB ko'chishi kiritilgan. Ma'lumotlarning yo'qolishi qaytarilmas edi, shuning uchun tugunni saqlab bo'lmaydi. Kanar tugunida ichki sinovdan o'tish, tizimlarimizni yangilab turish uchun yangilanmagan tugunlarimizga o'tish va paritet jamoasi tomonidan ushbu muammo 2.2.3-beta-da hal qilinguncha kutib olishga muvaffaq bo'ldik.

Qattiq regressiya sinovi

Tizimdagi har qanday o'zgarishlar uchun qat'iy sinov har doim qat'iy tavsiya etiladi. Ushbu tomirda, sizning tugunlaringizni yangilayotganda, sizning dasturingiz va infratuzilmangiz kutilganidek ishlashini ta'minlash uchun sinashni xohlaysiz. Aks holda bu sizning foydalanuvchilaringiz va tizimlaringizni ishdan chiqishiga olib kelishi mumkin. Bir nechta ishlaydigan tugunlarga ega bo'lishning eng yaxshi usuli - bu oldingi barqaror tugunlarni yangilangan kanareyka tuguniga qarshi sinash. Agar biron bir buzilishlar aniqlansa, sizning klasteringizning qolgan qismini yangilashdan oldin tizimlaringiz ularni ishonchli boshqarishini ta'minlang.

Regressiya sinovlariga kelsak, biz tugunimizga qarshi ishlab chiqarish so'rovlarini takrorlash orqali to'g'ridan-to'g'ri manbaga o'tamiz. Buni bir marotaba tekshirish uchun qo'lda qilish mumkin, ammo biz juda ko'p loyihalarni qo'llab-quvvatlaganimiz sababli, so'nggi jonli so'rovlarni namunalarini taqdim etadigan, ularni mijozning turli xil versiyalarida takrorlaydigan va natijalarni taqqoslaydigan keng qamrovli avtomatlashtirilgan sinov tizimini yaratdik. Bu bizning kodimiz ishlab chiqarishga yuborilishidan oldin yangilangan tugunlar bilan ishonchli aloqada bo'lishiga ishonch hosil qilishimizga imkon beradi. Ushbu tizimni ichki kod o'zgarishlari bo'yicha regressiya testlari uchun ishlatsa bo'ladi.

2-misol: Javob natijalarini formatini o'zgartirish

Bu yangi muammo, EVM-ning bajarilish xatosi haqida boshqacha javob qaytarganida, biz duch kelgan qiziqarli masala. Paritet 1.11.1-beta-da quyidagicha javob qaytarildi:

{"Jsonrpc": "2.0", "xato": {"kod": - 32015, "xabar": "VM ijrosi xatosi.", "Ma'lumotlar": "0x" qaytarildi "," id ": 1}

Oldingi versiyalarning javoblari o'rniga shunga o'xshash:

{"Jsonrpc": "2.0", "id": 1, "natija": "0x"}

Javob formatining o'zgarishi aslida foydalidir, chunki qo'ng'iroq qiluvchiga jim bo'lgandan ko'ra ko'proq bajarilish tafsilotlari paydo bo'ladi, lekin agar kod ishlov berish uchun o'rnatilmagan bo'lsa, muammolar paydo bo'lishi mumkin. Ushbu stsenariyda, javob natijalarini taqqoslash o'zgarishlarni keltirib chiqardi va biz shunchaki tizimlarimizni yangiladik va mijozlarimizni yangi javobdan bezovta qilmasliklari va xizmatlarini moslashishi uchun yangilashlari uchun ogohlantirdik.

Quring!

Biz bu yordam berdi deb umid qilamiz va ushbu eng yaxshi amaliyotlar kelajakda tugun yangilanishlarini og'riqsiz qiladi. Ular bizga o'z tizimlari uchun ham, bizga ishongan mijozlar uchun ham doimo yangilanishlarni ta'minlashga yordam berdi. Tugunlarni saqlash va kattalashtirish qanchalik qiyin bo'lishi mumkinligini bilamiz va biz yillar davomida olgan bilimlarimizni tarqatmoqchimiz.

Agar siz Ethereum loyihasi ustida ishlayotgan bo'lsangiz va tugunlarni ushlab turish bilan bog'liq muammolarni hal qilishni istamasangiz, biz bilan gaplashing! Alchemy mahsulotingizni yaratishga e'tiboringizni qaratishingiz uchun eng tezkor, kengaytiriladigan va eng ishonchli Ethereum infratuzilmasini xizmat sifatida taqdim etadi. Kaput ostida Alchemy inqilobiy yangi infratuzilmani qurdi, u allaqachon Augur kabi eng yaxshi blockchain loyihalarini, CryptoKitties kabi eng yaxshi blockchain kompaniyalarni va eng yaxshi xedj fondlarini (3 milliard dollardan ortiq mablag‘larni boshqarish) quvvatlaydi. Qo'shimcha ma'lumotni alchemyapi.io saytidan oling.