Air atharrachadh bho Terraform gu CloudFormation - agus aithreachas air

Tha a bhith a’ riochdachadh bun-structair mar chòd ann an cruth teacsa a ghabhas ath-aithris na chleachdadh sìmplidh as fheàrr airson siostaman nach eil feumach air fìdhlearachd le luchagan. Tha ainm aig a’ chleachdadh seo - Bun-structar mar Chòd, agus gu ruige seo tha dà inneal mòr-chòrdte airson a bhuileachadh, gu sònraichte ann an AWS: Terraform и Cruthachadh Cloud.

Air atharrachadh bho Terraform gu CloudFormation - agus aithreachas air
A’ dèanamh coimeas eadar eòlas le Terraform agus CloudFormation

Mus tig thu gu Twitch (e Amazon Jr.) Dh'obraich mi ann an aon thòiseachadh agus chleachd e Terraform airson trì bliadhna. Aig an àite ùr, chleachd mi Terraform cuideachd le mo chomas, agus an uairsin bhrùth a ’chompanaidh an gluasad gu a h-uile dad a la Amazon, a’ toirt a-steach CloudFormation. Tha mi air na cleachdaidhean as fheàrr a leasachadh gu dìcheallach airson an dà chuid, agus tha mi air an dà inneal a chleachdadh ann an sruthan-obrach a tha gu math toinnte, air feadh na buidhne. Nas fhaide air adhart, às deidh dhomh a bhith a’ tomhas buaidh imrich bho Terraform gu CloudFormation, dh’ fhàs mi cinnteach gur dòcha gur e Terraform an roghainn as fheàrr don bhuidheann.

Terraform uamhasach

Bathar-bog beta

Chan eil Terraform eadhon air dreach 1.0 a leigeil ma sgaoil fhathast, agus tha sin na adhbhar math gun a bhith ga chleachdadh. Tha e air atharrachadh gu mòr bhon a dh’ fheuch mi e mi-fhìn an toiseach, ach air ais an uairsin terraform apply gu tric a’ briseadh sìos às deidh grunn ùrachaidhean no dìreach às deidh bliadhna no dhà de chleachdadh. Chanainn gu bheil “a h-uile dad eadar-dhealaichte a-nis,” ach... sin a tha a h-uile duine ag ràdh, chan eil? Tha atharrachaidhean ann nach eil co-chosmhail ri dreachan roimhe, ged a tha iad iomchaidh, agus tha e eadhon a’ faireachdainn gur e co-chòrdadh agus tarraingean stòran ghoireasan a-nis na tha a dhìth oirnn. Tha e coltach gu bheil an ionnstramaid air fàs gu math nas fheàrr, ach... :-0

Air an làimh eile, tha AWS air obair mhath a dhèanamh a’ cumail suas co-chòrdalachd air ais. Is dòcha gu bheil seo air sgàth gu bheil na seirbheisean aca gu tric air an deuchainn gu mionaideach taobh a-staigh na buidhne agus dìreach an uairsin, air an ath-ainmeachadh, air am foillseachadh. Mar sin is e fo-aithris a th’ ann an “dh’ fheuch iad gu cruaidh. Tha e uamhasach duilich a bhith a’ cumail co-chòrdalachd air ais le APIan airson siostam cho measgaichte agus cho iom-fhillte ri AWS. Bu chòir do dhuine sam bith a dh’ fheumadh APIan poblach a chumail a tha air an cleachdadh cho farsaing ‘s a tha iad tuigsinn cho duilich sa tha e sin a dhèanamh airson uimhir de bhliadhnaichean. Ach chan eil giùlan CloudFormation, nam chuimhne, air atharrachadh a-riamh thar nam bliadhnaichean.

Coinnich ris a' chas... is e peilear a th' ann

