Failover: перфекционизм жана... жалкоолук бизди бузуп жатат

Жайында, сатып алуу активдүүлүгү да, веб-долбоорлордун инфраструктурасындагы өзгөрүүлөрдүн интенсивдүүлүгү да салттуу түрдө төмөндөйт, дейт капитан Обвиус. Жөн гана, анткени, атүгүл IT адистери кээде эс алууга кетишет. Жана ошондой эле CTO. Кызматта калгандар үчүн баары кыйыныраак, бирок кеп азыр эмес: балким, жай ушундан улам, орун алган резервация схемасы жөнүндө акырындап ойлонуп, аны өркүндөтүү планын түзүүгө эң жакшы мезгил. Ал эми Егор Андреевдин тажрыйбасынан AdminDivision, бул женунде ал конференцияда айтты Иштөө күнү.

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

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

Failover: перфекционизм жана... жалкоолук бизди бузуп жатат

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

Shtosh (c) Биз экинчи сайтты алып, окшош системаны курабыз... Татаалдуулук эки эсеге өсөт - бизде эки объект бар. Биз ошондой эле маалыматтарды бир сайттан экинчисине өткөрүү үчүн белгилүү бир логиканы чыгарабыз - башкача айтканда, маалыматтарды репликациялоо, статикалык маалыматтарды көчүрүү жана башкалар. Ошентип, репликациялоо логикасы, адатта, өтө татаал, демек, системанын жалпы татаалдыгы 2 эмес, 3, 5, 10 эсе көп болушу мүмкүн.

Экинчи капкан: Биз чындап эле чоң комплекстүү системаларды курганда, акыры эмнени алгыбыз келет деп кыялданабыз. Voila: биз эч кандай токтобостон иштеген, жарым секунданын ичинде (же андан да жакшысы, заматта) иштей турган супер ишенимдүү системаны алгыбыз келет жана биз кыялдарды ишке ашыра баштайбыз. Бирок бул жерде дагы бир нюанс бар: каалаган которуу убактысы канчалык кыска болсо, системанын логикасы ошончолук татаал болот. Бул логиканы канчалык татаалдаштырышыбыз керек болсо, система ошончолук көп бузулат. Жана сиз абдан жагымсыз кырдаалга туш болушуңуз мүмкүн: биз токтоп калуу убактысын кыскартууга болгон күчүбүздү жумшап жатабыз, бирок чындыгында биз бардыгын татаалдаштырып жатабыз жана бир нерсе туура эмес болуп кетсе, токтоп калуу узакка созулат. Бул жерде сиз көп ойлоно бересиз: жакшы... буйрутма кылбай эле койсоңуз болмок. Ал жалгыз жана түшүнүктүү токтоо менен иштесе жакшы болмок.

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

Failover: перфекционизм жана... жалкоолук бизди бузуп жатат

Жашоодон, албетте, “w from окуялардын” убактысы келди.

Мисал №XNUMX

Н шаарындагы No 1 труба прокат заводунун визиттик карточкасын элестетип кергуле, анда эбегейсиз зор тамгалар менен жазылган — No 1 Труба прокат заводу. Төмөндө: «Биздин түтүктөр Н-дагы эң тегерек трубалар» деген ураан. Ал эми төмөндө башкы директордун телефон номери жана анын аты. Сиз алдын ала ээлөө керек экенин түшүнөбүз - бул абдан маанилүү нерсе! Келгиле, анын эмнеден тураарын аныктай баштайлы. Html-статика - башкача айтканда, башкы менеджер, чындыгында, өнөктөшү менен мончодо столдо кандайдыр бир кийинки келишимди талкуулап жаткан бир нече сүрөттөр. Биз токтоп калуу жөнүндө ойлоно баштайбыз. Акылга келет: беш мүнөт жатыш керек, андан ашык эмес. Анан суроо туулат: биздин бул сайттан жалпысынан канча сатуу болду? Канча - канча? "нөл" деген эмнени билдирет? Бул дегени: анткени генерал былтыр төрт бүтүмдү тең бир дасторкондо, ошол эле адамдар менен мончого барып, дасторкондо отурушкан. Ал эми сайт бир күн отурса да, эч кандай коркунучтуу эч нерсе болбой турганын түшүнөбүз.

Кириш маалыматынын негизинде бул окуяны көтөрө турган күн бар. Келгиле, кыскартуу схемасы жөнүндө ойлонуп баштайлы. Жана биз бул мисал үчүн эң идеалдуу ашыкча схеманы тандайбыз: биз ашыкчаны колдонбойбуз. Мунун баарын каалаган админ жарым саатта түтүн тыныгуусу менен көтөрө алат. Веб серверди орнотуңуз, файлдарды кошуңуз - ушунча. Бул иштейт. Эч нерсеге көз салып отуруунун, эч нерсеге өзгөчө көңүл буруунун кереги жок. Башкача айтканда, №XNUMX мисалдан тыянак абдан айкын: ээлеп коюуну талап кылбаган кызматтарды ээлеп коюунун кереги жок.

