Canja daga Terraform zuwa CloudFormation - kuma yayi nadama

wakiltar abubuwan more rayuwa azaman lamba a tsarin rubutu mai maimaitawa shine mafi sauƙi mafi kyawun aiki don tsarin da baya buƙatar fidda beraye. Wannan al'ada tana da suna - Kamfanoni a matsayin Code, kuma ya zuwa yanzu akwai shahararrun kayan aiki guda biyu don aiwatar da shi, musamman a cikin AWS: Terraform и CloudFormation.

Canja daga Terraform zuwa CloudFormation - kuma yayi nadama
Kwatanta gwaninta tare da Terraform da CloudFormation

Kafin zuwa fizge (shi ne Amazon Jr.) Na yi aiki a cikin farawa ɗaya kuma yayi amfani da Terraform tsawon shekaru uku. A sabon wuri, Na kuma yi amfani da Terraform da dukan ƙarfina, sa'an nan kuma kamfanin ya tura canji zuwa duk abin da Amazon, ciki har da CloudFormation. Na haɓaka mafi kyawun ayyuka ga duka biyun, kuma na yi amfani da kayan aikin biyu a cikin sarƙaƙƙiya, ayyukan aiki na ƙungiyoyi. Daga baya, bayan da nayi la'akari da abubuwan da ke tattare da ƙaura daga Terraform zuwa CloudFormation, na tabbata cewa Terraform shine mafi kyawun zaɓi ga ƙungiyar.

Terraform Mummuna

Beta software

Terraform bai ma fito da sigar 1.0 ba tukuna, wanda shine kyakkyawan dalili na rashin amfani dashi. Ya canza da yawa tun lokacin da na fara gwada shi da kaina, amma a lokacin terraform apply sau da yawa yakan rushe bayan sabuntawa da yawa ko kuma kawai bayan shekaru biyu na amfani. Zan ce "komai ya bambanta a yanzu," amma ... wannan shine abin da kowa ya ce, a'a? Akwai canje-canjen da ba su dace da sigogin da suka gabata ba, kodayake sun dace, kuma har ma yana jin kamar syntax da abstractions na shagunan albarkatu yanzu abin da muke buƙata. Da alama kayan aikin sun sami kyau sosai, amma... :-0

A gefe guda, AWS ya yi aiki mai kyau don kiyaye dacewa da baya. Wannan yana yiwuwa saboda galibi ana gwada ayyukansu sosai a cikin ƙungiyar kuma sai kawai, an canza suna, ana buga su. Don haka "sun yi ƙoƙari sosai" rashin fahimta ne. Tsayar da dacewa ta baya tare da APIs don tsari daban-daban da sarƙaƙƙiya kamar yadda AWS ke da wuyar gaske. Duk wanda ya kasance yana kula da API na jama'a waɗanda ake amfani da su sosai kamar yadda suke ya kamata ya fahimci irin wahalar yin hakan tsawon shekaru da yawa. Amma halin CloudFormation, a cikin ƙwaƙwalwar ajiya, bai taɓa canzawa ba tsawon shekaru.

Haɗu da ƙafa... harsashi ne

Kamar yadda na sani, share albarkatun na waje Tarin CloudFormation daga tarin CF ɗinku ba zai yiwu ba. Haka abin yake tare da Terraform. Yana ba ku damar shigo da albarkatun da ke akwai a cikin tarin ku. Ana iya cewa aikin yana da ban mamaki, amma tare da babban iko ya zo da babban nauyi. Kawai kawai kuna buƙatar ƙara kayan aiki zuwa tarin, kuma yayin da kuke aiki tare da tarin ku, ba za ku iya sharewa ko canza wannan albarkatun ba. Wata rana sai ya ci tura. Wata rana akan Twitch, wani ya shigo da ƙungiyar tsaro AWS wani cikin nasu tari na Terraform ba tare da wani ɓarna ba. Na shigar da umarni da yawa kuma… ƙungiyar tsaro (tare da zirga-zirgar ababen hawa) sun ɓace.

Terraform mai girma

Farfadowa daga jahohin da basu cika ba

