LFCA: Jifunze Dhana za Msingi za Kutumia Vyombo - Sehemu ya 22


Baada ya muda, mahitaji ya majaribio ya haraka na upelekaji wa maombi yalipoongezeka pamoja na mzunguko wa kasi wa biashara, mashirika yalilazimishwa kufanya uvumbuzi ili kuendana na mazingira ya biashara ya haraka.

Azma ya kubadilisha programu kuwa za kisasa na kuunda mpya ili kuunda utiririshaji wa hali ya juu ulisababisha dhana ya kutumia kontena. Teknolojia ya uwekaji vyombo ni karibu ya zamani kama uboreshaji. Walakini, kontena hazikuleta msisimko mwingi hadi Docker ilipolipuka kwenye eneo la tukio mnamo 2013 na kuibua shauku kubwa kati ya watengenezaji na wataalamu wengine wa IT.

Hivi sasa, vyombo vyote vikubwa vya teknolojia kama vile Google, Amazon, Microsoft, na Red Hat kutaja vichache vimejitokeza kwenye mkondo.

Kwa nini Vyombo?

Mojawapo ya changamoto ambazo wasanidi programu walikabili ni tofauti katika mazingira ya kompyuta katika kila hatua ya ukuzaji wa programu. Matatizo hutokea wakati mazingira ya programu ni tofauti kutoka hatua moja hadi nyingine.

Kwa mfano, programu inaweza kufanya kazi bila mshono kwenye mazingira ya majaribio kwa kutumia Python 3.6. Walakini, programu hufanya kazi kwa njia ya ajabu, hurejesha hitilafu kadhaa au ajali kabisa inapowekwa kwenye mazingira ya uzalishaji inayoendesha Python 3.9.

Vyombo vilikuja kwenye eneo ili kushughulikia changamoto hii na kuhakikisha kuwa programu zinaendeshwa kwa uhakika zinapohamishwa kutoka kwa mazingira moja ya kompyuta hadi nyingine katika kila hatua ya ukuzaji wa programu - kutoka kwa Kompyuta ya wasanidi programu hadi kwa mazingira ya uzalishaji. Na sio tu mazingira ya programu ambayo yanaweza kuleta kutofautiana vile, lakini pia tofauti katika sera za usalama.

Kontena ni nini?

Chombo ni kitengo cha programu kilichojitenga ambacho hupakia msimbo wote wa mfumo wa jozi, maktaba, utekelezo, vitegemezi, na faili za usanidi kwenye kifurushi kimoja kwa njia ambayo programu itaendeshwa vizuri inapohamishwa kutoka mazingira moja ya kompyuta hadi nyingine. Haiji na picha ya mfumo wa uendeshaji ambayo inafanya kuwa nyepesi na kubebeka kwa urahisi.

Picha ya kontena ni kifurushi kinachojitegemea, chepesi na kinachoweza kutekelezeka ambacho hukusanya kila kitu kinachohitajika ili kutekeleza programu. Wakati wa kukimbia, picha ya chombo hubadilika kuwa chombo. Kwa upande wa Docker, kwa mfano, picha ya Docker inakuwa chombo cha docker inapotekelezwa kwenye Docker Engine. Docker ni mazingira ya wakati wa kukimbia yanayotumika kujenga programu zilizo na kontena.

Vyombo huendeshwa kwa kutengwa kabisa na mfumo wa uendeshaji wa msingi, na programu zilizo na kontena zitaendeshwa kila wakati bila kujali mazingira ya kompyuta au miundombinu. Ni kwa sababu hii kwamba msanidi programu anaweza kuendeleza programu kutoka kwa faraja ya kompyuta hii ya mkononi na kuiweka kwa urahisi kwenye seva.

Uthabiti na kutegemewa kwa makontena yanayoendesha huwapa watengenezaji amani ya akili kwa kujua kwamba maombi yao yataendeshwa inavyotarajiwa bila kujali yanatumwa wapi.

Vyombo vina tofauti gani na Mashine za kweli?

