Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Чини се да програмери Терраформ нуде прилично згодне најбоље праксе за рад са АВС инфраструктуром. Само постоји нијанса. Временом се број окружења повећава, карактеристике се појављују у сваком. Појављује се скоро копија стека апликација у суседном региону. А Терраформ код треба пажљиво копирати и уредити према новим захтевима или направити пахуљицу.

Мој извештај је о обрасцима у Терраформу за борбу против хаоса и ручне рутине на великим и дугим пројектима.

Видео:

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Имам 40 година, у ИТ-у сам 20 година. У Иктенс-у радим 12 година. Бавимо се развојем заснованим на е-трговини. И практикујем ДевОпс вежбе већ 5 година.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Моја прича ће бити о искуству у пројекту у компанији чије име нећу рећи, скривајући се иза уговора о тајности.

Бројеви на слајду су дати да би се разумео обим пројекта. И све што ћу следеће рећи је везано за Амазон.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

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

Хвала Матвеиу, који нам је јуче испричао шта се догодило у Додо Пиззи. Ево шта нам се десило пре 4 године.

Дошли су програмери и почели да праве инфраструктурни код.

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

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Терраформ је пројекат отвореног кода компаније ХасхиЦорп. А за оне који уопште не знају шта је то, наредних неколико слајдова.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Инфраструктура као код значи да можемо описати нашу инфраструктуру и замолити неке роботе да се постарају да добијемо ресурсе које смо описали.

На пример, потребна нам је виртуелна машина. Ми ћемо описати, додати неколико потребних параметара.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Након тога ћемо конфигурисати приступ Амазону у конзоли. И затражите Терраформ план. План Терраформа ће рећи: "У реду, за ваш ресурс, можемо да урадимо ове ствари." И најмање један ресурс ће бити додат. И не очекују се никакве промене.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Након што вам све одговара, можете затражити да се Терраформ пријави и Терраформ ће креирати инстанцу за вас, а ви ћете добити виртуелну машину у свом облаку.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Даље, наш пројекат се развија. Тамо додајемо неке измене. Тражимо још инстанци, додајемо 53 уноса.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

И понављамо. Молимо планирајте. Видимо какве су промене планиране. Применити. И тако наша инфраструктура расте.

Терраформ користи тако нешто као државни фајлови. То јест, чува све промене које иду на Амазон у датотеку, где за сваки ресурс који сте описали постоје одговарајући ресурси који су креирани у Амазону. Дакле, када мења опис ресурса, Терраформ тачно зна шта треба да се промени у Амазону.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Ови државни фајлови су првобитно били само фајлови. И чували смо их у Гиту, што је било изузетно незгодно. Стално је неко заборављао да изврши промене и било је много сукоба.

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

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Наша инфраструктура расте. Ево нашег кода. И сада не желимо само да креирамо виртуелну машину, желимо да имамо тестно окружење.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Терраформ вам омогућава да направите такву ствар као модул, односно опишете исту ствар у неком фолдеру.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

И, на пример, у тестирању, позовите овај модул и добијете исту ствар као да радимо Терраформ аппли у самом модулу. Ево кода за тестирање.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

За производњу можемо да пошаљемо неке измене тамо, јер нам у тестирању нису потребне велике инстанце, у производњи ће велике инстанце добро доћи.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

А онда ћу се вратити на пројекат. Био је то тежак задатак, инфраструктура је била планирана веома велика. И било је потребно некако поставити сав код како би свима било згодно: и онима који одржавају овај код, и онима који праве промене. И било је планирано да сваки програмер може да оде и поправи инфраструктуру по потреби за његов део платформе.

Ово је стабло директоријума које препоручује ХасхиЦорп ако имате велики пројекат и има смисла да поделите целу инфраструктуру на мале делове и опишете сваки део у посебној фасцикли.

Имајући обимну библиотеку ресурса, можете позвати отприлике исту ствар у тестирању иу производњи.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

У нашем случају, ово није било сасвим прикладно, јер је тест стек за програмере или за тестирање требало некако једноставније добити. И нисам желео да пролазим кроз фасцикле и примењујем у правом редоследу, и да бринем да ће база порасти, а онда ће се инстанца која користи ову базу подићи. Дакле, сва тестирања су покренута из једне фасцикле. Тамо су позвани исти модули, али је све прошло у једном циклусу.

