4 ta muhandis, 7000 ta server va bitta global pandemiya

Hey Xabr! E'tiboringizga maqolaning tarjimasini taqdim etaman "4 muhandis, 7000 server va bitta global pandemiya" Adib Daw tomonidan.

Agar bu sarlavha umurtqa pog‘onasini biroz titratmasa, keyingi xatboshiga o‘tish yoki bizning sahifamizga tashrif buyurish kerak. kompaniyadagi martaba - gaplashmoqchimiz.

Biz kimmiz

Biz kod yozishni va apparat bilan ishlashni yaxshi ko'radigan 4 ta pingvindan iborat jamoamiz. Bo'sh vaqtimizda biz Amerika Qo'shma Shtatlari bo'ylab 7000 xil ma'lumot markazlari bo'ylab tarqatilgan Linux tizimida ishlaydigan 3 dan ortiq jismoniy serverlar parkini joylashtirish, saqlash va ishlatish uchun javobgarmiz.

Bundan tashqari, biz buni saytlardan 10 000 km uzoqlikda, O'rta er dengizidagi plyajdan qisqa masofada joylashgan o'z ofisimiz qulayligida qilish imkoniga ega bo'ldik.

Masshtab muammolari

Dastlabki investitsiyalar nisbatan pastligi sababli startap oʻz infratuzilmasini bulutda joylashtirishdan boshlash mantiqiy boʻlsa-da, biz Outbrain’da oʻz serverlarimizdan foydalanishga qaror qildik. Biz buni qildik, chunki bulutli infratuzilma xarajatlari ma'lum darajaga qadar ishlab chiqilgandan so'ng ma'lumotlar markazlarida joylashgan o'z uskunalarimizni ishlatish xarajatlaridan ancha yuqori. Bundan tashqari, sizning serveringiz eng yuqori darajadagi nazorat va muammolarni bartaraf etish imkoniyatlarini taqdim etadi.

Rivojlanayotganimizda muammolar har doim yaqin. Bundan tashqari, ular odatda guruhlarga bo'linadi. Serverlar sonining tez o'sishi sharoitida to'g'ri ishlashi uchun serverning hayot aylanishini boshqarish doimiy ravishda o'zini-o'zi takomillashtirishni talab qiladi. Ma'lumotlar markazlarida server guruhlarini boshqarish uchun dasturiy ta'minot usullari tezda noqulay bo'lib qoladi. QoS standartlariga javob berishda nosozliklarni aniqlash, muammolarni bartaraf etish va yumshatish juda xilma-xil apparat vositalari, turli xil ish yuklari, yangilash muddatlari va hech kim tashvishlanmoqchi bo'lmagan boshqa yoqimli narsalarni o'tkazish masalasiga aylanadi.

Domenlaringizni boshqaring

Ushbu muammolarning ko'pchiligini hal qilish uchun biz Outbrain-dagi serverning hayot aylanishini uning asosiy komponentlariga ajratdik va ularni domenlar deb nomladik. Misol uchun, bir domen uskunaga bo'lgan talablarni qamrab oladi, ikkinchisi inventarizatsiyaning hayot aylanishi bilan bog'liq logistikani, uchinchisi esa soha xodimlari bilan aloqalarni qamrab oladi. Uskunaning kuzatuvchanligi bilan bog'liq yana bir narsa bor, ammo biz barcha fikrlarni tasvirlamaymiz. Bizning maqsadimiz domenlarni kod yordamida mavhumlashtirish uchun o'rganish va aniqlash edi. Ishchi abstraksiya ishlab chiqilgandan so'ng, u qo'lda qo'llaniladigan, sinovdan o'tkaziladigan va takomillashtiriladigan jarayonga o'tkaziladi. Nihoyat, domen API orqali boshqa domenlar bilan integratsiya qilish uchun sozlangan boʻlib, yaxlit, dinamik va doimiy rivojlanib boradigan apparat hayotiy sikli tizimini tashkil etadi, u joylashtiriladigan, sinovdan oʻtkaziladigan va kuzatilishi mumkin. Boshqa barcha ishlab chiqarish tizimlarimiz kabi.

