Како мирно спавати када имате услугу у облаку: основни архитектонски савети

Како мирно спавати када имате услугу у облаку: основни архитектонски саветиЛОСТ би сопхиагворлд

Овај чланак садржи неке уобичајене обрасце који помажу инжењерима да раде са услугама великих размера којима приступају милиони корисника. 

По искуству аутора, ово није потпуна листа, али заиста ефикасан саветовати. Дакле, почнимо.

Преведено уз подршку Маил.ру Цлоуд Солутионс.

Први ниво

Мере наведене у наставку су релативно једноставне за спровођење, али имају велики утицај. Ако их раније нисте пробали, бићете изненађени значајним побољшањима.

Инфраструктура као код

Први део савета је имплементација инфраструктуре као кода. То значи да морате имати програмски начин за постављање целокупне инфраструктуре. Звучи компликовано, али заправо говоримо о следећем коду:

Примена 100 виртуелних машина

  • са Убунтуом
  • 2 ГБ РАМ-а сваки
  • имаће следећи код
  • са овим параметрима

Можете пратити промене у својој инфраструктури и брзо се вратити на њих помоћу контроле верзија.

Модерниста у мени каже да можете користити Кубернетес/Доцкер да урадите све горе наведено, и у праву је.

Поред тога, можете да обезбедите аутоматизацију користећи Цхеф, Пуппет или Терраформ.

Континуирана интеграција и испорука

Да бисте креирали скалабилну услугу, важно је да имате цевовод за изградњу и тестирање за сваки захтев за повлачење. Чак и ако је тест веома једноставан, он ће барем осигурати да се код који примените компајлира.

Сваки пут у овој фази одговарате на питање: да ли ће мој склоп саставити и проћи тестове, да ли је валидан? Ово може изгледати као ниска трака, али решава много проблема.

Како мирно спавати када имате услугу у облаку: основни архитектонски савети
Нема ништа лепше него видети ове крпеље

За ову технологију можете проценити Гитхуб, ЦирцлеЦИ или Јенкинс.

Балансери оптерећења

Дакле, желимо да покренемо балансатор оптерећења да преусмеримо саобраћај и обезбедимо једнако оптерећење на свим чворовима или се услуга наставља у случају неуспеха:

Како мирно спавати када имате услугу у облаку: основни архитектонски савети
Балансатор оптерећења обично добро ради дистрибуцију саобраћаја. Најбоља пракса је да претерате како не бисте имали ни једну тачку неуспеха.

Обично се балансери оптерећења конфигуришу у облаку који користите.

РаиИД, ИД корелације или УУИД за захтеве

Да ли сте икада наишли на грешку апликације са поруком попут ове: "Нешто није у реду. Сачувајте овај ИД и пошаљите га нашем тиму за подршку"?

Како мирно спавати када имате услугу у облаку: основни архитектонски савети
Јединствени идентификатор, ИД корелације, РаиИД или било која од варијација је јединствени идентификатор који вам омогућава да пратите захтев током његовог животног циклуса. Ово вам омогућава да пратите целу путању захтева у евиденцији.

Како мирно спавати када имате услугу у облаку: основни архитектонски савети
Корисник поставља захтев систему А, затим А контактира Б, који контактира Ц, чува га у Кс, а затим се захтев враћа А

Ако бисте се даљински повезали са виртуелним машинама и покушали да уђете у траг путањи захтева (и да ручно повежете који позиви се упућују), полудели бисте. Имати јединствени идентификатор чини живот много лакшим. Ово је једна од најлакших ствари које можете да урадите да бисте уштедели време како ваша услуга расте.

Средњи ниво

Овде су савети сложенији од претходних, али прави алати олакшавају задатак, обезбеђујући поврат улагања чак и за мала и средња предузећа.

Централизована сеча

Честитам! Поставили сте 100 виртуелних машина. Следећег дана долази извршни директор и жали се на грешку коју је добио приликом тестирања услуге. Пријављује одговарајући ИД о којем смо горе говорили, али ћете морати да прегледате евиденцију 100 машина да бисте пронашли ону која је изазвала пад. И то треба наћи пре сутрашњег излагања.

Иако ово звучи као забавна авантура, најбоље је да будете сигурни да имате могућност да претражите све часописе на једном месту. Решио сам проблем централизације дневника користећи уграђену функционалност ЕЛК стека: подржава колекцију дневника која се може претраживати. Ово ће заиста помоћи да се реши проблем проналажења одређеног часописа. Као бонус, можете креирати графиконе и друге такве забавне ствари.

Како мирно спавати када имате услугу у облаку: основни архитектонски савети
ЕЛК функционалност стека

Агенти за праћење

Сада када је ваша услуга покренута и ради, морате се уверити да ради глатко. Најбољи начин да то урадите је да покренете неколико агенти, који раде паралелно и провери да ли ради и да се изводе основне операције.

У овом тренутку то проверите радна конструкција је добра и ради добро.