Jambo la kawaida ambalo vyombo na mashine za mtandaoni hushiriki ni kwamba zinafanya kazi katika mazingira halisi. Uwekaji wa vyombo, kwa maana, ni aina ya teknolojia iliyosasishwa. Walakini, vyombo hutofautiana na mashine za kawaida kwa njia zaidi ya moja.

Mashine pepe pia inajulikana kama mfano pepe au VM kwa kifupi ni mwigo wa seva halisi au Kompyuta. Virtualization ni teknolojia ambayo inafanya uwezekano wa kuunda mashine za kawaida. Wazo la uboreshaji lilianza miaka ya mapema ya 1970 na liliweka msingi wa kizazi cha kwanza cha teknolojia ya wingu.

Katika virtualization, safu ya uondoaji huundwa juu ya seva isiyo na chuma au vifaa vya kompyuta. Hii inafanya uwezekano wa rasilimali za maunzi za seva moja kushirikiwa kwenye mashine nyingi pepe.

Programu inayotumiwa kutengeneza safu ya uondoaji inajulikana kama hypervisor. Hypervisor huchota mashine pepe na OS mgeni kutoka kwa chuma tupu au maunzi ya kompyuta. Kwa hivyo, mashine ya kawaida hukaa juu ya hypervisor ambayo hufanya rasilimali za vifaa zipatikane kwa shukrani kwa safu ya uondoaji.

Mashine pepe huendesha mfumo kamili wa uendeshaji (guest OS) ambao haujitegemea mfumo wa uendeshaji wa msingi ( host OS ) ambayo hypervisor imewekwa. Mfumo wa Uendeshaji mgeni kisha hutoa jukwaa la kujenga, kujaribu na kupeleka programu kando ya maktaba na jozi zao.

[ Unaweza pia kupenda: Jinsi ya Kusakinisha KVM kwenye CentOS/RHEL 8 ]

Kuna aina mbili za hypervisors:

Hypervisor hii imewekwa moja kwa moja kwenye seva halisi au vifaa vya msingi. Hakuna mfumo wa uendeshaji ambao unakaa kati ya hypervisor na vifaa vya kompyuta, kwa hivyo jina la lebo ya bare-metal hypervisor. Inatoa usaidizi bora kwa kuwa rasilimali hazishirikiwi na mfumo wa uendeshaji wa mwenyeji.

Kwa sababu ya ufanisi wao, hypervisors za Aina ya 1 hutumiwa zaidi katika mazingira ya biashara. Wachuuzi wa hypervisor ya aina ya 1 ni pamoja na VMware Esxi na KVM.

Hii pia inachukuliwa kuwa hypervisor mwenyeji. Imewekwa juu ya mfumo wa uendeshaji wa mwenyeji na inashiriki rasilimali za msingi za maunzi na OS mwenyeji.

Vioozi vya aina ya 2 ni bora kwa mazingira madogo ya kompyuta na hutumiwa zaidi kwa majaribio ya mifumo ya uendeshaji na utafiti. Wauzaji wa hypervisor ya aina ya 2 ni pamoja na VMware Workstation Pro.

Mashine pepe huelekea kuwa kubwa kwa ukubwa ( Zinaweza kuchukua GB kadhaa ), polepole kuanza na kusimamisha na kutumia rasilimali nyingi za mfumo zinazopelekea kukwama na utendakazi polepole kutokana na rasilimali chache. Kwa hivyo, mashine ya mtandaoni inachukuliwa kuwa kubwa na inahusishwa na gharama kubwa za uendeshaji.

Vyombo

Tofauti na mashine ya kawaida, chombo hakihitaji hypervisor. Chombo hukaa juu ya seva halisi na mfumo wake wa uendeshaji na hushiriki kernel sawa na OS kati ya vitu vingine kama vile maktaba na jozi. Vyombo vingi vinaweza kuendeshwa kwa mfumo mmoja, kila kimoja kikiwa na seti yake ya programu na michakato kutoka kwa vingine. Majukwaa maarufu ya chombo ni pamoja na Docker na Podman.

