Булут кызматы болгондо кантип тынч уктоо керек: негизги архитектуралык кеңештер

Булут кызматы болгондо кантип тынч уктоо керек: негизги архитектуралык кеңештерsophiagworld тарабынан LOST

Бул макалада инженерлерге миллиондогон колдонуучулар кире алган масштабдуу кызматтар менен иштөөгө жардам берүү үчүн кээ бир жалпы үлгүлөр камтылган. 

Автордун тажрыйбасында бул толук тизме эмес, чындыгында натыйжалуу кеңеш берүү. Ошентип, баштайлы.

колдоосу менен которулган Mail.ru Cloud Solutions.

Биринчи деңгээл

Төмөндө саналып өткөн чаралар салыштырмалуу жөнөкөй, бирок таасири жогору. Эгер сиз аларды мурда сынап көрбөгөн болсоңуз, анда олуттуу жакшыртууларга таң каласыз.

Код катары инфраструктура

Кеңештин биринчи бөлүгү инфраструктураны код катары ишке ашыруу болуп саналат. Бул бүт инфраструктураны жайылтуу үчүн сизде программалык жол болушу керек дегенди билдирет. Бул татаал угулат, бирок биз иш жүзүндө төмөнкү код жөнүндө айтып жатабыз:

100 виртуалдык машинаны жайылтуу

  • Ubuntu менен
  • Ар бири 2 ГБ RAM
  • алар төмөнкү кодго ээ болот
  • бул параметрлер менен

Сиз инфраструктураңыздагы өзгөрүүлөргө көз салып, версияны башкаруу аркылуу аларга тез кайрыла аласыз.

Мендеги модернист жогоруда айтылгандардын баарын аткаруу үчүн Kubernetes/Docker колдонсоңуз болот дейт жана ал туура.

Мындан тышкары, сиз Chef, Puppet же Terraform аркылуу автоматташтыра аласыз.

Үзгүлтүксүз интеграция жана жеткирүү

Масштабдуу кызматты түзүү үчүн, ар бир тартуу өтүнүчү үчүн куруу жана сыноо түтүгүнө ээ болуу маанилүү. Сыноо абдан жөнөкөй болсо да, ал жок дегенде сиз орноткон коддун компиляцияланышын камсыз кылат.

Бул этапта ар бир жолу сиз төмөнкү суроого жооп бересиз: менин ассамблеям тесттерди түзүп, тапшырабы, ал жарактуубу? Бул аз тилкедей сезилиши мүмкүн, бирок ал көп маселелерди чечет.

Булут кызматы болгондо кантип тынч уктоо керек: негизги архитектуралык кеңештер
Бул кенелерди көрүүдөн өткөн сулуу эч нерсе жок

Бул технология үчүн сиз Github, CircleCI же Дженкинсти баалай аласыз.

Load Balancers

Ошентип, биз трафикти багыттоо жана бардык түйүндөрдө бирдей жүктү камсыз кылуу үчүн жүк балансын иштеткибиз келет же иштебей калган учурда кызмат улана берет:

Булут кызматы болгондо кантип тынч уктоо керек: негизги архитектуралык кеңештер
Жүктөлгөн баланстоочу, адатта, трафикти бөлүштүрүүнү жакшы аткарат. Эң жакшы тажрыйба - бул сизде бир дагы катачылык болбошу үчүн ашыкча салмактуулук.

Адатта, жүк баланстоочулар сиз колдонгон булутта конфигурацияланат.

Сурамдар үчүн RayID, корреляция ID же UUID

Мындай билдирүү менен колдонмо катасына туш болдуңуз беле: "Бир жерден ката кетти. Бул идентификаторду сактап, аны колдоо тобубузга жөнөтүңүз"?

Булут кызматы болгондо кантип тынч уктоо керек: негизги архитектуралык кеңештер
Уникалдуу идентификатор, корреляция идентификатору, RayID же вариациялардын кайсынысы болбосун, сурамга анын бүткүл жашоо циклине көз салууга мүмкүндүк берген уникалдуу идентификатор. Бул журналдардагы бардык суроо-талап жолун көзөмөлдөөгө мүмкүндүк берет.

Булут кызматы болгондо кантип тынч уктоо керек: негизги архитектуралык кеңештер
Колдонуучу А системасына суроо-талап кылат, андан кийин А В менен байланышат, ал С менен байланышат, аны X ичинде сактайт, андан кийин сурам Ага кайтарылат.

Эгер сиз виртуалдык машиналарга алыстан туташып, суроо-талаптын жолун издөөгө аракет кылсаңыз (жана кайсы чалуулар жасалып жатканын кол менен байланыштырсаңыз), сиз жинди болуп каласыз. Уникалдуу идентификатордун болушу жашоону бир топ жеңилдетет. Бул сиздин кызматыңыз өскөн сайын убакытты үнөмдөө үчүн жасай турган эң жөнөкөй нерселердин бири.