Cho fad ‘s as aithne dhomh, cuir às don ghoireas taobh a-muigh Chan eil e comasach stac CloudFormation bhon stac CF agad. Tha an aon rud fìor le Terraform. Leigidh e leat na goireasan a th’ ann mu thràth a thoirt a-steach don stac agad. Faodar a ràdh gu bheil an gnìomh iongantach, ach le cumhachd mòr thig uallach mòr. Cha leig thu leas ach goireas a chur ris a' chruaich, agus fhad 's a tha thu ag obair leis a' chruaich agad, chan urrainn dhut an goireas seo a sguabadh às no atharrachadh. Aon latha chaidh e air ais. Aon latha air Twitch, thug cuideigin a-steach gun fhiosta buidheann tèarainteachd AWS cuideigin eile a-steach don stac Terraform aca fhèin fhad ‘s nach robh iad suas ri mì-rùn sam bith. Chuir mi a-steach grunn òrdughan agus ... chaidh a’ bhuidheann tèarainteachd (còmhla ri trafaic a-steach) à sealladh.

Terraform Sàr-mhath

Ath-bheothachadh bho stàitean neo-choileanta

Aig amannan bidh CloudFormation a ’fàiligeadh gluasad gu tur bho aon stàit gu stàit eile. Aig an aon àm, feuchaidh e ri tilleadh chun an fhear roimhe. Tha e duilich nach eil seo an-còmhnaidh comasach. Faodaidh e a bhith uamhasach eagallach a bhith a’ deasbad na thachair nas fhaide air adhart - chan eil fios agad am bi CloudFormation toilichte gu bheil e air a sheacadh - eadhon dìreach airson a chàradh. Co-dhiù am bi e comasach tilleadh chun na stàite a bh ’ann roimhe, chan eil fios aige ciamar a cho-dhùineas e agus, gu bunaiteach, bidh e a’ crochadh airson uairean a ’feitheamh ri mìorbhail.

Tha Terraform, air an làimh eile, buailteach faighinn air ais bho eadar-ghluasadan air fàiligeadh mòran nas gràsmhoire agus a’ tabhann innealan deasbaid adhartach.

Atharraichean nas soilleire air staid sgrìobhainnean

“Ceart gu leòr, luchd-cothromachaidh, tha thu ag atharrachadh. Ach ciamar?"

- einnseanair iomagaineach, deiseil gus am putan “gabhail ris” a bhrùthadh.

Aig amannan feumaidh mi cuid de làimhseachadh a dhèanamh leis an neach-cothromachaidh luchdan anns a ’chruach CloudFormation, leithid cuir ri àireamh puirt no atharrachadh buidheann tèarainteachd. Tha taisbeanaidhean ClouFormation ag atharrachadh gu dona. Bidh mi, air prìneachan is snàthadan, a’ toirt sùil dhùbailte air an fhaidhle yaml deich tursan gus dèanamh cinnteach nach do chuir mi às do rud sam bith a tha riatanach agus nach do chuir mi dad neo-riatanach ris.

Tha Terraform tòrr nas soilleire a thaobh seo. Uaireannan tha e eadhon ro shoilleir (leugh: neònach). Gu fortanach, tha an dreach as ùire a 'toirt a-steach taisbeanadh atharrachaidhean nas fheàrr gus am faic thu a-nis dè dìreach a tha ag atharrachadh.

Sùbailteachd

Sgrìobh bathar-bog air ais.

Gus a chuir gu sgiobalta, is e am feart as cudromaiche de bhathar-bog fad-ùine an comas atharrachadh gu atharrachadh. Sgrìobh bathar-bog sam bith air ais. Mar as trice rinn mi mearachdan le bhith a’ gabhail seirbheis “sìmplidh”, agus an uairsin a’ tòiseachadh air a h-uile càil a chuir a-steach do aon chruach CloudFormation no Terraform. Agus gu dearbh, mìosan às deidh sin chaidh innse gun robh mi air a h-uile dad a thuigsinn ceàrr, agus gu dearbh cha robh an t-seirbheis sìmplidh! Agus a-nis feumaidh mi dòigh air choireigin cruach mhòr a bhriseadh gu pàirtean beaga. Nuair a bhios tu ag obair le CloudFormation, chan urrainnear seo a dhèanamh ach le bhith ag ath-chruthachadh a’ chruach a th’ ann mar-thà, agus cha bhith mi a’ dèanamh seo leis na stòran-dàta agam. Air an làimh eile, rinn Terraform e comasach an stac a sgaradh agus a bhriseadh sìos gu pàirtean nas lugha a bha furasta a thuigsinn.