Failover: перфекционизм жана... жалкоолук бизди бузуп жатат

Мисал саны экинчи

Компаниянын блогу: атайын даярдалган адамдар ал жерде жаңылыктарды жазышат, биз баланча көргөзмөгө катыштык, бирок биз дагы бир жаңы продуктуну чыгардык ж.б.у.с. Келгиле, бул WordPress менен стандарттуу PHP, чакан маалымат базасы жана бир аз статикалык деп коёлу. Албетте, сиз эч кандай шартта жатпаңыз - "беш мүнөттөн ашык эмес!" Болду. Бирок андан ары ойлонуп көрөлү. Бул блог эмне кылат? Адамдар ал жакка Яндекстен, Google'дан кээ бир суроолордун негизинде органикалык түрдө келишет. Абдан жакшы. Сатуу менен кандайдыр бир байланышы барбы? Epiphany: чынында эмес. Жарнамалык трафик башка машинада болгон негизги сайтка барат. Келгиле, ээлеп коюу схемасы жөнүндө ойлонуп баштайлы. Жакшы сөз менен айтканда, бир-эки саатта көтөрүш керек, буга даярданса жакшы болмок. Башка маалымат борборунан машинаны алып, ага айлана-чөйрөнү, б.а. веб-серверди, PHP, WordPress, MySQLди айландырып, аны ошол жерге калтыруу акылга сыярлык болмок. Баары бузулганын түшүнгөн учурда, биз эки нерсени кылышыбыз керек - MySQL таштандысын 50 метрге жайып салыңыз, ал бир мүнөттөн кийин ал жакка учуп кетет жана ал жерде камдык көчүрмөдөн белгилүү бир сандагы сүрөттөрдү чыгарыңыз. Бул да жок, бир Кудай билет канчага чейин. Ошентип, жарым сааттын ичинде баары көтөрүлөт. Репликация жок, же Кудай мени кечирсин, автоматтык түрдө иштебей калуу. Корутунду: камдык көчүрмөдөн тез чыгара турган нерселердин камдык көчүрмөсүн сактоонун кереги жок.

Failover: перфекционизм жана... жалкоолук бизди бузуп жатат

Үчүнчү мисал, татаалыраак

Интернет дүкөн. Ачык жүрөгү менен PhP бир аз жакшыртылган, бекем базасы бар MySQL. Бир топ статикалык (анткени, онлайн дүкөндө сонун HD сүрөттөрү жана башка нерселер бар), сессия үчүн Redis жана издөө үчүн Elasticsearch. Биз токтоп калуу жөнүндө ойлоно баштайбыз. Бул жерде, албетте, интернет-дүкөндүн бир күн бою оорутпай жата албасы айдан ачык. Анткени, ал канчалык көп болсо, ошончолук көп акча жоготобуз. Бул тездетүүгө арзырлык. Канча? Менимче, бир саат жатып алсак, эч ким жинди болуп кетпейт. Ооба, биз бир нерсени жоготобуз, бирок катуу иштей баштай турган болсок, андан да жаман болот. Биз саатына уруксат берилген токтоп калуу схемасын аныктайбыз.

Мунун баарын кантип сактаса болот? Кандай болгон күндө да сизге машина керек: бир саат убакыт абдан аз. Mysql: бул жерде бизге репликация, жандуу репликация керек, анткени бир сааттан кийин 100 ГБ таштандыга кошулбай калат. Статика, сүрөттөр: дагы бир сааттан кийин 500 ГБ кошууга убакыт болбошу мүмкүн. Андыктан сүрөттөрдү дароо көчүрүп алганыңыз оң. Редис: Бул жерде кызыктуу болот. Редисте сеанстар сакталат - биз аны алып, көмө албайбыз. Анткени бул абдан жакшы болбойт: бардык колдонуучулар чыгып кетет, алардын себеттери бошотулат ж.б.у.с. Адамдар логинди жана паролду кайра киргизүүгө аргасыз болушат, жана көптөгөн адамдар ажырашып, сатып алууну аягына чыгарбай калышы мүмкүн. Кайрадан конверсиялар азаят. Башка жагынан алганда, Redis түздөн-түз актуалдуу, акыркы кирген колдонуучулар да керек эмес. Жана жакшы компромисс - Редисти алып, аны кечээки резервден калыбына келтирүү, же эгер сиз муну ар бир саат сайын жасасаңыз, бир саат мурун. Бактыга жараша, аны камдык көчүрмөдөн калыбына келтирүү бир файлды көчүрүү дегенди билдирет. Ал эми эң кызыктуу окуя - Elasticsearch. Ким MySQL репликациясын тандап алган? Elasticsearch репликациясын ким тандап алган? Анан кимге кийин нормалдуу иштеди? Айтайын дегеним, биз системабызда белгилүү бир нерсени көрүп жатабыз. Бул пайдалуу окшойт - бирок бул татаал.
Биздин кесиптеш инженерлерибиз аны менен иштөө тажрыйбасы жок деген мааниде комплекстүү. Же терс тажрыйба бар. Же бул дагы деле нюанстар же чийкилик менен бир топ жаңы технология экенин түшүнөбүз. Биз ойлойбуз... Блин, эластикалык да ден соолук, аны камдык көчүрмөдөн калыбына келтирүү да көп убакытты талап кылат, мен эмне кылышым керек? Биздин учурда эластик издөө үчүн колдонуларын түшүнөбүз. Биздин онлайн дүкөн кантип сатат? Биз маркетологдорго барып, эл кайдан келгенин сурайбыз. Алар: "Яндекс базарынан 90% түздөн-түз продукт картасына келет" деп жооп беришет. Анан же алар сатып алышат же алышпайт. Ошондуктан, издөө колдонуучулардын 10% керек. Ал эми ийкемдүү репликацияны сактоо, айрыкча ар кандай зоналардагы ар кандай маалымат борборлорунун ортосунда, чынында эле, көптөгөн нюанстарга ээ. Кайсы чыгуу? Биз камдалган сайттан эластикти алып, аны менен эч нерсе кылбайбыз. Иш созулуп кетсе, балким, качандыр бир күнү көтөрөбүз, бирок бул анык эмес. Чынында, тыянак бирдей, плюс же минус: биз, дагы бир жолу, акчага таасир этпеген кызматтарды сактабайбыз. Диаграмманы жөнөкөйлөтүү үчүн.