Ushbu yondashuvni qabul qilish bizga ko'plab muammolarni to'g'ri hal qilish imkonini berdi - asboblar va avtomatlashtirishni yaratish orqali.

Domen kerak

Garchi elektron pochta va elektron jadvallar dastlabki kunlarda talabni qondirishning samarali usuli bo'lsa-da, bu muvaffaqiyatli yechim emas edi, ayniqsa serverlar soni va kiruvchi so'rovlar hajmi ma'lum darajaga etganida. Tez kengayish sharoitida kiruvchi so'rovlarni yaxshiroq tashkil qilish va ustuvorlik qilish uchun biz taklif qiladigan chiptalar tizimidan foydalanishimiz kerak edi:

  • Faqat tegishli maydonlar ko'rinishini sozlash imkoniyati (oddiy)
  • Ochiq API (kengaytiriladigan)
  • Jamoamizga ma'lum (tushunilgan)
  • Mavjud ish oqimlarimiz bilan integratsiya (birlashtirilgan)

Sprint va ichki vazifalarimizni boshqarish uchun Jiradan foydalanganimiz sababli, mijozlarimizga chiptalarni topshirish va natijalarini kuzatishda yordam beradigan boshqa loyiha yaratishga qaror qildik. Jira-dan kiruvchi so'rovlar va ichki vazifalarni boshqarish uchun foydalanish bizga barcha jarayonlarni bir butun sifatida ko'rib chiqishga imkon beradigan yagona Kanban kengashini yaratishga imkon berdi. Bizning ichki "mijozlarimiz" qo'shimcha vazifalarning ahamiyatsiz tafsilotlarini (masalan, asboblarni yaxshilash, xatolarni tuzatish) o'rganmasdan, faqat jihozlarga bo'lgan so'rovlarni ko'rdilar.

4 ta muhandis, 7000 ta server va bitta global pandemiya
Jiradagi Kanban taxtasi

Bonus sifatida, navbatlar va ustuvorliklar endi hamma uchun ko'rinadigan bo'lganligi ma'lum bir so'rovning "navbatdagi qayerda" ekanligini va undan oldin nima ekanligini tushunishga imkon berdi. Bu egalariga biz bilan bog‘lanmasdan turib, o‘z so‘rovlarini birinchi o‘ringa qo‘yish imkonini berdi. Uni torting va tamom. Shuningdek, bu bizga Jira-da yaratilgan ko'rsatkichlar asosida so'rov turlari bo'yicha SLA'larimizni kuzatish va baholash imkonini berdi.

Uskunaning ishlash davri domeni

Har bir server rafida ishlatiladigan apparatni boshqarishning murakkabligini tasavvur qilishga harakat qiling. Bundan ham yomoni shundaki, ko'plab apparat qismlari (RAM, ROM) ombordan server xonasiga va orqaga ko'chirilishi mumkin. Ular ham muvaffaqiyatsizlikka uchraydi yoki hisobdan chiqariladi va almashtiriladi va almashtirish/ta'mirlash uchun yetkazib beruvchiga qaytariladi. Bularning barchasi uskunaga jismoniy xizmat ko'rsatish bilan shug'ullanadigan kolokatsiya xizmati xodimlariga etkazilishi kerak. Ushbu muammolarni hal qilish uchun biz Floppy deb nomlangan ichki vositani yaratdik. Uning vazifasi:

  • Dala xodimlari bilan aloqalarni boshqarish, barcha ma'lumotlarni yig'ish;
  • Har bir tugallangan va tasdiqlangan uskunaga texnik xizmat ko'rsatish ishidan keyin "ombor" ma'lumotlarini yangilash.