Терраформ се брине о свим зависностима. И увек креира ресурсе у том низу тако да можете да добијете ИП адресу, на пример, из свеже креиране инстанце, и добијете ову ИП адресу у уносу роуте53.

Поред тога, платформа је веома велика. А вођење тестне групе, чак и ако на сат, чак и на 8 сати, је прилично скуп посао.

И ми смо аутоматизовали овај посао. А Џенкинсов посао је дозволио да се стек покрене. У њему је било потребно покренути пулл захтев са променама које програмер жели да тестира, навести све потребне опције, компоненте и величине. Ако жели тестирање перформанси, онда може узети више инстанци. Ако само треба да провери да ли се отвара неки образац, могао би да почне од минималца. И такође назначите да ли је кластер потребан или не, итд.

А онда је Џенкинс гурнуо схелл скрипту која је мало изменила код у фасцикли Терраформ. Уклоњене непотребне датотеке, додане потребне датотеке. А онда, са једном наношењем Терраформа, гомила је порасла.

А онда су били други кораци у које не желим да улазим.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

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

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

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

У ствари, Терраформ није прави језик. Ово је декларација. Ако треба нешто да прогласимо, онда то изјављујемо. И све ради.

У неком тренутку, када смо разговарали о једном од мојих захтева за повлачењем, један од мојих колега је рекао да није потребно производити пахуље. Питао сам се на шта мисли. Постоји таква научна чињеница да на свету не постоје две идентичне пахуље, све су мало, али различите. И чим сам ово чуо, одмах сам осетио сву тежину Терраформ кода. Јер када је било потребно да се пређе са верзије на верзију, Терраформ је захтевао промену ланца прекида, тј. код више није био компатибилан са следећом верзијом. И морао сам да направим захтев за повлачење, који је покривао скоро половину фајлова у инфраструктури, како бих довео инфраструктуру до следеће верзије Терраформа.

А након што се појавила таква пахуља, сав код Терраформа који смо имали претворио се у велику, велику гомилу снега.

За екстерног програмера који није у функцији, то му није много важно, јер је направио пулл захтев, његов ресурс је покренут. И то је то, није његова брига. А ДевОпс тим који се стара да је све у реду треба да изврши све ове промене. А цена ових промена је порасла веома, веома са сваком додатном пахуљом.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Постоји прича о томе како студент на семинару кредом на табли црта два савршена круга. И учитељ се чуди како је успео да тако глатко црта без компаса. Ученик одговара: „Врло је једноставно, две године у војсци сам окретао млин за месо.

И од четири године колико сам на овом пројекту, Терраформ сам радио око две године. И, наравно, имам неке трикове, неке савете о томе како да поједноставим Терраформ код, да радим с њим као програмски језик и смањим оптерећење за програмере који морају да одржавају овај код ажурним.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Прва ствар са којом бих желео да почнем су симболичке везе. Терраформ има много кода који се понавља. На пример, позивање провајдера на скоро свакој тачки где стварамо део инфраструктуре је исто. И логично је ставити га у одвојеног тату. И где год се од провајдера захтева да направи симболичне везе до ове датотеке.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

На пример, користите претпостављену улогу у производњи, што вам омогућава да добијете права приступа неком спољном Амазон налогу. А променом једне датотеке, сви преостали који се налазе у стаблу ресурса ће имати потребна права тако да Терраформ зна којем Амазон сегменту треба приступити.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Где симболичне везе не раде? Као што сам рекао, Терраформ има државне фајлове. И они су веома, веома кул. Али чињеница је да Терраформ иницијализује позадину у првом. И он не може да користи никакве променљиве у овим параметрима, увек их треба написати у тексту.

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

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Шта можемо даље? Пре рада са Терраформом, потребно је да га иницијализујете. У тренутку иницијализације, Терраформ преузима све додатке. У неком тренутку су се из монолита разбили у више микросервисну архитектуру. И увек треба да урадите Терраформ инит тако да повуче све модуле, све додатке.

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

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Где добити податке? ЈСОН датотека. Терраформ вам омогућава да пишете инфраструктуру не само у хцл-у (ХасхиЦорп Цонфигуратион Лангуаге), већ иу ЈСОН-у.

