Infrastructure isip code: unang kaila

Ang among kompanya anaa sa proseso sa pag-onboard sa usa ka SRE team. Nag-abut ako sa kini nga tibuuk nga istorya gikan sa bahin sa pag-uswag. Sa proseso, nakahunahuna ko ug mga panabut nga gusto nakong ipaambit sa ubang mga developer. Niini nga artikulo sa pagpamalandong naghisgot ako bahin sa kung unsa ang nanghitabo, kung giunsa kini nahitabo, ug kung giunsa ang tanan makapadayon sa pagkinabuhi niini.

Infrastructure isip code: unang kaila

Pagpadayon sa serye sa mga artikulo nga gisulat base sa mga pakigpulong sa among internal nga kalihokan DevForum:

1. Ang iring ni Schrödinger nga walay kahon: ang problema sa consensus sa gipang-apod-apod nga mga sistema.
2. Imprastraktura isip code. (Naa ka diri)
3. Pagmugna sa mga kontrata sa Typescript gamit ang mga modelo sa C#. (Sa pag-uswag...)
4. Pasiuna sa Raft consensus algorithm. (Sa pag-uswag...)
...

Nakahukom mi nga maghimo ug SRE team, nga nagpatuman sa mga ideya google sre. Nag-recruit sila og mga programmer gikan sa ilang kaugalingong mga developers ug gipadala sila sa pagbansay sulod sa pipila ka bulan.

Ang team adunay mosunod nga mga buluhaton sa pagbansay:

  • Ihulagway ang among imprastraktura, nga kasagaran sa Microsoft Azure sa porma sa code (Terraform ug tanan sa palibot).
  • Tudloi ang mga developer kung unsaon pagtrabaho sa imprastraktura.
  • Pag-andam sa mga developers alang sa katungdanan.

Gipaila namo ang konsepto sa Infrastructure isip code

Sa naandan nga modelo sa kalibutan (klasikal nga administrasyon), ang kahibalo bahin sa imprastraktura nahimutang sa duha ka mga lugar:

  1. O sa porma sa kahibalo sa mga ulo sa mga eksperto.Infrastructure isip code: unang kaila
  2. O kini nga impormasyon anaa sa pipila ka mga makinilya, nga ang pipila niini nahibaloan sa mga eksperto. Apan dili kini usa ka kamatuoran nga ang usa ka tagagawas (kung ang among tibuuk nga grupo kalit nga mamatay) mahibal-an kung unsa ang molihok ug kung giunsa kini molihok. Mahimong adunay daghang impormasyon sa usa ka makina: mga aksesorya, mga cronjob, nahadlok (tan-awa. pag-mount sa disk) disk ug usa lamang ka walay katapusan nga lista kung unsa ang mahimong mahitabo. Lisod sabton ang tinuod nga nahitabo.Infrastructure isip code: unang kaila

Sa duha ka mga kaso, nakita namon ang among kaugalingon nga natanggong sa pagkahimong nagsalig:

  • o gikan sa usa ka tawo nga mortal, nailalom sa sakit, nahulog sa gugma, mood swings ug yano nga mga pagtangtang sa trabaho;
  • o gikan sa usa ka makina nga nagtrabaho sa pisikal, nga nahulog usab, gikawat, ug nagpresentar sa mga sorpresa ug mga kahasol.

Wala'y giingon nga ang tanan kinahanglan nga hubaron sa mabasa sa tawo, mapadayon, maayong pagkasulat nga code.

Busa, ang imprastraktura isip code (Incfastructure as Code - IaC) usa ka paghulagway sa tibuok kasamtangan nga imprastraktura sa porma sa code, ingon man ang mga may kalabutan nga himan alang sa pagtrabaho uban niini ug pagpatuman sa tinuod nga imprastraktura gikan niini.

Nganong hubaron ang tanan ngadto sa code?Ang mga tawo dili mga makina. Dili nila mahinumduman ang tanan. Lahi ang reaksyon sa usa ka tawo ug sa makina. Ang bisan unsang butang nga awtomatiko mahimong mas paspas kaysa bisan unsang gibuhat sa usa ka tawo. Ang labing importante nga butang mao ang usa ka tinubdan sa kamatuoran.

