Binesaziya wekî kod: yekem nas

Pargîdaniya me di pêvajoyê de ye ku tîmek SRE-ê bişopîne. Ez ji aliyê pêşveçûnê ve ketim vê çîrokê. Di vê pêvajoyê de, min fikir û têgihiştinên ku ez dixwazim bi pêşdebirên din re parve bikim hatim. Di vê gotara refleksê de ez qala çi diqewime, çawa diqewime, û çawa her kes dikare bi wê re bijî.

Binesaziya wekî kod: yekem nas

Berdewamiya rêze gotarên ku li ser bingeha axaftinên di çalakiya me ya navxweyî de hatine nivîsandin DevForum:

1. Pisîka Schrödinger bê qut: Pirsgirêka lihevkirinê di pergalên belavbûyî de.
2. Binesaziya wek kod. (Tu li vir î)
3. Nifşa peymanên Typescript bi karanîna modelên C #. (Ez teslîm nabim...)
4. Destpêka algorîtmaya lihevhatina Raft. (Ez teslîm nabim...)
...

Me biryar da ku tîmek SRE ava bikin, ku ramanan bicîh bînin google sre. Wan bernamesaz ji nav pêşdebirên xwe berhev kirin û ew şandin ku çend mehan perwerde bikin.

Tîmê peywirên perwerdehiyê yên jêrîn hebûn:

  • Binesaziya me, ku bi piranî di Microsoft Azure de di forma kodê de ye (Terraform û her tiştê li derdorê) vebêjin.
  • Pêşdebiran fêr bikin ka meriv çawa bi binesaziyê re dixebite.
  • Pêşdebiran ji bo peywirê amade bikin.

Em têgeha Binesaziyê wekî kod destnîşan dikin

Di modela asayî ya cîhanê de (rêveberiya klasîk), zanîna li ser binesaziyê li du cihan e:

  1. An jî bi şiklê zanînê di serê pisporan de.Binesaziya wekî kod: yekem nas
  2. An jî ev agahî li ser hin makîneyên nivîsandinê hene, ku hin ji wan ji hêla pisporan ve têne zanîn. Lê ne rastiyek e ku xerîbek (di rewşek ku tevahiya tîmê me ji nişkê ve bimire) dê bikaribe fêhm bike ka çi dike û çawa dixebite. Li ser makîneyek dikare gelek agahdarî hebin: aksesûar, cronjobs, tirsandin (binêre. sazkirina dîskê) dîsk û tenê navnîşek bêdawî ya ku dikare bibe. Zehmet e ku meriv fêm bike ka bi rastî çi diqewime.Binesaziya wekî kod: yekem nas

Di her du rewşan de, em xwe di nav girêdayiyê de dihêlin:

  • an jî ji kesê ku mirin, nexweşî, evîndarbûn, guheztina mood û bi tenê ji kar avêtina banal;
  • an jî ji makîneyeke kar fizîkî, ku ew jî dikeve, dizîn, û pêşkêşî surprîz û nerehetiya.

Bêyî gotinê ye ku bi îdeal divê her tişt bi kodek ku ji hêla mirovan ve were xwendin, parastin, baş-nivîskî ve were wergerandin.

Bi vî rengî, binesaziya wekî kodê (Incfastructure as Code - IaC) ravekirina tevahiya binesaziya heyî di forma kodê de, û her weha amûrên têkildar ên ji bo xebitandina wê û pêkanîna binesaziya rastîn ji wê ye.

Çima her tiştî di kodê de wergerandin?Mirov ne makîne ne. Ew nikarin her tiştî bînin bîra xwe. Reaksiyona mirov û makîneyekê cuda ye. Tiştek otomatîkî ji her tiştê ku ji hêla mirovan ve hatî kirin potansiyel zûtir e. Ya herî girîng çavkaniyek yekane ya rastiyê ye.

Endezyarên nû yên SRE ji ku têne?Ji ber vê yekê, me biryar da ku em endezyarên nû yên SRE bi kar bînin, lê em wan ji ku derê bistînin? Pirtûka bi bersivên rast (Pirtûka Google SRE) ji me re dibêje: ji pêşdebiran. Beriya her tiştî, ew bi kodê re dixebitin, û hûn bigihîjin dewleta îdeal.

