Anasintha kuchoka ku Terraform kupita ku CloudFormation - ndikunong'oneza bondo

Kuyimira maziko ngati ma code mumtundu wobwerezabwereza ndi njira yabwino kwambiri yamakina omwe safuna kusewera ndi mbewa. Mchitidwewu uli ndi dzina - Infrastructure ngati Code, ndipo mpaka pano pali zida ziwiri zodziwika kuti zitheke, makamaka mu AWS: Terraform и CloudFormation.

Anasintha kuchoka ku Terraform kupita ku CloudFormation - ndikunong'oneza bondo
Poyerekeza zokumana nazo ndi Terraform ndi CloudFormation

Asanabwere ku Twitch (iye Amazon Jr.) Ndimagwira ntchito mu chiyambi chimodzi ndipo adagwiritsa ntchito Terraform kwa zaka zitatu. Kumalo atsopano, ndidagwiritsanso ntchito Terraform ndi mphamvu zanga zonse, kenako kampaniyo idakankhira kusintha kulikonse ku Amazon, kuphatikiza CloudFormation. Ndakhala ndikuchita bwino kwambiri pa onse awiri, ndipo ndagwiritsa ntchito zida zonsezo muzovuta kwambiri, kayendetsedwe ka ntchito kagulu. Pambuyo pake, nditatha kulingalira mozama zomwe zingakhudze kusamuka kuchokera ku Terraform kupita ku CloudFormation, ndidatsimikiza kuti Terraform mwina ndiye chisankho chabwino kwambiri pagulu.

Terraform Zowopsa

Pulogalamu ya Beta

Terraform sanatulutsenso mtundu wa 1.0 pano, chomwe ndi chifukwa chabwino chosaigwiritsa ntchito. Zasintha kwambiri kuyambira pomwe ndidayesa ndekha, koma kalelo terraform apply nthawi zambiri zimawonongeka pambuyo pa zosintha zingapo kapena patangotha ​​​​zaka zingapo zogwiritsa ntchito. Ndinganene kuti "zonse ndi zosiyana tsopano," koma ... ndi zomwe aliyense akuwoneka kuti akunena, ayi? Pali zosintha zomwe sizigwirizana ndi matembenuzidwe am'mbuyomu, ngakhale ali oyenera, ndipo zimamveka ngati ma syntax ndi zotsalira za malo ogulitsira ndizo zomwe tikufuna. Chidacho chikuwoneka kuti chakhala bwino, koma... :-0

Kumbali inayi, AWS yachita ntchito yabwino kusunga mayendedwe am'mbuyo. Izi mwina ndichifukwa choti ntchito zawo nthawi zambiri zimayesedwa bwino m'bungwe ndipo pokhapokha, zitasinthidwanso, zimasindikizidwa. Choncho “anayesetsa” n’zosamveka. Kusunga kuyanjana chakumbuyo ndi ma API pamakina osiyanasiyana komanso ovuta monga AWS ndizovuta kwambiri. Aliyense amene amayenera kusunga ma API a anthu omwe amagwiritsidwa ntchito mochuluka monga momwe alili ayenera kumvetsetsa momwe zimakhalira zovuta kutero kwa zaka zambiri. Koma khalidwe la CloudFormation, mu kukumbukira kwanga, silinasinthe pazaka zambiri.

Kumanani ndi mwendo ... ndi chipolopolo

Monga ndikudziwira, chotsani gwero wakunja CloudFormation stack kuchokera ku CF stack yanu sizingatheke. N'chimodzimodzinso ndi Terraform. Zimakuthandizani kuti mulowetse zinthu zomwe zilipo kale mustack yanu. Ntchitoyi inganene kuti ndi yodabwitsa, koma ndi mphamvu zazikulu zimabwera ndi udindo waukulu. Mukungoyenera kuwonjezera gwero ku stack, ndipo pamene mukugwira ntchito ndi stack yanu, simungathe kuchotsa kapena kusintha izi. Tsiku lina zinabwerera mmbuyo. Tsiku lina pa Twitch, wina adalowetsa mwangozi gulu lachitetezo la AWS la munthu wina mumndandanda wawo wa Terraform pomwe sanachite cholakwika chilichonse. Ndinalowa malamulo angapo ndipo ... gulu lachitetezo (pamodzi ndi magalimoto obwera) linasowa.

Terraform Great

Kuchira ku mayiko osakwanira

