Isadeiledd fel cod: adnabyddiaeth gyntaf

Mae ein cwmni yn y broses o ymuno â thîm ARhPh. Deuthum i mewn i'r stori gyfan hon o'r ochr ddatblygu. Yn y broses, fe wnes i feddwl am syniadau a mewnwelediadau yr wyf am eu rhannu â datblygwyr eraill. Yn yr erthygl fyfyrio hon rwy'n siarad am yr hyn sy'n digwydd, sut mae'n digwydd, a sut y gall pawb barhau i fyw ag ef.

Isadeiledd fel cod: adnabyddiaeth gyntaf

Parhad o gyfres o erthyglau a ysgrifennwyd yn seiliedig ar areithiau yn ein digwyddiad mewnol DevForum:

1. Cath Schrödinger heb flwch: y broblem o gonsensws mewn systemau dosbarthedig.
2. Isadeiledd fel cod. (Rwyt ti yma)
3. Cynhyrchu cytundebau Teipysgrif gan ddefnyddio modelau C#. (Ar y gweill...)
4. Cyflwyniad i algorithm consensws Raft. (Ar y gweill...)
...

Fe benderfynon ni greu tîm ARhPh, gan roi’r syniadau ar waith google sre. Fe wnaethon nhw recriwtio rhaglenwyr o blith eu datblygwyr eu hunain a'u hanfon i hyfforddi am sawl mis.

Roedd gan y tîm y tasgau hyfforddi canlynol:

  • Disgrifiwch ein seilwaith, sydd yn bennaf yn Microsoft Azure ar ffurf cod (Terraform a phopeth o gwmpas).
  • Dysgwch ddatblygwyr sut i weithio gyda seilwaith.
  • Paratoi datblygwyr ar gyfer dyletswydd.

Rydym yn cyflwyno'r cysyniad o Isadeiledd fel cod

Ym model arferol y byd (gweinyddiaeth glasurol), mae gwybodaeth am seilwaith wedi'i lleoli mewn dau le:

  1. Neu ar ffurf gwybodaeth yn y penaethiaid arbenigwyr.Isadeiledd fel cod: adnabyddiaeth gyntaf
  2. Neu mae'r wybodaeth hon ar rai teipiaduron, rhai ohonynt yn hysbys i arbenigwyr. Ond nid yw'n ffaith y bydd rhywun o'r tu allan (rhag ofn i'n tîm cyfan farw'n sydyn) yn gallu darganfod beth sy'n gweithio a sut mae'n gweithio. Gall fod llawer o wybodaeth ar beiriant: ategolion, cronjobs, dychryn (gweler. gosod disg) disg a dim ond rhestr ddiddiwedd o'r hyn all ddigwydd. Mae'n anodd deall beth sy'n digwydd mewn gwirionedd.Isadeiledd fel cod: adnabyddiaeth gyntaf

Yn y ddau achos, rydym yn cael ein hunain yn gaeth i ddod yn ddibynnol:

  • neu gan berson sy'n farwol, yn agored i salwch, yn syrthio mewn cariad, hwyliau ansad ac yn syml diswyddiadau banal;
  • neu o beiriant sy'n gweithio'n gorfforol, sydd hefyd yn cwympo, yn cael ei ddwyn, ac yn cyflwyno syndod ac anhwylustod.

Afraid dweud y dylai popeth, yn ddelfrydol, gael ei drosi i god sy'n ddarllenadwy, yn gynaliadwy ac wedi'i ysgrifennu'n dda gan ddyn.

Felly, mae seilwaith fel cod (Incfastructure as Code - IaC) yn ddisgrifiad o'r holl seilwaith presennol ar ffurf cod, yn ogystal ag offer cysylltiedig ar gyfer gweithio gydag ef a gweithredu seilwaith go iawn ohono.

Pam trosi popeth yn god?Nid peiriannau yw pobl. Ni allant gofio popeth. Mae ymateb person a pheiriant yn wahanol. Gall unrhyw beth awtomataidd fod yn gyflymach nag unrhyw beth a wneir gan ddyn. Y peth pwysicaf yw un ffynhonnell o wirionedd.

O ble mae peirianwyr ARhPh newydd yn dod?Felly, fe wnaethom benderfynu llogi peirianwyr ARhPh newydd, ond o ble i'w cael? Archebwch gydag atebion cywir (Llyfr SRE Google) yn dweud wrthym: gan y datblygwyr. Wedi'r cyfan, maen nhw'n gweithio gyda'r cod, ac rydych chi'n cyflawni'r cyflwr delfrydol.