Em ji bo demek dirêj li ser bazara personelê li derveyî pargîdaniya xwe li wan geriyam. Lê divê em qebûl bikin ku me kesek ku li gorî daxwazên me be nedît. Divê ez di nav gelê xwe de bigerim.

Pirsgirêkên Binesaziyê wekî kod

Naha em li mînakan binihêrin ka binesaziya çawa dikare di kodê de were kod kirin. Kod baş hatî nivîsandin, bi kalîteya bilind, bi şîrove û veqetandî ye.

Koda nimûne ji Terraforma.

Binesaziya wekî kod: yekem nas

Nimûne koda ji Ansible.

Binesaziya wekî kod: yekem nas

Birêz, heke tenê ew qas hêsan bûya! Em di cîhana rastîn de ne, û ew her gav amade ye ku we surprîz bike, surprîz û pirsgirêkan pêşkêşî we bike. Li vir jî bêyî wan nabe.

1. Pirsgirêka yekem ev e ku di pir rewşan de IaC celebek dsl ye.

Û DSL, di encamê de, ravekirina avahiyê ye. Zêdetir, ya ku divê hûn hebin: Json, Yaml, guheztinên hin pargîdaniyên mezin ên ku bi dsl-ya xwe derketine (HCL di terraformê de tê bikar anîn).

Pirsgirêk ev e ku dibe ku ew bi hêsanî tiştên naskirî yên wekî:

  • variables;
  • şert û mercên;
  • li cîhek şîrove tune, mînakî, di Json de, ji hêla xwerû ve ew nayên peyda kirin;
  • fonksiyonên;
  • û ez behsa tiştên bilind ên wekî çîn, mîras û her tiştî jî nakim.

2. Pirsgirêka duyemîn a kodek weha ev e ku pir caran ew jîngehek heterojen e. Bi gelemperî hûn rûniştin û bi C# re dixebitin, ango. bi yek ziman, yek stûn, yek ekosîstem. Û li vir hûn cûrbecûr teknolojiyên mezin hene.

Ew rewşek pir rast e dema ku bash bi python re hin pêvajoyek ku Json tê de tête danîn dest pê dike. Hûn wê analîz bikin, paşê hin jeneratorek din 30 pelên din çêdike. Ji bo van hemûyan, guhêrbarên têketinê ji Azure Key Vault têne wergirtin, ku ji hêla pêvekek drone.io-ya ku di Go-yê de hatî nivîsandin ve têne kişandin, û ev guhêrbar di yaml-ê de, ya ku di encama hilberîna motora şablonê jsonnet de hatî çêkirin, derbas dibin. Dema ku we hawîrdorek wusa cihêreng hebe meriv kodek bi hişkî xweş diyarkirî pir dijwar e.

Pêşveçûna kevneşopî di çarçoveya yek peywirê de bi yek zimanî pêk tê. Li vir em bi hejmareke mezin a zimanan kar dikin.

3. Pirsgirêka sêyem tuning e. Em ji edîtorên xweş (Ms Visual Studio, Jetbrains Rider) ên ku her tiştî ji bo me dikin têne bikar anîn. Û eger em bêaqil bin jî, ew ê bibêjin ku em xelet in. Ew normal û xwezayî xuya dike.

Lê li cîhek nêzîk VSCode heye, ku tê de hin pêvekên ku bi rengek têne saz kirin, piştgirî kirin an na piştgirî ne hene. Guhertoyên nû derketin û nehatin piştgirî kirin. Veguheztinek banal a pêkanîna fonksiyonek (tevî ku ew hebe) dibe pirsgirêkek tevlihev û ne-pîvan. Guherînek hêsan a guhêrbar di projeyek deh pelan de ji nû ve lîstin e. Hûn ê bi şens bin ger ew tiştê ku hûn hewce ne bi cîh bike. Bê guman, li vir û wir ronahiya paşverû heye, temamkirina otomatîkî heye, li cîhek formatkirin heye (her çend ew ji min re di terraformê de li ser Windows-ê nexebitî).

