Netflix-da to'liq tsiklni ishlab chiquvchilar - O'zingiz yaratgan narsadan foydalaning

2012 yil bo'ldi va Netflix-da muhim xizmatni boshqarish juda og'ir edi. Joylashuvlar ho'l qumdan yurganday tuyuldi. Kanaring to'g'ri ishlashga emas, balki chidamlilikni tekshirishga qaratilgan edi ("bir haftalik kanareykadan keyin hech narsa buzilmaydi, buni itarib yuborgin"). Tadqiqot muammolari jamoalar o'rtasida kauchuk to'pni urish kabi tuyuldi, buning asl sababini aniqlash qiyin va bir-birining urishishidan to'xtash qiyin. Bularning barchasi o'zgarishlarni talab qiladigan belgilar edi.

2018 yilga tezda olg'a intiling. Netflix kuniga 125 million tomoshabinlarga yoqadigan 125 millionga etdi. Biz muhandislik guruhlarimizni rivojlantirish va ekspluatatsiya tarixini yaxshilashga katta mablag 'sarfladik. Yo'l davomida biz xizmatlarimizni qurishda va ishlatishda ko'plab yondashuvlarni sinab ko'rdik. Biz Netflix-da nisbatan keng tarqalgan bitta yondashuvni, shu jumladan uning ijobiy va salbiy tomonlarini ham baham ko'rmoqchimiz. Umid qilamizki, bizning tajribamiz bilan o'rtoqlashish, boshqalarni alternativalarni muhokama qilishga va sayohatimizdan o'rganishga ilhomlantiradi.

Bitta jamoaning sayohati

Edge Engineering Netflix-ning ishlashi uchun tayyor bo'lishi kerak bo'lgan AWS xizmatlarining birinchi qatlami uchun javobgardir. Ilgari, Edge Engineering dasturiy ta'minotning hayotiy tsiklining tarqatish + operatsiya + qo'llab-quvvatlash qismlariga egalik qiladigan op-yo'naltirilgan guruhlar va SRE mutaxassislariga ega edi. Yangi xususiyatni chiqarish, dasturchilarni guruhlar bilan ishlashni boshqarish va boshqarish uchun o'lchovlar, ogohlantirishlar va imkoniyatlarni hisobga olish kabi ishlarni muvofiqlashtiruvchi vositalarni ishlab chiqarishni anglatadi. Kodni ishga tushirishda va qo'llab-quvvatlaydigan sheriklarda samarali bo'lish uchun ishchi guruhlarga yangi funktsiyalar va xatolarni tuzatish bo'yicha doimiy mashg'ulotlar kerak edi. Alohida operatsion guruhga ega bo'lishning asosiy salbiy tomoni, ishlar yaxshi ketayotganida, ishlab chiqaruvchilar o'rtasida kamroq uzilishlar bo'lgan.

Ish yaxshi bo'lmaganda, xarajatlar oshdi. Dev va ops / SREs o'rtasidagi aloqa va bilimlarni uzatish sust bo'ldi, bu muammolarni hal qilish yoki sheriklarning savollariga javob berish uchun qo'shimcha safarlarni talab qildi. Amalga oshirilayotgan o'zgarishlar to'g'risida bevosita ma'lumotga ega bo'lmagan guruhlar tufayli joylashish bilan bog'liq muammolar ko'proq vaqtni aniqlash va vaqtni hal qilish bilan bog'liq edi. To'liq va joylashtirilgan kod o'rtasidagi tafovut bugungi kunga qaraganda ancha uzoqroq bo'ldi, relizlar kunlar emas, haftalar bo'yicha bo'lib o'tdi. Fikr-mulohazalar yo'qligi yoki monitoringning etishmasligi yoki ishlashning kechikishi kabi og'riqlarni bevosita boshdan kechirgan ishchilar ushbu muammolar haqida eshitgan devlarga murojaat qilishdi.

Buni yaxshilash uchun Edge Engineering gibrid model bilan tajriba o'tkazdi, unda devlar kerak bo'lganda kodni bosib turishi mumkin edi, shuningdek, ish vaqtidan tashqari ishlab chiqarish masalalari va yordam so'rovlari uchun javobgar edi. Bu ishlab chiquvchilar uchun fikrlar va o'quv tsikllarini yaxshiladi. Faqat qisman javobgarlikni o'z zimmasiga olgan holda bo'shliqlar qoldi. Masalan, devlar o'zlarining joylashuvlarini va quvurlarni nosozliklarini tuzatishni amalga oshirsalar ham, ular tez-tez operatsiyalarni amalga oshirish bo'yicha mutaxassisga murojaat qilishadi. Operatsiyalarga yo'naltirilgan odamlar uchun ular kundalik ishlarni bajarishga undashgan, ammo boshqalar ularga ishonishning hojati yo'qligi sababli avtomatlashtirishga ustuvorlik berish qiyin bo'lgan.

