Hamma narsaga ta'sir qilgan yangilanish hikoyasi

Hamma narsaga ta'sir qilgan yangilanish hikoyasi
Haqiqatning dushmanlari 12f-2 tomonidan

Aprel oyining oxirida, Oq yurishchilar Vinterfellni qamal qilishayotganda, biz bilan qiziqroq narsa yuz berdi; biz g'ayrioddiy harakat qildik. Asosan, biz doimiy ravishda yangi xususiyatlarni ishlab chiqarishga kiritamiz (boshqalar kabi). Ammo bu narsa boshqacha edi. Uning ko'lami shunday ediki, biz qilishimiz mumkin bo'lgan har qanday xatolar bizning barcha xizmatlarimiz va foydalanuvchilarga ta'sir qiladi. Natijada, biz hamma narsani rejaga muvofiq, rejalashtirilgan va e'lon qilingan to'xtab qolish muddati ichida, sotish uchun oqibatlarsiz ishlab chiqdik. Maqolada biz bunga qanday erishganimiz va har kim buni uyda takrorlashi mumkinligi haqida.

Endi men biz qabul qilgan arxitektura va texnik qarorlarni tasvirlamayman yoki barchasi qanday ishlashini aytmayman. Bular men kuzatgan va bevosita ishtirok etgan eng qiyin chiqishlardan biri qanday sodir bo'lganligi haqidagi eslatmalar. Men to'liqlik yoki texnik tafsilotlarni da'vo qilmayman; ehtimol ular boshqa maqolada paydo bo'ladi.

Fon + bu qanday funksiya?

Biz bulut platformasini qurmoqdamiz Mail.ru bulutli echimlar (MCS), men u erda texnik direktor bo'lib ishlayman. Va endi barcha foydalanuvchi hisoblari, foydalanuvchilar, parollar, rollar, xizmatlar va boshqalarni yagona boshqarishni ta'minlaydigan platformamizga IAM (Identity and Access Management) qo'shish vaqti keldi. Nima uchun bulutga kerak - bu aniq savol: barcha foydalanuvchi ma'lumotlari unda saqlanadi.

Odatda bunday narsalar har qanday loyihaning boshida qurila boshlaydi. Ammo tarixan MCSda ishlar biroz boshqacha bo'lgan. MCS ikki qismdan iborat edi:

  • O'zining Keystone avtorizatsiya moduli bilan Openstack,
  • Mail.ru Cloud loyihasiga asoslangan Hotbox (S3 saqlash),

uning atrofida yangi xizmatlar paydo bo'ldi.

Aslida, bu ikki xil turdagi avtorizatsiya edi. Bundan tashqari, biz Mail.ru-ning ba'zi alohida ishlanmalaridan foydalandik, masalan, umumiy Mail.ru parolini saqlash joyi, shuningdek o'z-o'zidan yozilgan openid ulagichi, buning yordamida Horizon panelida SSO (uchdan-end avtorizatsiya) taqdim etildi. virtual mashinalar (mahalliy OpenStack UI).

IAMni biz uchun qilish, barchasini yagona tizimga, butunlay o'zimiznikilarga ulashni anglatardi. Shu bilan birga, biz bu yo‘lda hech qanday funksionallikni yo‘qotmaymiz, balki kelajak uchun poydevor yaratamiz, bu bizga uni refaktorlashsiz shaffof tarzda takomillashtirish va funksionallik nuqtai nazaridan masshtablash imkonini beradi. Bundan tashqari, boshida foydalanuvchilar xizmatlarga kirish (markaziy RBAC, rolga asoslangan kirishni boshqarish) va boshqa ba'zi kichik narsalar uchun namuna bo'lishgan.

Vazifa ahamiyatsiz bo'lib chiqdi: python va Perl, bir nechta backendlar, mustaqil ravishda yozilgan xizmatlar, bir nechta ishlab chiqish guruhlari va administratorlar. Va eng muhimi, jangovar ishlab chiqarish tizimida minglab jonli foydalanuvchilar mavjud. Bularning barchasi yozilishi va, eng muhimi, qurbonlarsiz tarqatilishi kerak edi.