Diin gikan ang bag-ong mga inhenyero sa SRE?Mao nga, nakahukom kami nga mag-hire og bag-ong mga inhenyero sa SRE, apan asa kini makuha? Libro nga adunay saktong tubag (Google SRE nga Libro) nagsulti kanato: gikan sa mga developers. Pagkahuman, nagtrabaho sila sa code, ug nakab-ot nimo ang sulundon nga kahimtang.

Dugay-dugay namong gipangita sila sa personnel market gawas sa among kompanya. Apan kinahanglan namon nga dawaton nga wala kami nakit-an nga bisan kinsa nga nahiangay sa among mga hangyo. Kinahanglan kong mangita taliwala sa akong kaugalingong katawhan.

Mga Problema sa Imprastraktura isip code

Karon atong tan-awon ang mga pananglitan kung giunsa ang imprastraktura mahimong hardcoded sa code. Ang code maayo ang pagkasulat, taas nga kalidad, nga adunay mga komento ug mga indentasyon.

Pananglitan nga code gikan sa Terraforma.

Infrastructure isip code: unang kaila

Pananglitan nga code gikan sa Ansible.

Infrastructure isip code: unang kaila

Mga ginoo, kung kini yano ra! Anaa kami sa tinuod nga kalibutan, ug kini kanunay nga andam sa pagsurprisa kanimo, pagpresentar kanimo sa mga sorpresa ug mga problema. Dili usab mahimo kung wala sila dinhi.

1. Ang unang problema mao nga sa kadaghanan sa mga kaso IaC mao ang usa ka matang sa dsl.

Ug ang DSL, sa baylo, usa ka paghulagway sa istruktura. Mas tukma, kung unsa ang kinahanglan nimo: Json, Yaml, mga pagbag-o gikan sa pipila ka dagkong mga kompanya nga naghimo sa ilang kaugalingon nga dsl (Ang HCL gigamit sa terraform).

Ang problema mao nga kini dali nga wala maglangkob sa pamilyar nga mga butang sama sa:

  • mga baryable;
  • kondisyon;
  • sa usa ka dapit walay mga komentaryo, pananglitan, sa Json, sa default wala sila gihatag;
  • mga gimbuhaton;
  • ug wala ako maghisgot bahin sa mga butang nga taas ang lebel sama sa mga klase, kabilin ug uban pa.

2. Ang ikaduha nga problema sa ingon nga code mao nga kasagaran kini usa ka heterogeneous nga palibot. Kasagaran molingkod ka ug magtrabaho sa C #, i.e. nga adunay usa ka pinulongan, usa ka stack, usa ka ekosistema. Ug dinhi adunay ka daghang lainlain nga teknolohiya.

Kini usa ka tinuod nga sitwasyon kung ang bash nga adunay python naglansad sa pipila ka proseso diin gisulud si Json. Imong analisahon kini, unya ang ubang generator naggama ug laing 30 ka file. Alang sa tanan niini, ang mga variable sa input nadawat gikan sa Azure Key Vault, nga gihiusa sa usa ka plugin alang sa drone.io nga gisulat sa Go, ug kini nga mga variable moagi sa yaml, nga nahimo ingon usa ka sangputanan sa henerasyon gikan sa jsonnet template engine. Lisud kaayo nga adunay maayo nga gihulagway nga code kung ikaw adunay usa ka lainlain nga palibot.

Tradisyonal nga kalamboan sulod sa gambalay sa usa ka buluhaton moabut uban sa usa ka pinulongan. Dinhi kami nagtrabaho uban ang daghang mga pinulongan.

3. Ang ikatulo nga problema mao ang tuning. Naanad kami sa pagpabugnaw sa mga editor (Ms Visual Studio, Jetbrains Rider) nga nagbuhat sa tanan alang kanamo. Ug bisag tanga ta, muingon sila nga nasayop ta. Morag normal ug natural kini.

Apan sa duol nga dapit adunay VSCode, diin adunay pipila ka mga plugins nga sa usa ka paagi na-install, gisuportahan o wala gisuportahan. Bag-ong mga bersyon migawas ug wala gisuportahan. Ang usa ka banal nga transisyon sa pagpatuman sa usa ka function (bisan kung kini naglungtad) mahimong usa ka komplikado ug dili hinungdanon nga problema. Ang usa ka yano nga pagbag-o sa ngalan sa usa ka variable usa ka replay sa usa ka proyekto sa usa ka dosena nga mga file. Swerte ka kung iyang ibutang ang imong gikinahanglan. Siyempre, adunay backlighting dinhi ug didto, adunay auto-completion, sa usa ka dapit adunay formatting (bisan tuod wala kini nagtrabaho alang kanako sa terraform sa Windows).