Yaxshiroq yo'lni qidirib, biz orqaga bir qadam tashladik va birinchi tamoyillardan boshlashga qaror qildik. Biz nimani amalga oshirishga harakat qildik va nega biz muvaffaqiyat qozonolmadik?

Dasturiy ta'minotning hayot aylanishi

Dasturiy ta'minotning hayotiy tsiklining maqsadi "vaqtni qadrlash" ni optimallashtirish; g'oyalarni mijozlar uchun ishlaydigan mahsulotlar va xizmatlarga samarali ravishda aylantirish. Dasturiy ta'minot xizmatini ishlab chiqish va uni boshqarish barcha majburiyatlarni o'z ichiga oladi:

SDLC komponentlari

Biz bu vazifalarni taqsimlashda edik. Haddan tashqari holatda, bu har bir funktsional maydon boshqa shaxs / rolga tegishli ekanligini anglatadi:

SDLC mutaxassislari

Ushbu ixtisoslashtirilgan rollar har bir segmentda samaradorlikni keltirib chiqaradi va butun hayot davomida samarasizlikni keltirib chiqaradi. Mutaxassislar yo'naltirilgan hududda tajribani rivojlantiradilar va ushbu sohaga zarur bo'lgan narsalarni optimallashtiradilar. Ular jumboqni echishda samaraliroq bo'lishadi. Ammo dasturiy ta'minot mijozlarga qiymatni etkazish uchun butun hayot aylanishini talab qiladi. Har biri o'z hayot tsikliga ega bo'lgan mutaxassislar guruhiga ega bo'lishi, oxir-oqibat rivojlanishni sekinlashtiradigan siloslarni yaratishi mumkin. Turli xil mutaxassislarni bitta jamoaga birlashtirish guruhlarning siljishini kamaytirishi mumkin, ammo har bir odamning har bir vazifani bajarishi aloqa uchun qo'shimcha xarajatlarni keltirib chiqaradi, qiyinchiliklarni keltirib chiqaradi va fikr-mulohazalarning samaradorligini pasaytiradi.

O'zingiz yaratgan narsadan foydalanish

Yondashuvimizni qayta ko'rib chiqish uchun devops harakati tamoyillaridan ilhom oldik. Siloslarni buzish va dasturiy ta'minotning butun hayotiga umumiy egalikni rag'batlantirish orqali biz o'rganish va fikr almashish uchun optimallashtirishimiz mumkin:

Ishlash printsiplari bilan SDLC

"Yaratganingizdan foydalaning" devops printsiplarini amalda qo'llab, tizimni ishlab chiquvchi guruhga ushbu tizimni ishlatish va qo'llab-quvvatlash uchun javobgar bo'lishi kerak. Ushbu mas'uliyatni har bir rivojlanish guruhiga taqsimlash, uni tashqariga chiqarmay, to'g'ridan-to'g'ri geribildirim yaratadi va rag'batlantiradi. Operatsion og'riqni his qiladigan jamoalar tizim dizayni yoki kodini o'zgartirish orqali og'riqni bartaraf etishga qodir; ular ikkala vazifa uchun ham javobgar va hisobdor. Har bir ishlab chiqarish jamoasi tarqatish muammolari, ishlash xatolari, imkoniyatlarni rejalashtirish, bo'shliqlar haqida ogohlantirish, sheriklarni qo'llab-quvvatlash va hokazolarga ega.

Dasturchi vositalari orqali o'lchov

To'liq rivojlanish hayotiy tsikliga egalik qilish, dasturiy ta'minot ishlab chiqaruvchilardan nimani kutayotganligini sezilarli darajada oshiradi. Umumiy rivojlanish ehtiyojlarini soddalashtiradigan va avtomatlashtiradigan vositalar bu holatni muvozanatlashga yordam beradi. Masalan, agar dasturiy ta'minotni ishlab chiquvchilardan o'zlarining xatolarini boshqarish kutilsa, muammolarni aniqlash va ularni ogohlantirishga, shuningdek qaytarib berishda yordam beradigan boy vositaga ehtiyoj bor.

