Injiniring
To‘xtatib bo‘lmaydigan tizimlar qanday qurilgani haqida. To‘lov yadrolari, jonli bazalarni ko‘chirish, regulyator talablari, yuklama ostidagi unumdorlik. O‘zimiz qabul qilgan qarorlar haqida yozamiz — xato narxi va nimani boshqacha qilishimiz bilan birga.
Testlar xatoning yoʻqligini isbotlamaydi. Nima isbotlaydi
Qisqasi: testlar toʻplami — bu qidiruv. U «topdim» deya oladi va «yoʻq» deya olmaydi. Kodning koʻp qismi uchun bu yetarli, ammo toʻlov protokoli, buyurtmaning holat mashinasi va ikki vazifa umumiy holatga tegadigan har qanday joy uchun yetarli emas: u yerda xato — qadamlarning kamdan-kam uchraydigan birikmasi. Model tekshiruvi barcha erishiladigan holatlarni aylanib chiqadi va testlar umuman javob bera olmaydigan savolga javob beradi.
Izolyatsiya darajalari: bazangiz aslida nimaga yoʻl qoʻyadi
Qisqasi: izolyatsiya darajasi — unumdorlik sozlamasi emas, ilovangiz koʻrishi mumkin boʻlgan natijalar roʻyxati. «read committed» bilan «serializable» oʻrtasida nomi va narxi bor anomaliyalar turadi: qoldiqdan ortiq yechib olish, navbatchisiz qolgan smena, ikki marta raqamlangan hujjat. Hujjatlarda «baza snapshot isolation ni qoʻllaydi» deb oʻqish yetarli emas — bu matnning emas, bajarilishlarning xossasi.
Master qulaydi: maʼlumotlaringiz bilan aslida nima boʻladi
Qisqasi: «bizda uch tugunli klaster bor» — bu tizimning xossasi emas, konfiguratsiya tavsifi. Xossa kimdir tekshirgandan keyin paydo boʻladi: tarmoq boʻlinganda ikki tugun bir vaqtda oʻzini bosh deb hisoblamasligini va mijozga tasdiqlangan yozuv qulagan lider bilan birga yoʻqolmasligini. Buni serverni qoʻlda oʻchirib emas, simulyatsiya bilan tekshiriladi.
Test uch yuz yurishda bir marta yiqiladi. Bu ob-havo emas
Qisqasi: uch yuz yurishda bir marta yiqiladigan test haqiqiy poygani allaqachon topgan — siz uni takrorlay olmayapsiz, xolos. Tasodifiy narsa xato emas, operatsion tizim tanlagan bajarilish tartibi. Bu tanlovni undan tortib oling — va yiqilish latifadan manzilga aylanadi.
Takroriy so‘rov puldan ikki marta yechmasligi kerak
Qisqacha: tarmoq to‘lov o‘tgan-o‘tmaganini aytmaydi — u shunchaki jim qoladi. Mijoz tugmani ikkinchi marta bosadi, mobil ilova so‘rovni o‘zi takrorlaydi, va himoyasiz siz ikki marta yechasiz. Idempotentlik jadvallar va kod darajasida qanday ishlashini hamda uni odatda qayerda buzishlarini ko‘rib chiqamiz.
Hech kim ko‘rmagan qoplama tufayli LCP 6,4 soniya
Qisqacha: o‘z saytimizning tahlili. Birinchi ekran matni serverdan 10 millisekundda kelardi, ekranda esa olti yarim soniyadan keyin paydo bo‘lardi — uni faqat yuklangan JavaScript olib tashlay oladigan intro-qoplama yopib turardi. Tuzatishdan keyin LCP 6,4 → 2,2 s, unumdorlik bahosi 73 → 98. Quyida qanday izlaganimiz, noto‘g‘ri chiqqan farazni ham qo‘shib.
Bazani yuklama ostida ko‘chirish va yozuvlarni yo‘qotmaslik
Qisqacha: «yakshanba kechasi ko‘chiramiz» — bu reja emas, garov. Ishlaydigan usul boshqacha: bir muddat tizim ikkala omborga bir vaqtda yozadi, tarix fonda ko‘chiriladi, ma’lumot solishtiriladi va faqat shundan keyin o‘qish yangisiga o‘tadi. Oxirgi qadamgacha har doim ortga qaytish mumkin.