Инфрасохтор ҳамчун рамз: шиносоии аввал

Ширкати мо дар марҳилаи ворид кардани як гурӯҳи SRE аст. Ман ба тамоми ин ҳикоя аз ҷониби рушд омадам. Дар ин раванд, ман фикрҳо ва фаҳмишҳое пайдо кардам, ки мехоҳам бо дигар таҳиягарон мубодила кунам. Дар ин мақолаи мулоҳиза ман дар бораи он чӣ рӯй дода истодааст, чӣ гуна рӯй дода истодааст ва чӣ гуна ҳама метавонад бо он зиндагӣ кунад.

Инфрасохтор ҳамчун рамз: шиносоии аввал

Идомаи як силсила матолибе, ки бар асоси баромадҳо дар чорабинии дохилии мо навишта шудааст DevForum:

1. Гурбаи Шредингер бе қуттӣ: мушкилоти консенсус дар системаҳои тақсимшуда.
2. Инфрасохтор ҳамчун рамз. (Шумо инҷоед)
3. Эҷоди шартномаҳои Typescript бо истифода аз моделҳои C#. (Дар ҷараён...)
4. Муқаддима ба алгоритми консенсуси Raft. (Дар ҷараён...)
...

Мо тасмим гирифтем, ки як гурӯҳи SRE таъсис диҳем, ки идеяҳоро амалӣ созем google sre. Онҳо аз ҷумлаи таҳиягарони худ барномасозонро ҷалб карда, онҳоро ба муддати чанд моҳ ба омӯзиш фиристоданд.

Дар назди даста вазифаҳои зерини таълимӣ гузошта шуданд:

  • Инфрасохтори моро, ки асосан дар Microsoft Azure дар шакли код (Terraform ва ҳама чизҳои гирду атроф) ҷойгир аст, тавсиф кунед.
  • Ба таҳиягарон тарзи кор бо инфрасохторро омӯзед.
  • Таҳиягаронро ба вазифа омода кунед.

Мо консепсияи инфрасохторро ҳамчун код муаррифӣ мекунем

Дар модели маъмулии ҷаҳон (идоракунии классикӣ), дониш дар бораи инфрасохтор дар ду ҷой ҷойгир аст:

  1. Ё дар шакли дониш дар сари коршиносон.Инфрасохтор ҳамчун рамз: шиносоии аввал
  2. Ё ин ки ин маълумот дар баъзе мошинаҳои чопӣ мавҷуд аст, ки баъзеи онҳо ба мутахассисон маълуманд. Аммо ин воқеият нест, ки шахси бегона (агар тамоми дастаи мо ногаҳон бимирад) фаҳмад, ки чӣ кор мекунад ва чӣ тавр кор мекунад. Дар мошин метавонад маълумоти зиёде бошад: лавозимот, кронжобҳо, тарсондан (ниг. насби диск) диск ва танҳо як рӯйхати беохири он чӣ рӯй дода метавонад. Фаҳмидани он душвор аст, ки воқеан чӣ рӯй дода истодааст.Инфрасохтор ҳамчун рамз: шиносоии аввал

Дар ҳарду ҳолат, мо худро дар доми вобастагӣ мебинем:

  • ё аз шахсе, ки фавтида, гирифтори беморӣ, ошиқ шудан, тағирёбии рӯҳия ва бекоркунии оддӣ;
  • ё аз як мошини ҷисмонӣ коркунанда, ки он низ афтода, дуздида мешавад ва ногаҳонӣ ва нороҳатиҳо меорад.

Худ аз худ маълум аст, ки дар идеалӣ ҳама чиз бояд ба рамзи барои инсон хондашаванда, нигоҳдорӣ ва хуб навишташуда тарҷума карда шавад.

Ҳамин тариқ, инфрасохтор ҳамчун код (Incfastructure as Code - IaC) тавсифи тамоми инфрасохтори мавҷуда дар шакли код, инчунин асбобҳои алоқаманд барои кор бо он ва татбиқи инфрасохтори воқеӣ аз он мебошад.

Чаро ҳама чизро ба код тарҷума кунед?Одамон мошин нестанд. Онҳо ҳама чизро дар хотир надоранд. Реаксияи одам ва мошин гуногун аст. Ҳар чизе, ки автоматӣ карда шудааст, эҳтимолан зудтар аз ҳама коре, ки инсон анҷом медиҳад, зудтар аст. Муҳимтар аз ҳама сарчашмаи ягонаи ҳақиқат аст.

Муҳандисони нави SRE аз куҷо пайдо мешаванд?Пас, мо тасмим гирифтем, ки муҳандисони нави SRE-ро киро кунем, аммо онҳоро аз куҷо гирем? Китоб бо ҷавобҳои дуруст (Китоби Google SRE) ба мо мегуяд: аз тахиягарон. Баъд аз ҳама, онҳо бо код кор мекунанд ва шумо ба ҳолати идеалӣ ноил мешавед.

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