Tofauti na mashine pepe, vyombo huendeshwa kwa kutengwa kabisa na mfumo wa uendeshaji wa msingi. Vyombo ni vyepesi vya kipekee - Megabaiti chache tu - huchukua nafasi kidogo, na ni rafiki kwa rasilimali. Ni rahisi kuanza na kuacha na zinaweza kushughulikia programu nyingi zaidi kuliko mashine ya mtandaoni.

Vyombo hutoa njia rahisi ya kubuni, kujaribu, na kupeleka programu kutoka kwa Kompyuta yako hadi kwa mazingira ya utayarishaji, iwe kwenye uwanja au wingu. Hapa kuna baadhi ya faida za kutumia programu zilizo na vyombo.

Kabla ya kontena, tulikuwa na mtindo wa zamani wa monolithic ambapo programu nzima inayojumuisha sehemu za mbele na nyuma ingeunganishwa kwenye kifurushi kimoja. Vyombo hufanya iwezekane kugawa programu katika vipengele vingi vya mtu binafsi vinavyoweza kuwasiliana.

Kwa njia hii, timu za ukuzaji zinaweza kushirikiana katika sehemu mbalimbali za programu mradi hakuna marekebisho makubwa yanayofanywa kuhusiana na jinsi programu zinavyoingiliana.

Hii ndio dhana ya microservices inategemea.

Ukadiriaji zaidi unamaanisha tija zaidi kwa kuwa wasanidi programu wanaweza kufanyia kazi vipengele mahususi vya programu na kutatua hitilafu kwa haraka zaidi kuliko hapo awali.

Kwa kulinganisha na mashine pepe na mazingira mengine ya kawaida ya kompyuta, kontena hutumia rasilimali chache za mfumo kwani hazijumuishi mfumo wa uendeshaji. Hii inazuia matumizi yasiyo ya lazima katika kupata seva za gharama kubwa za kuunda na kujaribu programu.

Kwa sababu ya nyayo zao ndogo, programu zilizo na vyombo hutumwa kwa urahisi kwa mazingira mengi ya kompyuta/mifumo ya uendeshaji.

Vyombo huruhusu upelekaji wa haraka na upanuzi wa programu. Pia hutoa unyumbufu unaohitajika sana wa kupeleka programu katika mazingira ya programu nyingi.

Je! Kontena Hunufaishaje Timu za DevOps?

Vyombo vina jukumu muhimu katika DevOps na haitawezekana kufikiria jinsi hali ingekuwa bila programu zilizo na kontena. Kwa hivyo, vyombo vinaleta nini kwenye meza?

Kwanza, vyombo vinashikilia usanifu wa huduma ndogo, kuruhusu vizuizi vya ujenzi vya programu nzima kutengenezwa, kutumwa na kuongezwa kwa kujitegemea. Kama ilivyoelezwa, hii inafanya ushirikiano mkubwa na upelekaji wa haraka wa programu.

Uwekaji wa vyombo pia una jukumu kubwa katika kuwezesha mabomba ya CI/CD kwa kutoa mazingira yanayodhibitiwa na thabiti ya utumaji maombi. Maktaba zote na vitegemezi vimefungwa pamoja na msimbo katika kitengo kimoja kwa uwekaji wa haraka na rahisi. Programu iliyojaribiwa itakuwa programu halisi ambayo itatumwa katika uzalishaji.

Zaidi ya hayo, vyombo huboresha usambazaji wa viraka na masasisho wakati programu inagawanywa katika huduma ndogo ndogo., kila moja katika chombo tofauti. Vyombo vya kibinafsi vinaweza kuchunguzwa, kuwekwa viraka, na kuwashwa upya bila kukatiza programu nyingine.

Shirika lolote linalotaka kufikia ukomavu katika DevOps linafaa kuzingatia kutumia uwezo wa makontena kwa uwekaji wa haraka na usio na mshono. Changamoto iko katika kujua jinsi ya kusanidi, salama, na kuzipeleka bila mshono kwenye mazingira mengi.