Nthawi zina CloudFormation imalephera kusinthiratu kuchoka kudera lina kupita ku lina. Panthawi imodzimodziyo, adzayesa kubwereranso ku yoyamba. Ndizomvetsa chisoni kuti izi sizingatheke nthawi zonse. Zitha kukhala zowopsa kuwongolera zomwe zidachitika pambuyo pake - simudziwa ngati CloudFormation isangalala kuti ikubedwa - ngakhale kungoyikonza. Kaya kudzakhala kotheka kubwerera ku chikhalidwe cham'mbuyo, iye sadziwa kwenikweni momwe angadziwire ndipo, mwachisawawa, amapachikidwa kwa maola ambiri akudikirira chozizwitsa.

Terraform, kumbali ina, imakonda kuchira kuchokera kukusintha kolephera bwino kwambiri ndipo imapereka zida zapamwamba zowongolera.

Zosintha zomveka bwino pamakalata

“Chabwino, posungira katundu, mukusintha. Koma bwanji?"

- injiniya wankhawa, wokonzeka kukanikiza batani la "kuvomereza".

Nthawi zina ndimayenera kuchita zinthu zina ndi chojambulira katundu mu CloudFormation stack, monga kuwonjezera nambala ya doko kapena kusintha gulu lachitetezo. ClouFormation ikuwonetsa kusintha koyipa. Ine, pa zikhomo ndi singano, fufuzani kawiri fayilo yaml kakhumi kuti muwonetsetse kuti sindinafufute chilichonse chofunikira ndipo sindinawonjezerepo chilichonse chosafunika.

Terraform imawonekera kwambiri pankhaniyi. Nthawi zina amawonekera kwambiri (werengani: wotopetsa). Mwamwayi, mtundu waposachedwa umaphatikizapo kuwonetseredwa bwino kwa zosintha kotero kuti mutha kuwona zomwe zikusintha.

Kusintha

Lembani mapulogalamu kumbuyo.

Kunena mosapita m'mbali, khalidwe lofunika kwambiri la mapulogalamu a nthawi yaitali ndi luso lotha kusintha kusintha. Lembani mapulogalamu aliwonse kumbuyo. Nthawi zambiri ndimapanga zolakwika potenga ntchito "yosavuta", kenako ndikuyamba kuyika chilichonse mumtambo umodzi wa CloudFormation kapena Terraform. Ndipo ndithudi, patapita miyezi inawululidwa kuti ine ndamvetsa chirichonse cholakwika, ndipo utumiki kwenikweni sanali wophweka! Ndipo tsopano ndiyenera mwanjira inayake kuswa mulu waukulu kukhala tizigawo tating'ono. Mukamagwira ntchito ndi CloudFormation, izi zitha kuchitika pongobwezeretsanso stack yomwe ilipo, ndipo sindichita izi ndi nkhokwe zanga. Koma Terraform, inapangitsa kuti zikhale zotheka kung'amba muluwo ndi kuudula m'zigawo zing'onozing'ono zomveka bwino.

Ma modules mu git

Kugawana khodi ya Terraform pamapaketi angapo ndikosavuta kuposa kugawana nambala ya CloudFormation. Ndi Terraform, mutha kuyika nambala yanu munkhokwe ya git ndikuipeza pogwiritsa ntchito semantic version control. Aliyense amene ali ndi mwayi wolowa m'nkhokweyi akhoza kugwiritsanso ntchito nambala yomwe adagawana. Chofanana ndi CloudFormation ndi S3, koma ilibe phindu lomwelo, ndipo palibe chifukwa chomwe tiyenera kusiya git kuti tithandizire S3 konse.

Bungweli linakula ndipo kuthekera kogawana milu wamba kunafika pamlingo wovuta. Terraform imapangitsa izi kukhala zosavuta komanso zachilengedwe, pomwe CloudFormation imakupangitsani kudumphadumpha musanayambe kugwira ntchito ngati izi.

Zochita ngati code

"Tiyeni tilembe ndipo zili bwino."

—injiniya zaka 3 asanapange njinga ya Terraform.

Zikafika pakupanga mapulogalamu, Go kapena pulogalamu ya Java si code yokha.

Anasintha kuchoka ku Terraform kupita ku CloudFormation - ndikunong'oneza bondo
Kodi ngati Kodi

Palinso zomangamanga zomwe zimagwirira ntchito.