Buom yn chwilio llawer am amser hir iddynt ar y farchnad bersonél y tu allan i'n cwmni. Ond mae'n rhaid i ni gyfaddef na ddaethom o hyd i unrhyw un a oedd yn gweddu i'n ceisiadau. Roedd yn rhaid i mi chwilio ymhlith fy mhobl fy hun.

Problemau Isadeiledd fel cod

Nawr, gadewch i ni edrych ar enghreifftiau o sut y gellir gosod seilwaith yn god caled. Mae'r cod wedi'i ysgrifennu'n dda, o ansawdd uchel, gyda sylwadau a mewnoliadau.

Cod enghreifftiol o Terraforma.

Isadeiledd fel cod: adnabyddiaeth gyntaf

Cod enghreifftiol gan Ansible.

Isadeiledd fel cod: adnabyddiaeth gyntaf

Foneddigion, pe na bai ond mor syml! Rydyn ni yn y byd go iawn, ac mae bob amser yn barod i'ch synnu, gan gyflwyno syrpreisys a phroblemau i chi. Methu gwneud hebddyn nhw yma chwaith.

1. Y broblem gyntaf yw bod IaC yn rhyw fath o dsl yn y rhan fwyaf o achosion.

Ac mae DSL, yn ei dro, yn ddisgrifiad o'r strwythur. Yn fwy manwl gywir, yr hyn y dylech ei gael: Json, Yaml, addasiadau gan rai cwmnïau mawr a luniodd eu dsl eu hunain (defnyddir HCL mewn terraform).

Y drafferth yw ei bod yn bosibl na fydd yn cynnwys pethau cyfarwydd fel:

  • newidynnau;
  • amodau;
  • yn rhywle nid oes unrhyw sylwadau, er enghraifft, yn Json, yn ddiofyn nid ydynt yn cael eu darparu;
  • swyddogaethau;
  • a dydw i ddim hyd yn oed yn siarad am bethau lefel uchel fel dosbarthiadau, etifeddiaeth a hynny i gyd.

2. Yr ail broblem gyda chod o'r fath yw ei fod yn amgylchedd heterogenaidd amlaf. Fel arfer byddwch yn eistedd ac yn gweithio gyda C#, h.y. gydag un iaith, un pentwr, un ecosystem. Ac yma mae gennych amrywiaeth enfawr o dechnolegau.

Mae'n sefyllfa real iawn pan fydd bash gyda python yn lansio rhyw broses y mae Json wedi'i fewnosod ynddi. Rydych chi'n ei ddadansoddi, yna mae generadur arall yn cynhyrchu 30 ffeil arall. Ar gyfer hyn oll, derbynnir newidynnau mewnbwn gan Azure Key Vault, sy'n cael eu tynnu at ei gilydd gan ategyn ar gyfer drone.io wedi'i ysgrifennu yn Go, ac mae'r newidynnau hyn yn mynd trwy yaml, a gynhyrchwyd o ganlyniad i genhedlaeth o'r injan templed jsonnet. Mae'n eithaf anodd cael cod wedi'i ddisgrifio'n fanwl gywir pan fydd gennych amgylchedd mor amrywiol.

Daw datblygiad traddodiadol o fewn fframwaith un dasg gydag un iaith. Yma rydym yn gweithio gyda nifer fawr o ieithoedd.

3. Y drydedd broblem yw tiwnio. Rydym wedi arfer ag oeri golygyddion (Ms Visual Studio, Jetbrains Rider) sy'n gwneud popeth i ni. A hyd yn oed os ydym yn dwp, byddant yn dweud ein bod yn anghywir. Mae'n ymddangos yn normal ac yn naturiol.

Ond rhywle gerllaw mae VSCode, lle mae rhai ategion sydd wedi'u gosod, eu cefnogi neu heb eu cefnogi rywsut. Daeth fersiynau newydd allan ac ni chawsant eu cefnogi. Mae newid banal i weithredu swyddogaeth (hyd yn oed os yw'n bodoli) yn dod yn broblem gymhleth ac nad yw'n ddibwys. Mae ailenwi newidyn syml yn ailchwarae mewn prosiect o ddwsin o ffeiliau. Byddwch chi'n lwcus os bydd yn gosod yr hyn sydd ei angen arnoch chi. Wrth gwrs, mae yna backlighting yma ac acw, mae auto-gwblhau, yn rhywle mae fformatio (er nad oedd yn gweithio i mi yn terraform ar Windows).