Modalan ann an git

Tha e mòran nas fhasa còd Terraform a cho-roinn thairis air grunn chruachan na bhith a’ roinneadh còd CloudFormation. Le Terraform, faodaidh tu do chòd a chuir ann an stòr git agus faighinn thuige le bhith a’ cleachdadh smachd dreach semantach. Faodaidh duine sam bith aig a bheil cothrom air an stòras seo an còd co-roinnte ath-chleachdadh. Is e S3 an aon rud aig CloudFormation, ach chan eil na h-aon bhuannachdan aige, agus chan eil adhbhar ann carson a bu chòir dhuinn git a thrèigsinn airson S3 idir.

Dh’ fhàs a’ bhuidheann agus ràinig an comas air stacan cumanta a cho-roinn ìre èiginneach. Tha Terraform a’ dèanamh seo uile furasta agus nàdarra, ach bheir CloudFormation ort leum tro chearcaill mus urrainn dhut rudeigin mar seo obrachadh.

Gnìomhan mar chòd

“Nì sinn sgrìobhadh dheth agus ceart gu leòr.”

- innleadair 3 bliadhna mus deach am baidhsagal Terraform a chruthachadh.

Nuair a thig e gu leasachadh bathar-bog, chan e dìreach còd a th’ ann an Go no prògram Java.

Air atharrachadh bho Terraform gu CloudFormation - agus aithreachas air
Còd mar Chòd

Tha bun-structair ann cuideachd air a bheil e ag obair.

Air atharrachadh bho Terraform gu CloudFormation - agus aithreachas air
Bun-structar mar Chòd

Ach cò às a tha i? Ciamar sùil a chumail air? Càite a bheil do chòd a’ fuireach? A bheil feum aig luchd-leasachaidh air cead-inntrigidh?

Air atharrachadh bho Terraform gu CloudFormation - agus aithreachas air
Gnìomhan mar chòd

Chan eil a bhith nad leasaiche bathar-bog dìreach a’ ciallachadh còd a sgrìobhadh.

Chan e AWS an aon fhear: is dòcha gu bheil thu a’ cleachdadh solaraichean eile. SignalFx, PagerDuty no Github. Is dòcha gu bheil frithealaiche Jenkins a-staigh agad airson CI / CD no deas-bhòrd Grafana a-staigh airson sgrùdadh. Tha Infra as Code air a thaghadh airson diofar adhbharan, agus tha gach fear a cheart cho cudromach airson a h-uile càil co-cheangailte ri bathar-bog.

Nuair a bha mi ag obair aig Twitch, luathaich sinn seirbheisean taobh a-staigh siostaman measgaichte freumhaichte Amazon agus AWS. Chuir sinn a-mach agus thug sinn taic do dh’ iomadh meanbh-sheirbheisean, ag àrdachadh chosgaisean obrachaidh. Chaidh na còmhraidhean rudeigin mar seo:

  • Я: Damn, is e sin tòrr ghluasadan gus faighinn thairis air aon microservice. Feumaidh mi an sgudal seo a chleachdadh gus cunntas AWS a chruthachadh (chaidh sinn gu cunntasan 2 air adhart meanbh-sheirbheis), an uairsin am fear seo airson rabhaidhean a stèidheachadh, am fear seo airson stòr còd, agus am fear seo airson liosta post-d, agus an uairsin am fear seo ...
  • Stiùir: Sgriobaidh sinn e agus ceart gu leòr.
  • Я: Ceart gu leòr, ach atharraichidh an sgriobt fhèin. Bidh feum againn air dòigh gus dèanamh cinnteach gu bheil na gizmos Amazon sin uile ùraichte.
  • Stiùir: Tha e glè mhath. Agus sgrìobhaidh sinn sgriobt airson seo.
  • Я: Sgoinneil! Agus is dòcha gum feum an sgriobt fhathast crìochan a shuidheachadh. An gabh e riutha?
  • Stiùir: Leig leis a thoirt far an tèid e!
  • Я: Faodaidh am pròiseas atharrachadh agus thèid co-fhreagarrachd air ais a chall. Bidh feum air seòrsa de smachd dreach semantach.
  • Stiùir: Deagh bheachd!
  • Я: Faodar innealan atharrachadh le làimh, taobh a-staigh an eadar-aghaidh cleachdaiche. Feumaidh sinn dòigh air seo a sgrùdadh agus a chàradh.