Biz nimani tarqatamiz?

Taxminan aytganda, taxminan 4 oy ichida biz quyidagilarni tayyorladik:

  • Biz infratuzilmaning turli qismlarida ilgari ishlagan funksiyalarni jamlagan bir nechta yangi demonlarni yaratdik. Qolgan xizmatlarga ushbu jinlar ko'rinishidagi yangi orqa qism belgilandi.
  • Biz o'zimizning barcha xizmatlarimiz uchun mavjud bo'lgan parollar va kalitlarning markaziy xotirasini yozdik, ularni kerakli darajada o'zgartirish mumkin.
  • Biz Keystone uchun noldan 4 ta yangi backend yozdik (foydalanuvchilar, loyihalar, rollar, rollarni belgilash), ular aslida uning ma'lumotlar bazasini almashtirdi va endi bizning foydalanuvchi parollarimiz uchun yagona ombor vazifasini bajaradi.
  • Biz barcha Openstack xizmatlariga ushbu siyosatlarni har bir serverdan mahalliy sifatida o‘qish o‘rniga uchinchi tomon siyosat xizmatiga o‘tishni o‘rgatganmiz (ha, Openstack sukut bo‘yicha shunday ishlaydi!)

Bunday katta qayta ishlash turli rivojlanish guruhlari tomonidan yozilgan bir nechta tizimlarda katta, murakkab va eng muhimi, sinxron o'zgarishlarni talab qiladi. Yig'ilgandan so'ng butun tizim ishlashi kerak.

Qanday qilib bunday o'zgarishlarni amalga oshirish va uni buzmaslik kerak? Avval biz kelajakka biroz qarashga qaror qildik.

Chiqarish strategiyasi

  • Mahsulotni bir necha bosqichda ishlab chiqarish mumkin edi, ammo bu ishlab chiqish vaqtini uch barobarga oshiradi. Bundan tashqari, bir muncha vaqt davomida biz ma'lumotlar bazalarida ma'lumotlarni to'liq desinxronizatsiya qilgan bo'lar edik. Siz o'zingizning sinxronizatsiya vositalarini yozishingiz va uzoq vaqt davomida bir nechta ma'lumotlar do'konlari bilan yashashingiz kerak bo'ladi. Va bu turli xil xavflarni keltirib chiqaradi.
  • Foydalanuvchi uchun shaffof tarzda tayyorlanishi mumkin bo'lgan hamma narsa oldindan amalga oshirildi. 2 oy davom etdi.
  • Biz o'zimizga bir necha soat davomida to'xtab qolishga ruxsat berdik - faqat foydalanuvchi operatsiyalari resurslarni yaratish va o'zgartirish uchun.
  • Barcha yaratilgan resurslarning ishlashi uchun uzilishlar qabul qilinishi mumkin emas edi. Biz ishga tushirish vaqtida resurslar uzilishlarsiz ishlashi va mijozlarga ta'sir qilishi kerakligini rejalashtirgan edik.
  • Agar biror narsa noto'g'ri bo'lsa, mijozlarimizga ta'sirini kamaytirish uchun biz yakshanba kuni kechqurun foydalanishga qaror qildik. Kechasi virtual mashinalarni kamroq mijozlar boshqaradi.
  • Biz barcha mijozlarimizni ishga tushirish uchun tanlangan davrda xizmatlarni boshqarish mavjud bo'lmasligi haqida ogohlantirdik.

Digressiya: tarqatish nima?

<ehtiyotkorlik, falsafa>

Har bir IT mutaxassisi tarqatish nima ekanligiga osongina javob bera oladi. Siz CI/CD-ni o'rnatasiz va hamma narsa avtomatik ravishda do'konga yetkaziladi. 🙂

Albatta bu haqiqat. Ammo qiyinchilik shundaki, zamonaviy kodlarni etkazib berishni avtomatlashtirish vositalari bilan ishlab chiqarishni tushunish yo'qoladi. Zamonaviy transportga qaraganingizda g'ildirak ixtirosining epikligini qanday unutasiz. Hamma narsa shu qadar avtomatlashtirilganki, prokat ko'pincha butun rasmni tushunmasdan amalga oshiriladi.

