Talaan ng nilalaman[Tago][Ipakita]
Ang imprastraktura ay isang mahalagang bahagi ng proseso ng pagbuo ng software dahil direktang responsable ito para sa maayos na operasyon ng software application. Ang mga server, load balancer, firewall, database, at kumplikadong container cluster ay lahat ng mga halimbawa ng imprastraktura.
Dahil ang mga paghihirap sa imprastraktura ay lumaganap sa buong proseso ng pag-unlad, ang mga ito ay may kaugnayan sa kabila ng mga sitwasyon sa produksyon.
Kabilang sa mga ito ang mga CI/CD platform, staging environment, at testing tools, bukod sa iba pang mga bagay.
Habang lumalaki ang pagiging kumplikado ng produkto ng software, nagiging mas kritikal ang mga hamong ito sa imprastraktura. Ang tradisyunal na pamamaraan ng manu-manong pamamahala sa imprastraktura ay mabilis na nagiging isang hindi nasusukat na solusyon upang tumugma sa mga adhikain ng mga yugto ng mabilis na pagbuo ng software na batay sa DevOps ngayon.
Bilang resulta, ang Infrastructure as Code (IaC) ay naging de facto development solution ngayon. Binibigyang-daan ka ng imprastraktura bilang code (IaC) na sukatin at subaybayan ang mga pagbabago sa imprastraktura kapag lumitaw ang mga ito.
Susuriin natin ang Infrastructure bilang Code sa bahaging ito, kasama ang mga benepisyo nito, kung bakit ito mahalaga, at higit pa. Kaya, magsimula tayo.
Ano ang Ang imprastraktura bilang Code?
Ang Infrastructure bilang Code ay ang proseso ng pagbibigay at pag-configure ng kapaligiran gamit ang code sa halip na manu-manong pag-configure ng mga naaangkop na device at system. Ang mga developer ay nagpapatakbo ng mga script pagkatapos tukuyin ang mga parameter ng code, at ang platform ng IaC ay awtomatikong bumubuo ng cloud infrastructure.
Ang ganitong mga naka-automate na configuration ng IT ay nagbibigay-daan sa mga team na mabilis na bumuo ng kinakailangang cloud setting para sa pagsubok at pagpapatakbo ng kanilang produkto. Ang Infrastructure bilang Code ay nagbibigay-daan sa mga developer na bumuo ng anumang bahagi ng imprastraktura na gusto nila, tulad ng mga network, mga balanse ng load, mga database, virtual machine, at mga uri ng koneksyon.
Sa mga termino ng karaniwang tao, ito ay ang proseso ng pagbibigay at pamamahala ng imprastraktura na tinukoy gamit ang code sa halip na sa pamamagitan ng kamay. Ang IaC ay isa ring mahalagang diskarte sa DevOps na kinakailangan para sa isang mabilis na cycle ng paghahatid ng software.
Nagbibigay-daan ito sa mga koponan ng DevOps na mabilis na bumuo at imprastraktura ng bersyon sa parehong paraan kung saan naka-bersyon ang source code, pati na rin subaybayan ang mga bersyong ito upang mabawasan ang hindi pagkakapare-pareho sa pagitan ng mga IT environment, na maaaring magdulot ng malalaking problema sa panahon ng deployment.
Deklarasyon kumpara sa imperative na mga diskarte sa IaC
Maaaring lapitan ang IaC sa dalawang paraan: paturol o pautos.
Ise-set up ng IaC tool ang system para sa iyo kung gagamit ka ng declarative na diskarte, na naglalarawan sa nilalayong estado ng system, kasama kung anong mga mapagkukunan ang kailangan mo at anumang mga katangiang dapat mayroon sila.
Ang isang deklaratibong diskarte ay nagpapanatili din ng pagsubaybay sa kasalukuyang estado ng iyong mga object ng system, na ginagawang mas madaling pamahalaan ang downtime ng iyong imprastraktura. Ang isang imperative na paraan, sa kabilang banda, ay binabalangkas ang mga partikular na tagubilin na dapat isagawa sa wastong pagkakasunud-sunod upang malikha ang nilalayon na pagsasaayos.
Maraming teknolohiya ng IaC ang gumagamit ng declarative na diskarte sa pagbibigay ng imprastraktura at awtomatiko itong gagawin. Ang isang deklaratibong tool ng IaC ay maglalapat ng mga pagbabago sa nais na estado para sa iyo kung gagawin mo ang mga ito. Kakailanganin mong malaman kung paano ilapat ang mga pagsasaayos na iyon kung gumagamit ka ng mahalagang tool. Ang mga tool ng IaC ay madalas na may kakayahang gumana sa parehong mga mode, bagama't pinapaboran nila ang isa kaysa sa isa.
Paano gumagana ang Infrastructure bilang code?
Upang ganap na maipatupad ang imprastraktura bilang code, dapat na may ilang mga kinakailangan.
Isang platform para sa cloud hosting bilang isang serbisyo (IaaS)
Ang una at pinakamahalagang pangangailangan ay remote access hosting. Ang configuration management tool ay dapat kumonekta sa remote host at gumawa ng mga pagbabago doon. Dapat garantiya ng iyong team na may access ang tool sa pamamahala ng configuration kung ang malayong imprastraktura ay pinamamahalaan ng sarili.
Ang mga API sa cloud hosting platform na naka-enable sa IaaS ay nagbibigay-daan sa mga customer na bumuo, mag-alis, at magbago ng mga mapagkukunan ng imprastraktura kapag hinihiling. Maaaring gamitin ng mga system ng pamamahala ng configuration ang mga API na ito para i-automate pa ang mga aktibidad na ito. Ang Digital Ocean, Amazon AWS, at Microsoft Azure ay tatlong pangunahing sistema ng IaaS.
Isang platform para sa pamamahala ng pagsasaayos
Ang suite ng mga tool na kumokonekta sa mga IaaS API at nag-automate ng mga tipikal na operasyon ay ang susunod na kinakailangan para sa pagkumpleto ng IaC. Ang isang pangkat ng mga tao ay maaaring magtulungan upang makagawa ng isang koleksyon ng mga script at tool. Gayunpaman, mangangailangan ito ng malaking pagsisikap, patuloy na pangangalaga, at kaunting return on investment. Ang Terraform, Ansible, Salt Stack, at Chef ay ilan lamang sa mga open-source na tool sa pamamahala ng configuration na humahawak sa hamon na ito.
Bersyon Control System
Gumagamit ang isang platform ng pamamahala sa pagsasaayos ng mga text file na nakasulat sa isang markup language gaya ng YAML upang magbigay ng mga gawain at pagkakasunud-sunod para sa platform upang maisagawa. Ang mga text file na ito ay maaaring ituring bilang application code at iimbak sa isang version control repository. Ang mga pull request at code review ay pinapayagan sa repository, na gumaganap bilang isang punto ng katotohanan. Ang version control system na Git ang pinakasikat.
Sa pagkakaroon ng mga kinakailangang ito, isaalang-alang ang sumusunod na senaryo: nais ng isang developer na magdagdag ng bagong serbisyo ng application sa isang system. Ang halimbawang ito ay naglalarawan ng isang proseso ng IaC.
- Sa kanilang gustong platform sa pamamahala ng configuration, ang Terraform, binago ng developer ang isang YAML configuration text file. Ang mga pagbabago ay nagsasaad na ang isang bagong hosting server ay kinakailangan.
- Sa Git repository, ang developer ay gumagawa ng mga pagbabago sa isang feature branch. Lumilikha ang developer ng pull request dahil ang Git repository ng proyekto ay naka-host sa Bitbucket. Isa pang miyembro ng team ang tumitingin sa pull request at napansin ang mga bagong pagpapahusay sa imprastraktura. Ang kahilingan sa paghila ay inaprubahan ng isang miyembro ng koponan, at isinasama ng developer ang pagbabago sa pangunahing sangay ng repositoryo.
- Kinakailangan ang configuration platform sa hakbang na ito para makapagsagawa ng update. Maaaring manual na simulan ng developer ang pag-update. Dahil gumagamit ang team ng Bitbucket, mayroon silang access sa Bitbucket Pipelines at magagamit nila ang isa para i-automate ang pamamaraang ito.
- Kumokonekta ang Terraform sa IaaS ng koponan pagkatapos ng pagpapatupad. Ginagamit ng Terraform ang IaaS API upang magpatakbo ng isang sequence ng mga command na nag-a-update sa IaaS sa inaasahang configuration ng imprastraktura.
Mga Benepisyo ng IaC
Tinutulungan ng IaC ang mga organisasyon sa pamamahala ng kanilang mga hinihingi sa imprastraktura ng IT sa iba't ibang paraan sa pamamagitan ng mga awtomatikong pamamaraan. Ang ilan sa mga benepisyo ng pag-install ng IaC ay ang mga sumusunod:
- Consistency: Maaaring pataasin ng IaC ang consistency at bawasan ang mga pagkakamali na madalas mangyari sa mga manual na setting. Pinipigilan din nito ang pag-drift ng configuration na maaaring mangyari sa panahon ng manual na operasyon. Hinahayaan ka ng IaC na pigilan ang hindi dokumentado, ad-hoc na mga pagbabago sa configuration sa pamamagitan ng pag-codify at pagdodokumento ng iyong mga pamantayan sa configuration.
- Kahusayan: Ang pag-cod ng iyong imprastraktura ay lumilikha ng template ng provisioning, na ginagawang mas madali ang configuration ng system, pagpapanatili, at pangangasiwa. Bumubuo ito ng flexible, repeatable, at scalable na imprastraktura. Bilang resulta, mapapabilis ng DevOps ang bawat yugto ng pagbuo ng software, na nagreresulta sa mas maraming app na na-publish araw-araw.
- Pinababang gastos: Binibigyang-daan ng IaC ang mga virtual machine na pamahalaan sa programmatically, na inaalis ang pangangailangan para sa manu-manong configuration ng hardware at mga upgrade. Gamit ang parehong piraso ng code, maaaring i-install at pamahalaan ng isang operator ang isang makina o 1000 unit. Bilang resulta, mas kaunting mga empleyado ang kinakailangan at hindi na kailangan ng bagong kagamitan, na nagreresulta sa malaking pagtitipid sa gastos.
- Bilis: Binabawasan ng IaC ang oras na kailangan ng mga developer na maibigay ang kanilang imprastraktura sa pamamagitan ng paggawa nito sa isang simpleng script. Bilang resulta, ang mga pag-deploy ng application ay hindi na naaantala ng imprastraktura, at ang bagong software ay maaaring maihatid nang mas mabilis.
- Bawasan ang Panganib: Gaya ng hinihikayat ng IaC kontrol ng bersyon, ang iyong mga configuration file, tulad ng ibang software source code file, ay maaaring masubaybayan. Bilang resulta, ang panganib ay nabawasan.
Anong problema ang nalulutas ng IaC?
Ang imprastraktura bilang Code ay nilikha upang tugunan ang isyu ng release pipeline environment drift. Kung wala ang IaC, ang mga koponan ay may pananagutan sa pagpapanatili ng mga setting ng bawat deployment environment. Ang bawat kapaligiran ay nag-evolve sa isang snowflake, isang one-of-a-kind na kaayusan na hindi maaaring awtomatikong kopyahin.
Sa panahon ng mga pag-deploy, ang hindi pagkakapare-pareho sa mga kapaligiran ay nagdudulot ng mga problema. Ang mga snowflake ay nangangailangan ng mga manual na operasyon na mahirap pangasiwaan at nag-aambag sa mga pagkakamali sa pangangasiwa at pagpapanatili ng imprastraktura.
Ang Infrastructure bilang Code ay sumusunod sa ideya ng idempotence.
Ang Idempotence ay tumutukoy sa katotohanang palaging kino-configure ng isang deployment command ang target na kapaligiran sa parehong paraan, anuman ang panimulang estado ng kapaligiran. Ang Idempotency ay nakakamit sa pamamagitan ng alinman sa awtomatikong pagtatakda ng isang umiiral na target o pag-dismiss sa umiiral na target at magsimulang muli.
Bilang resulta, gamit ang IaC, binabago ng mga team ang paglalarawan ng kapaligiran at bersyon ng modelo ng pagsasaayos, na kadalasang nakasulat sa mga format ng code na mahusay na dokumentado tulad ng JSON. Ang modelo ay pinapatakbo sa release pipeline upang mag-set up ng mga target na kapaligiran. Ine-edit ng team ang pinagmulan, hindi ang target, kung kailangan nilang gumawa ng mga pagbabago.
Gaano kahalaga ang IaC sa DevOps?
Ang pagpapatupad ng mga DevOps at tuluy-tuloy na integration/continuous delivery (CI/CD) methodologies ay nangangailangan ng paggamit ng IaC. Inaalis nito ang mga developer sa karamihan ng mga responsibilidad sa pagbibigay, na nagbibigay-daan sa kanila na magpatakbo lamang ng isang script upang mapatakbo ang kanilang imprastraktura.
Bilang resulta, ang mga deployment ng application ay hindi natigil habang itinatayo ang imprastraktura, at ang mga sysadmin ay hindi nabibigatan ng mga manu-manong gawain na nakakaubos ng oras. Mula sa pagsasama at pagsubok sa pamamagitan ng paghahatid at pag-deploy, umaasa ang CI/CD sa patuloy na pag-automate at patuloy na pagsubaybay sa buong lifecycle ng application. Ang isang palaging kapaligiran ay kinakailangan para sa automation upang gumana.
Kapag ang development team ay naghahatid ng mga app o nag-configure ng mga environment sa isang paraan at ang operations team ay nag-install at nag-configure ng environment sa ibang paraan, ang pag-automate ng mga deployment ng application ay hindi posible.
Ang isang DevOps methodology ay nakahanay sa mga development at operations team, na nagreresulta sa mas kaunting mga pagkakamali, manu-manong pag-deploy, at hindi pagkakapare-pareho. Dahil parehong magagamit ng mga development at operations team ang parehong paglalarawan ng deployment ng application, tinutulungan ka ng IaC na i-synchronize ang development at mga operasyon, na nagbibigay-daan sa isang diskarte sa DevOps.
Ang bawat kapaligiran, kabilang ang iyong kapaligiran sa produksyon, ay dapat sumunod sa parehong paraan ng pag-deploy. Sa tuwing ginagamit ang IaC, nalilikha ang isang magkatulad na kapaligiran.
Konklusyon
Ang DevOps ay lubos na umaasa sa imprastraktura bilang code. Ang Infrastructure bilang Code ay ang natural na susunod na hakbang sa paggawa ng iyong mga operasyon na handa sa hinaharap sa isang mundo kung saan ang mga nakakagambalang teknolohiya ay patuloy na binabago ang sektor ng IT.
Binibigyang-daan ka nitong mapagtanto ang buong potensyal ng cloud computing, binabawasan ang mga pagkakamaling nauugnay sa manu-manong pamamahala sa imprastraktura ng IT, at pinapabuti ang bilis ng pagbuo ng software. Ang lahat ng ito ay nagagawa habang binabawasan ang mga gastos sa pagpapatakbo.
Mag-iwan ng Sagot