…3 bliadhna air ais:

  • Stiùir: Agus fhuair sinn terraform.

Is e moraltachd na sgeòil: fiù 's ma tha thu ceann thairis air sàilean anns a h-uile dad Amazon, tha thu fhathast a’ cleachdadh rudeigin nach ann bho AWS, agus tha stàite aig na seirbheisean sin a chleachdas cànan rèiteachaidh gus an staid sin a chumail ann an sioncranachadh.

Cruth-tìre modalan CloudFormation lambda vs git

Is e lambda fuasgladh CloudFormation air cùis loidsig àbhaisteach. Le lambda faodaidh tu a cruthaich macros no goireas luchd-cleachdaidh. Tha an dòigh-obrach seo a’ toirt a-steach iom-fhillteachd a bharrachd nach eil an làthair ann an dreach semantach Terraform de mhodalan git. Dhòmhsa, b’ e an duilgheadas as cudromaiche a bhith a’ riaghladh ceadan airson na lambdas cleachdaiche sin uile (agus is iad sin dusanan de chunntasan AWS). B’ e duilgheadas cudromach eile an duilgheadas “dè a thàinig an toiseach, an cearc no an ugh?”: bha e co-cheangailte ri còd lambda. Is e bun-structar agus còd a th’ anns a’ ghnìomh seo fhèin, agus feumaidh e fhèin sgrùdadh agus ùrachadh. B 'e an t-ingne mu dheireadh sa chiste an duilgheadas ann a bhith ag ùrachadh atharrachaidhean còd lambda gu semantach; bha againn ri dèanamh cinnteach cuideachd nach atharraich na gnìomhan stac gun òrdugh dhìreach eadar ruith.

Tha cuimhne agam aon uair ‘s gu robh mi airson cleachdadh canary a chruthachadh airson àrainneachd Elastic Beanstalk le cothromachadh luchdan clasaigeach. Is e an rud as fhasa a dhèanamh dàrna cleachdadh a dhèanamh airson an EB ri taobh na h-àrainneachd cinneasachaidh, ga thoirt ceum nas fhaide air adhart: a’ cothlamadh a’ bhuidheann cleachdadh canary fèin-sgèile leis an cleachdadh LB a-steach don àrainneachd cinneasachaidh. Agus leis gu bheil Terraform a’ cleachdadh ASG beantalk mar cho-dhùnadh, bidh feum air 4 loidhnichean còd a bharrachd ann an Terraform. Nuair a dh ’fhaighnich mi an robh fuasgladh coimeasach ann an CloudFormation, chomharraich iad mi gu stòr git slàn le loidhne-phìoban cleachdadh agus a h-uile càil, uile air sgàth rudeigin a dh’ fhaodadh loidhnichean 4 truagh de chòd Terraform a dhèanamh.

Bidh e a 'lorg drift nas fheàrr

Dèan cinnteach gu bheil an fhìrinn a rèir dùil.

Dearbhadh drift na ghnìomhachd fìor chumhachdach mar fheart còd oir tha e a’ cuideachadh gus dèanamh cinnteach gu bheil fìrinn a rèir dùil. Tha e ri fhaighinn leis an dà chuid CloudFormation agus Terraform. Ach mar a dh’ fhàs an stac toraidh, thug a bhith a’ lorg gluasad ann an CloudFormation barrachd is barrachd lorg meallta.