Netflix har bir rivojlanish guruhidagi muammolarni hal qilish uchun umumiy vositalar va infratuzilmani rivojlantirish vazifasi bilan markazlashtirilgan guruhlarni (masalan, Cloud platformasi, ishlash va ishonchlilik muhandisligi, muhandislik vositalari) yaratdi. Ushbu markazlashtirilgan jamoalar o'zlarining maxsus bilimlarini qayta ishlatiladigan qurilish bloklariga aylantirib, kuchaytirgich sifatida harakat qilishadi. Masalan:

Mutaxassislar qayta ishlatiladigan vositalarni yaratadilar

Qo'lda ushbu vositalarga ega bo'lgan ishlab chiquvchilar guruhlari mahsulotning o'ziga xos sohasidagi muammolarni hal qilishga e'tibor qaratishlari mumkin. Qo'shimcha vositalarni ishlab chiqarishga ehtiyoj paydo bo'lganda, markazlashtirilgan guruhlar ehtiyojlar bir nechta guruhlarda mavjud yoki yo'qligini baholaydilar. Ular bo'lganida, hamkorlik boshlanadi. Ba'zan mahalliy ehtiyojlar markazlashtirilgan investitsiyalarni kafolatlash uchun juda o'ziga xosdir. Bunday holda, ishlab chiquvchi guruh o'zlari hal qilishlari uchun ularning ehtiyojlari etarlicha muhimligini hal qiladilar.

Shunga o'xshash muammolarda mahalliy va markaziy investitsiyalarni muvozanatlash bizning yondashuvimizning eng qiyin jihatlaridan biridir. Bizning tajribamizda ishlab chiquvchilar ehtiyojlarini qondirish uchun yangi echimlarni topishning afzalliklari, bir nechta guruhlar parallel ravishda echimlarni yaratishi mumkin, ular yo'lni pastga aylantirishi kerak. Muloqot va moslashish muvaffaqiyat kalitidir. Ehtiyojlarni va ular qanchalik keng tarqalganligini yaxshilab moslashtirishni boshlasak, biz investitsiyalarni Netflix-dagi guruhlar foydasiga ko'proq moslashtirishimiz mumkin.

To'liq tsiklni ishlab chiquvchilar

Ushbu g'oyalarning barchasini birlashtirib, biz ishlab chiqaruvchilarning ajoyib mahsuldorligi vositalari bilan jihozlangan ishlab chiqarish guruhi to'liq dasturiy ta'minotning hayotiy tsikliga javob beradigan modelga keldik: dizayn, ishlab chiqish, sinovdan o'tkazish, joylashtirish, ishlatish va qo'llab-quvvatlash.

To'liq tsiklni ishlab chiquvchisi

To'liq tsiklni ishlab chiquvchilar dasturiy ta'minot hayotining barcha sohalarida bilimga ega va samarali bo'lishlari kutilmoqda. Ko'pchilik Netflix-ni ishlab chiquvchilar uchun bu ular ilgari e'tibor bermagan sohalarda tarqalishni anglatadi. Biz ushbu bilimlarni berish va bu ko'nikmalarni rivojlantirish uchun dev bootcamplar va boshqa mashg'ulotlarning turlarini ishlatamiz. Bilim zarur, ammo etarli emas; To'liq tsiklga egalik qilish uchun quvurlar (masalan, Spinnaker) va monitoring (masalan, Atlas) uchun foydalanish uchun qulay vositalar kerak.

To'liq tsiklni ishlab chiquvchilar hayot tsiklining barcha sohalarida muhandislik intizomini qo'llaydilar. Ular muammolarni ishlab chiquvchi nuqtai nazaridan baholaydilar va "men ushbu tizimni boshqarish uchun zarur bo'lgan narsani qanday avtomatlashtira olaman?" Va "o'z-o'ziga xizmat ko'rsatishning qanday vositasi sheriklarimga o'zlarining savollariga javob berishga yordam berishadi?" Kabi savollarni berishadi. bizning jamoalarimiz qo'lda bo'lgan yondashuvlarga qaraganda odamlarga qaratilgan fikrlash va avtomatlashtirishni emas, balki tizimlarga asoslangan tizimni afzal ko'rishadi.