Va butun rasm shunday. Rollout to'rtta asosiy jihatdan iborat:

  1. Kodni etkazib berish, shu jumladan ma'lumotlarni o'zgartirish. Masalan, ularning migratsiyalari.
  2. Kodni qaytarish - agar biror narsa noto'g'ri bo'lsa, orqaga qaytish qobiliyati. Masalan, zaxira nusxalarini yaratish orqali.
  3. Har bir ishga tushirish/qayta qaytarish operatsiyasi vaqti. Birinchi ikki nuqtaning har qanday operatsiya vaqtini tushunishingiz kerak.
  4. Ta'sir qilingan funksionallik. Kutilayotgan ijobiy va mumkin bo'lgan salbiy ta'sirlarni ham baholash kerak.

Muvaffaqiyatli ishga tushirish uchun ushbu jihatlarning barchasini hisobga olish kerak. Odatda faqat birinchi yoki eng yaxshisi ikkinchi nuqta baholanadi, keyin esa ishga tushirish muvaffaqiyatli hisoblanadi. Ammo uchinchi va to'rtinchisi yanada muhimroq. Agar tarqatish bir daqiqa o'rniga 3 soat davom etsa, qaysi foydalanuvchi buni yoqtiradi? Yoki ishlab chiqarish jarayonida keraksiz narsa ta'sirlansa? Yoki bitta xizmatning uzilishi oldindan aytib bo'lmaydigan oqibatlarga olib keladimi?

1..n qonuni, ozodlikka tayyorgarlik

Avvaliga men uchrashuvlarimizni qisqacha tasvirlab berishni o'yladim: butun jamoa, uning qismlari, kofe punktlarida ko'plab munozaralar, tortishuvlar, testlar, aqliy hujumlar. Keyin bu keraksiz bo'ladi deb o'yladim. To'rt oylik rivojlanish har doim bundan iborat bo'ladi, ayniqsa siz doimiy ravishda yetkazilishi mumkin bo'lgan narsalarni yozayotganingizda, lekin jonli tizim uchun bitta katta xususiyat. Bu barcha xizmatlarga ta'sir qiladi, lekin foydalanuvchilar uchun "veb-interfeysdagi bitta tugma"dan boshqa hech narsa o'zgarmasligi kerak.

Har bir yangi uchrashuvdan qanday qilib o'tishni tushunishimiz o'zgardi va sezilarli darajada. Misol uchun, biz to'liq hisob-kitob ma'lumotlar bazasini yangilamoqchi edik. Ammo biz vaqtni hisoblab chiqdik va buni oqilona vaqt ichida amalga oshirish mumkin emasligini tushundik. Hisob-kitoblar ma'lumotlar bazasini parchalash va arxivlash uchun bizga deyarli bir hafta kerak bo'ldi. Va kutilgan ishga tushirish tezligi hali ham qoniqarli bo'lmaganida, biz butun bazani tortib oladigan qo'shimcha, kuchliroq uskunaga buyurtma berdik. Biz buni tezroq qilishni istamaganimizdan emas, lekin joriy etish zarurati bizga hech qanday imkoniyat qoldirmadi.

Bizning birimiz ishlab chiqarish virtual mashinalarimizning mavjudligiga ta'sir qilishi mumkinligiga shubha qilganimizda, biz bir hafta davomida sinovlar, tajribalar, kod tahlillarini o'tkazdik va bu bizning ishlab chiqarishimizda sodir bo'lmasligini aniq tushundik va hatto eng shubhali odamlar ham rozi bo'lishdi. bu bilan.

Shu bilan birga, texnik yordam xodimlari mijozlarga ulanish usullari bo'yicha ko'rsatmalar yozish uchun o'zlarining mustaqil tajribalarini o'tkazdilar, ular ishga tushirilgandan keyin o'zgarishi kerak edi. Ular foydalanuvchi UX ustida ishladilar, ko'rsatmalar tayyorladilar va shaxsiy maslahatlar berishdi.