Le Terraform tha dubhan cuairt-beatha fada nas adhartaiche agad airson lorg drifidh. Mar eisimpleir, cuir a-steach an àithne dearmad_atharraichean gu dìreach ann am mìneachadh gnìomh ECS ma tha thu airson dearmad a dhèanamh air atharrachaidhean air mìneachadh gnìomh sònraichte gun a bhith a’ seachnadh atharrachaidhean air an cleachdadh ECS agad gu lèir.

CDK agus àm ri teachd CloudFormation

Tha CloudFormation duilich a riaghladh aig ìrean mòra, tar-bhun-structair. Thathas ag aithneachadh mòran de na duilgheadasan sin agus tha feum aig an inneal air rudan mar aws-cdk, frèam airson bun-structar sgòthan a mhìneachadh ann an còd agus a ruith tro AWS CloudFormation. Bidh e inntinneach faicinn dè tha san àm ri teachd airson aws-cdk, ach bidh ùine chruaidh aige a’ farpais ri neartan eile Terraform; gus CloudFormation ùrachadh, bidh feum air atharrachaidhean cruinneil.

Gus nach dèan Terraform briseadh dùil

Is e seo “bun-structar mar chòd”, agus chan e “mar theacsa”.

Bha a’ chiad bheachd agam air Terraform caran dona. Tha mi a’ smaoineachadh nach do thuig mi an dòigh-obrach. Bidh cha mhòr a h-uile innleadair gu neo-eisimeileach ga fhaicinn mar chruth teacsa a dh’ fheumar a thionndadh gu bhith na bhun-structar a tha thu ag iarraidh. NA DÈANAMH SEO SEO.

Tha fìrinn leasachadh bathar-bog math cuideachd a’ buntainn ri Terraform.

Tha mi air mòran chleachdaidhean fhaicinn air an gabhail gus còd math a chruthachadh air an leigeil seachad ann an Terraform. Tha thu air a bhith ag ionnsachadh airson bliadhnaichean gus a bhith nad phrògramadair math. Na leig seachad an t-eòlas seo dìreach air sgàth gu bheil thu ag obair le Terraform. Tha fìrinnean deagh leasachadh bathar-bog a’ buntainn ri Terraform.

Ciamar nach urrainnear an còd a chlàradh?

Tha mi air stacan mòra Terraform fhaicinn gun sgrìobhainnean idir idir. Ciamar a sgrìobhas tu còd air duilleagan - gun sgrìobhainnean sam bith? Cuir a-steach sgrìobhainnean a tha a’ mìneachadh do chuid còd Terraform (cuideam air an fhacal "còd"), carson a tha an earrann seo cho cudromach, agus dè a nì thu.

Ciamar as urrainn dhuinn seirbheisean a bha uaireigin mar aon phrìomh () gnìomh mòr a chleachdadh?

Tha mi air stacan Terraform gu math toinnte fhaicinn air an taisbeanadh mar aon mhodal. Carson nach cleachd sinn bathar-bog san dòigh seo? Carson a tha sinn a 'roinn ghnìomhan mòra gu feadhainn nas lugha? Tha na h-aon fhreagairtean a’ buntainn ri Terraform. Ma tha am modal agad ro mhòr, feumaidh tu a bhriseadh sìos gu modalan nas lugha.

Nach eil do chompanaidh a’ cleachdadh leabharlannan?

Chunnaic mi mar a bha innleadairean, a’ snìomh pròiseact ùr a’ cleachdadh Terraform, gu gòrach a’ dèanamh leth-bhreacan mòra de phròiseactan eile a-steach don fheadhainn aca fhèin, agus an uairsin a’ dol còmhla riutha gus an do thòisich e ag obair. Am biodh tu ag obair mar seo le còd “sabaid” sa chompanaidh agad? Chan eil sinn dìreach a’ cleachdadh leabharlannan. Tha, chan fheum a h-uile dad a bhith na leabharlann, ach càite a bheil sinn às aonais leabharlannan co-roinnte ann am prionnsabal?!

Nach eil thu a’ cleachdadh PEP8 no gofmt?

Tha sgeama cruth àbhaisteach aig a’ mhòr-chuid de chànanan ris an deach gabhail. Ann am Python is e seo PEP8. Ann an Go - gofmt. Tha a chuid fhèin aig Terraform: terraform fmt. Tlachd a ghabhail air airson do shlàinte!