Di dema vê nivîsandinê de pêveka vscode-terraform hîna nehatine berdan ku guhertoya 0.12 piştgirî bike, her çend 3 meh in hatî berdan.

Dem dema jibîrkirina...

  1. Debugging.
  2. Amûra Refactoring.
  3. Xwe temamkirina.
  4. Tespîtkirina xeletiyan di dema berhevkirinê de.

Kêfxweş e, lê ev jî dema pêşkeftinê zêde dike û hejmara xeletiyên ku bê guman çêdibin jî zêde dike.

Tiştê herî xirab ev e ku em neçar in ku bifikirin ne li ser meriv çawa sêwiran, pelan di peldankan de birêkûpêk dike, hilweşîne, kodê biparêze, were xwendin û hwd, lê li ser ka ez çawa dikarim vê fermanê rast binivîsim, ji ber ku min bi rengek xelet nivîsand .

Wekî destpêkek, hûn hewl didin ku terraforman fêr bibin, û IDE qet alîkariya we nake. Dema ku belge hene, biçin hundur û binêrin. Lê heke hûn têkevin zimanek bernamenûsek nû, IDE dê ji we re bêje ku celebek wusa heye, lê tiştek wusa tune. Bi kêmanî di asta int an string de. Ev gelek caran kêrhatî ye.

Li ser testan çi ye?

Hûn dipirsin: "Çi li ser testan, birêz bernamenûs?" Xortên ciddî her tiştî li ser hilberînê ceribandin, û ew dijwar e. Li vir mînakek ceribandinek yekîneyek ji bo modulek terraform ji malperê ye microsoft.

Binesaziya wekî kod: yekem nas

Belgeyên wan ên baş hene. Min her gav ji Microsoft-ê ji bo nêzîkatiya xwe ya belgekirin û perwerdehiyê hez kir. Lê hûn ne hewce ne ku Apê Bob bin da ku fêm bikin ku ev ne kodek bêkêmasî ye. Bala xwe bidin pejirandina rastê.

Pirsgirêka ceribandinek yekîneyê ev e ku hûn û ez dikarin rastbûna derana Json kontrol bikin. Min avêt 5 parameteran û bi 2000 xetên lingê Json hat dayîn. Ez dikarim tiştê ku li vir diqewime analîz bikim, encama testê rast bikim…

Parvekirina Json di Go de dijwar e. Û hûn hewce ne ku li Go binivîsin, ji ber ku terraform in Go ji bo ceribandina zimanê ku hûn pê dinivîsin pratîkek baş e. Rêxistinbûna kodê bi xwe pir qels e. Di heman demê de, ev pirtûkxane ji bo ceribandinê çêtirîn e.

Microsoft bixwe modulên xwe dinivîse, wan bi vî rengî diceribîne. Bê guman ew çavkaniya vekirî ye. Her tiştê ku ez behs dikim hûn dikarin werin û rast bikin. Ez dikarim rûnim û di nav hefteyekê de her tiştî rast bikim, pêvekên koda VS-ya çavkaniya vekirî, terraforman, ji bo siwarê pêvekek çêkim. Dibe ku çend analîzatoran binivîsin, lînteran lê zêde bikin, ji bo ceribandinê pirtûkxaneyek beşdar bikin. Ez dikarim her tiştî bikim. Lê ya ku divê ez bikim ne ev e.

Pratîkên çêtirîn Binesaziya wekî kodê

Werin em herin. Ger di IaC-ê de ceribandin tunebin, IDE û verastkirin xirab in, wê hingê divê herî kêm pratîkên çêtirîn hebin. Ez tenê çûm Google Analytics û du pirsên lêgerînê dan ber hev: Pratîkên çêtirîn Terraform û pratîkên çêtirîn c#.

Binesaziya wekî kod: yekem nas