Biz mumkin bo'lgan barcha chiqarish operatsiyalarini avtomatlashtirdik. Har bir operatsiya, hatto eng oddiylari ham skript qilingan va sinovlar doimiy ravishda o'tkazilgan. Ular xizmatni o'chirishning eng yaxshi usuli - demonni o'tkazib yuborish yoki xavfsizlik devori yordamida xizmatga kirishni bloklash haqida bahslashdi. Biz tarqatishning har bir bosqichi uchun guruhlarning nazorat ro'yxatini yaratdik va uni doimiy ravishda yangilab turdik. Biz barcha ishlab chiqarish ishlari uchun vaqtlar bilan Gantt diagrammasini tuzdik va doimiy ravishda yangilab turdik.

Va hokazo…

Yakuniy harakat, chiqishdan oldin

... chiqish vaqti keldi.

Ular aytganidek, san'at asarini tugatib bo'lmaydi, faqat uning ustida ishlash tugaydi. Siz hamma narsani topa olmasligingizni tushunib, iroda bilan harakat qilishingiz kerak, lekin barcha mumkin bo'lgan holatlar uchun barcha oqilona taxminlarni qilganingizga, barcha tanqidiy xatolarni yopganingizga va barcha ishtirokchilar qo'llaridan kelganini qilganingizga ishonishingiz kerak. Qanchalik ko'p kod chiqarsangiz, o'zingizni bunga ishontirish shunchalik qiyin bo'ladi (bundan tashqari, hamma narsani oldindan ko'rish mumkin emasligini hamma tushunadi).

Biz foydalanuvchilarimiz uchun kutilmagan ta'sirlar va ishlamay qolishlar bilan bog'liq barcha xavflarni qoplash uchun qo'limizdan kelganini qilganimizga amin bo'lganimizdan keyin ishga tushirishga tayyormiz. Ya'ni, hamma narsa noto'g'ri ketishi mumkin, bundan tashqari:

  1. (Biz uchun muqaddas, eng qimmatli) foydalanuvchi infratuzilmasiga ta'sir qilish,
  2. Funktsionallik: ishga tushirilgandan keyin xizmatimizdan foydalanish avvalgidek bo'lishi kerak.

Chiqarish

Hamma narsaga ta'sir qilgan yangilanish hikoyasi
Ikkita rulo, 8 ta aralashmaydi

Biz foydalanuvchilarning barcha so'rovlari uchun 7 soat davomida to'xtab qolamiz. Ayni paytda bizda ham ishlab chiqarish rejasi, ham qayta tiklash rejasi mavjud.

  • Chiqarishning o'zi taxminan 3 soat davom etadi.
  • Sinov uchun 2 soat.
  • 2 soat - o'zgarishlarni orqaga qaytarish uchun zaxira.

Har bir harakat uchun Gantt diagrammasi tuzilgan, bu qancha vaqt davom etadi, nima ketma-ket sodir bo'ladi, nima parallel ravishda amalga oshiriladi.

Hamma narsaga ta'sir qilgan yangilanish hikoyasi
Dastlabki versiyalardan biri bo'lgan Gantt diagrammasining bir qismi (parallel bajarilmasdan). Eng qimmatli sinxronizatsiya vositasi

Barcha ishtirokchilarning tarqatishdagi roli, ular qanday vazifalarni bajarishlari va nima uchun mas'ul ekanliklari aniqlanadi. Biz har bir bosqichni avtomatlashtirishga, uni yoyishga, orqaga qaytarishga, fikr-mulohazalarni to'plashga va qaytadan chiqarishga harakat qilamiz.

Voqealar xronikasi

Shunday qilib, 15-aprel, yakshanba kuni soat 29:10 da XNUMX kishi ishga keldi. Asosiy ishtirokchilardan tashqari, ba'zilari shunchaki jamoani qo'llab-quvvatlash uchun kelgan, buning uchun ularga alohida rahmat.

Shuni ham ta'kidlash kerakki, bizning asosiy testerimiz ta'tilda. Sinovsiz ishga tushirish mumkin emas, biz variantlarni o'rganmoqdamiz. Bir hamkasbi bizni ta'tildan sinab ko'rishga rozi bo'ldi, buning uchun u butun jamoadan katta minnatdorchilikni qabul qiladi.