Am bi thu a’ cleachdadh React gun eòlas air JavaScript?

Faodaidh modalan terraform cuid den bhun-structar iom-fhillte a chruthaicheas tu a dhèanamh nas sìmplidhe, ach chan eil seo a 'ciallachadh nach urrainn dhut a bhith ag obair leis idir. A bheil thu airson Terraform a chleachdadh gu ceart gun a bhith a’ tuigsinn ghoireasan? Tha thu do-chreidsinneach: thèid ùine seachad, agus cha dèan thu maighistir gu bràth air Terraform.

A bheil thu a’ còdadh le singletons no stealladh eisimeileachd?

Tha in-stealladh eisimeileachd na chleachdadh aithnichte airson leasachadh bathar-bog agus b’ fheàrr leis seach singletons. Ciamar a tha seo feumail ann an Terraform? Tha mi air modalan Terraform fhaicinn a tha an urra ri staid iomallach. An àite a bhith a 'sgrìobhadh mhodalan a tha a' faighinn air ais stàite iomallach, sgrìobh modal a bheir crìochan. Agus an uairsin cuir na crìochan sin chun mhodal.

Am bi na leabharlannan agad a’ dèanamh deich rudan gu math no aon rud math?

Is e na leabharlannan as fheàrr an fheadhainn a tha ag amas air aon ghnìomh a nì iad glè mhath. An àite a bhith a 'sgrìobhadh mhodalan Terraform mòra a bhios a' feuchainn ri a h-uile càil a dhèanamh aig an aon àm, tog pàirtean dhiubh a nì aon rud gu math. Agus an uairsin cuir còmhla iad mar a dh 'fheumar.

Ciamar a nì thu atharrachaidhean air leabharlannan gun cho-fhreagarrachd air ais?

Feumaidh modal Terraform cumanta, mar leabharlann àbhaisteach, atharrachaidhean a chuir an cèill do luchd-cleachdaidh gun a bhith co-chòrdail air ais. Tha e neònach nuair a thachras na h-atharrachaidhean sin ann an leabharlannan, agus tha e a cheart cho neònach nuair a thèid atharrachaidhean nach eil co-chosmhail air ais a dhèanamh ann am modalan Terraform. Thathas a’ moladh tagaichean git agus semver a chleachdadh nuair a bhios tu a’ cleachdadh mhodalan Terraform.

A bheil an t-seirbheis riochdachaidh agad a’ ruith air do laptop no ann an ionad dàta?

Tha innealan mar Hashicorp sgòth terraform gus do chruth-tìre a ruith. Tha na seirbheisean meadhanaichte sin ga dhèanamh furasta atharrachaidhean cruth-tìre a riaghladh, a sgrùdadh agus aontachadh.

Nach sgrìobh thu deuchainnean?

Tha innleadairean ag aithneachadh gum feumar an còd a dhearbhadh, ach bidh iad fhèin gu tric a’ dìochuimhneachadh mu dheuchainnean nuair a bhios iad ag obair le Terraform. Airson bun-structair, tha seo làn de amannan cunnartach. Is e mo chomhairle cruachan “deuchainn” no “eisimpleirean a chruthachadh” a’ cleachdadh mhodalan a ghabhas cleachdadh gu ceart airson deuchainn rè CI/CD.

Terraform agus microservices

Tha beatha agus bàs chompanaidhean meanbh-sheirbheisean an urra ri astar, ùr-ghnàthachadh agus buaireadh stòran-obrach microservices ùra.

Tha an taobh àicheil as cumanta co-cheangailte ri ailtireachd microservice, agus nach gabh a chuir às, co-cheangailte ris an obair, chan e an còd. Ma smaoinicheas tu air Terraform mar dhòigh air dìreach taobh bun-structair ailtireachd microservices a dhèanamh fèin-ghluasadach, tha thu a’ call a-mach air fìor bhuannachdan an t-siostaim. A-nis tha e mar-thà tha a h-uile dad coltach ri còd.

Source: www.habr.com

Cuir beachd ann