Муҳандисии хаос: санъати нобудсозии қасдан. Қисми 2

Шарҳ. тарҷума.: Ин мақола як силсилаи бузурги мақолаҳои эвангелисти технологияи AWS Адриан Хорнсбиро идома медиҳад, ки ба таври оддӣ ва равшан аҳамияти озмоишро барои сабук кардани оқибатҳои нокомиҳо дар системаҳои IT шарҳ медиҳад.

Муҳандисии хаос: санъати нобудсозии қасдан. Қисми 2

"Агар шумо нақшаеро омода карда натавонед, пас шумо нақшаи ноком шуданро доред." - Бенҷамин Франклин

В қисми якум Дар ин силсила мақолаҳо ман мафҳуми муҳандисии бесарусомониро муаррифӣ кардам ва фаҳмонидам, ки чӣ гуна он барои дарёфт ва ислоҳ кардани камбудиҳои система пеш аз он ки онҳо ба нокомии истеҳсолот оварда расонанд, кӯмак мекунад. Он инчунин муҳокима кард, ки чӣ гуна муҳандисии бесарусомонӣ ба тағйироти мусбии фарҳангӣ дар дохили созмонҳо мусоидат мекунад.

Дар охири қисми аввал ман ваъда додам, ки дар бораи "асбобҳо ва усулҳои ворид кардани хатогиҳо ба системаҳо" сӯҳбат мекунам. Мутаассифона, сари ман дар ин бора нақшаҳои худро дошт ва дар ин мақола ман кӯшиш мекунам ба саволи маъмултарине, ки дар байни одамоне, ки мехоҳанд ба муҳандисии бесарусомонӣ дохил шаванд, ҷавоб диҳам: Аввал чиро шикастан?

Саволи олӣ! Бо вуҷуди ин, ба назар чунин мерасад, ки вай аз ин панда махсусан ташвишовар нест ...

Муҳандисии хаос: санъати нобудсозии қасдан. Қисми 2
Бо панда бесарусомонӣ дахолат накунед!

Ҷавоби кӯтоҳ: Хизматрасониҳои муҳимро дар роҳи дархост.

Ҷавоби дарозтар, вале равшантар: Барои фаҳмидани он ки озмоишро бо бесарусомонӣ аз куҷо оғоз кардан лозим аст, ба се соҳа диққат диҳед:

  1. Нигоҳ кунед таърихи садама ва муайян кардани намунаҳо;
  2. Қарор кунед вобастагии интиқодӣ;
  3. Ба номро истифода баред таъсири эътимоди аз ҳад зиёд.

Ин хандаовар аст, аммо ин қисмро метавон ба осонӣ номид "Сафар ба сӯи худшиносӣ ва маърифат". Дар он мо бо якчанд асбобҳои ҷолиб "бозӣ кардан"-ро оғоз мекунем.

1. Ҷавоб дар гузашта аст

Агар дар хотир доред, ман дар қисми аввал мафҳуми ислоҳи хатоҳоро (COE) муаррифӣ кардам - ​​усуле, ки мо тавассути он хатогиҳои худро - хатогиҳо дар технология, раванд ё созмон таҳлил мекунем, то сабаб(ҳо)-и онҳоро фаҳмем ва пешгирӣ кунем. такрор дар оянда. Умуман, аз ин ҷо шумо бояд оғоз кунед.

"Барои фаҳмидани замони ҳозира шумо бояд гузаштаро донед." — Карл Саган

Ба таърихи нокомиҳо нигаред, онҳоро дар COE ё постмортемҳо қайд кунед ва онҳоро тасниф кунед. Намунаҳои маъмулеро, ки аксар вақт ба мушкилот оварда мерасонанд, муайян кунед ва барои ҳар як COE ба худ саволи зеринро диҳед:

"Оё метавонист инро пешгӯӣ кард ва аз ин рӯ бо сӯзандоруи хато пешгирӣ карда шавад?"

Як нокомиро дар аввали касбам дар ёд дорам. Агар мо якчанд озмоишҳои оддии бесарусомониро анҷом медодем, онро ба осонӣ пешгирӣ кардан мумкин буд:

Дар шароити муқаррарӣ, нусхаҳои пуштибонӣ ба санҷишҳои саломатӣ аз мувозинати сарборӣ (ELB)). ELB ин чекҳоро барои интиқоли дархостҳо ба мисолҳои солим истифода мебарад. Вақте ки маълум мешавад, ки намуна "носолим" аст, ELB фиристодани дархостҳоро ба он қатъ мекунад. Як рӯз, пас аз як маъракаи бомуваффақияти маркетинг, ҳаҷми трафик афзоиш ёфт ва пуштибонҳо ба санҷишҳои саломатӣ нисбат ба муқаррарӣ сусттар ҷавоб доданд. Бояд гуфт, ки ин санҷишҳои саломатӣ буданд чуқур, яъне холати вобастагихо санчида шуд.

Бо вуҷуди ин, ҳама чиз барои муддате хуб буд.

Сипас, аллакай дар шароити хеле стресс, яке аз ҳолатҳо ба иҷрои вазифаи ғайримуқаррарии ETL cron оғоз кард. Омезиши трафики баланд ва cronjob истифодаи CPU-ро тақрибан ба 100% расонд. Аз ҳад зиёд сарбории CPU вокунишҳоро ба санҷишҳои саломатӣ боз ҳам суст кард, ба тавре ки ELB қарор кард, ки инстансия мушкилоти иҷроишро аз сар мегузаронад. Тавре ки интизор мерафт, мувозинат тақсимоти трафикро ба он қатъ кард, ки ин дар навбати худ боиси афзоиши сарборӣ ба ҳолатҳои боқимондаи гурӯҳ гардид.

Ногаҳон, ҳама ҳолатҳои дигар низ аз санҷиши саломатӣ ноком шуданд.

Оғози як мисоли нав зеркашӣ ва насби бастаҳоро талаб мекард ва нисбат ба ELB барои ғайрифаъол кардани онҳо - як ба як - дар гурӯҳи автоматикӣ вақти зиёдро талаб мекард. Маълум аст, ки дере нагузашта тамоми раванд ба нуқтаи муҳим расид ва ариза барбод рафт.

Он гоҳ мо ҳамеша нуктаҳои зеринро фаҳмидем:

  • Насб кардани нармафзор ҳангоми эҷоди як мисоли нав вақти зиёдро талаб мекунад; беҳтар аст, ки ба равиши тағирнопазир бартарӣ диҳед ва AMI тиллоӣ.
  • Дар ҳолатҳои мураккаб, ҷавобҳо ба санҷишҳои саломатӣ ва ELBs бояд афзалият дошта бошанд - охирин чизе, ки шумо мехоҳед, душвор кардани ҳаёт барои ҳолатҳои боқимонда аст.
  • Кэшкунии маҳаллии санҷишҳои саломатӣ бисёр кӯмак мекунад (ҳатто барои чанд сония).
  • Дар вазъияти душвор супоришхои крон ва дигар про-цессхои гайримукаррариро ичро накунед — захирахоро барои вазифахои мухимтарин сарфа кунед.
  • Ҳангоми автоматикунонӣ, мисолҳои хурдтарро истифода баред. Як гурӯҳи 10 намунаи хурд беҳтар аз гурӯҳи 4 намунаи калон аст; агар яке аз инстансияҳо ноком шавад, дар ҳолати аввал 10% трафик ба 9 нуқта тақсим карда мешавад, дар дуюм - 25% трафик аз се нуқта.

Ва ҳамин тавр, Оё метавонист инро пешбинӣ кард ва аз ин рӯ бо ворид кардани мушкилот пешгирӣ карда шавад?

он, ва бо якчанд роҳ.

Аввалан, бо тақлид кардани истифодаи баланди CPU бо истифода аз асбобҳо ба монанди stress-ng ё cpuburn:

❯ stress-ng --matrix 1 -t 60s

Муҳандисии хаос: санъати нобудсозии қасдан. Қисми 2
стресс-нг

Дуюм, бо аз ҳад зиёд боркунии мисол бо wrk ва дигар хидматҳои шабеҳ:

❯ wrk -t12 -c400 -d20s http://127.0.0.1/api/health

Муҳандисии хаос: санъати нобудсозии қасдан. Қисми 2