00:00. STOP
Biz foydalanuvchi so'rovlarini to'xtatamiz, texnik ish degan yozuvni osib qo'yamiz. Monitoring qichqiradi, lekin hamma narsa normaldir. Biz yiqilishi kerak bo'lgan narsadan boshqa hech narsa tushmaganligini tekshiramiz. Va biz migratsiya bo'yicha ishni boshlaymiz.

Har bir insonning bosma nashr rejasi bor, hamma kim nima qilayotganini va qaysi daqiqada ekanligini biladi. Har bir harakatdan so'ng, biz ularni oshib ketmasligimiz uchun vaqtni tekshiramiz va hamma narsa rejaga muvofiq ketadi. Hozirgi bosqichda to'g'ridan-to'g'ri tarqatishda ishtirok etmayotganlar hamkasblarini bezovta qilmaslik uchun onlayn o'yinchoqni (Xonotic, 3-toifa quacks) ishga tushirish orqali tayyorlanmoqda. 🙂

02:00. Chiqarilgan
Yoqimli ajablantiradigan narsa - ma'lumotlar bazalarimiz va migratsiya skriptlarini optimallashtirish tufayli biz ishlab chiqarishni bir soat oldin tugatamiz. Umumiy qichqiriq: "Yo'lga chiqdi!" Barcha yangi funksiyalar ishlab chiqarilmoqda, ammo hozircha faqat biz ularni interfeysda ko'rishimiz mumkin. Har kim test rejimiga o'tadi, ularni guruhlarga ajratadi va oxirida nima bo'lganini ko'rishni boshlaydi.

Bu juda yaxshi chiqmadi, biz buni 10 daqiqadan so'ng, hech narsa bog'lanmagan yoki jamoa a'zolarining loyihalarida ishlagandan keyin tushunamiz. Tez sinxronlash, biz muammolarimizni aytamiz, ustuvorliklarni belgilaymiz, guruhlarga bo'linib, nosozliklarni tuzatishga o'tamiz.

02:30. To'rt ko'zga qarshi ikkita katta muammo
Biz ikkita katta muammo topamiz. Mijozlar ba'zi ulangan xizmatlarni ko'rmasligini va hamkor hisoblari bilan bog'liq muammolar paydo bo'lishini tushundik. Ikkalasi ham ba'zi chekka holatlar uchun migratsiya skriptlarining nomukammalligi bilan bog'liq. Biz buni hozir tuzatishimiz kerak.

Biz buni kamida 4 ko'z bilan yozib olgan so'rovlarni yozamiz. Ularning ishlashi va hech narsani buzmasligiga ishonch hosil qilish uchun biz ularni oldindan ishlab chiqarish jarayonida sinab ko'ramiz. Siz aylana olasiz. Shu bilan birga, biz yana bir nechta muammolarni ochib beradigan muntazam integratsiya testimizni o'tkazamiz. Ularning barchasi kichik, lekin ular ham ta'mirlanishi kerak.

03:00. -2 muammo +2 muammo
Oldingi ikkita katta muammolar va deyarli barcha kichik muammolar ham hal qilindi. Tuzatishda band bo'lmaganlarning barchasi o'z hisoblarida faol ishlamoqda va topganlari haqida xabar berishmoqda. Biz ustunlik qilamiz, jamoalar o'rtasida taqsimlaymiz va muhim bo'lmagan narsalarni ertalab qoldiramiz.

Biz yana sinovlarni o'tkazamiz, ular ikkita yangi katta muammolarni aniqlaydilar. Barcha xizmat siyosatlari toʻgʻri kelmadi, shuning uchun baʼzi foydalanuvchi soʻrovlari avtorizatsiyadan oʻtmaydi. Bundan tashqari, hamkor hisoblari bilan bog'liq yangi muammo. Keling, qarashga shoshilaylik.

