Ushbu maqola muhandislarga millionlab foydalanuvchilar kirishi mumkin bo'lgan keng ko'lamli xizmatlar bilan ishlashda yordam beradigan ba'zi umumiy naqshlarni o'z ichiga oladi.
Muallifning tajribasiga ko'ra, bu to'liq ro'yxat emas, lekin haqiqatan ham samarali maslahat bering. Shunday ekan, boshlaylik.
Quyida sanab o'tilgan chora-tadbirlarni amalga oshirish nisbatan sodda, ammo yuqori ta'sirga ega. Agar siz ularni ilgari sinab ko'rmagan bo'lsangiz, sezilarli yaxshilanishlardan hayratda qolasiz.
Infratuzilma kod sifatida
Maslahatning birinchi qismi infratuzilmani kod sifatida amalga oshirishdir. Bu butun infratuzilmani joylashtirishning dasturiy usuliga ega bo'lishingiz kerakligini anglatadi. Bu murakkab tuyuladi, lekin biz aslida quyidagi kod haqida gapiramiz:
100 ta virtual mashinani joylashtirish
Ubuntu bilan
Har biri 2 GB RAM
ular quyidagi kodga ega bo'ladi
bu parametrlar bilan
Infratuzilmangizdagi oʻzgarishlarni kuzatishingiz va versiya boshqaruvi yordamida ularga tezda qaytishingiz mumkin.
Mendagi modernist yuqoridagilarning barchasini bajarish uchun Kubernetes/Docker-dan foydalanishingiz mumkinligini aytadi va u haq.
Bundan tashqari, siz Chef, Puppet yoki Terraform yordamida avtomatlashtirishni ta'minlashingiz mumkin.
Doimiy integratsiya va yetkazib berish
Kengaytiriladigan xizmatni yaratish uchun har bir tortib olish so'rovi uchun qurish va sinov quvuriga ega bo'lish muhimdir. Sinov juda oddiy bo'lsa ham, u hech bo'lmaganda siz kiritgan kod kompilyatsiya qilinishini ta'minlaydi.
Har safar ushbu bosqichda siz savolga javob berasiz: mening assambleyam testlarni tuzadi va o'tadi, bu to'g'rimi? Bu past chiziq kabi ko'rinishi mumkin, lekin u ko'p muammolarni hal qiladi.
Bu Shomillarni ko'rishdan go'zalroq narsa yo'q
Ushbu texnologiya uchun siz Github, CircleCI yoki Jenkinsni baholashingiz mumkin.
Yuk balanslagichlari
Shunday qilib, biz trafikni qayta yo'naltirish va barcha tugunlarda teng yukni ta'minlash uchun yuk balanslagichini ishga tushirishni xohlaymiz yoki ishlamay qolganda xizmat davom etadi:
Yuk balanslagichi odatda trafikni taqsimlashda yaxshi ish qiladi. Eng yaxshi amaliyot bu sizda biron bir nosozlik bo'lmasligi uchun ortiqcha muvozanatni saqlashdir.
Odatda, yuk balanslagichlari siz foydalanadigan bulutda sozlangan.
So'rovlar uchun RayID, korrelyatsiya identifikatori yoki UUID
Siz hech qachon bunday xabar bilan dastur xatosiga duch kelganmisiz: "Nimadir noto'g'ri bajarildi. Ushbu identifikatorni saqlang va uni qo'llab-quvvatlash guruhimizga yuboring"?
Noyob identifikator, korrelyatsiya identifikatori, RayID yoki har qanday o'zgarishlar - bu so'rovni butun umri davomida kuzatish imkonini beruvchi noyob identifikator. Bu loglardagi barcha so'rov yo'lini kuzatish imkonini beradi.
Foydalanuvchi A tizimiga so'rov yuboradi, so'ngra A B bilan bog'lanadi, u C bilan bog'lanadi, uni X da saqlaydi va keyin so'rov A ga qaytariladi.
Agar siz virtual mashinalarga masofadan ulansangiz va so'rov yo'lini kuzatishga harakat qilsangiz (va qaysi qo'ng'iroqlar amalga oshirilayotganini qo'lda bog'lasangiz), aqldan ozgan bo'lar edingiz. Noyob identifikatorga ega bo'lish hayotni ancha osonlashtiradi. Bu sizning xizmatingiz o'sishi bilan vaqtni tejash uchun qilishingiz mumkin bo'lgan eng oddiy narsalardan biridir.
O'rtacha darajasi
Bu yerdagi maslahatlar avvalgilariga qaraganda murakkabroq, ammo to'g'ri vositalar vazifani osonlashtiradi, hatto kichik va o'rta kompaniyalar uchun ham investitsiyalarni qaytarishni ta'minlaydi.
Markazlashtirilgan ro'yxatga olish
Tabriklaymiz! Siz 100 ta virtual mashinani joylashtirdingiz. Ertasi kuni bosh direktor kelib, xizmatni sinovdan o'tkazishda olgan xatosidan shikoyat qiladi. Bu biz yuqorida aytib o'tgan tegishli identifikator haqida xabar beradi, ammo halokatga sabab bo'lganini topish uchun siz 100 ta mashinaning jurnallarini ko'rib chiqishingiz kerak bo'ladi. Va uni ertangi taqdimotdan oldin topish kerak.
Bu qiziqarli sarguzashtdek tuyulsa-da, barcha jurnallarni bir joyda qidirish qobiliyatiga ega ekanligingizga ishonch hosil qilganingiz ma'qul. Men ELK stekining o'rnatilgan funksiyasidan foydalangan holda jurnallarni markazlashtirish muammosini hal qildim: u qidirish mumkin bo'lgan jurnallar to'plamini qo'llab-quvvatlaydi. Bu, albatta, ma'lum bir jurnalni topish muammosini hal qilishga yordam beradi. Bonus sifatida siz grafikalar va shunga o'xshash boshqa qiziqarli narsalarni yaratishingiz mumkin.
ELK stek funksionalligi
Monitoring agentlari
Endi sizning xizmatingiz ishlamoqda va uning muammosiz ishlashiga ishonch hosil qilishingiz kerak. Buni amalga oshirishning eng yaxshi usuli - bir nechta ishga tushirish agentlar, qaysi parallel ishlaydi va uning ishlashini va asosiy operatsiyalar bajarilganligini tekshiring.
Bu vaqtda siz buni tekshirasiz ishlaydigan qurilish yaxshi his qiladi va yaxshi ishlaydi.
Kichik va o'rta hajmdagi loyihalar uchun men API-larni kuzatish va hujjatlashtirish uchun Postman-ni tavsiya qilaman. Ammo, umuman olganda, siz faqat uzilishlar sodir bo'lganligini bilish va o'z vaqtida xabardor bo'lish usuliga ega ekanligingizga ishonch hosil qilishni xohlaysiz.
Yuklanishga qarab avtomatik masshtablash
Bu juda oddiy. Agar sizda VMga xizmat koʻrsatish boʻyicha soʻrovlar boʻlsa va u xotiradan foydalanish 80% ga yaqinlashayotgan boʻlsa, uning resurslarini koʻpaytirishingiz yoki klasterga qoʻshimcha VM qoʻshishingiz mumkin. Ushbu operatsiyalarning avtomatik bajarilishi yuk ostida elastik quvvat o'zgarishi uchun juda yaxshi. Lekin siz har doim qancha pul sarflashingizga ehtiyot bo'lishingiz va oqilona chegaralarni belgilashingiz kerak.
Ko'pgina bulutli xizmatlarda siz uni ko'proq serverlar yoki kuchliroq serverlar yordamida avtomatik o'lchash uchun sozlashingiz mumkin.
Tajriba tizimi
Yangilanishlarni xavfsiz tarqatishning yaxshi usuli - bu foydalanuvchilarning 1% uchun bir soat davomida biror narsani sinab ko'rishdir. Siz, albatta, bunday mexanizmlarni amalda ko'rgansiz. Misol uchun, Facebook tomoshabinlarning qismlarini boshqa rangda ko'rsatadi yoki foydalanuvchilar o'zgarishlarni qanday qabul qilishini ko'rish uchun shrift hajmini o'zgartiradi. Bu A/B testi deb ataladi.
Hatto yangi xususiyatni chiqarishni tajriba sifatida boshlash mumkin va keyin uni qanday chiqarish kerakligini aniqlash mumkin. Shuningdek, siz xizmatingizda buzilishga olib keladigan funksiya asosida konfiguratsiyani tezda “eslab qolish” yoki o'zgartirish imkoniyatiga ega bo'lasiz.
Ilg'or daraja
Bu erda amalga oshirish juda qiyin bo'lgan maslahatlar. Sizga biroz ko'proq resurslar kerak bo'ladi, shuning uchun kichik yoki o'rta kompaniya buni boshqarish qiyin bo'ladi.
Moviy-yashil joylashuvlar
Buni men “Erlang” yo‘li deyman. Erlang telefon kompaniyalari paydo bo'lganda keng qo'llanila boshlandi. Softswitchlar telefon qo'ng'iroqlarini yo'naltirish uchun ishlatila boshlandi. Ushbu kalitlardagi dasturiy ta'minotning asosiy maqsadi tizimni yangilash paytida qo'ng'iroqlarni to'xtatmaslik edi. Erlang oldingi modulni buzmasdan yangi modulni yuklashning yaxshi usuliga ega.
Ushbu bosqich yuk balanslagichining mavjudligiga bog'liq. Tasavvur qilaylik, sizda dasturiy ta'minotning N versiyasi bor va keyin siz N+1 versiyasini o'rnatmoqchisiz.
siz Biz .. bo'lardi faqat xizmatni to'xtating va foydalanuvchilaringiz uchun mos bo'lgan vaqtda keyingi versiyani chiqaring va bir oz to'xtab qoling. Ammo sizda bor deb o'ylang albatta qat'iy SLA shartlari. Shunday qilib, SLA 99,99% siz oflayn rejimga o'tishingiz mumkinligini anglatadi faqatgina yiliga 52 daqiqa.
Agar siz haqiqatan ham bunday ko'rsatkichlarga erishmoqchi bo'lsangiz, sizga bir vaqtning o'zida ikkita joylashtirish kerak bo'ladi:
hozir bo'lgan (N);
keyingi versiya (N+1).
Siz regressiyalarni faol ravishda kuzatib borganingizda, yuk balanslagichiga trafikning bir foizini yangi versiyaga (N+1) yo'naltirishni aytasiz.
Bu erda bizda yaxshi ishlaydigan yashil N joylashuvi mavjud. Biz ushbu joylashtirishning keyingi versiyasiga o'tishga harakat qilmoqdamiz
Avval biz N+1 joylashuvimiz kam miqdordagi trafik bilan ishlashini bilish uchun juda kichik test yuboramiz:
Nihoyat, bizda avtomatlashtirilgan tekshiruvlar to'plami mavjud bo'lib, biz oxir-oqibat joylashtirishimiz tugaguniga qadar bajaramiz. Agar Siz juda juda Ehtiyot bo'ling, yomon regressiya holatida tez orqaga qaytish uchun N joylashuvingizni abadiy saqlashingiz mumkin:
Agar siz yanada ilg'or darajaga o'tmoqchi bo'lsangiz, ko'k-yashil tarqatishdagi hamma narsa avtomatik ravishda ishga tushsin.
Anomaliyalarni aniqlash va avtomatik yumshatish
Markazlashtirilgan jurnallar va yaxshi jurnallar to'plamiga ega ekanligingizni hisobga olsak, siz allaqachon yuqori maqsadlarni belgilashingiz mumkin. Masalan, muvaffaqiyatsizliklarni proaktiv ravishda bashorat qiling. Funktsiyalar monitorlarda va jurnallarda kuzatiladi va turli diagrammalar tuziladi - va siz nima noto'g'ri bo'lishini oldindan taxmin qilishingiz mumkin:
Anomaliyalar aniqlangandan so'ng, siz xizmat ko'rsatadigan ba'zi maslahatlarni tekshirishni boshlaysiz. Misol uchun, protsessor yukining keskin ko'tarilishi qattiq diskning ishlamay qolganligini ko'rsatishi mumkin, so'rovlarning ko'payishi esa masshtabni kengaytirish kerakligini ko'rsatishi mumkin. Bunday statistik ma'lumotlar xizmatni faol qilish imkonini beradi.
Ushbu tushunchalar yordamida siz har qanday o'lchamda masshtabni kengaytira olasiz va mashinalar, ma'lumotlar bazalari, ulanishlar va boshqa resurslarning xususiyatlarini proaktiv va reaktiv ravishda o'zgartirishingiz mumkin.
Ana xolos!
Agar bulut xizmatini ko'tarayotgan bo'lsangiz, ushbu ustuvorliklar ro'yxati sizni juda ko'p muammolardan xalos qiladi.
Asl maqola muallifi o'quvchilarni o'z sharhlarini qoldirishga va o'zgartirishlar kiritishga taklif qiladi. Maqola ochiq manba sifatida tarqatiladi, muallif tomonidan so'rovlarni torting Github-da qabul qiladi.