Таҷрибаҳо нисбатан соддаанд, аммо метавонанд бидуни аз фишори нокомии воқеӣ гузаштан каме ғизои хубе барои андеша таъмин кунанд.

Аммо, дар он ҷо бас накунед. Кӯшиш кунед, ки садамаро дар муҳити санҷиш такрор кунед ва ҷавоби худро ба саволи худ санҷед "Оё инро метавон пешгӯӣ кард ва аз ин рӯ бо ворид кардани айб пешгирӣ карда шуд?" Ин як таҷрибаи хурди бесарусомонӣ дар доираи як озмоиши бесарусомонӣ барои санҷиши пиндоштҳост, аммо бо нокомӣ сар мешавад.

Муҳандисии хаос: санъати нобудсозии қасдан. Қисми 2
Оё ин хоб буд ё воқеан рӯй дод?

Пас, таърихи нокомиро омӯзед, таҳлил кунед КОНИ, қайд кунед ва онҳоро аз рӯи "радиуси зарба" тасниф кунед - ё дақиқтараш шумораи муштариёни зарардида - ва сипас намунаҳоро ҷустуҷӯ кунед. Аз худ бипурсед, ки оё метавонист бо ворид кардани мушкилот инро пешгӯӣ ва пешгирӣ кард. Ҷавоби худро санҷед.

Сипас ба намунаҳои маъмултарин бо диапазони калон гузаред.

2. Харитаи вобастагӣ созед

Як лаҳза дар бораи аризаи худ фикр кунед. Оё харитаи равшани вобастагии он вуҷуд дорад? Оё шумо медонед, ки онҳо дар сурати нокомӣ чӣ таъсир хоҳанд дошт?

Агар шумо бо рамзи барномаи худ чандон ошно набошед ё он хеле калон шуда бошад, фаҳмидани он, ки код чӣ кор мекунад ва вобастагии он чӣ гуна аст, душвор буда метавонад. Фаҳмидани ин вобастагӣ ва таъсири эҳтимолии онҳо ба барнома ва корбарон барои донистани он ки аз куҷо оғоз кардани муҳандисии бесарусомонӣ муҳим аст: нуқтаи ибтидоӣ ҷузъи дорои радиуси бузургтарини таъсир мебошад.

Муайян ва ҳуҷҷатгузории вобастагӣ номида мешавад "сохтани харитаи вобастагӣ» (харитаи вобастагӣ). Ин одатан барои барномаҳое, ки дорои пойгоҳи калони рамзӣ бо истифода аз абзорҳои профилсозии код анҷом дода мешавад. (профили код) ва асбобсозй (асбоб). Шумо инчунин метавонед тавассути мониторинги трафики шабака харита созед.

Аммо, на ҳама вобастагӣ яксонанд (ки ин равандро боз ҳам мушкилтар мекунад). Баъзехо танцидй, дигарон - миёна (ҳадди ақал дар назария, зеро садамаҳо аксар вақт аз сабаби мушкилот бо вобастагӣ, ки ғайримуқаррарӣ ҳисобида мешуданд, рух медиҳанд).

Бе вобастагии муҳим, хидмат наметавонад кор кунад. Вобастагии ғайримуқаррарӣ "набояд» барои таъсир расонидан ба хидмат дар сурати афтодан. Барои фаҳмидани вобастагӣ, шумо бояд фаҳмиши дақиқи API-ҳои аз ҷониби барномаи шумо истифодашаванда дошта бошед. Ин метавонад хеле душвортар аз он ба назар мерасад - ҳадди аққал барои барномаҳои калон.

Бо гузаштан аз ҳама APIҳо оғоз кунед. Аз ҳама бештар таъкид кунед муҳим ва танқидӣ... Гирифтан вобастагӣ дорад аз анбори код, онро санҷед сабтҳои пайвастшавӣ, пас тамошо кунед ҳуҷҷатҳо (албатта, агар он вуҷуд дошта бошад - дар акси ҳол шумо ҳоло ҳам доредомушкилоти калонтар). Воситаҳоро истифода баред, то профилактика ва пайгирӣ, филтр кардани зангҳои беруна.