To'liq tsikl ishlab chiquvchisi modeliga o'tish fikrlashning o'zgarishini talab qiladi. Ba'zi ishlab chiquvchilar dizaynni yaratish + va ba'zan sinovni qiymat yaratishda asosiy usul sifatida ko'rishadi. Bu operatsiyalarni "chinakam ishiga" qaytish uchun operatsion va yordamchi masalalarni qisqa vaqt ichida tuzatishni afzal ko'rgan chalg'ituvchi sifatida qarashga olib keladi. Ammo to'liq tsiklni ishlab chiquvchilarning "haqiqiy ishi" - bu butun hayot davomida muammolarni hal qilish uchun dasturiy ta'minotni ishlab chiqish bo'yicha tajribadan foydalanish. To'liq tsiklni ishlab chiquvchi SWE, SDET va SRE kabi o'ylaydi va ishlaydi. Ba'zida ular ish muammolarini hal qiladigan dasturiy ta'minotni yaratadilar, boshqa vaqtlarda ular uchun test yozuvlarini yozadilar va boshqa vaqtlarda ular ushbu tizimning operatsion tomonlarini avtomatlashtiradilar.

Ushbu model muvaffaqiyat qozonishi uchun jamoalar olib keladigan qiymatga sodiq qolishlari va xarajatlarni yaxshi bilishlari kerak. Qurilish va joylashtirishni boshqarish, ishlab chiqarish bilan bog'liq muammolarni hal qilish va sheriklarni qo'llab-quvvatlash so'rovlariga javob berish uchun jamoalar etarli darajada xodimlar bilan ta'minlanishi kerak. Vaqtni mashg'ulotlarga sarflash kerak. Asboblarni jalb qilish va ularga sarmoya kiritish kerak. Qayta foydalanish mumkin bo'lgan tarkibiy qismlar va echimlarni yaratish uchun sheriklik markazlashtirilgan guruhlar bilan qo'llab-quvvatlanishi kerak. Hayotiy tsiklning barcha sohalarini rejalashtirish va retrospektivalarni ko'rib chiqish kerak. Ogohlantirish javoblarini avtomatlashtirish va o'z-o'ziga xizmat ko'rsatish sheriklarini qo'llab-quvvatlash vositalarini yaratish kabi investitsiyalar biznes loyihalari bilan bir qatorda ustuvor bo'lishi kerak. Tegishli xodimlar bilan ta'minlanganlik, ustuvorlik va sheriklik asosida jamoalar o'zlari yaratgan narsalarda muvaffaqiyatli bo'lishlari mumkin. Bularsiz, jamoalar haddan tashqari yuk va charchoq xavfini tug'diradi.

Ushbu modelni Netflix-dan tashqarida qo'llash uchun moslashtirish zarur. Sizning guruhingizdagi umumiy muammolar o'xshash bo'lishi mumkin - uzluksiz etkazib berish quvur liniyalariga ehtiyoj, monitoring / kuzatish va hokazo. Ammo ko'pgina kompaniyalar Netflix-dagi kabi markazlashtirilgan jamoalarga sarmoya kiritish uchun xodimlar soniga ega bo'lmaydilar va ular Netflix shkalasi talab qiladigan murakkablikka ehtiyoj sezmaydilar. Netflix-ning vositalari ko'pincha ochiq manbadir va ularni birinchi o'tish sifatida sinab ko'rish majburiy bo'lishi mumkin. Shu bilan birga, ushbu muammolarni hal qilish uchun boshqa ochiq manba va SaaS echimlari ko'plab kompaniyalarning ehtiyojlarini qondirishi mumkin. Potentsial qiymatni tahlil qilish bilan boshlang va xarajatlarni hisoblang, so'ngra fikrlash-smenali o'zgarish. Sizga kerak bo'lgan narsani baholang va zarur bo'lgan eng kam murakkablikni yodda tuting.

Savdo-sotiqlar

Texnologiyalar sohasi rivojlanish va operatsion ehtiyojlarini hal qilishning keng usullariga ega (keng ro'yxat uchun devops topologiyasini ko'ring). Bu erda tasvirlangan to'liq tsikl modeli Netflix-da keng tarqalgan, ammo uning salbiy tomonlari bor. Modelni tanlashdan oldin savdoni bilish muvaffaqiyatning ehtimolini oshirishi mumkin.