Орто деңгээл

Бул жердеги кеңеш мурункуларына караганда татаалыраак, бирок туура шаймандар тапшырманы жеңилдетет, ал тургай чакан жана орто компаниялар үчүн инвестициянын кайтарымын камсыздайт.

Борборлоштурулган каттоо

Куттуктайбыз! Сиз 100 виртуалдык машинаны жайгаштырдыңыз. Эртеси күнү башкы директор келип, кызматты сынап жатып алган катасы боюнча даттанат. Бул биз жогоруда сөз кылган тиешелүү идентификаторду билдирет, бирок кыйроого себеп болгон машинаны табуу үчүн 100 машинанын журналдарын карап чыгышыңыз керек болот. Анан эртеңки презентацияга чейин табыш керек.

Бул кызыктуу укмуштуу окуя сыяктуу көрүнгөнү менен, бардык журналдарды бир жерден издөө мүмкүнчүлүгүнө ээ болгонуңуз жакшы. Мен ELK стекинин орнотулган функционалдуулугун колдонуу менен журналдарды борборлоштуруу маселесин чечтим: ал издөө журналдарын чогултууну колдойт. Бул, чынында эле, белгилүү бир журналды табуу маселесин чечүүгө жардам берет. Бонус катары, сиз диаграммаларды жана ушул сыяктуу башка кызыктуу нерселерди түзө аласыз.

Булут кызматы болгондо кантип тынч уктоо керек: негизги архитектуралык кеңештер
ELK стек функциясы

Мониторинг агенттери

Эми сиздин кызматыңыз иштеп жатат, сиз анын үзгүлтүксүз иштешин текшеришиңиз керек. Муну жасоонун эң жакшы жолу - бир нече иштетүү агенттер, алар параллелдүү иштешет жана анын иштешин жана негизги операциялардын аткарылышын текшерүү.

Бул учурда сиз муну текшериңиз чуркоо куруу жакшы сезет жана жакшы иштейт.

Чакан жана орто көлөмдөгү долбоорлор үчүн мен API'лерди көзөмөлдөө жана документтештирүү үчүн Postmanды сунуштайм. Бирок, жалпысынан алганда, сиз жөн гана качан үзгүлтүккө учураганын билип, өз убагында кабардар болуу мүмкүнчүлүгүнө ээ болгуңуз келет.

Жүктөлгөнүнө жараша автоматтык масштабдоо

Бул абдан жөнөкөй. Эгерде сизде VM тейлөө сурамдары болсо жана ал эстутумдун 80% колдонуусуна жакындап калса, анын ресурстарын көбөйтсөңүз же кластерге көбүрөөк VM кошсоңуз болот. Бул операциялардын автоматтык түрдө аткарылышы жүк астында ийкемдүү күчтүн өзгөрүшү үчүн эң сонун. Бирок сиз канча акча коротконуңуздан этият болушуңуз керек жана акылга сыярлык чек коюуңуз керек.

Булут кызматы болгондо кантип тынч уктоо керек: негизги архитектуралык кеңештер
Көпчүлүк булут кызматтары менен, сиз аны көбүрөөк серверлерди же күчтүү серверлерди колдонуу менен автоматтык масштабда конфигурациялай аласыз.

Эксперимент системасы

Жаңыртууларды коопсуз жайылтуунун жакшы жолу - бир сааттын ичинде колдонуучулардын 1% үчүн бир нерсени сынап көрүү. Сиз, албетте, мындай механизмдердин иштеп жатканын көрдүңүз. Мисалы, Facebook көрүүчүлөрдүн бөлүктөрүн башка түстө көрсөтөт же колдонуучулар өзгөрүүлөрдү кандай кабыл алганын көрүү үчүн шрифттин өлчөмүн өзгөртөт. Бул A/B тести деп аталат.

Жада калса жаңы функцияны чыгарууну эксперимент катары баштап, анан аны кантип чыгарууну аныктоого болот. Сиз ошондой эле кызматыңызда деградацияга алып келген функциянын негизинде конфигурацияны "эстөө" же өзгөртүү мүмкүнчүлүгүнө ээ болосуз.

Өркүндөтүлгөн деңгээл

Бул жерде ишке ашыруу өтө кыйын болгон кеңештер. Сизге балким, бир аз көбүрөөк ресурстар керек болот, андыктан чакан же орто компанияга муну башкаруу кыйынга турат.

Көк-жашыл жайылтуулар