Проблемаҳо Инфрасохтор ҳамчун код

Акнун биёед мисолҳоро дида бароем, ки чӣ тавр инфрасохторро ба код сахт код кардан мумкин аст. Рамз хуб навишта шудааст, сифати баланд, бо шарҳу эзоҳҳо.

Намунаи код аз Terraforma.

Инфрасохтор ҳамчун рамз: шиносоии аввал

Намунаи код аз Ansible.

Инфрасохтор ҳамчун рамз: шиносоии аввал

Ҷанобон, агар ин қадар оддӣ мебуд! Мо дар ҷаҳони воқеӣ ҳастем ва он ҳамеша омода аст, ки шуморо ба ҳайрат оварад, ба шумо сюрпризҳо ва мушкилот пешкаш кунад. Дар ин ҷо ҳам бе онҳо кор кардан мумкин нест.

1. Мушкилоти аввал ин аст, ки дар аксари ҳолатҳо IaC як навъ dsl аст.

Ва DSL, дар навбати худ, тавсифи сохтор аст. Аниқтараш, он чизеро, ки шумо бояд дошта бошед: Json, Yaml, тағирот аз баъзе ширкатҳои бузург, ки бо dsl-и худ таҳия карда шудаанд (HCL дар terraform истифода мешавад).

Мушкилот дар он аст, ки он метавонад ба осонӣ чунин чизҳои шиносро дар бар гирад:

  • тағирёбандаҳо;
  • шароит;
  • дар ҷое шарҳ нест, масалан, дар Ҷсон, ба таври нобаёнӣ онҳо пешниҳод карда намешаванд;
  • вазифаҳо;
  • ва ман ҳатто дар бораи чунин чизҳои сатҳи баланд, аз қабили синфҳо, мерос ва ҳама чизҳои дигар ҳарф намезанам.

2. Мушкилоти дуюм бо чунин код ин аст, ки аксар вақт он муҳити гетерогенӣ мебошад. Одатан шумо бо C# нишаста кор мекунед, яъне. бо як забон, як стек, як экосистема. Ва дар ин ҷо шумо технологияҳои зиёди гуногун доред.

Вақте ки bash бо python як равандеро оғоз мекунад, ки ба он Json ворид карда мешавад, ин вазъияти хеле воқеӣ аст. Шумо онро таҳлил мекунед, пас ягон генератори дигар 30 файли дигар тавлид мекунад. Барои ҳамаи ин, тағирёбандаҳои воридотӣ аз Azure Key Vault гирифта мешаванд, ки тавассути плагин барои drone.io дар Go навишташуда ҷамъ карда мешаванд ва ин тағирёбандаҳо аз yaml мегузаранд, ки дар натиҷаи тавлид аз муҳаррики шаблони jsonnet тавлид шудааст. Вақте ки шумо чунин муҳити гуногун доред, рамзи ба таври дақиқ тавсифшуда хеле душвор аст.

Рушди анъанавӣ дар доираи як вазифа бо як забон меояд. Дар ин ҷо мо бо шумораи зиёди забонҳо кор мекунем.

3. Масъалаи сеюм – танзим кардан. Мо барои хунук кардани муҳаррирҳо (Ms Visual Studio, Jetbrains Rider) одат кардаем, ки ҳама чизро барои мо мекунанд. Ва агар беақл бошем ҳам, мегӯянд, ки мо хато мекунем. Ин муқаррарӣ ва табиӣ ба назар мерасад.

Аммо дар ҷое дар наздикии он VSCode мавҷуд аст, ки дар он баъзе плагинҳо мавҷуданд, ки бо ягон роҳ насб карда шудаанд, дастгирӣ мешаванд ё дастгирӣ намешаванд. Версияҳои нав пайдо шуданд ва дастгирӣ нашуданд. Гузариши ғайриқонунӣ ба татбиқи функсия (ҳатто агар он вуҷуд дошта бошад) ба мушкилоти мураккаб ва ғайриоддӣ табдил меёбад. Тағйир додани номи оддии тағирёбанда ин такрор дар лоиҳаи даҳҳо файл мебошад. Шумо хушбахт хоҳед буд, агар ӯ он чизеро, ки ба шумо лозим аст, ҷойгир кунад. Албатта, дар ин ҷо ва он ҷо рӯшноӣ вуҷуд дорад, худкор анҷомёбӣ вуҷуд дорад, дар ҷое форматкунӣ вуҷуд дорад (гарчанде ки он барои ман дар terraform дар Windows кор намекард).