To'liq tsikl modelida asboblar orqali kengroq sohalarda mulkchilik va samaradorlik ustuvorligi beriladi. Non kengligi turli xil texnologiyalarga qiziqish va moslikni talab qiladi. Ba'zi ishlab chiquvchilar tor sohada jahon miqyosidagi mutaxassis bo'lishni afzal ko'rishadi va bizning sanoatimiz ba'zi sohalar uchun ushbu turdagi mutaxassislarga muhtoj. Ushbu mutaxassislar uchun keng bo'lishi kerak, har bir sohada o'rtacha chuqurlik, noqulay va ba'zan bajarilmasligi mumkin. Netflix-dagi ba'zilar doimiy kenglikni talab qilmasdan chuqur tajribaga muhtoj bo'lgan hududda bo'lishni afzal ko'rishadi va biz ushbu rollarni topishda ularni qo'llab-quvvatlaymiz; boshqalari esa keng ko'lamli majburiyatlardan zavqlanishadi va uni qabul qilishadi.

Bulutli tizimlarni yaratish va ishlatish tajribamizda biz to'liq tsikl talab qiladigan kenglikni qadrlaydigan ishlab chiquvchilar bilan samaradorlikni ko'rdik. Ammo bu kenglik har bir ishlab chiqaruvchining bilim yukini oshiradi va jamoa har hafta bitta sohaga e'tibor qaratganidan ko'ra ustuvorliklarni muvozanatlashini anglatadi. Biz buni ishlab chiquvchilar tarqatish + operatsiyalar + qo'llab-quvvatlash vazifalarini bajarishda navbatma-navbat almashtirish orqali osonlashtiramiz. Yaxshi bajarilsa, bu boshqalarga yo'naltirilgan va oqim holatidagi ishni bajarish uchun joy yaratadi. Muvaffaqiyatsiz ishlanganda, jamoalar yuqori darajadagi tanaffus ishlariga kirishayotganlarning barchasiga o'zlarini jalb qilishadi, bu esa ishlab chiqarish bilan bog'liq muammolarni keltirib chiqarishi mumkin.

Asbobsozlik va avtomatlashtirish ekspertizaning ko'lamini kengaytirishga yordam beradi, ammo hech qanday vosita ishlab chiquvchining samaradorligi va operatsion maydonidagi har qanday muammoni hal qilmaydi. Netflix markazlashtirilgan jamoalar tomonidan rasmiy ravishda qo'llab-quvvatlanadigan "asfaltlangan yo'l" vositalari va amaliyotiga ega. Biz asfaltlangan yo'llarni qabul qilishni majburlamaymiz, lekin ushbu texnologiyalardan foydalangan holda ishlab chiqish va ekspluatatsiya qilish ularni ishlatmaslikdan yaxshiroq tajriba bo'lishini ta'minlash orqali asrab olishni rag'batlantiramiz. Bizning yondoshuvimizning salbiy tomoni shundaki, "har bir jamoa o'zlarining eng muhim ehtiyojlari uchun har qanday funktsiyadan foydalanadigan" idealga erishib bo'lmaydi. Bizning markazlashgan jamoalarimizning echimlari uchun investitsiyalarning daromadliligini anglash kuch, moslashtirish va doimiy moslashuvni talab qiladi.

Xulosa

2012 yildan to bugungacha bo'lgan yo'l tajribalar, o'rganish va moslashuvlarga to'la edi. Ilgari tajribasi yaxshiroq modelni topishga undagan Edge Engineering bugungi kunda to'liq tsikl ishlab chiquvchisi modelidan faol foydalanmoqda. Joylashtirish odatiy va tez-tez bo'lib turadi, kanareykalar kunlar o'rniga bir necha soat talab qiladi va ishlab chiquvchilar jamoalar orasidagi vazifalarni bajarishdan ko'ra muammolarni tezda o'rganib, o'zgarishlar kiritishlari mumkin. Boshqa guruhlar ham shunga o'xshash foyda ko'rmoqda. Ammo, biz bu erga alternativ yondashuvlarni qo'llash va o'rganish orqali erishganimizdan xabardormiz. Biz ertaga evolyutsiyani rag'batlantirish kerakligini kutmoqdamiz.

Ushbu modelni amalda ko'rishni xohlaysizmi? Kelajakka bo'lgan yondashuvlarimizni qanday o'zgartirishimiz kerakligini o'rganishda ishtirok etmoqchimisiz? Bizga qo'shilishni o'ylab ko'ring.

Filipp Fisher-Ogden, Greg Burrell va Dianne Marsh tomonidan