Anasintha kuchoka ku Terraform kupita ku CloudFormation - ndikunong'oneza bondo
Infrastructure ngati Code

Koma akuchokera kuti? Kodi kuyang'anira izo? Kodi code yanu imakhala kuti? Kodi opanga akufunika chilolezo chofikira?

Anasintha kuchoka ku Terraform kupita ku CloudFormation - ndikunong'oneza bondo
Zochita ngati Code

Kukhala wopanga mapulogalamu sikungotanthauza kulemba code.

AWS si yokhayo: mwina mumagwiritsa ntchito othandizira ena. SignalFx, PagerDuty kapena Github. Mwina muli ndi seva yamkati ya Jenkins ya CI/CD kapena dashboard yamkati ya Grafana yowunikira. Infra monga Code imasankhidwa pazifukwa zosiyanasiyana, ndipo iliyonse ndiyofunikira pa chilichonse chokhudzana ndi mapulogalamu.

Ndimagwira ntchito ku Twitch, tidapititsa patsogolo ntchito mkati mwa makina osakanikirana a Amazon ndi AWS. Tinasiya ndikuthandizira ma microservices ambiri, ndikuwonjezera ndalama zogwirira ntchito. Zokambiranazo zidayenda motere:

  • Я: Damn, ndi manja ambiri kuti muwonjezere microservice imodzi. Ndiyenera kugwiritsa ntchito zinyalala izi kupanga akaunti ya AWS (tinapita ku akaunti ziwiri microservice), ndiye iyi yokhazikitsa zidziwitso, iyi yosungira ma code, ndi iyi ya mndandanda wa imelo, kenako iyi...
  • Kutsogolera: Tiyeni tilembe ndipo zili bwino.
  • Я: Chabwino, koma script yokha idzasintha. Tifunika njira yowonetsetsa kuti ma gizmos onse a Amazon awa ndiaposachedwa.
  • Kutsogolera: Zikumveka zabwino. Ndipo tilemba script pa izi.
  • Я: Zabwino! Ndipo script mwina ikufunikabe kukhazikitsa magawo. Kodi adzawalandira?
  • Kutsogolera: Atenge kumene akupita!
  • Я: Njirayi ikhoza kusintha ndipo kuyanjana kwambuyo kudzatayika. Mtundu wina wowongolera mtundu wa semantic udzafunika.
  • Kutsogolera: Lingaliro labwino!
  • Я: Zida zikhoza kusinthidwa pamanja, mkati mwa mawonekedwe ogwiritsira ntchito. Tifunika njira yowonera ndi kukonza izi.

…Patadutsa zaka 3:

  • Kutsogolera: Ndipo ife tiri ndi terraform.

Makhalidwe a nkhaniyi ndi: ngakhale inu mutu pa chidendene chilichonse Amazon, mukugwiritsabe ntchito zina zosachokera ku AWS, ndipo mautumikiwa ali ndi boma lomwe limagwiritsa ntchito chinenero chokonzekera kuti chikhalidwecho chikhale chogwirizana.

CloudFormation lambda vs git modules terraform

lambda ndiye yankho la CloudFormation pazovuta zamakhalidwe. Ndi lambda mungathe kupanga macros kapena wogwiritsa ntchito. Njirayi imabweretsa zovuta zina zomwe sizipezeka mu Terraform's semantic version of git modules. Kwa ine, vuto lalikulu kwambiri linali kuyang'anira zilolezo za ma lambdas onsewa (ndipo awa ndi maakaunti ambiri a AWS). Vuto lina lofunika kwambiri linali vuto la "choyamba, nkhuku kapena dzira?": chinali chokhudzana ndi code ya lambda. Ntchitoyi payokha ndi zomangamanga ndi ma code, ndipo imayenera kuyang'aniridwa ndi kusinthidwa. Msomali womaliza m'bokosi linali vuto lakusintha semantically lambda code; tinkayeneranso kuwonetsetsa kuti zochita za stack popanda lamulo lachindunji sizinasinthe pakati pa kuthamanga.