ЈСОН се лако чита из схелл скрипте. Сходно томе, можете ставити конфигурациону датотеку са кантом на неко место. И користите ову канту иу Терраформ коду иу схелл скрипти за иницијализацију.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Зашто је важно имати Терраформ канту? Зато што постоји таква ствар као што су датотеке удаљених стања. То јест, када подигнем неки ресурс, да бих рекао Амазону: „Молим вас, подигните инстанцу“, морам да наведем много потребних параметара.

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

Није увек могуће користити датотеку удаљеног стања. На пример, креирали сте ВПЦ ручно. А Терраформ код који креира ВПЦ ствара толико различите ВПЦ-ове да ће бити потребно много времена и мораћете да прилагодите један другом, тако да можете користити следећи трик.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

То јест, да направите модул који, такорећи, прави ВПЦ и даје вам идентификаторе, али у ствари постоји само датотека са тврдо кодираним вредностима која се може користити за креирање исте инстанце.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

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

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Сада мало о тестирању. Шта се може тестирати у Терраформу? Вероватно је много тога могуће, али ја ћу говорити о ове 4 ствари.

ХасхиЦорп има разумевање како форматирати Терраформ код. А Терраформ фмт вам омогућава да форматирате код који уређујете у складу са тим уверењем. Сходно томе, тестови морају нужно да провере да ли се форматирање поклапа са оним што је ХасхиЦорп завештао, тако да не морате да мењате локацију заграда итд.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Следећи је Терраформ валидате. Ради мало више од провере синтаксе - ала, да ли су све заграде упарене. Шта је овде важно? Имамо веома танку инфраструктуру. Има много различитих фасцикли. И у сваком од њих треба да покренете Терраформ валидате.

Сходно томе, да бисмо убрзали тестирање, покрећемо неколико процеса паралелно користећи паралелно.

Паралела је веома кул ствар, искористи је.

Али сваки пут када се Терраформ иницијализује, он одлази у ХасхиЦорп и пита: „Који су најновији додаци? И додатак који имам у кешу - да ли је то онај или не? И успоравало се на сваком кораку.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Ако вам Терраформ каже где су додаци, Терраформ ће рећи: „У реду, ово је вероватно најсвежија ствар која постоји. Нећу нигде ићи, одмах ћу почети да проверавам ваш Терраформ код“.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Да бисмо попунили фасциклу потребним додацима, имамо веома једноставан Терраформ код који само треба да се иницијализује. Овде, наравно, треба да наведете све провајдере који на неки начин учествују у вашем коду, иначе ће Терраформ рећи: „Не познајем ниједног провајдера, јер га нема у кешу“.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Следећи план је Терраформ. Као што сам рекао, развој је цикличан. Правимо код са изменама. А онда треба да сазнате које су промене планиране на инфраструктури.

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

Можете то учинити на паметан начин. На пример, написали смо Питхон скрипту која решава зависности. И у зависности од тога шта је промењено: Терраформ модул или само одређена компонента, он прави планове за све зависне фасцикле.

Тераформни план се мора урадити на захтев. Барем то радимо.

Тестове је, наравно, добро урадити за сваку промену, за свако урезивање, али планови су прилично скупа ствар. И ми кажемо у захтеву за повлачење: „Молим вас дајте ми планове“. Робот почиње. И шаље у коментаре или да приложи све планове који се очекују од ваших промена.

План је прилично скупа ствар. Потребно је време јер Терраформ одлази у Амазон и пита: „Да ли ова инстанца још увек постоји? Да ли ова аутоматска скала има потпуно исте параметре?”. А да бисте то убрзали, можете користити параметар као што је рефресх=фалсе. То значи да ће Терраформ испразнити С3 стање. И вероваће да ће држава тачно одговарати ономе што је у Амазону.

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

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

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Следећа ствар о којој бих желео да говорим је тестирање корисничких података.