Wani lokaci CloudFormation ya kasa canzawa gaba daya daga wannan jiha zuwa wata. A lokaci guda kuma, zai yi ƙoƙarin komawa ga wanda ya gabata. Abin takaici ne cewa wannan ba koyaushe yana yiwuwa ba. Yana iya zama abin ban tsoro don cire abin da ya faru daga baya - ba ku sani ba ko CloudFormation zai yi farin ciki cewa ana hacking - har ma don gyara shi. Ko ba zai yiwu a koma jihar da ta gabata ba, da gaske bai san yadda za a ƙayyade ba kuma, ta hanyar tsoho, ya rataye tsawon sa'o'i yana jiran mu'ujiza.

Terraform, a gefe guda, yana ƙoƙarin murmurewa daga sauye-sauyen da suka gaza da kyau sosai kuma yana ba da kayan aikin gyara na gaba.

Canje-canje masu fa'ida zuwa tsarin daftarin aiki

“Ok, load balancer, kana canzawa. Amma ta yaya?"

- injiniya mai damuwa, yana shirye don danna maɓallin "karɓa".

Wani lokaci ina buƙatar yin wasu magudi tare da ma'aunin nauyi a cikin CloudFormation stack, kamar ƙara lambar tashar jiragen ruwa ko canza ƙungiyar tsaro. ClouFormation yana nuna canje-canje mara kyau. Ni, a kan fil da allura, sau biyu duba fayil ɗin yaml sau goma don tabbatar da cewa ban share wani abu mai mahimmanci ba kuma ban ƙara wani abu da ba dole ba.

Terraform ya fi bayyana a fili game da wannan. Wani lokaci ma ya kan kasance mai gaskiya (karanta: m). Abin farin ciki, sabon sigar ya haɗa da ingantaccen nuni na canje-canje ta yadda za ku iya ganin ainihin abin da ke canzawa.

Sassauci

Rubuta software a baya.

Don sanya shi a fili, mafi mahimmancin halayen software na tsawon rai shine ikon daidaitawa don canzawa. Rubuta kowace software a baya. Mafi sau da yawa na yi kuskure ta hanyar ɗaukar sabis na "mai sauƙi", sa'an nan kuma na fara tattara duk abin da ke cikin CloudFormation ko Terraform tari. Kuma ba shakka, bayan watanni an bayyana cewa na fahimci duk abin da ba daidai ba, kuma sabis ɗin ba shi da sauƙi! Kuma yanzu ina buƙatar ko ta yaya in karya babban tari zuwa ƙananan sassa. Lokacin da kuke aiki tare da CloudFormation, ana iya yin wannan kawai ta hanyar sake ƙirƙirar tarin da ke akwai, kuma ba na yin wannan tare da bayanan bayanai na. Terraform, a gefe guda, ya ba da damar rarraba tarin da kuma rarraba shi zuwa ƙananan sassa masu fahimta.

Modules a cikin git

Raba lambar Terraform a cikin tarin tarin yawa ya fi sauƙi fiye da raba lambar CloudFormation. Tare da Terraform, zaku iya sanya lambar ku a cikin ma'ajiyar git kuma samun damar ta ta amfani da sarrafa nau'in natsuwa. Duk wanda ke da damar zuwa wannan ma'ajiyar yana iya sake amfani da lambar da aka raba. Kwatankwacin CloudFormation shine S3, amma ba shi da fa'idodi iri ɗaya, kuma babu dalilin da zai sa mu watsar da git don neman S3 kwata-kwata.

Ƙungiya ta girma kuma ikon raba tari na gama gari ya kai matsayi mai mahimmanci. Terraform yana sanya wannan duka mai sauƙi da na halitta, yayin da CloudFormation zai sa ku yi tsalle ta hops kafin ku sami wani abu kamar wannan aiki.

Ayyuka kamar code

"Bari mu rubuta shi kuma okay."

– Injiniya shekaru 3 kafin ya kirkiri keken Terraform.

Idan ya zo ga haɓaka software, Go ko shirin Java ba lamba ba ne kawai.

Canja daga Terraform zuwa CloudFormation - kuma yayi nadama
Koda a matsayin Code

Akwai kuma kayayyakin more rayuwa da yake aiki a kansu.

Canja daga Terraform zuwa CloudFormation - kuma yayi nadama
Kamfanoni a matsayin Code