Ar adeg ysgrifennu'r ysgrifen hon ategyn vscode-terraform heb eu rhyddhau eto i gefnogi fersiwn 0.12, er ei fod wedi'i ryddhau am 3 mis.

Mae'n bryd anghofio am...

  1. Dadfygio.
  2. Offeryn ailffactorio.
  3. Cwblhau ceir.
  4. Canfod gwallau wrth lunio.

Mae'n ddoniol, ond mae hyn hefyd yn cynyddu amser datblygu ac yn cynyddu nifer y gwallau sy'n anochel yn digwydd.

Y peth gwaethaf yw ein bod yn cael ein gorfodi i feddwl nid am sut i ddylunio, trefnu ffeiliau yn ffolderi, dadelfennu, gwneud y cod yn gynaliadwy, yn ddarllenadwy, ac yn y blaen, ond am sut y gallaf ysgrifennu'r gorchymyn hwn yn gywir, oherwydd fe wnes i ei ysgrifennu'n anghywir rywsut. .

Fel dechreuwr, rydych chi'n ceisio dysgu terraforms, ac nid yw'r DRhA yn eich helpu o gwbl. Pan fydd dogfennaeth, ewch i mewn ac edrych. Ond pe baech chi'n mynd i mewn i iaith raglennu newydd, byddai'r DRhA yn dweud wrthych fod yna fath o'r fath, ond nid oes y fath beth. O leiaf ar lefel int neu llinyn. Mae hyn yn aml yn ddefnyddiol.

Beth am y profion?

Rydych chi'n gofyn: “Beth am y profion, rhaglenwyr bonheddig?” Mae dynion difrifol yn profi popeth ar gynhyrchu, ac mae'n anodd. Dyma enghraifft o brawf uned ar gyfer modiwl terraform o'r wefan microsoft.

Isadeiledd fel cod: adnabyddiaeth gyntaf

Mae ganddynt ddogfennaeth dda. Rwyf bob amser wedi hoffi Microsoft am ei agwedd at ddogfennaeth a hyfforddiant. Ond nid oes angen i chi fod yn Ewythr Bob i ddeall nad yw hwn yn god perffaith. Sylwch ar y dilysiad i'r dde.

Y broblem gyda phrawf uned yw y gallwch chi a minnau wirio cywirdeb allbwn Json. Fe wnes i daflu 5 paramedr i mewn a chefais lliain traed Json gyda 2000 o linellau. Gallaf ddadansoddi beth sy'n digwydd yma, dilysu canlyniad prawf ...

Mae'n anodd dosrannu Json yn Go. Ac mae angen i chi ysgrifennu yn Go, oherwydd mae terraform yn Go yn arfer da ar gyfer profi yn yr iaith rydych chi'n ysgrifennu ynddi. Mae trefniadaeth y cod ei hun yn wan iawn. Ar yr un pryd, dyma'r llyfrgell orau ar gyfer profi.

Mae Microsoft ei hun yn ysgrifennu ei fodiwlau, gan eu profi fel hyn. Wrth gwrs mae'n Ffynhonnell Agored. Gall popeth rydw i'n siarad amdano chi ddod i'w drwsio. Gallaf eistedd i lawr a thrwsio popeth mewn wythnos, ategion cod VS ffynhonnell agored, terraforms, gwneud ategyn i'r beiciwr. Efallai ysgrifennu cwpl o ddadansoddwyr, ychwanegu linters, cyfrannu llyfrgell ar gyfer profi. Gallaf wneud popeth. Ond nid dyna beth ddylwn i fod yn ei wneud.

Arferion gorau Seilwaith fel cod

Gadewch i ni symud ymlaen. Os nad oes unrhyw brofion yn IaC, mae'r DRhA a'r tiwnio yn ddrwg, yna dylai fod arferion gorau o leiaf. Es i at Google Analytics a chymharu dau ymholiad chwilio: arferion gorau Terraform ac arferion gorau c#.

Isadeiledd fel cod: adnabyddiaeth gyntaf