Шта су кориснички подаци? У Амазону, када креирамо инстанцу, можемо послати одређено писмо са инстанцом – мета подацима. Када се инстанца покрене, обично је инит у облаку увек присутан на овим инстанцама. Цлоуд инит чита ово писмо и каже: „У реду, данас сам ја балансатор оптерећења.“ И у складу са овим заветима он врши неке радње.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

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

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

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Алтернативно, можете навести не целу инфраструктуру током извршавања, већ само шаблон. И у коду реците: „Прикажи овај шаблон за мене“. И као резултат, можете добити испис како ће ваши подаци изгледати на Амазону.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Друга опција је коришћење модула за генерисање корисничких података. Применићете овај модул. Преузмите датотеку на диск. Упоредите то са референцом. И тако, ако неки јун одлучи да поправи мало корисничких података, онда ће ваши тестови рећи: „У реду, има неких промена ту и тамо – то је нормално.“

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Следећа ствар о којој бих желео да причам је аутоматска примена Терраформа.

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

За тестно окружење, ово је све у реду. То јест, посао који креира тестно окружење је оно што је потребно свим програмерима. А израз „све је функционисало код мене“ није смешан мем, већ доказ да се особа збунила, подигла стек, покренула неке тестове на овом стеку. И уверио се да је тамо све у реду и рекао: „У реду, код који сам објавио је тестиран.

У производњи, сандбок-у и другим окружењима која су критичнија за пословање, безбедно је делимично користити неке ресурсе јер то не узрокује смрт. То су: аутосцале групе, безбедносне групе, улоге, роуте53 и ту листа може бити прилично велика. Али држите на оку шта се дешава, читајте извештаје о аутоматизованим апликацијама.

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

Амазон има такву ствар као што је заштита од прекида. И може заштитити у неким случајевима од промена које вам нису потребне. Тако је Терраформ отишао у Амазон и рекао „Морам да убијем ову инстанцу да бих направио још једну“. А Амазон каже: „Извини, не данас. Имамо укинуту заштиту."

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

А шлаг на торту је оптимизација кода. Када радимо са Терраформ кодом, модулу морамо проследити веома велики број параметара. Ово су параметри који су неопходни за стварање неке врсте ресурса. И код се претвара у велике листе параметара које треба пренети од модула до модула, од модула до модула, посебно ако су модули угнежђени.

И веома је тешко читати. Веома је тешко ово прегледати. И врло често се испостави да се неки параметри преиспитују и да нису баш они који су потребни. И кошта времена и новца да се то касније поправи.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Стога вам предлажем да користите тако нешто као сложени параметар који укључује одређено стабло вредности. Односно, потребна вам је нека врста фасцикле у којој имате све вредности које бисте желели да имате у некој врсти окружења.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

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

У овом модулу можете да урадите неке прорачуне користећи тако нову функцију у Терраформу као локални становници. А онда у једном излазу издајте неку врсту сложеног параметра, који може укључивати хешове, низове итд.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

На овоме, све најбоље налазе које сам завршио. И желео бих да испричам причу о Колумбу. Када је тражио новац за своју експедицију да открије Индију (како је тада мислио), нико му није веровао и веровао да је то немогуће. Онда је рекао: „Пази да јаје не падне. Сви банкари, веома богати и вероватно паметни људи, покушавали су да на неки начин ставе јаје и оно је стално падало. Онда је Колумбо узео јаје, мало га притиснуо. Љуска се згужвала, а јаје је остало непомично. Рекли су: "Ох, то је сувише лако!" А Колумбо је одговорио: „Да, превише је једноставно. А када отворим Индију, сви ће користити овај трговачки пут.

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

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

Хајде да сумирамо:

  • Покушајте да избегнете пахуље. И што је мање снежних пахуљица, то ће вам бити потребно мање ресурса да направите било какве промене у вашој читавој великој инфраструктури.
  • Стална промена. То јест, када дође до неких промена у коду, потребно је да своју инфраструктуру ускладите са овим променама што је пре могуће. Не би требало да дође до ситуације да неко дође за два-три месеца да погледа Еластицсеарцх, направи Терраформ план, а има много промена које није очекивао. И потребно је много времена да се све врати у ред.
  • Тестови и аутоматизација. Што је ваш код више прекривен тестовима и чиповима, више ћете бити сигурни да све радите како треба. А аутоматска испорука ће повећати ваше самопоуздање вишеструко.
  • Код за тестно и производно окружење треба да буде скоро исти. Практично, јер ипак је производња мало другачија и још ће постојати неке нијансе које ће ићи даље од тестног окружења. Али ипак, плус или минус се може обезбедити.
  • А ако имате много Терраформ кода и потребно вам је много времена да овај код буде ажуриран, онда никада није касно да га преправите и доведете у добро стање.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

  • непроменљива инфраструктура. АМИ испорука по распореду.
  • Структура за роуте53 када имате много уноса и желите да буду у доследном редоследу.
  • Борба против ограничења брзине АПИ-ја. Тада Амазон каже: „То је то, не могу више да прихватим захтеве, сачекајте.“ А половина канцеларије чека да покрене своју инфраструктуру.
  • уочите инстанце. Амазон није јефтин догађај и спотови вам омогућавају да уштедите доста. И тамо можете испричати цео извештај о томе.
  • Безбедносне и ИАМ улоге.
  • Потражите изгубљене ресурсе, када имате случајеве непознатог порекла у Амазонеу, они једу новац. Чак и ако инстанце коштају 100-150 долара месечно, то је више од 1 долара годишње. Проналажење таквих ресурса је уносан посао.
  • И резервисане инстанце.