Amma daga ina take? Yadda za a saka idanu? Ina lambar ku ke zama? Shin masu haɓakawa suna buƙatar izinin shiga?

Canja daga Terraform zuwa CloudFormation - kuma yayi nadama
Ayyuka kamar Code

Kasancewa mai haɓaka software ba kawai yana nufin rubuta lambar ba.

AWS ba shine kaɗai ba: tabbas kuna amfani da wasu masu samarwa. SignalFx, PagerDuty ko Github. Wataƙila kuna da uwar garken Jenkins na ciki don CI/CD ko dashboard na Grafana na ciki don saka idanu. An zaɓi Infra azaman Code don dalilai daban-daban, kuma kowanne yana da mahimmanci daidai da duk abin da ya shafi software.

Lokacin da na yi aiki a Twitch, mun haɓaka ayyuka a cikin haɗaɗɗen haɗaɗɗen Amazon da tsarin AWS. Mun ƙware kuma mun goyi bayan sabis na ƙayyadaddun ƙayyadaddun ayyuka, ƙara farashin aiki. Tattaunawar ta kasance kamar haka:

  • Я: La'ananne, wannan ishara ce da yawa don overclocking microservice ɗaya. Dole ne in yi amfani da wannan datti don ƙirƙirar asusun AWS (mun je asusun 2 akan microservice), sai wannan don saita faɗakarwa, wannan don ma'ajiyar lambar, wannan kuma na jerin imel, sannan wannan...
  • Jagoranci: Bari mu rubuta shi kuma lafiya.
  • Я: To, amma rubutun da kansa zai canza. Za mu buƙaci wata hanya don bincika cewa duk waɗannan gizmos na Amazon da aka gina a ciki sun yi zamani.
  • Jagoranci: Yayi kyau. Kuma za mu rubuta rubutun don wannan.
  • Я: Mai girma! Kuma tabbas rubutun zai buƙaci saita sigogi. Shin zai yarda da su?
  • Jagoranci: Bari ya kai inda zai!
  • Я: Tsarin na iya canzawa kuma za a rasa daidaituwar baya. Za a buƙaci wani nau'in sarrafa sigar fassarar fassarar.
  • Jagoranci: Babban ra'ayi!
  • Я: Ana iya canza kayan aiki da hannu, a cikin ƙirar mai amfani. Za mu buƙaci hanya don bincika da gyara wannan.

Bayan shekaru 3:

  • Jagoranci: Kuma mun sami terraform.

Dabi'un labarin shine: ko da ku kai kan sheqa a cikin komai na Amazon, Har yanzu kuna amfani da wani abu ba daga AWS ba, kuma waɗannan ayyukan suna da yanayin da ke amfani da yaren daidaitawa don kiyaye wannan jihar cikin aiki tare.

CloudFormation lambda vs git modules terraform

lambda shine maganin CloudFormation ga batun dabaru na al'ada. Tare da lambda zaka iya ƙirƙirar macros ko albarkatun mai amfani. Wannan hanyar tana gabatar da ƙarin hadaddun abubuwan da ba su cikin sigar ta Terraform na git modules. A gare ni, matsala mafi mahimmanci ita ce sarrafa izini ga duk waɗannan lambdas masu amfani (kuma waɗannan ɗimbin asusun AWS ne). Wata babbar matsala ita ce matsalar “me ya fara zuwa, kaza ko kwai?” matsalar: tana da alaƙa da lambar lambda. Wannan aikin da kansa kayan aiki ne da lambar, kuma ita kanta tana buƙatar saka idanu da sabuntawa. Ƙashin ƙarshe a cikin akwatin gawa shine wahalar sabunta lambar lambda ta hanyar ma'ana; kuma dole ne mu tabbatar da cewa ayyukan tari ba tare da umarnin kai tsaye ba su canza tsakanin gudu.