Дар замони навиштани ин плагини vscode-terraform то ҳол барои дастгирии версияи 0.12 бароварда нашудааст, гарчанде ки он барои 3 моҳ бароварда шудааст.

Вақти он расидааст, ки фаромӯш кунем ...

  1. Ислоҳи хатогиҳо.
  2. Воситаи рефакторинг.
  3. Ба итмом расонидани худкор.
  4. Муайян кардани хатогиҳо ҳангоми таҳия.

Ин хандаовар аст, аммо ин инчунин вақти таҳияро зиёд мекунад ва шумораи хатогиҳоеро, ки ногузир рух медиҳанд, зиёд мекунад.

Бадтараш он аст, ки мо маҷбурем на дар бораи тарҳрезӣ кардан, ба ҷузвдонҳо ташкил кардани файлҳо, таҷзия кардан, нигоҳдорӣ, хондан ва ғайра, балки дар бораи он фикр кунем, ки чӣ гуна ман ин фармонро дуруст навишта метавонам, зеро ман онро ба таври нодуруст навиштаам. .

Ҳамчун як навкор, шумо кӯшиш мекунед, ки терраформҳоро омӯзед ва IDE ба шумо тамоман кӯмак намекунад. Вақте ки ҳуҷҷат вуҷуд дорад, ворид шавед ва бубинед. Аммо агар шумо ба забони нави барномасозӣ ворид мешудед, IDE ба шумо мегӯяд, ки чунин намуд вуҷуд дорад, аммо чунин чизе вуҷуд надорад. Ақаллан дар сатҳи int ё сатр. Ин аксар вақт муфид аст.

Дар бораи санҷишҳо чӣ гуфтан мумкин аст?

Шумо мепурсед: "Дар бораи санҷишҳо чӣ гуфтан мумкин аст, ҷанобон барномасозон?" Бачаҳои ҷиддӣ ҳама чизро дар истеҳсолот месанҷанд ва ин душвор аст. Дар ин ҷо намунаи санҷиши воҳиди модули terraform аз вебсайт аст Microsoft.

Инфрасохтор ҳамчун рамз: шиносоии аввал

Онҳо ҳуҷҷатҳои хуб доранд. Ман ҳамеша Microsoft-ро барои муносибати он ба ҳуҷҷатгузорӣ ва омӯзиш дӯст медоштам. Аммо ба шумо лозим нест, ки амаки Боб бошед, то бифаҳмед, ки ин рамзи комил нест. Тафтишро дар тарафи рост қайд кунед.

Мушкилоти санҷиши воҳид дар он аст, ки шумо ва ман дурустии баромади Json-ро тафтиш карда метавонем. Ман 5 параметрро партофтам ва ба ман як ҷомаи Json бо 2000 хат дода шуд. Ман метавонам таҳлил кунам, ки дар ин ҷо чӣ рӯй дода истодааст, натиҷаи санҷишро тасдиқ кунам...

Таҳлили Json дар Go душвор аст. Ва шумо бояд дар Go нависед, зеро terraform дар Go як таҷрибаи хубест барои санҷиш бо забоне, ки шумо менависед. Ташкили худи кодхоз хеле суст аст. Дар айни замон, ин беҳтарин китобхона барои санҷиш аст.

Худи Microsoft модулҳои худро менависад ва онҳоро бо ин роҳ месанҷад. Албатта, он манбаи кушода аст. Ҳар чизе ки ман дар бораи он мегӯям, шумо метавонед омада ислоҳ кунед. Ман метавонам дар як ҳафта нишаста ҳама чизро ислоҳ кунам, плагинҳои рамзии VS, terraforms, плагин барои савора созам. Шояд якчанд анализаторҳо нависед, линтерҳо илова кунед, китобхонаро барои санҷиш саҳм гузоред. Ман ҳама чизро карда метавонам. Аммо ин коре нест, ки ман бояд кор кунам.

Таҷрибаҳои беҳтарин Инфрасохтор ҳамчун код

Биёед пеш равем. Агар дар IaC ягон санҷиш мавҷуд набошад, IDE ва танзим бад аст, пас ҳадди аққал таҷрибаҳои беҳтарин бояд вуҷуд дошта бошанд. Ман танҳо ба Google Analytics рафтам ва ду дархости ҷустуҷӯро муқоиса кардам: таҷрибаҳои беҳтарини Terraform ва таҷрибаҳои беҳтарини c#.

Инфрасохтор ҳамчун рамз: шиносоии аввал

Мо чиро мебинем? Омори бераҳм ба нафъи мо нест. Миқдори мавод якхела аст. Дар таҳияи C#, мо танҳо аз маводҳо ғарқ мешавем, мо таҷрибаҳои беҳтарин дорем, китобҳои аз ҷониби коршиносон навишташуда ва инчунин китобҳои дар китобҳои дигар коршиносон навишташуда мавҷуданд, ки ин китобҳоро танқид мекунанд. Баҳри ҳуҷҷатҳои расмӣ, мақолаҳо, курсҳои омӯзишӣ ва ҳоло инчунин таҳияи сарчашмаҳои кушод.