Обрасци у Терраформу за борбу против хаоса и ручне рутине. Максим Кострикин (Икстенс)

То је све за мене. Терраформ је веома кул, користите га. Хвала вам!

pitanja

Хвала на извештају! Имате датотеку стања у С3, али како да решите проблем да неколико људи може да узме ову датотеку стања и покуша да га примени?

Прво, не журимо. Друго, ту су заставице у којима извештавамо да радимо на неком делу кода. Односно, упркос чињеници да је инфраструктура веома велика, то не значи да неко стално нешто користи. А када је била активна фаза, ово је био проблем, чували смо датотеке стања у Гиту. Ово је било важно, иначе би неко направио државни фајл и морали смо ручно да их скупљамо у гомилу да бисмо наставили даље. Сада нема таквог проблема. Генерално, Терраформ је решио овај проблем. А ако се нешто стално мења, онда можете користити браве које спречавају оно што сте рекли.

Да ли користите отворени извор или предузеће?

Нема предузећа, односно све што можете бесплатно да преузмете.

Зовем се Станислав. Хтео сам да направим мали додатак. Говорили сте о Амазон функцији која вам омогућава да инстанцу учините неубијеном. Ово је и у самом Терраформу, у блоку Лифе Сецонд, можете прописати забрану промене, или забрану уништавања.

Био је временски ограничен. Добар закључак.

Хтео сам да питам и две ствари. Прво, говорили сте о тестирању. Да ли сте користили неки алат за тестирање? Чуо сам за додатак Тест Китцхен. Можда постоји нешто друго. И желео бих да питам о Локалним вредностима. Како се у основи разликују од улазних променљивих? А зашто не могу нешто да параметризујем само преко Локалних вредности? Покушао сам да се позабавим овом темом, али некако нисам ни сам схватио.

Можемо детаљније разговарати иза ове сале. Алати за тестирање су наши комплетни сами направљени. Нема ту шта да се тестира. Генерално, постоје опције када аутоматски тестови подигну инфраструктуру негде, провере да ли је у реду, а затим све униште уз извештај да је ваша инфраструктура и даље у добром стању. Ми то немамо јер се тестови раде сваки дан. И то је доста. А ако нешто почне да се ломи, онда ће почети да се ломи а да то не проверимо негде другде.

Што се тиче Локалних вредности, наставимо разговор ван публике.

Здраво! Хвала на извештају! Веома информативно. Рекли сте да имате много истог типа кода за описивање инфраструктуре. Да ли сте размишљали о генерисању овог кода?

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

Јесте ли чули за јсоннет?

Не.

Види, ово је стварно кул ствар. Видим специфичан случај где можете да га примените и генеришете структуру података.

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

Само погледајте. Хвала вам!

Зовем се Максим, ја сам из Сбербанке. Мало сте рекли да сте покушали да Терраформ доведете до аналога програмског језика. Није ли лакше користити Ансибле?

То су веома различите ствари. Ансибле може да креира ресурсе, а Пуппет може да креира ресурсе у Амазону. Али Терраформ је потпуно изоштрен.

Да ли имате само Амазон?

Није да имамо само Амазон. Имамо скоро само Амазон. Али кључна карактеристика је да Терраформ памти. У Ансиблеу, ако кажете: „Покупи ми 5 инстанци“, онда ће порасти, а онда кажете: „А сада ми треба 3“. А Терраформ ће рећи: „У реду, убићу 2“, а Ансибле ће рећи: „У реду, ево 3 за тебе“. Укупно 8.