Na tuna sau ɗaya ina so in ƙirƙiri jigilar canary don yanayin Elastic Beanstalk tare da ma'aunin nauyi na yau da kullun. Abu mafi sauki da za a yi shi ne yin jigilar na biyu don EB kusa da yanayin samarwa, ɗaukar mataki na gaba: haɗa ƙungiyar jigilar canary ta atomatik tare da ƙaddamar da LB a cikin yanayin samarwa. Kuma tun da Terraform yana amfani ASG bentalk a matsayin ƙarshe, wannan zai buƙaci ƙarin layin lamba 4 a cikin Terraform. Lokacin da na tambayi ko akwai kwatankwacin bayani a cikin CloudFormation, sun nuna ni zuwa ga dukan git repository tare da bututun turawa da komai, duk saboda wani abu da matalauta 4 Lines na Terraform code zai iya yi.

Yana gano ɓacin rai da kyau

Tabbatar cewa gaskiyar ta dace da tsammanin.

Gane tuƙi ayyuka ne mai ƙarfi sosai azaman fasalin lambar saboda yana taimakawa tabbatar da cewa gaskiyar ta dace da tsammanin. Akwai shi tare da duka CloudFormation da Terraform. Amma yayin da tarin abubuwan samarwa ya girma, neman ɗigo a cikin CloudFormation ya haifar da ƙarin gano ƙarya.

Tare da Terraform kuna da ƙugiya masu ci gaba da yawa don gano ɓarna. Misali, kun shigar da umarni watsi_canji kai tsaye a cikin ma'anar ɗawainiyar ECS idan kuna son yin watsi da canje-canje zuwa takamaiman ma'anar ɗawainiya ba tare da yin watsi da canje-canje ga duk aikin ku na ECS ba.

CDK da makomar CloudFormation

CloudFormation yana da wahalar sarrafawa a manyan ma'auni na kayan aikin giciye. Yawancin waɗannan matsalolin an gane su kuma kayan aiki yana buƙatar abubuwa kamar uwa-cdk, Tsarin don ma'anar kayan aikin girgije a cikin lambar da kuma gudanar da shi ta hanyar AWS CloudFormation. Zai zama mai ban sha'awa don ganin abin da zai faru a nan gaba don aws-cdk, amma zai yi wahala lokacin yin gasa tare da sauran ƙarfin Terraform; don kawo CloudFormation har zuwa yau, za a buƙaci canje-canjen duniya.

Don haka Terraform ba zai ci nasara ba

Wannan shine "kayan aikin a matsayin lamba", kuma ba "a matsayin rubutu ba".

Ra'ayina na farko game da Terraform bai da kyau sosai. Ina tsammanin ban fahimci hanyar ba. Kusan duk injiniyoyi suna gane shi ba da son rai ba azaman tsarin rubutu wanda ke buƙatar canza shi zuwa abubuwan da ake so. KAR KA YI HAKA.

Gaskiyar ingantaccen haɓaka software kuma ya shafi Terraform.

Na ga ayyuka da yawa da aka ɗauka don ƙirƙirar ƙira mai kyau ana watsi da su a cikin Terraform. Kun yi karatu tsawon shekaru don zama ƙwararren masarrafa. Kada ku daina wannan ƙwarewar kawai saboda kuna aiki tare da Terraform. Gaskiyar ingantaccen haɓaka software ta shafi Terraform.

Ta yaya ba za a iya rubuta lambar ba?

Na ga manyan tarin Terraform ba tare da kwata-kwata ba. Ta yaya za ku iya rubuta lamba a cikin shafuka - ba tare da kwata-kwata ba? Ƙara takaddun da ke bayyana naku lambar Terraform (manufa kan kalmar "lambar"), dalilin da yasa wannan sashe yake da mahimmanci, da abin da kuke yi.

Ta yaya za mu iya tura ayyukan da suka kasance babban aiki ɗaya () a dā?

Na ga rikodi na Terraform masu sarkakiya da aka gabatar a matsayin module guda. Me yasa ba za mu tura software ta wannan hanya ba? Me yasa muke raba manyan ayyuka zuwa ƙananan? Amsoshin iri ɗaya sun shafi Terraform. Idan tsarin naku ya yi girma, kuna buƙatar raba shi zuwa ƙananan kayayyaki.

Shin kamfanin ku ba ya amfani da dakunan karatu?