Муну мен «Эрланг» ачуу жолу деп атайм. Эрланг телефон компаниялары пайда болгондон кийин кеңири колдонула баштаган. Софтсвичтер телефон чалууларын багыттоо үчүн колдонула баштады. Бул өчүргүчтөрдөгү программалык камсыздоонун негизги максаты системаны жаңыртуу учурунда чалууларды таштабоо болгон. Эрлангта жаңы модулду мурункуну кыйратпастан жүктөөнүн жакшы жолу бар.

Бул кадам жүк балансынын болушуна жараша болот. Келгиле, сизде программалык камсыздоонун N версиясы бар деп элестетип көрөлү, анан сиз N+1 версиясын орноткуңуз келет. 

сиз биздин колубуздан келет жөн гана кызматты токтотуп, кийинки версиясын колдонуучуларыңызга ылайыктуу убакта чыгарыңыз жана бир аз токтоп калыңыз. Бирок сизде бар дейли чындыгында катуу SLA шарттары. Ошентип, SLA 99,99% сиз оффлайн режимине өтсөңүз болот дегенди билдирет гана жылына 52 мүнөткө.

Эгерде сиз чындап эле ушундай көрсөткүчтөргө жетүүнү кааласаңыз, анда сизге бир эле учурда эки жайгаштыруу керек: 

  • азыр болгон (N);
  • кийинки версия (N+1). 

Сиз жүктөөнү тең салмактоочуга регрессияларды активдүү көзөмөлдөп жатканда трафиктин бир пайызын жаңы версияга (N+1) багыттоосун айтасыз.

Булут кызматы болгондо кантип тынч уктоо керек: негизги архитектуралык кеңештер
Бул жерде бизде жакшы иштеген жашыл N жайгаштыруу бар. Биз бул жайгаштыруунун кийинки версиясына өтүүгө аракет кылып жатабыз

Адегенде биз N+1 жайгаштыруу аз сандагы трафик менен иштээрин билүү үчүн чындап эле кичинекей тестти жөнөтөбүз:

Булут кызматы болгондо кантип тынч уктоо керек: негизги архитектуралык кеңештер
Акыр-аягы, бизде автоматташтырылган текшерүүлөрдүн топтому бар, алар акыры биздин жайылтуу аяктаганга чейин иштейбиз. Эгер сиз абдан абдан этият болсоңуз, жаман регрессия учурунда тез артка кайтаруу үчүн N жайгаштырууну түбөлүккө сактай аласыз:

Булут кызматы болгондо кантип тынч уктоо керек: негизги архитектуралык кеңештер
Эгер сиз дагы өркүндөтүлгөн деңгээлге өтүүнү кааласаңыз, көк-жашыл жайгаштыруудагы бардыгы автоматтык түрдө иштей берсин.

Аномалияны аныктоо жана автоматтык түрдө азайтуу

Сиз борборлоштурулган журналдарды жана жакшы журнал чогултуу бар экенин эске алып, сиз буга чейин эле жогорку максаттарды коюуга болот. Мисалы, ийгиликсиздиктерди алдын ала айтыңыз. Функциялар мониторлордо жана журналдарда көзөмөлдөнөт жана ар кандай диаграммалар түзүлөт - жана сиз эмне туура эмес болорун алдын ала айта аласыз:

Булут кызматы болгондо кантип тынч уктоо керек: негизги архитектуралык кеңештер
Аномалиялар аныкталгандан кийин, сиз кызмат көрсөткөн айрым кеңештерди изилдей баштайсыз. Мисалы, CPU жүктөөнүн кескин өсүшү катуу дисктин иштебей жатканын көрсөтүшү мүмкүн, ал эми суроо-талаптардын көбөйүшү масштабды көбөйтүү керек экенин көрсөтүп турат. Мындай статистикалык маалыматтар кызматты активдүү кылууга мүмкүндүк берет.

Бул түшүнүктөр менен сиз каалаган өлчөмдө масштабды кеңейтип, машиналардын, маалымат базаларынын, байланыштардын жана башка ресурстардын мүнөздөмөлөрүн активдүү жана реактивдүү түрдө өзгөртө аласыз.

Баары болду!

Приоритеттердин бул тизмеси, эгерде сиз булут кызматын көтөрүп жатсаңыз, көптөгөн көйгөйлөрдөн куткарат.

Түпнуска макаланын автору окурмандарды өз пикирлерин калтырып, өзгөртүүлөрдү киргизүүгө чакырат. Макала ачык булак катары таркатылды, автордун суроо-талаптарын тартуу Github боюнча кабыл алат.

Тема боюнча дагы эмнени окуу керек:

  1. Барыңыз жана CPU кэштери
  2. Kubernetes каракчылык рухунда ишке ашыруу үчүн шаблон менен
  3. Биздин канал Telegramдагы Kubernetes айланасында

Source: www.habr.com

Комментарий кошуу