Шумо метавонед чунин барномаҳоро истифода баред netstat - утилитаи сатри фармон, ки рӯйхати ҳамаи пайвастҳои шабакавиро (розеткаҳои фаъол) дар система намоиш медиҳад. Масалан, барои рӯйхати ҳамаи пайвастҳои ҷорӣ, нависед:

❯ netstat -a | more 

Муҳандисии хаос: санъати нобудсозии қасдан. Қисми 2

Дар AWS шумо метавонед истифода баред гузоришҳои ҷараёни (Ҷараёнҳои гузоришҳо) VPC усулест, ки ба шумо имкон медиҳад, ки маълумотро дар бораи трафики IP, ки ба интерфейсҳои шабакавӣ дар VPC меравад, ҷамъоварӣ кунед. Чунин гузоришҳо инчунин метавонанд дар дигар вазифаҳо кӯмак расонанд - масалан, ёфтани ҷавоб ба саволи он, ки чаро трафики муайян ба инстансия намерасад.

Шумо инчунин метавонед истифода баред AWS X-Ray. Рентген ба шумо имкон медиҳад, ки муфассал, "ниҳоӣ" гиред (охир ба охир) шарҳи дархостҳо ҳангоми ҳаракат дар барнома, инчунин харитаи ҷузъҳои аслии барномаро месозад. Хеле қулай аст, агар ба шумо вобастагӣ муайян кардан лозим бошад.

Муҳандисии хаос: санъати нобудсозии қасдан. Қисми 2
Консол X-Ray AWS

Харитаи вобастагии шабака танҳо як ҳалли қисман аст. Бале, он нишон медиҳад, ки кадом барнома бо кадоме муошират мекунад, аммо вобастагии дигар вуҷуд дорад.

Бисёр барномаҳо барои пайвастшавӣ ба вобастагӣ DNS-ро истифода мебаранд, дар ҳоле ки дигарон метавонанд кашфи хидмат ё ҳатто суроғаҳои IP-ро дар файлҳои конфигуратсия истифода баранд (масалан. /etc/hosts).

Масалан, шумо метавонед эҷод кунед Сӯрохи сиёҳи DNS бо кӯмаки iptables ва бубинед, ки чӣ мешиканад. Барои ин, фармони зеринро ворид кунед:

❯ iptables -I OUTPUT -p udp --dport 53 -j REJECT -m comment --comment "Reject DNS"

Муҳандисии хаос: санъати нобудсозии қасдан. Қисми 2
сӯрохи сиёҳ DNS

Агар дар /etc/hosts ё дигар файлҳои конфигуратсия, шумо суроғаҳои IP-ро хоҳед ёфт, ки дар бораи онҳо чизе намедонед (бале, мутаассифона, ин ҳам рӯй медиҳад), шумо метавонед дубора ба наҷот биёед. iptables. Фарз мекунем, ки шумо кашф кардаед 8.8.8.8 ва намедонам, ки ин суроғаи сервери ҷамъиятии DNS-и Google аст. Бо истифода iptables Шумо метавонед трафики даромад ва баромадро ба ин суроға бо истифода аз фармонҳои зерин манъ кунед:

❯ iptables -A INPUT -s 8.8.8.8 -j DROP -m comment --comment "Reject from 8.8.8.8"
❯ iptables -A OUTPUT -d 8.8.8.8 -j DROP -m comment --comment "Reject to 8.8.8.8"

Муҳандисии хаос: санъати нобудсозии қасдан. Қисми 2
Бастани дастрасӣ

Қоидаи аввал ҳамаи бастаҳоро аз DNS-и ҷамъиятии Google хориҷ мекунад: ping кор мекунад, аммо бастаҳо баргардонида намешаванд. Қоидаи дуюм ҳамаи бастаҳоеро, ки аз системаи шумо сарчашма мегиранд, ба сӯи DNS-и ҷамъиятии Google мепартояд - дар посух ба ping мо мегирем Амалиёт иҷозат дода намешавад.

Эзоҳ: дар ин ҳолати мушаххас истифода бурдан беҳтар мебуд whois 8.8.8.8, аммо ин танҳо як мисол аст.

Мо метавонем аз сӯрохи харгӯш боз ҳам амиқтар равем, зеро ҳама чизе, ки TCP ва UDP-ро истифода мебарад, воқеан аз IP низ вобаста аст. Дар аксари ҳолатҳо, IP ба ARP пайваст аст. Дар бораи деворҳо фаромӯш накунед ...