Na ga yadda injiniyoyi, suna yin wani sabon aiki ta amfani da Terraform, suna kwafin manyan ƙullun daga wasu ayyukan zuwa nasu, sannan kuma a yi amfani da su har ya fara aiki. Za ku iya yin aiki kamar haka tare da lambar "yaƙin" a cikin kamfanin ku? Ba mu kawai amfani da dakunan karatu ba. Ee, ba dole ne komai ya zama ɗakin karatu ba, amma a ina muke ba tare da ɗakunan karatu ba a ka'ida?!

Ba ku amfani da PEP8 ko gofmt?

Yawancin harsuna suna da ma'auni, karɓaɓɓen tsarin tsarawa. A cikin Python wannan shine PEP8. In Go - gofmt. Terraform yana da nasa: terraform fmt. Ji dadin shi don lafiyar ku!

Za ku yi amfani da React ba tare da sanin JavaScript ba?

Kayan aikin terraform na iya sauƙaƙa wani ɓangare na hadaddun kayan aikin da kuke ƙirƙira, amma wannan ba yana nufin ba za ku iya yin tinker tare da shi kwata-kwata ba. Kuna son amfani da Terraform daidai ba tare da fahimtar albarkatun ba? An halaka ku: lokaci zai shuɗe, kuma ba za ku taɓa yin amfani da Terraform ba.

Kuna yin coding da singleton ko alluran dogaro?

Dogaro da allura sanannen kyakkyawan aiki ne don haɓaka software kuma an fifita shi akan guda ɗaya. Ta yaya wannan ke da amfani a cikin Terraform? Na ga kayan aikin Terraform waɗanda suka dogara da yanayin nesa. Maimakon rubuta abubuwan da ke dawo da yanayi mai nisa, rubuta tsarin da ke ɗaukar sigogi. Sannan wuce waɗannan sigogi zuwa module.

Shin ɗakunan karatu naku suna yin abubuwa goma da kyau ko abu ɗaya mai girma?

Laburaren da suka fi aiki su ne waɗanda ke mai da hankali kan aiki ɗaya da suke yi sosai. Maimakon rubuta manyan kayan aikin Terraform waɗanda ke ƙoƙarin yin komai lokaci ɗaya, gina sassansu waɗanda ke yin abu ɗaya da kyau. Sannan a hada su yadda ake bukata.

Ta yaya kuke yin canje-canje ga ɗakunan karatu ba tare da dacewa da baya ba?

Tsarin Terraform na gama-gari, kamar ɗakin karatu na yau da kullun, yana buƙatar ko ta yaya ya sadar da canje-canje ga masu amfani ba tare da dacewa da baya ba. Yana da ban haushi lokacin da waɗannan canje-canjen suka faru a cikin ɗakunan karatu, kuma yana da ban haushi lokacin da aka yi canje-canje marasa dacewa da baya a cikin kayan aikin Terraform. Ana ba da shawarar yin amfani da tags na git da semver yayin amfani da samfuran Terraform.

Shin sabis ɗin samarwa naku yana gudana akan kwamfutar tafi-da-gidanka ko a cibiyar bayanai?

Hashicorp yana da kayan aikin kamar terraform girgije don gudanar da terraform ɗin ku. Waɗannan sabis ɗin da aka keɓance suna ba da sauƙin sarrafawa, tantancewa, da amincewa da canje-canjen yanayi.

Ba ku rubuta jarrabawa?

Injiniyoyin sun gane cewa dole ne a gwada lambar, amma su da kansu sukan manta game da gwaji yayin aiki tare da Terraform. Don ababen more rayuwa, wannan yana cike da lokuta mayaudari. Shawarata ita ce "gwaji" ko "ƙirƙirar misali" ta amfani da kayayyaki waɗanda za a iya tura su daidai don gwaji yayin CI/CD.

Terraform da microservices

Rayuwa da mutuwar kamfanonin microservices sun dogara ne akan saurin, ƙirƙira, da rushewar sabbin ma'aikatun ƙaramar sabis.

Mafi yawan mummunan al'amari da ke hade da gine-ginen microservice, kuma wanda ba za a iya kawar da shi ba, yana da alaka da aikin, ba lambar ba. Idan kuna tunanin Terraform a matsayin hanya kawai don sarrafa kayan aikin gine-ginen microservices kawai, to kuna rasa ainihin fa'idodin tsarin. Yanzu ya riga ya wuce komai kamar code ne.

source: www.habr.com

Add a comment