Failover: перфекционизм жана... жалкоолук бизди бузуп жатат

Мисал төртүнчү, андан да кыйын

Интегратор: гүл сатуу, такси чакыруу, товар сатуу, жалпысынан, бардык нерсе. Көптөгөн колдонуучулар үчүн 24/7 иштеген олуттуу нерсе. Толук кандуу кызыктуу стек менен, ал жерде кызыктуу негиздер, чечимдер, жогорку жүк, эң негизгиси, 5 мүнөттөн ашык жатып ооруйт. Ал гана эмес, адамдар сатып албайт, анткени адамдар бул нерсе иштебей турганын көрүп, капаланып, таптакыр кайтып келбеши мүмкүн.

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

Ошондо баары ачык көрүнөт. Которуу репликациясы арзыбаган иш, же ал өзү которулат. DNS домендик аталышты кайра жазуу ошол эле сериядан. Кыйынчылык ушунда, мындай долбоор ишке ашпай калганда, дүрбөлөң башталат, ал тургай эң күчтүү, сакалчан админдер да ага кабылышы мүмкүн. “Терминалды ач, бул жакка кел, биздин сервердин дареги дагы эле ушундай” деген так көрсөтмө болбосо, реанимацияга берилген 5 мүнөттүк убакытты аткаруу кыйын. Кошумчалай кетчү нерсе, биз бул ченемдик укуктук актыларды колдонгондо, мисалы, инфраструктурадагы кээ бир өзгөрүүлөрдү каттап, ошого жараша жоболорду өзгөртүү оңой.
Ооба, ээлөө системасы абдан татаал болсо жана кандайдыр бир учурда биз ката кетирген болсок, анда биз камдык сайтыбызды жок кыла алабыз, андан тышкары эки сайтта тең маалыматтарды ашкабакка айланта алабыз - бул толугу менен кайгылуу болот.

Failover: перфекционизм жана... жалкоолук бизди бузуп жатат

Мисал №XNUMX, толук хардкор

Дүйнө жүзү боюнча жүз миллиондогон колдонуучулары бар эл аралык кызмат. Бардык убакыт алкактары бар, максималдуу ылдамдыкта жогорку жүк, сиз такыр жата албайсыз. Бир мүнөт - жана бул кайгылуу болот. Эмне кылуу керек? Резерв, дагы, толук программа боюнча. Биз мурунку мисалда мен айткандардын бардыгын жасадык жана дагы бир аз. Идеалдуу дүйнө жана биздин инфраструктурабыз IaaC devops концепцияларынын бардыгына ылайык. Башкача айтканда, бардыгы гитте, сиз жөн гана баскычты басыңыз.

Эмне жетишпейт? Бири - көнүгүүлөр. Аларсыз бул мүмкүн эмес. Бизде баары идеалдуу окшойт, бизде жалпысынан бардыгы көзөмөлдө. Биз кнопканы басабыз, баары болот. Бул ошондой болгон күндө да - жана биз мунун мындай болбой турганын түшүнөбүз - биздин система башка системалар менен өз ара аракеттенет. Мисалы, бул 53-маршруттан dns, s3 сактоо, кээ бир api менен интеграция. Бул спекуляциялык экспериментте бардыгын алдын ала көрө албайбыз. Ал эми биз которгучту тартмайынча, ал иштейби же жокпу билбейбиз.

Failover: перфекционизм жана... жалкоолук бизди бузуп жатат

Ушунун баары ушул болсо керек. Жалкоо болбоңуз же ашыкча кылбаңыз. Жана иштөө убактысы сиз менен болсун!

Source: www.habr.com

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