Дар мавриди дархости IaC: дар ин ҷо шумо кӯшиш карда истодаед, ки маълумотро каме аз гузоришҳои баландборкунӣ ё HashiConf, аз ҳуҷҷатҳои расмӣ ва масъалаҳои сершумор дар Github ҷамъоварӣ кунед. Умуман ин модулҳоро чӣ гуна бояд тақсим кард, бо онҳо чӣ бояд кард? Чунин ба назар мерасад, ки ин як мушкили воқеӣ аст... Ҷанобон, ҷомеае вуҷуд дорад, ки дар он барои ҳар як савол дар Github ба шумо 10 шарҳ дода мешавад. Аммо он дақиқ нест.

Мутаассифона, дар ин давра коршиносон нав пайдо мешаванд. То ҳол шумораи онҳо хеле кам аст. Ва худи ҷомеа дар сатҳи ибтидоӣ овезон аст.

Ин ҳама куҷо меравад ва чӣ бояд кард

Шумо метавонед ҳама чизро тарк кунед ва ба C#, ба ҷаҳони савора баргардед. Аммо не. Чаро шумо ҳатто ин корро мекунед, агар шумо роҳи ҳалли худро наёбед. Дар зер ман хулосаҳои субъективии худро пешниҳод мекунам. Шумо метавонед бо ман дар шарҳҳо баҳс кунед, ин ҷолиб хоҳад буд.

Шахсан, ман дар бораи чанд чиз шартгузорӣ мекунам:

  1. Тараккиёти ин соха хеле зуд ба амал меояд. Ин аст ҷадвали дархостҳо барои DevOps.

    Инфрасохтор ҳамчун рамз: шиносоии аввал

    Мавзӯи мавзӯъ шояд табъи болида бошад, аммо худи далели афзоиш ёфтани соҳа як андоза умед мебахшад.

    Агар чизе ин қадар зуд афзоиш ёбад, ҳатман одамони оқил пайдо мешаванд, ки ба шумо мегӯянд, ки чӣ кор кардан ва чӣ набояд кард. Афзоиши маъруфият ба он оварда мерасонад, ки шояд касе вақт пайдо кунад, ки дар ниҳоят ба jsonnet барои vscode плагин илова кунад, ки ба шумо имкон медиҳад, ки ба татбиқи функсия гузаред, на ҷустуҷӯи он тавассути ctrl+shift+f. Тавре ки чизҳо инкишоф меёбанд, маводи бештар пайдо мешаванд. Нашри китоб аз Google дар бораи SRE намунаи олии ин аст.

  2. Дар рушди анъанавӣ усулҳо ва таҷрибаҳои таҳияшуда мавҷуданд, ки мо метавонем дар ин ҷо бомуваффақият татбиқ кунем. Бале, нозукиҳо бо озмоиш ва муҳити гетерогенӣ, асбобҳои нокифоя мавҷуданд, аммо шумораи зиёди таҷрибаҳо ҷамъ оварда шудаанд, ки метавонанд муфид ва муфид бошанд.

    Мисоли ночиз: ҳамкорӣ тавассути барномасозии ҷуфт. Ин барои фаҳмидани он кӯмак мекунад. Вақте ки шумо дар наздикии шумо ҳамсояе доред, ки вай низ чизеро фаҳмидан мехоҳад, якҷоя шумо беҳтар мефаҳмед.

    Фаҳмидани он, ки чӣ тавр рефакторинг анҷом дода мешавад, ҳатто дар чунин вазъият ба анҷом додани он кӯмак мекунад. Ин аст, ки шумо наметавонед ҳама чизро якбора тағир диҳед, аммо номро тағир диҳед, пас ҷойгиршавиро тағир диҳед, пас шумо метавонед баъзе қисматҳоро қайд кунед, оҳ, аммо дар ин ҷо шарҳҳо кофӣ нестанд.

хулоса

Сарфи назар аз он, ки мулоҳизаҳои ман ноумедона ба назар мерасанд, ман ба оянда бо умед менигарам ва самимона умедворам, ки ҳама чиз барои мо (ва шумо) натиҷа хоҳад дод.

Дар оянда қисми дуюми мақола омода карда мешавад. Дар он, ман дар бораи он сӯҳбат хоҳам кард, ки чӣ гуна мо кӯшиш кардем, ки таҷрибаҳои рушди agile барои такмил додани раванди таълим ва кор бо инфрасохтор истифода барем.

Манбаъ: will.com

Илова Эзоҳ