Ndikukumbukira nthawi ina ndimafuna kupanga malo opangira canary ku Elastic Beanstalk yokhala ndi chojambulira chapamwamba. Chosavuta kuchita chingakhale kupanga kutumizidwa kwachiwiri kwa EB pafupi ndi malo opangira zinthu, ndikupititsa patsogolo: kuphatikiza gulu la auto-scaling canary deployment ndi LB yotumiza kumalo opangira. Ndipo popeza Terraform amagwiritsa ntchito ASG beantalk ngati chomaliza, izi zidzafunika mizere 4 ya code mu Terraform. Nditafunsa ngati pali yankho lofananira mu CloudFormation, adandilozera kunkhokwe yonse ya git yokhala ndi payipi yotumizira ndi chilichonse, zonse chifukwa cha china chake chomwe mizere 4 yosauka ya Terraform ingachite.

Imazindikira kutengeka bwino

Onetsetsani kuti zenizeni zikugwirizana ndi zomwe mukuyembekezera.

Kuzindikira kwa Drift ndi machitidwe amphamvu kwambiri ngati ma code chifukwa amathandiza kuonetsetsa kuti zenizeni zikugwirizana ndi zomwe mukuyembekezera. Imapezeka ndi CloudFormation ndi Terraform. Koma pamene kuchuluka kwapangidwe kumakulirakulira, kufunafuna kusuntha mu CloudFormation kunapanga kudziwika kwabodza.

Ndi Terraform muli ndi mbedza zapamwamba kwambiri zodziwikiratu ngati mukuyendetsa. Mwachitsanzo, mumalowetsa lamulo kunyalanyaza_kusintha mwachindunji mu tanthawuzo la ntchito ya ECS ngati mukufuna kunyalanyaza kusintha kwa tanthawuzo linalake la ntchito popanda kunyalanyaza kusintha kwa ntchito yanu yonse ya ECS.

CDK ndi tsogolo la CloudFormation

CloudFormation ndiyovuta kuwongolera pamiyeso yayikulu, yolumikizirana. Zambiri mwazovutazi zimazindikirika ndipo chida chimafunikira zinthu monga ayi cdk, chimango chofotokozera maziko amtambo mu code ndikuyendetsa kudzera pa AWS CloudFormation. Zidzakhala zosangalatsa kuwona zomwe tsogolo la aws-cdk liri nazo, koma zidzakhala zovuta kupikisana ndi mphamvu zina za Terraform; kuti CloudFormation ikhale yatsopano, kusintha kwapadziko lonse kudzafunika.

Kuti Terraform asakhumudwitse

Izi ndi "zomangamanga monga code", osati "monga malemba".

Malingaliro anga oyamba a Terraform anali oipa kwambiri. Ndikuganiza kuti sindinamvetsetse njira yake. Pafupifupi mainjiniya onse modzifunira amawona ngati mtundu wamawu womwe uyenera kusinthidwa kukhala maziko omwe akufuna. MUSACHITE CHONCHO.

Zowona za chitukuko chabwino cha mapulogalamu zimagwiranso ntchito ku Terraform.

Ndawona machitidwe ambiri omwe amatengedwa kuti apange code yabwino imanyalanyazidwa mu Terraform. Mwaphunzira kwa zaka zambiri kuti mukhale wolemba mapulogalamu wabwino. Osataya mtima chifukwa chogwira ntchito ndi Terraform. Zowona za chitukuko chabwino cha mapulogalamu zimagwira ntchito ku Terraform.

Kodi codeyo singalembedwe bwanji?

Ndawona milu yayikulu ya Terraform yopanda zolembedwa. Kodi mungalembe bwanji ma code m'masamba - opanda zolembedwa? Onjezani zolemba zomwe zimafotokoza zanu code Terraform (kugogomezera mawu oti "code"), chifukwa chiyani gawoli ndi lofunika kwambiri, ndi zomwe mumachita.

Kodi tingagwiritse ntchito bwanji mautumiki omwe kale anali ntchito imodzi yayikulu ()?

Ndawona misala yovuta kwambiri ya Terraform ikuperekedwa ngati gawo limodzi. Chifukwa chiyani sitigwiritsa ntchito mapulogalamu mwanjira imeneyi? Chifukwa chiyani timagawaniza ntchito zazikulu kukhala zazing'ono? Mayankho omwewo amagwiranso ntchito ku Terraform. Ngati gawo lanu ndi lalikulu kwambiri, muyenera kuligawa kukhala ma module ang'onoang'ono.

Kodi kampani yanu sigwiritsa ntchito malaibulale?