Beth ydym ni'n ei weld? Nid yw ystadegau didostur o'n plaid. Mae maint y deunydd yr un peth. Yn natblygiad C#, yn syml, rydym yn orlawn o ddeunyddiau, mae gennym arferion gorau gwych, mae yna lyfrau wedi'u hysgrifennu gan arbenigwyr, a hefyd llyfrau wedi'u hysgrifennu ar lyfrau gan arbenigwyr eraill sy'n beirniadu'r llyfrau hynny. Môr o ddogfennaeth swyddogol, erthyglau, cyrsiau hyfforddi, a bellach hefyd datblygu ffynhonnell agored.

O ran y cais IaC: yma rydych chi'n ceisio casglu gwybodaeth fesul tipyn o adroddiadau llwyth uchel neu HashiConf, o ddogfennaeth swyddogol a nifer o faterion ar Github. Sut i ddosbarthu'r modiwlau hyn yn gyffredinol, beth i'w wneud â nhw? Mae'n ymddangos bod hon yn broblem wirioneddol... Mae yna gymuned, foneddigion, lle ar gyfer unrhyw gwestiwn byddwch yn cael 10 sylw ar Github. Ond nid yw'n union.

Yn anffodus, ar hyn o bryd, mae arbenigwyr yn dechrau dod i'r amlwg. Nid oes digon ohonynt hyd yn hyn. Ac mae'r gymuned ei hun yn hongian allan ar y lefel elfennol.

Ble mae hyn i gyd yn mynd a beth i'w wneud

Gallwch chi ollwng popeth a mynd yn ôl i C#, i fyd y beiciwr. Ond na. Pam fyddech chi hyd yn oed yn trafferthu gwneud hyn os na allwch ddod o hyd i ateb. Isod cyflwynaf fy nghasgliadau goddrychol. Gallwch ddadlau â mi yn y sylwadau, bydd yn ddiddorol.

Yn bersonol, dwi'n betio ar ychydig o bethau:

  1. Mae datblygiad yn y maes hwn yn digwydd yn gyflym iawn. Dyma restr o geisiadau am DevOps.

    Isadeiledd fel cod: adnabyddiaeth gyntaf

    Efallai mai hype yw'r pwnc, ond mae'r union ffaith bod y maes yn tyfu yn rhoi rhywfaint o obaith.

    Os bydd rhywbeth yn tyfu mor gyflym, yna bydd pobl glyfar yn bendant yn ymddangos a fydd yn dweud wrthych beth i'w wneud a beth i beidio â'i wneud. Mae'r cynnydd mewn poblogrwydd yn arwain at y ffaith efallai y bydd gan rywun amser i ychwanegu ategyn i jsonnet ar gyfer vscode o'r diwedd, a fydd yn caniatáu ichi symud ymlaen i weithredu'r swyddogaeth, yn hytrach na chwilio amdano trwy ctrl+shift+f. Wrth i bethau esblygu, mae mwy o ddeunyddiau'n ymddangos. Mae rhyddhau llyfr gan Google am ARhPh yn enghraifft wych o hyn.

  2. Mae technegau ac arferion datblygedig mewn datblygiad confensiynol y gallwn eu cymhwyso'n llwyddiannus yma. Oes, mae yna arlliwiau gyda phrofion ac amgylchedd heterogenaidd, offer annigonol, ond mae nifer enfawr o arferion wedi'u cronni a all fod yn ddefnyddiol ac yn ddefnyddiol.

    Enghraifft ddibwys: cydweithio trwy raglennu pâr. Mae'n helpu llawer i ddarganfod y peth. Pan fydd gennych gymydog gerllaw sydd hefyd yn ceisio deall rhywbeth, gyda'ch gilydd byddwch yn deall yn well.

    Mae deall sut mae ailffactorio yn cael ei wneud yn helpu i'w gyflawni hyd yn oed mewn sefyllfa o'r fath. Hynny yw, ni allwch newid popeth ar unwaith, ond newid yr enwi, yna newid y lleoliad, yna gallwch chi dynnu sylw at ryw ran, o, ond nid oes digon o sylwadau yma.

Casgliad

Er gwaethaf y ffaith y gall fy rhesymu ymddangos yn besimistaidd, rwy'n edrych i'r dyfodol gyda gobaith ac yn mawr obeithio y bydd popeth yn gweithio allan i ni (a chi).

Mae ail ran yr erthygl yn cael ei pharatoi nesaf. Ynddo, byddaf yn siarad am sut y gwnaethom geisio defnyddio arferion datblygu ystwyth i wella ein proses ddysgu a gweithio gyda seilwaith.

Ffynhonnell: hab.com

Ychwanegu sylw