03:20. Favqulodda sinxronizatsiya
Bitta yangi muammo tuzatildi. Ikkinchidan, biz favqulodda sinxronlashni tashkil qilamiz. Biz nima bo'layotganini tushunamiz: avvalgisi bitta muammoni hal qildi, ammo boshqasini yaratdi. Buni qanday qilib to'g'ri va oqibatlarsiz qilishni aniqlash uchun biz tanaffus qilamiz.

03:30. Olti ko'z
Biz barcha sheriklar uchun hamma narsa yaxshi bo'lishi uchun bazaning yakuniy holati qanday bo'lishi kerakligini tushunamiz. Biz 6 ta ko'z bilan so'rov yozamiz, uni oldindan ishlab chiqarishda aylantiramiz, sinovdan o'tkazamiz, ishlab chiqarish uchun aylantiramiz.

04:00. Hammasi ishlayapti
Barcha testlar o'tdi, hech qanday jiddiy muammolar ko'rinmadi. Vaqti-vaqti bilan jamoada biror narsa kimgadir ishlamaydi, biz tezda javob beramiz. Ko'pincha signal noto'g'ri. Lekin ba'zida biror narsa kelmaydi yoki alohida sahifa ishlamaydi. Biz o'tiramiz, tuzatamiz, tuzatamiz, tuzatamiz. Alohida jamoa oxirgi katta xususiyatni - hisob-kitobni ishga tushirmoqda.

04:30. Qaytib bo'lmaydigan nuqta
Qaytib bo'lmaydigan nuqta yaqinlashmoqda, ya'ni, agar biz orqaga qaytishni boshlasak, bizga berilgan to'xtash vaqtini uchratmaymiz. Billing bilan bog'liq muammolar mavjud, u hamma narsani biladi va yozib oladi, lekin o'jarlik bilan mijozlardan pulni hisobdan chiqarishni rad etadi. Shaxsiy sahifalar, harakatlar va statuslarda bir nechta xatolar mavjud. Asosiy funksionallik ishlaydi, barcha testlar muvaffaqiyatli o'tadi. Biz tarqatish bo'lib o'tdi, deb qaror qildik, biz orqaga qaytmaymiz.

06:00. UIdagi hamma uchun ochiq
Xatolar tuzatildi. Foydalanuvchilarga yoqmaydigan ba'zilari keyinroq qoldiriladi. Biz hamma uchun interfeysni ochamiz. Biz hisob-kitoblar ustida ishlashda davom etamiz, foydalanuvchilarning fikr-mulohazalarini va monitoring natijalarini kutamiz.

07:00. API yuklanishi bilan bog'liq muammolar
Biz API-dagi yukni biroz noto'g'ri rejalashtirganimiz va muammoni aniqlay olmagan ushbu yukni sinab ko'rganimiz aniq bo'ldi. Natijada, so'rovlarning ≈5% bajarilmaydi. Keling, safarbarlik va sabab izlaylik.

Billing o'jar va ishlashni ham istamaydi. O'zgarishlarni xotirjamlik bilan amalga oshirish uchun uni keyinroqqa qoldirishga qaror qildik. Ya'ni, unda barcha resurslar to'plangan, ammo mijozlarning hisobdan chiqarilishi o'tmaydi. Albatta, bu muammo, lekin umumiy ishlab chiqarish bilan solishtirganda bu ahamiyatsiz ko'rinadi.

08:00. API tuzatish
Biz yukni tuzatishni ishlab chiqdik, nosozliklar yo'qoldi. Biz uyga borishni boshlaymiz.

10:00. Hammasi
Hammasi tuzatilgan. Kuzatuvda jim va mijozlarning joyida jamoa asta-sekin uyquga ketadi. Hisob-kitob qoladi, ertaga uni tiklaymiz.

Keyin kun davomida ba'zi mijozlarimiz uchun jurnallar, bildirishnomalar, qaytarish kodlari va moslashtirishlarni tuzatuvchi prokatlar bo'ldi.

Shunday qilib, tarqatish muvaffaqiyatli bo'ldi! Bu, albatta, yaxshiroq bo'lishi mumkin edi, lekin biz mukammallikka erishishimiz uchun etarli bo'lmagan narsalar haqida xulosa chiqardik.