Em çi dibînin? Îstatîstîkên bêrehm ne li gorî me ne. Rêjeya materyalê wekhev e. Di pêşkeftina C# de, em tenê di materyalan de dişewitin, pratîkên me yên super-baş hene, pirtûkên ku ji hêla pisporan ve hatine nivîsandin hene, û her weha pirtûkên ku li ser pirtûkan ji hêla pisporên din ve hatine nivîsandin hene ku wan pirtûkan rexne dikin. Deryayek belgeyên fermî, gotar, qursên perwerdehiyê, û naha jî pêşveçûna çavkaniya vekirî.

Wekî ku ji bo daxwaza IaC: Li vir hûn hewl didin ku ji raporên bilind an HashiConf, ji belgeyên fermî û gelek pirsgirêkên li ser Github-ê hûr bi hûr agahdarî berhev bikin. Meriv çawa van modulan bi gelemperî belav dike, bi wan re çi bike? Wusa dixuye ku ev pirsgirêkek rastîn e... Civatek heye, birêzan, li wir ji bo her pirsê dê 10 şîrove li ser Github ji we re were dayîn. Lê ne tam e.

Mixabin, di vê demê de, pispor nû dest pê dikin. Heya niha ji wan pir kêm in. Û civak bi xwe jî di asta bingehîn de ye.

Ev hemû ber bi ku ve diçin û çi bikin

Hûn dikarin her tiştî bavêjin û vegerin C#, li cîhana siwarê. Lê na. Heger hûn nikaribin çareseriyekê bibînin hûn ê çima vê yekê bikin. Li jêr ez encamên xwe yên subjektîf pêşkêş dikim. Hûn dikarin di şîroveyan de bi min re nîqaş bikin, ew ê balkêş be.

Bi kesane, ez li ser çend tiştan behîs dikim:

  1. Pêşketin di vî warî de pir zû diqewime. Li vir bernameyek daxwazên ji bo DevOps heye.

    Binesaziya wekî kod: yekem nas

    Mijar dibe ku hîle be, lê rastiya ku qad mezin dibe hinekî hêviyê dide.

    Ger tiştek ew qas zû mezin bibe, wê hingê mirovên jîr dê bê guman xuya bibin ku dê ji we re bibêjin ka hûn çi bikin û çi nekin. Zêdebûna populerbûnê rê li ber vê yekê vedike ku dibe ku kesek dem hebe ku di dawiyê de pêvekek ji bo vscode li jsonnet zêde bike, ku dê bihêle hûn li şûna ku hûn bi ctrl+shift+f li wê bigerin, ber bi pêkanîna fonksiyonê ve biçin. Her ku tişt pêşve diçin, bêtir materyal xuya dibin. Derxistina pirtûkek ji Google-ê di derbarê SRE de mînakek hêja ya vê yekê ye.

  2. Di pêşkeftina kevneşopî de teknîk û pratîkên pêşkeftî hene ku em dikarin li vir bi serfirazî bicîh bînin. Erê, bi ceribandinê û hawîrdorek heterojen, amûrek têrker de nuans hene, lê hejmareke mezin ji pratîkan hatine berhev kirin ku dikarin bikêr û arîkar bin.

    Mînakek piçûk: hevkarî bi bernamekirina cot. Ew gelek alîkarî dike ku ew fêm bikin. Gava ku cîranek we li nêzîkê hebe ku ew jî hewl dide ku tiştek fam bike, hûn ê bi hev re çêtir fêm bikin.

    Fêmkirina ka refaktorkirin çawa tê kirin dibe alîkar ku di rewşek weha de jî pêk were. Ango, hûn nekarin her tiştî bi yekcarî biguhezînin, lê navdêrê biguhezînin, paşê cîh biguhezînin, wê hingê hûn dikarin hin beşan ronî bikin, oh, lê li vir têr şîrove tune.

encamê

Digel vê yekê ku dibe ku sedema min reşbîn xuya bike, ez bi hêvî li pêşerojê dinêrim û ji dil hêvî dikim ku her tişt ji bo me (û we) çêbibe.

Beşa duyem a gotarê li pêş tê amadekirin. Di wê de, ez ê bipeyivim ka me çawa hewl da ku em pratîkên pêşkeftinê yên hişk bikar bînin da ku pêvajoya fêrbûna xwe baştir bikin û bi binesaziyê re bixebitin.

Source: www.habr.com

Add a comment