За мале и средње пројекте, препоручујем Постман за праћење и документовање АПИ-ја. Али генерално, само желите да будете сигурни да имате начин да знате када је дошло до прекида рада и да будете благовремено обавештени.

Аутоматско скалирање у зависности од оптерећења

Врло је једноставно. Ако имате захтеве за сервисирање ВМ-а и он се приближава 80% коришћења меморије, можете или повећати његове ресурсе или додати више ВМ-а у кластер. Аутоматско извођење ових операција је одлично за еластичне промене снаге под оптерећењем. Али увек треба да водите рачуна о томе колико новца трошите и поставите разумне границе.

Како мирно спавати када имате услугу у облаку: основни архитектонски савети
Код већине услуга у облаку, можете да га конфигуришете да аутоматски скалира користећи више сервера или моћније сервере.

Експеримент систем

Добар начин за безбедно увођење ажурирања је могућност тестирања нечега за 1% корисника на сат времена. Ви сте, наравно, видели такве механизме на делу. На пример, Фацебоок показује деловима публике другу боју или мења величину фонта да би видео како корисници виде промене. Ово се зове А/Б тестирање.

Чак се и издавање нове функције може започети као експеримент, а затим одредити како да се објави. Такође добијате могућност да „запамтите“ или промените конфигурацију у ходу на основу функције која узрокује деградацију ваше услуге.

Напредни ниво

Ево савета које је прилично тешко применити. Вероватно ће вам требати мало више ресурса, тако да ће мала или средња компанија ово тешко управљати.

Плаво-зелено распоређивање

То је оно што ја називам "Ерланг" начином одвијања. Ерланг је постао широко коришћен када су се појавиле телефонске компаније. Софтсвитцхеви су почели да се користе за усмеравање телефонских позива. Главна сврха софтвера на овим прекидачима била је да не испушта позиве током надоградње система. Ерланг има леп начин за учитавање новог модула без рушења претходног.

Овај корак зависи од присуства балансера оптерећења. Замислимо да имате верзију Н свог софтвера, а затим желите да примените верзију Н+1. 

Ви смо могли само зауставите услугу и пустите следећу верзију у време које одговара вашим корисницима и добићете мало времена застоја. Али претпоставимо да јесте стварно строги услови СЛА. Дакле, СЛА 99,99% значи да можете ићи ван мреже само за 52 минута годишње.

Ако заиста желите да постигнете такве показатеље, потребне су вам две примене у исто време: 

  • онај који је управо сада (Н);
  • следећа верзија (Н+1). 

Ви кажете балансеру оптерећења да преусмери проценат саобраћаја на нову верзију (Н+1) док активно надгледате регресије.

Како мирно спавати када имате услугу у облаку: основни архитектонски савети
Овде имамо зелену Н имплементацију која добро функционише. Покушавамо да пређемо на следећу верзију ове примене

Прво шаљемо заиста мали тест да видимо да ли наша Н+1 имплементација функционише са малом количином саобраћаја:

Како мирно спавати када имате услугу у облаку: основни архитектонски савети
Коначно, имамо сет аутоматизованих провера које на крају покрећемо док се наша примена не заврши. ако ти Веома веома пажљиво, такође можете заувек сачувати своју Н примену за брзо враћање у претходно стање у случају лоше регресије:

Како мирно спавати када имате услугу у облаку: основни архитектонски савети
Ако желите да пређете на још напреднији ниво, пустите да се све у плаво-зеленој примени ради аутоматски.

Откривање аномалија и аутоматско ублажавање

С обзиром да имате централизовано евидентирање и добро прикупљање дневника, већ можете поставити више циљеве. На пример, проактивно предвиђајте неуспехе. Функције се прате на мониторима и у евиденцијама и граде се различити дијаграми - и можете унапред предвидети шта ће поћи наопако:

Како мирно спавати када имате услугу у облаку: основни архитектонски савети
Када се открију аномалије, почињете да испитујете неке од трагова које услуга пружа. На пример, скок у оптерећењу ЦПУ-а може указивати на то да чврсти диск не ради, док нагли број захтева може указивати на то да морате да повећате величину. Ова врста статистичких података вам омогућава да услугу учините проактивном.

Са овим увидима, можете скалирати у било којој димензији и проактивно и реактивно мењати карактеристике машина, база података, веза и других ресурса.

То је све!

Ова листа приоритета ће вам уштедети много проблема ако подижете услугу у облаку.

Аутор оригиналног чланка позива читаоце да оставе своје коментаре и унесу измене. Чланак је дистрибуиран као опен соурце, повлачење захтева аутора прихвата на Гитхуб-у.

Шта још прочитати на тему:

  1. Иди и ЦПУ кеш
  2. Кубернетес у духу пиратерије са шаблоном за имплементацију
  3. Наш канал Око Кубернетеса у Телеграму

Извор: ввв.хабр.цом

Додај коментар