Sa panahon ning pagsulat vscode-terraform nga plugin wala pa gipagawas aron suportahan ang bersyon 0.12, bisan kung kini gipagawas sa 3 ka bulan.

Panahon na para kalimtan ang...

  1. Pag-debug.
  2. Refactoring nga himan.
  3. Awtomatikong pagkompleto.
  4. Pag-ila sa mga sayup sa panahon sa pag-compile.

Kini kataw-anan, apan kini usab nagdugang sa oras sa pag-uswag ug nagdugang sa gidaghanon sa mga sayup nga dili malikayan nga mahitabo.

Ang pinakagrabe nga butang mao nga napugos kami sa paghunahuna dili bahin sa kung giunsa ang pagdesinyo, pag-organisar sa mga file sa mga folder, pagkadunot, paghimo sa code nga mapadayon, mabasa, ug uban pa, apan kung giunsa nako pagsulat kini nga mando sa husto, tungod kay sa usa ka paagi gisulat ko kini nga sayup. .

Isip usa ka bag-o, naningkamot ka nga makakat-on sa mga terraform, ug ang IDE wala gyud makatabang kanimo. Kung adunay dokumentasyon, sulod ug tan-awa. Apan kung nagsulod ka sa usa ka bag-ong programming language, ang IDE mosulti kanimo nga adunay ingon nga tipo, apan wala’y ingon niana. Labing menos sa int o string nga lebel. Kini kasagarang mapuslanon.

Komosta ang mga pagsulay?

Nangutana ka: "Unsa man ang bahin sa mga pagsulay, mga ginoo nga mga programmer?" Gisulayan sa mga seryoso nga lalaki ang tanan sa produksiyon, ug kini lisud. Ania ang usa ka pananglitan sa usa ka unit test alang sa usa ka terraform module gikan sa website Microsoft.

Infrastructure isip code: unang kaila

Sila adunay maayo nga dokumentasyon. Kanunay kong ganahan ang Microsoft alang sa pamaagi niini sa dokumentasyon ug pagbansay. Apan dili nimo kinahanglan nga mahimong Tiyo Bob aron masabtan nga dili kini perpekto nga code. Matikdi ang validation sa tuo.

Ang problema sa usa ka unit test mao nga ikaw ug ako makasusi sa pagkahusto sa Json output. Gilabay nako ang 5 nga mga parameter ug gihatagan og usa ka Json footcloth nga adunay 2000 ka linya. Mahimo nakong analisahon kung unsa ang nahitabo dinhi, i-validate ang resulta sa pagsulay...

Lisod i-parse si Json sa Go. Ug kinahanglan nimo nga magsulat sa Go, tungod kay ang terraform sa Go usa ka maayong praktis alang sa pagsulay sa pinulongan nga imong gisulat. Ang organisasyon sa code mismo huyang kaayo. Sa parehas nga oras, kini ang labing kaayo nga librarya alang sa pagsulay.

Gisulat mismo sa Microsoft ang mga module niini, gisulayan kini sa kini nga paagi. Siyempre kini Open Source. Ang tanan nga akong gisulti kanimo mahimo nga moabut ug ayohon. Makalingkod ko ug ayuhon ang tanan sa usa ka semana, open source VS code plugins, terraforms, paghimo ug plugin para sa rider. Tingali magsulat usa ka magtiayon nga mga analista, magdugang mga linter, mag-amot usa ka librarya alang sa pagsulay. Mahimo nako ang tanan. Pero dili kana ang angay nakong buhaton.

Labing maayo nga mga praktis Infrastructure isip code

Magpadayon ta. Kung walay mga pagsulay sa IaC, ang IDE ug tuning dili maayo, nan kinahanglan adunay labing menos labing maayo nga mga gawi. Miadto lang ko sa Google Analytics ug nagtandi sa duha ka pangutana sa pagpangita: Terraform best practices ug c# best practices.

Infrastructure isip code: unang kaila