Ndawona momwe mainjiniya, akuwongolera pulojekiti yatsopano pogwiritsa ntchito Terraform, mopusa amakopera machulukidwe akuluakulu kuchokera kumapulojekiti ena kukhala awoawo, kenako ndidakambirana nawo mpaka idayamba kugwira ntchito. Kodi mungagwire ntchito chonchi ndi code "combat" pakampani yanu? Sitingogwiritsa ntchito malaibulale. Inde, sikuti zonse ziyenera kukhala laibulale, koma tili kuti opanda malaibulale omwe amagawana nawo mwalamulo?!

Kodi simukugwiritsa ntchito PEP8 kapena gofmt?

Zilankhulo zambiri zimakhala ndi dongosolo lovomerezeka, lovomerezeka. Mu Python iyi ndi PEP8. Mu Go - gofmt. Terraform ili ndi zake: terraform fmt. Gwiritsani ntchito thanzi!

Kodi mungagwiritse ntchito React osadziwa JavaScript?

Ma module a Terraform amatha kupeputsa gawo lina lazinthu zovuta zomwe mumapanga, koma izi sizikutanthauza kuti simungathe kuzilingalira konse. Mukufuna kugwiritsa ntchito Terraform molondola osamvetsetsa zothandizira? Mudzawonongedwa: nthawi idzapita, ndipo simudzadziwa Terraform.

Kodi mukulemba ndi ma singletons kapena jekeseni wodalira?

Jakisoni wodalira ndi njira yabwino yodziwikiratu pakupanga mapulogalamu ndipo imakondedwa kuposa ma singletons. Kodi izi ndizothandiza bwanji mu Terraform? Ndawona ma module a Terraform omwe amadalira dera lakutali. M'malo molemba ma module omwe amatenga malo akutali, lembani gawo lomwe limatenga magawo. Kenako perekani magawo awa ku module.

Kodi malaibulale anu amachita zinthu khumi bwino kapena chinthu chimodzi chachikulu?

Malaibulale omwe amagwira ntchito bwino kwambiri ndi omwe amayang'ana kwambiri ntchito imodzi yomwe amachita bwino kwambiri. M'malo molemba ma module akulu a Terraform omwe amayesa kuchita chilichonse nthawi imodzi, pangani magawo omwe amachita chinthu chimodzi bwino. Kenako phatikizani ngati pakufunika.

Kodi mumasintha bwanji ku malaibulale popanda kubwerera m'mbuyo?

Module wamba ya Terraform, ngati laibulale yokhazikika, imayenera kufotokozera zosintha kwa ogwiritsa ntchito osabwerera m'mbuyo. Ndizosakwiyitsa pamene zosinthazi zimachitika m'malaibulale, ndipo zimakwiyitsa ngati zosintha zosabwerera m'mbuyo zimapangidwa m'ma module a Terraform. Ndikofunikira kugwiritsa ntchito ma tag a git ndi semver mukamagwiritsa ntchito ma module a Terraform.

Kodi ntchito yanu yopanga ikugwira ntchito pa laputopu yanu kapena pamalo opangira data?

Hashicorp ili ndi zida ngati mtambo wa terraform kuyendetsa terraform yanu. Ntchito zapakati izi zimapangitsa kuti zikhale zosavuta kuyang'anira, kufufuza, ndi kuvomereza kusintha kwa terraform.

Simumalemba mayeso?

Akatswiri amazindikira kuti code iyenera kuyesedwa, koma iwonso nthawi zambiri amaiwala za kuyesa akamagwira ntchito ndi Terraform. Kwa zomangamanga, izi zimadzaza ndi nthawi zachinyengo. Malangizo anga ndi "kuyesa" kapena "kupanga chitsanzo" ma stacks pogwiritsa ntchito ma modules omwe angagwiritsidwe ntchito moyenera kuti ayesedwe pa CI / CD.

Terraform ndi microservices

Moyo ndi imfa yamakampani a microservices zimatengera kuthamanga, luso, komanso kusokoneza kwa ntchito zatsopano za microservice.

Choyipa chofala kwambiri chokhudzana ndi zomangamanga za microservice, ndipo zomwe sizingathetsedwe, zimagwirizana ndi ntchito, osati code. Ngati mukuganiza za Terraform ngati njira yokhayo yosinthira magawo omanga a microservices, ndiye kuti mukuphonya zabwino zake zamakina. Tsopano izo ziri kale zonse zili ngati code.

Source: www.habr.com

Kuwonjezera ndemanga