Здраво! Хвала на извештају! Било је веома занимљиво чути о Терраформу. Желео бих одмах да дам мали коментар о чињеници да Терраформ још увек нема стабилно издање, па третирајте Терраформ са великим опрезом.

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

Питање је. Користите Ремоте бацкенд, користите С 3. Зашто не користите службену позадину?

Званичник?

Терраформ Цлоуд.

Када се појавио?

Пре 4 месеца.

Да се ​​појавио пре 4 године, онда бих, вероватно, одговорио на ваше питање.

Већ постоји уграђена функција и браве, а можете сачувати датотеку стања. Пробајте. Али нисам ни тестирао.

Налазимо се у великом возу који се креће великом брзином. И не можете само узети и избацити неколико аутомобила.

Говорили сте о пахуљама, зашто нисте користили грану? Зашто није тако испало?

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

тј. не ради?

Уопште не ради.

У грани сам исекао слајд фасцикле. То јест, ако урадите за сваки тест стек, на пример, тим А има свог тату, тим Б има свог тату, онда ово такође не функционише. Направили смо јединствени код тестног окружења који је био довољно флексибилан да одговара свима. Односно, сервирали смо један код.

Здраво! Моје име је Иура! Хвала на извештају! Питање о модулима. Кажете да користите модуле. Како решавате проблем ако су у једном модулу направљене промене које нису компатибилне са променом друге особе? Некако верзионисање модула или покушај да се направи чудо да испуни два захтева?

Ово је велики проблем гомиле снега. То је оно од чега патимо када нека безазлена промена може да разбије неки део инфраструктуре. И то ће бити приметно тек после неког времена.

Односно, још није одлучено?

Правите универзалне модуле. Избегавајте пахуље. И све ће успети. Друга половина извештаја говори о томе како то избећи.

Здраво! Хвала на извештају! желео бих да разјасним. Иза кулиса је била велика гомила, по коју сам дошао. Како су интегрисане лутке и дистрибуција улога?

кориснички подаци.

То јест, да ли само испљунеш датотеку и некако извршиш на њој?

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

Односно, да ли је то нека врста одвојеног процеса који се поклања?

Нисмо ми то измислили. Користимо га.

Здраво! Имам само питање о подацима корисника. Рекли сте да тамо има проблема, да неко може нешто послати на погрешно место. Постоји ли неки начин да се подаци о кориснику чувају у истом Гиту, тако да увек буде јасно на шта се односе кориснички подаци?

Ми генеришемо корисничке податке из шаблона. То јест, одређени број варијабли се тамо прибегава. И Терраформ генерише коначни резултат. Дакле, не можете само да погледате шаблон и кажете шта се дешава, јер су сви проблеми повезани са чињеницом да програмер мисли да он прослеђује стринг у ову променљиву, а затим се користи низ. И он - банг и ја - тако-и-тако, тако-и-тако, следећи ред, и све је пукло. Ако је ово нови ресурс и човек га подигне, види да нешто не ради, онда се то брзо решава. А ако је ова група за аутоматско скалирање ажурирана, онда у неком тренутку инстанце у групи за аутоматско скалирање почињу да се замењују. И тапш, нешто не ради. То боли.

Испада да је једино решење тестирање?

Да, видите проблем, додајте тестне кораке тамо. То јест, излаз се такође може тестирати. Можда није тако згодно, али такође можете ставити неке ознаке - проверите да ли су кориснички подаци овде закуцани.

Моје име је Тимур. Веома је кул што постоје извештаји о томе како правилно организовати Терраформ.

Нисам ни почео.

Мислим да ће на следећој конференцији можда и бити. Имам једноставно питање. Зашто чврсто кодирате вредност у засебном модулу уместо да користите тфварс, тј. да ли је модул са вредностима бољи од тфварс-а?

Односно, требало би да напишем овде (слајд: Продуцтион/енвиронмент/сеттингс.тф): домен = променљива, домен впцнетворк, впцнетворк променљива и стварс - добијате исто?

Ми радимо управо то. Позивамо се на изворни модул подешавања, на пример.