Ombor, o'z navbatida, Grafana yordamida tasvirlangan bo'lib, biz barcha o'lchovlarimizni chizish uchun foydalanamiz. Shunday qilib, biz omborni vizualizatsiya qilish va boshqa ishlab chiqarish ehtiyojlari uchun xuddi shu vositadan foydalanamiz.

4 ta muhandis, 7000 ta server va bitta global pandemiyaGrafanadagi ombor uskunalarini boshqarish paneli

Kafolat ostidagi server qurilmalari uchun biz Dispetcher deb ataydigan boshqa vositadan foydalanamiz. U:

  • Tizim jurnallarini to'playdi;
  • Sotuvchi talab qilgan formatda hisobotlarni yaratadi;
  • API orqali sotuvchidan so'rov yaratadi;
  • Ilova identifikatorini uning rivojlanishini keyingi kuzatish uchun qabul qiladi va saqlaydi.

Bizning da'vomiz qabul qilingandan so'ng (odatda ish soatlarida), ehtiyot qism tegishli ma'lumotlar markaziga yuboriladi va xodimlar tomonidan qabul qilinadi.

4 ta muhandis, 7000 ta server va bitta global pandemiya
Jenkins konsolining chiqishi

Aloqa domeni

Quvvatning tobora ortib borishini talab qiladigan biznesimizning jadal o'sishini ta'minlash uchun biz mahalliy ma'lumotlar markazlarida texnik mutaxassislar bilan ishlash uslubimizni moslashtirishimiz kerak edi. Agar dastlab masshtabni kengaytirish yangi serverlarni sotib olishni nazarda tutgan bo'lsa, unda konsolidatsiya loyihasidan so'ng (Kubernetesga o'tish asosida) u butunlay boshqacha bo'lib qoldi. Bizning evolyutsiyamiz "javonlarni qo'shish" dan "serverlarni o'zgartirish" ga.

Yangi yondashuvdan foydalanish ma'lumotlar markazi xodimlari bilan yanada qulayroq muloqot qilish imkonini beradigan yangi vositalarni ham talab qildi. Ushbu vositalar quyidagilar uchun kerak edi:

  • Oddiylik;
  • Avtonomiya;
  • Samaradorlik;
  • Ishonchlilik.

Biz o'zimizni zanjirdan chiqarib tashlashimiz va texnik xodimlar to'g'ridan-to'g'ri server uskunalari bilan ishlashi uchun ishni tuzishimiz kerak edi. Bizning aralashuvimizsiz va ish yuki, ish vaqti, jihozlarning mavjudligi va boshqalar bilan bog'liq barcha muammolarni muntazam ravishda ko'tarmasdan.