Муҳандисии хаос: санъати нобудсозии қасдан. Қисми 2
Агар шумо доруи сурхро бихӯред, шумо дар ҷаҳони аҷиб мемонед ва ман ба шумо нишон медиҳам, ки сӯрохи харгӯш то чӣ андоза чуқур аст."

Муносибати радикалӣ бештар аст ҷудо кардан мошинхоро як ба як дида чи вайрон шудааст... "маймуни бесарусомонй" мешавад. Албатта, бисёре аз системаҳои истеҳсолӣ барои чунин ҳамлаи бераҳмона тарҳрезӣ нашудаанд, аммо ҳадди аққал онро дар муҳити озмоиш санҷидан мумкин аст.

Сохтани харитаи вобастагӣ аксар вақт кори хеле тӯлонӣ аст. Ман ба наздикӣ бо як муштарӣ сӯҳбат кардам, ки тақрибан 2 солро барои таҳияи асбобе сарф кардааст, ки харитаҳои вобастагиро барои садҳо хидматҳои хурд ва фармонҳо ба таври нимаавтоматӣ тавлид мекунад.

Бо вуҷуди ин, натиҷа хеле ҷолиб ва муфид аст. Шумо дар бораи системаи худ, вобастагӣ ва амалиёти он бисёр чизҳоро меомӯзед. Боз ҳам сабр кунед: ин худи сафар муҳимтарин аст.

3. Аз боварии зиёдатӣ ҳазар кунед

«Ҳар кӣ орзуи чизеро дорад, ба он бовар мекунад». — Демосфен

Оё шумо ягон бор шунидаед таъсири эътимоди аз ҳад зиёд?

Мувофиқи Википедиа, таъсири эътимоди аз ҳад зиёд "тағризи маърифатӣ аст, ки дар он эътимоди шахс ба амалҳо ва қарорҳои худ нисбат ба дурустии объективии ин қарорҳо ба таври назаррас бештар аст, хусусан вақте ки сатҳи эътимод нисбатан баланд аст."

Муҳандисии хаос: санъати нобудсозии қасдан. Қисми 2
Бар асоси инстинкт ва таҷриба...

Дар таҷрибаи ман, ин таҳриф як ишораи олӣ дар бораи он аст, ки аз муҳандисии бесарусомонӣ аз куҷо оғоз кардан лозим аст.

Аз оператори аз ҳад зиёд худдорӣ эҳтиёт шавед:

Чарли: "Ин чиз дар тӯли панҷ сол афтода нашудааст, ҳамааш хуб аст!"
Crash: "Интизор шавед ... Ман ба зудӣ дар он ҷо хоҳам буд!"

Ғараз дар натиҷаи эътимоди зиёдатӣ як чизи маккорона ва ҳатто хатарнок аст, зеро омилҳои мухталифе, ки ба он таъсир мерасонанд. Ин хусусан вақте дуруст аст, ки аъзоёни даста дили худро ба технология рехтаанд ё вақти зиёдро барои «таъмир» сарф кардаанд.

Ҷамъбаст кардан

Ҷустуҷӯи нуқтаи ибтидоӣ барои муҳандисии бесарусомонӣ ҳамеша натиҷаҳои бештар аз интизорӣ меорад ва гурӯҳҳое, ки зуд шикастани чизҳоро оғоз мекунанд, моҳияти глобалӣ ва ҷолиби (хаос-)муҳандисӣ - истифодаи эҷодӣ усулхои илмй и далелҳои эмпирикӣ барои тарҳрезӣ, таҳия, истифода, нигоҳдорӣ ва такмили системаҳо (нармафзор).

Ин қисми дуюмро ба анҷом мерасонад. Лутфан баррасиҳо нависед, фикру мулоҳизаҳоро мубодила кунед ё танҳо кафкӯбӣ кунед миёна. Дар кисми оянда И дар ҳақиқат Ман воситаҳо ва усулҳоро барои ворид кардани нокомиҳо дар системаҳо баррасӣ мекунам. То!

PS аз тарҷумон

Инчунин дар блоги мо хонед:

Манбаъ: will.com

Илова Эзоҳ