Unsay atong makita? Ang walay kaluoy nga estadistika dili pabor kanamo. Ang kantidad sa materyal parehas. Sa pag-uswag sa C #, nahurot lang kita sa mga materyales, naa tay mga super-best practices, naay mga libro nga gisulat sa mga eksperto, ug mga libro usab nga gisulat sa mga libro sa ubang mga eksperto nga nagsaway sa maong mga libro. Usa ka dagat sa opisyal nga dokumentasyon, mga artikulo, mga kurso sa pagbansay, ug karon usab bukas nga gigikanan nga pag-uswag.

Mahitungod sa hangyo sa IaC: dinhi naningkamot ka sa pagkolekta sa impormasyon sa hinay-hinay gikan sa highload o HashiConf nga mga taho, gikan sa opisyal nga dokumentasyon ug daghang mga isyu sa Github. Giunsa ang pag-apod-apod niini nga mga module sa kinatibuk-an, unsa ang buhaton niini? Ingon og kini usa ka tinuod nga problema ... Adunay usa ka komunidad, mga ginoo, diin alang sa bisan unsang pangutana hatagan ka ug 10 ka komento sa Github. Apan dili kini eksakto.

Ikasubo, niining puntoha sa panahon, ang mga eksperto nagsugod pa lamang sa pagtungha. Gamay ra kaayo sila hangtod karon. Ug ang komunidad mismo nagbitay sa una nga lebel.

Asa paingon kining tanan ug unsay buhaton

Mahimo nimong ihulog ang tanan ug mobalik sa C #, sa kalibutan sa nagsakay. Apan dili. Ngano nga maghago ka pa sa pagbuhat niini kung dili nimo makit-an ang solusyon. Sa ubos akong gipresentar ang akong suhetibong mga konklusyon. Mahimo kang makiglalis kanako sa mga komento, kini mahimong makapaikag.

Sa personal, nagpusta ako sa pipila ka mga butang:

  1. Ang pag-uswag sa kini nga lugar paspas kaayo. Ania ang usa ka iskedyul sa mga hangyo alang sa DevOps.

    Infrastructure isip code: unang kaila

    Ang hilisgutan mahimong hype, apan ang kamatuoran nga ang kalibutan nag-uswag naghatag usa ka paglaum.

    Kung adunay usa ka butang nga dali nga motubo, nan ang mga maalamon nga mga tawo siguradong motungha nga mosulti kanimo kung unsa ang buhaton ug kung unsa ang dili buhaton. Ang pag-usbaw sa pagkapopular nagdala ngadto sa kamatuoran nga tingali adunay usa ka tawo nga adunay panahon nga sa katapusan makadugang sa usa ka plugin sa jsonnet para sa vscode, nga magtugot kanimo sa pagpadayon sa pagpatuman sa function, kay sa pagpangita niini pinaagi sa ctrl+shift+f. Samtang nag-uswag ang mga butang, daghang mga materyales ang makita. Ang pagpagawas sa usa ka libro gikan sa Google bahin sa SRE usa ka maayo nga pananglitan niini.

  2. Adunay mga naugmad nga mga teknik ug praktis sa naandan nga pag-uswag nga malampuson natong magamit dinhi. Oo, adunay mga nuances nga adunay pagsulay ug usa ka heterogenous nga palibot, dili igo nga himan, apan daghang mga praktis ang natipon nga mahimong mapuslanon ug makatabang.

    Usa ka gamay nga pananglitan: kolaborasyon pinaagi sa pagpares sa programming. Makatabang kaayo ang pagtino niini. Kung adunay ka silingan sa duol nga naningkamot usab nga masabtan ang usa ka butang, magkauban mas masabtan nimo.

    Ang pagsabut kung giunsa gihimo ang refactoring makatabang sa pagbuhat niini bisan sa ingon nga kahimtang. Kana mao, dili nimo mabag-o ang tanan sa usa ka higayon, apan usba ang pagngalan, dayon usba ang lokasyon, unya mahimo nimong i-highlight ang pipila ka bahin, oh, apan wala’y igo nga mga komento dinhi.

konklusyon

Bisan pa sa kamatuoran nga ang akong pangatarungan ingon og pessimistic, ako nagtan-aw sa umaabot uban ang paglaum ug sinsero nga naglaum nga ang tanan mahimo alang kanamo (ug kanimo).

Ang ikaduhang bahin sa artikulo giandam sunod. Niini, hisgutan nako kung giunsa namo pagsulay ang paggamit sa mga agile development practices aron mapauswag ang among proseso sa pagkat-on ug magtrabaho uban sa imprastraktura.

Source: www.habr.com

Idugang sa usa ka comment