Bulut xizmatiga ega bo'lganingizda qanday qilib yaxshi uxlash kerak: asosiy me'moriy maslahatlar

Bulut xizmatiga ega bo'lganingizda qanday qilib yaxshi uxlash kerak: asosiy me'moriy maslahatlarSophiagworld tomonidan LOST

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.

Qo'llab-quvvatlash bilan tarjima qilingan Mail.ru bulutli echimlar.

Boshlang'ich darajasi

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.

Bulut xizmatiga ega bo'lganingizda qanday qilib yaxshi uxlash kerak: asosiy me'moriy maslahatlar
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:

Bulut xizmatiga ega bo'lganingizda qanday qilib yaxshi uxlash kerak: asosiy me'moriy maslahatlar
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"?

Bulut xizmatiga ega bo'lganingizda qanday qilib yaxshi uxlash kerak: asosiy me'moriy maslahatlar
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.

Bulut xizmatiga ega bo'lganingizda qanday qilib yaxshi uxlash kerak: asosiy me'moriy maslahatlar
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.

Bulut xizmatiga ega bo'lganingizda qanday qilib yaxshi uxlash kerak: asosiy me'moriy maslahatlar
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.

Bulut xizmatiga ega bo'lganingizda qanday qilib yaxshi uxlash kerak: asosiy me'moriy maslahatlar
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.

Bulut xizmatiga ega bo'lganingizda qanday qilib yaxshi uxlash kerak: asosiy me'moriy maslahatlar
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:

Bulut xizmatiga ega bo'lganingizda qanday qilib yaxshi uxlash kerak: asosiy me'moriy maslahatlar
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:

Bulut xizmatiga ega bo'lganingizda qanday qilib yaxshi uxlash kerak: asosiy me'moriy maslahatlar
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:

Bulut xizmatiga ega bo'lganingizda qanday qilib yaxshi uxlash kerak: asosiy me'moriy maslahatlar
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.

Mavzu bo'yicha yana nimani o'qish kerak:

  1. Go va CPU keshlari
  2. Kubernetes qaroqchilik ruhida amalga oshirish shabloniga ega
  3. Telegramdagi Kubernetes atrofidagi kanalimiz

Manba: www.habr.com

a Izoh qo'shish