У ствари, ово је такав тфварс. Тфварс је веома згодан у окружењу за тестирање. Имам тфварове за велике инстанце, за мале. И једну датотеку сам бацио у фасциклу. И добио сам шта сам хтео. Када смо видели инфраструктуру, желимо да све можемо да видимо и одмах разумемо. И тако испада да треба да погледате овде, па да погледате у тфварс-има.

Испада да је све било на једном месту?

Да, тфварс је када имате један код. И користи се на неколико различитих места са различитим нијансама. Онда бисте бацили тфваре и схватили своје нијансе. А ми смо инфраструктура као код у свом најчистијем облику. Погледао и разумео.

Здраво! Да ли сте наишли на ситуације у којима се добављач облака меша у оно што сте урадили са Терраформом? Рецимо да уређујемо метаподатке. Постоје ссх кључеви. А Гоогле стално ставља своје мета-податке, своје кључеве тамо. А Терраформ увек пише да има промене. После сваке вожње, чак и ако се ништа не промени, увек каже да ће сада ажурирати ово поље.

Са кључевима, али – да, део инфраструктуре је погођен тако нешто, односно Терраформ не може ништа да промени. Не можемо ништа ни својим рукама да променимо. Докле год живимо са тим.

То јест, наишли сте на ово, али нисте ништа смислили, како он то ради и ради сам?

Нажалост да.

Здраво! Моје име је Станислав Старков. Пошта. ен Група. Како решити проблем са генерисањем ознаке на ..., како је проследити унутра? Како сам разумео, преко Усер - дата, да се одреди име хоста, подстакне Пуппет? И други део питања. Како решавате овај проблем у СГ, односно када генеришете СГ, стотину инстанци истог типа, како их правилно именовати?

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

Што се тиче проблема са ознаком, не постоји такав проблем, али такав задатак постоји. И ми користимо ознаке веома, веома интензивно, јер је инфраструктура велика и скупа. И треба да погледамо на шта се троши новац, тако да нам ознаке омогућавају да средимо шта је и где је отишао. И, сходно томе, потрага за нечим овде је много потрошеног новца.

О чему је још било питање?

Када СГ створи стотину инстанци, да ли их треба некако разликовати?

Не, немој. Свака инстанца има агента који ми каже да имам проблем. Ако агент пријави, онда агент зна за њега и барем постоји његова ИП адреса. Већ можете да трчите. Друго, користимо Цонсул за Дисцовери, где нема Кубернетеса. Конзул такође показује ИП адресу инстанце.

То јест, циљате тачно на ИП, а не на име хоста?

Немогуће је кретати се по имену хоста, односно има их много. Постоје идентификатори инстанце - АЕ, итд. Можете га наћи негде, можете га бацити у претрагу.

Здраво! Схватио сам да је Терраформ добра ствар, прилагођена облацима.

Не само.

Управо ово питање ме занима. Ако одлучите да са свим својим инстанцама масовно пређете, рецимо, у Баре Метал? Хоће ли бити проблема? Или ћете ипак морати да користите друге производе, на пример, исти Ансибле који је овде поменут?

Ансибле је нешто о нечем другом. То јест, Ансибле је већ покренут када је инстанца покренута. И Терраформ ради пре него што је инстанца почела. Прелазак на голи метал није.

Не сада, али посао ће доћи и рећи: „Хајде”.

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

Првобитно је задатак био да нам је цела инфраструктура агностична, односно сваки облак би требало да буде у реду, али је у једном тренутку посао одустао и рекао: „Добро, у наредних Н година нећемо нигде ићи, можете користити услуге из Амазон“.

Терраформ вам омогућава да креирате Фронт-Енд послове, конфигуришете ПагерДути, документе са подацима, итд. Има пуно репова. Он практично може да контролише цео свет.

Хвала на извештају! Такође вртим Терраформ већ 4 године. У фази глатког преласка на Терраформ, на инфраструктуру, на декларативни опис, били смо суочени са ситуацијом да неко нешто ради ручно, а ви покушавате да направите план. И ту сам добио неку грешку. Како се носите са таквим проблемима? Како проналазите изгубљене ресурсе који су назначени?

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

Ако постоји грешка, да ли се враћате назад? Да ли сте покушали да урадите ово?

Не, ово је одлука човека у тренутку када види проблем.

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