jami

2 oylik faol tayyorgarlik jarayonida bir necha soatdan bir necha kungacha davom etgan 43 ta vazifa bajarildi.

Chiqarish paytida:

  • yangi va o'zgartirilgan jinlar - 5 ta monolit o'rnini bosuvchi 2 dona;
  • ma'lumotlar bazalari ichidagi o'zgarishlar - foydalanuvchi ma'lumotlariga ega bo'lgan barcha 6 ma'lumotlar bazamizga ta'sir ko'rsatdi, uchta eski ma'lumotlar bazasidan bitta yangi ma'lumotlar bazasiga yuklab olishlar amalga oshirildi;
  • butunlay qayta ishlangan frontend;
  • yuklab olingan kod miqdori - 33 ming qator yangi kod, testlarda ≈ 3 ming qator kod, ≈ 5 ming qator migratsiya kodi;
  • barcha ma'lumotlar buzilmagan, bitta mijozning virtual mashinasi shikastlanmagan. 🙂

Yaxshi tarqatish uchun yaxshi amaliyotlar

Ular bizni bu qiyin vaziyatda yo'l-yo'riq ko'rsatdilar. Ammo, umuman olganda, har qanday tarqatish paytida ularga amal qilish foydalidir. Ammo ishlab chiqarish qanchalik murakkab bo'lsa, ular qanchalik katta rol o'ynaydi.

  1. Siz qilishingiz kerak bo'lgan birinchi narsa - tarqatish foydalanuvchilarga qanday ta'sir qilishi mumkinligini yoki qanday ta'sir qilishini tushunishdir. To'xtash vaqti bo'ladimi? Agar shunday bo'lsa, to'xtash vaqti qancha? Bu foydalanuvchilarga qanday ta'sir qiladi? Mumkin bo'lgan eng yaxshi va eng yomon stsenariylar qanday? Va xavflarni qoplash.
  2. Hamma narsani rejalashtiring. Har bir bosqichda siz tarqatishning barcha jihatlarini tushunishingiz kerak:
    • kodni yetkazib berish;
    • kodni qaytarish;
    • har bir operatsiyani bajarish vaqti;
    • ta'sirlangan funksionallik.
  3. Ssenariylarni ishlab chiqarishning barcha bosqichlari, shuningdek, ularning har biridagi xavflar aniq bo'lguncha o'ynang. Agar sizda biron bir shubha bo'lsa, siz tanaffus qilishingiz va shubhali bosqichni alohida tekshirishingiz mumkin.
  4. Har bir bosqich, agar u foydalanuvchilarga yordam bersa, yaxshilanishi mumkin va yaxshilanishi kerak. Masalan, u ishlamay qolish vaqtini qisqartiradi yoki ba'zi xavflarni yo'q qiladi.
  5. Qayta tiklash testi kodni etkazib berish testidan ko'ra muhimroqdir. Orqaga qaytarish natijasida tizim asl holatiga qaytishini tekshirish va buni testlar bilan tasdiqlash kerak.
  6. Avtomatlashtirish mumkin bo'lgan hamma narsa avtomatlashtirilgan bo'lishi kerak. Avtomatlashtirish mumkin bo'lmagan hamma narsa oldindan cheat varag'iga yozilishi kerak.
  7. Muvaffaqiyat mezonini yozib oling. Qanday funksionallik mavjud bo'lishi kerak va qaysi vaqtda? Agar bu sodir bo'lmasa, orqaga qaytish rejasini ishga tushiring.
  8. Va eng muhimi - odamlar. Har bir inson nima qilayotganini, nima uchun va nima uchun tarqatish jarayonida ularning harakatlariga bog'liqligini bilishi kerak.

Va bitta jumla bilan, yaxshi rejalashtirish va ishlab chiqish bilan siz xohlagan narsani sotish uchun oqibatlarsiz tarqatishingiz mumkin. Hatto ishlab chiqarishdagi barcha xizmatlaringizga ta'sir qiladigan narsa.

Manba: www.habr.com

a Izoh qo'shish