Bunga erishish uchun biz har bir ma'lumot markaziga iPad o'rnatdik. Serverga ulangandan so'ng quyidagilar sodir bo'ladi:

  • Qurilma ushbu server haqiqatan ham biroz ishlashni talab qilishini tasdiqlaydi;
  • Serverda ishlaydigan ilovalar yopiladi (agar kerak bo'lsa);
  • Ish bo'yicha ko'rsatmalar to'plami Slack kanalida talab qilinadigan qadamlarni tushuntiradi;
  • Ish tugagandan so'ng, qurilma serverning yakuniy holatining to'g'riligini tekshiradi;
  • Agar kerak bo'lsa, ilovalarni qayta ishga tushiradi.

Bundan tashqari, biz texnikga yordam berish uchun Slack botini ham tayyorladik. Keng imkoniyatlar tufayli (biz funksionallikni doimiy ravishda kengaytirib bordik) bot ularning ishini osonlashtirdi va hayotimizni ancha osonlashtirdi. Shunday qilib, biz serverlarni qayta ishlash va texnik xizmat ko'rsatish jarayonining ko'p qismini optimallashtirdik va o'zimizni ish jarayonidan chetlashtirdik.

4 ta muhandis, 7000 ta server va bitta global pandemiya
maʼlumotlar markazlarimizdan birida iPad

Uskuna domeni

Ma'lumotlar markazi infratuzilmasini ishonchli tarzda kengaytirish har bir komponentning yaxshi ko'rinishini talab qiladi, masalan:

  • Uskuna nosozliklarini aniqlash
  • Server holatlari (faol, joylashtirilgan, zombi va boshqalar)
  • Quvvat iste'moli
  • Mikrodastur versiyasi
  • Bu butun biznes uchun tahlil

Bizning yechimlarimiz asbob-uskunalarni qanday, qayerdan va qachon sotib olish to'g'risida qaror qabul qilishimizga imkon beradi, ba'zan hatto zarur bo'lmasdan ham. Shuningdek, turli jihozlarga yuklanish darajasini aniqlash orqali biz resurslarni taqsimlashni yaxshilashga erishdik. Xususan, energiya iste'moli. Endi biz serverni rafga o'rnatishdan va quvvat manbaiga ulashdan oldin, uning butun umri davomida va yakuniy ishdan chiqishiga qadar joylashtirish bo'yicha qaror qabul qilishimiz mumkin.

4 ta muhandis, 7000 ta server va bitta global pandemiya
Grafana'da energiya boshqaruv paneli

Va keyin COVID-19 paydo bo'ldi ...

Bizning jamoamiz tashrif buyuruvchilarga ular uchun qiziqarli bo'lishi mumkin bo'lgan tegishli kontent, mahsulot va xizmatlarni topishga yordam berish uchun onlayn media kompaniyalari va nashriyotlarga imkoniyatlar yaratadigan texnologiyalarni yaratadi. Bizning infratuzilmamiz ba'zi qiziqarli yangiliklar chiqqanda hosil bo'ladigan trafikka xizmat ko'rsatish uchun mo'ljallangan.

COVID-19 atrofidagi ommaviy axborot vositalarining qizg'in yoritilishi va trafikning ko'payishi biz zudlik bilan ushbu bosimlarga dosh berishni o'rganishimiz kerakligini anglatardi. Bundan tashqari, bularning barchasi global inqiroz davrida, etkazib berish zanjirlari buzilgan va xodimlarning aksariyati uyda bo'lgan paytda amalga oshirilishi kerak edi.

Ammo, aytganimizdek, bizning modelimiz allaqachon taxmin qiladi:

  • Bizning ma'lumotlar markazlarimizdagi uskunalar, asosan, jismoniy jihatdan biz uchun mavjud emas;
  •  Biz deyarli barcha jismoniy ishlarni masofadan turib bajaramiz;
  • Ish asinxron, avtonom va keng miqyosda amalga oshiriladi;
  • Biz uskunalarga bo'lgan talabni yangi asbob-uskunalar sotib olish o'rniga "qismlardan qurish" usuli yordamida qondiramiz;
  • Bizda oddiy ta'mirlash ishlarini olib borish emas, balki yangi narsalarni yaratish imkonini beruvchi omborimiz bor.

Shunday qilib, ko'plab kompaniyalarning ma'lumotlar markazlariga jismoniy kirishiga to'sqinlik qilgan global cheklovlar bizga unchalik ta'sir ko'rsatmadi.Ehtiyot qismlar va serverlarga kelsak, ha, biz uskunaning barqaror ishlashini ta'minlashga harakat qildik. Ammo bu to'satdan biron bir uskuna mavjud emasligi aniqlanganda yuzaga kelishi mumkin bo'lgan hodisalarning oldini olish maqsadida qilingan. Biz hozirgi talabni qondirishni maqsad qilgan holda zaxiralarimizni to'ldirishni ta'minladik.

Xulosa qilib shuni aytmoqchimanki, bizning ma'lumotlar markazi sanoatida ishlashga bo'lgan yondashuvimiz ma'lumotlar markazini jismoniy boshqarishda yaxshi kod dizayni tamoyillarini qo'llash mumkinligini isbotlaydi. Va, ehtimol, sizga qiziqarli bo'ladi.

Asl: tyts

Manba: www.habr.com

a Izoh qo'shish