LFCA: Jifunze Dhana za Msingi za DevOps - Sehemu ya 21


DevOps imekuwa mada inayovuma kwa muda mrefu sasa na imeweza kuvutia umakini wa wataalamu wa teknolojia na biashara sawa. Kama mwanzaji, inaweza kuwa changamoto kuzungusha kichwa chako kwenye dhana ya DevOps, na katika mada hii, tutafafanua dhana za kimsingi za neno hili la mtandaoni.

Kuanza, DevOps ni portmanteau ya maneno mawili: Maendeleo na Uendeshaji. Ni seti ya mazoezi na zana zinazokuza ushirikiano kati ya timu za maendeleo (Devs) na uendeshaji (Ops). Lengo la DevOps ni kurahisisha mzunguko wa maisha wa uundaji wa programu, kupunguza viwango vya kushindwa, kuongeza kasi ya utumaji, na kufikia programu ya ubora wa juu.

Ili kupata uelewa mzuri zaidi wa DevOps katika mazingira ya kisasa ya Teknolojia ya Habari na Mawasiliano, hebu tuchunguze jinsi muundo wa utumiaji ulivyokuwa kabla ya ujio wa DevOps.

Mazoezi ya Jadi ya IT

Kabla ya DevOps, timu za maendeleo na wahandisi wa QA walitumia modeli ya kawaida ya maporomoko ya maji. Mazingira ya kufanya kazi kwa kiasi kikubwa yamefungwa na majaribio na utumaji maombi ulifanyika kwa kutengwa kabisa. Hii ilisababisha mwingiliano wa wajibu, mapungufu, ucheleweshaji wa maoni, na uzembe mwingine ambao ulihitaji muda wa ziada ili kukamilisha mradi. Maoni machache na yaliyocheleweshwa yalimaanisha kuwa ubora wa programu haukukaguliwa kikamilifu hadi awamu ya mwisho ya usanidi.

Zaidi ya hayo, uwekaji wa msimbo kwa mikono ulisababishwa na makosa ya kibinadamu na kwa hivyo ulidai muda zaidi katika utatuzi wa programu. Pia, timu tofauti zilikuwa na ratiba mbalimbali za kukamilisha kazi zao na haikuwa kawaida kwa ratiba kukosa usawazishaji na kusababisha kucheleweshwa zaidi katika kufikia bidhaa ya mwisho.

Wazo la DevOps lilibuniwa wakati fulani kati ya 2007 na 2010 na watengenezaji wawili: Andrew Shafer na Patrick Debois. Tangu kuanzishwa kwake, Imekuza ushirikiano mzuri kati ya utendakazi na timu za ukuzaji katika kila hatua ya mzunguko wa maisha wa ukuzaji wa programu. Hii ilitangaza dhana mpya kama vile Ujumuishaji Unaoendelea ( CI ) & Uwasilishaji Unaoendelea ( CD ) na nyingine nyingi ambazo huchangia uwasilishaji wa haraka wa programu.

DevOps Model na Mazoezi

DevOps sio tu kuhusu ushirikiano na kuwa na mawazo sahihi kuelekea kutimiza lengo. Inajumuisha mbinu bora ambazo zinalenga kusaidia kutoa programu bora na iliyo tayari sokoni ndani ya muda mfupi iwezekanavyo. Wacha tuangalie baadhi ya mazoea haya bora ambayo yatakusaidia kuongeza ufanisi na uwasilishaji wa haraka wa nambari.

Ujumuishaji Unaoendelea ni mazoezi ya ukuzaji programu ambapo wasanidi programu huunganisha mabadiliko ya msimbo kuwa hazina moja kuu. Baada ya hapo, majaribio ya kiotomatiki na miundo inatekelezwa kwenye msimbo. Lengo la Muunganisho Unaoendelea ni kuharakisha utatuzi wa programu, kupunguza muda unaochukuliwa ili kutoa masasisho mapya ya programu, na kuboresha ubora wa programu.

Uwasilishaji Unaoendelea (CD) bado ni mazoezi mengine ambapo mabadiliko ya msimbo yanaundwa kiotomatiki, na kutumwa kwa majaribio ya nguvu. Baadaye, majaribio ya kiotomatiki yanatekelezwa dhidi ya msimbo uliotumwa ili kuruhusu wasanidi programu kutambua na kurekebisha hitilafu. Kwa kawaida, msimbo huathiriwa hatua kwa hatua na mazingira mengi ya majaribio ambapo kupitia utaratibu wa kawaida wa kiotomatiki, msimbo hupata alama ya juu zaidi ya ubora.

Zana maarufu za CI/CD ni pamoja na Jenkins, Travis CI, Circle CI, Azure DevOps, na AWS Code build.

Lengo la majaribio ya mara kwa mara ni kutambua hitilafu na hatari zinazoweza kutokea katika hatua za awali za mzunguko wa maisha wa uundaji wa programu ili kupunguza makosa ambayo yanaweza kujitokeza katika bidhaa ya mwisho. Msimbo unapofeli majaribio makali, kwa kawaida hurejeshwa kwa msanidi programu ili kufanyiwa marekebisho kabla ya kutumwa kwa idara ya Uhakikisho wa Ubora kwa tathmini na majaribio ya utendakazi. Zana za majaribio zinazoendelea zinazotumiwa sana ni pamoja na Travis na Selenium.

Kama ungetarajia, programu na miundombinu ya msingi zinahitaji ufuatiliaji unaoendelea ili kuangalia utambulisho wao wa utendaji hitilafu au kasoro zozote, na kuhakikisha utiifu wa viwango mbalimbali vya sekta. Aina mbalimbali za vipimo hufuatiliwa ikiwa ni pamoja na:

  • Kumbukumbu na matumizi ya CPU
  • Matumizi ya nafasi ya diski
  • Matumizi ya Bandwidth
  • Maingiliano ya wateja

Kwa kufuatilia na kuchanganua data na kumbukumbu zinazozalishwa na programu, wasanidi programu wanaweza kupata maarifa kwa urahisi kuhusu jinsi vipengele au usanidi unavyoathiri watumiaji. Zaidi ya hayo, arifa za kusanidi zitasaidia katika utambuzi wa makosa au mabadiliko yasiyohitajika kila hatua ya njia. Hatimaye, ufuatiliaji unaoendelea huhakikisha upatikanaji wa juu wa programu na hutia imani kuwa mambo yanafanya kazi jinsi inavyotarajiwa.

Zana maarufu za ufuatiliaji ni pamoja na Prometheus, Netdata kutaja chache.

Kwa kifupi kama IaC, Miundombinu kama Kanuni inafafanuliwa kuwa uwekaji na udhibiti wa rasilimali kama vile seva pepe, na viambatanisho vya upakiaji kwa kutumia faili za usanidi zinazoweza kusomeka na mashine tofauti na zana za usanidi zinazoingiliana. Hili ni muhimu sana katika mazingira ya Wingu kama vile AWS ambapo unaweza kusokota matukio kwa urahisi kwa kufafanua maelezo ya mfano katika faili ya usanidi na zana za kutumia kama vile Terraform ili kupeleka rasilimali.

Kwa mfano, Amazon AWS hutoa API zinazoruhusu watumiaji kuingiliana kiprogramu na jukwaa la Wingu kutoka kwa mstari wa amri. Hii hurahisisha upelekaji wa haraka wa rasilimali kwa kuondoa michakato ya mikono na ulegevu. Kwa ufupi, IaC hupata kazi zaidi kufanywa ndani ya muda mfupi.

Usanifu wa huduma ndogo ni pale ambapo programu moja ni muunganisho au muunganisho wa huduma mbalimbali ndogo zilizounganishwa kwa urahisi. Kila huduma huendeshwa kivyake na huwasiliana na programu zingine kwa kutumia API za HTTP. Huduma ndogo zinaweza kutumwa kama kikundi cha huduma au huduma moja

Usanifu wa Microservices ni tofauti sana na usanifu wa jadi wa monolithic. Katika usanifu wa kitamaduni, programu tumizi zina daraja moja na vipengee vyote, pamoja na msimbo na UI, vimeunganishwa katika programu moja.

Huduma ndogo huwezesha uwekaji huru na usimamizi wa rasilimali. Pia huhakikisha upatikanaji wa juu kwa kuzuia hatua moja ya kushindwa. programu moja inapoacha kufanya kazi, iliyobaki itaendelea kufanya kazi.

Manufaa ya DevOps Model

Baada ya kuangalia mbinu bora za DevOps, hebu sasa tuzingatie faida za kutumia muundo wa DevOps.

Ushirikiano kati ya timu za maendeleo na uendeshaji hutafsiriwa kuwa uwajibikaji wa pamoja, ambao hatimaye huongeza tija na kukuza ushirikiano wa timu.

Ushirikiano pia huwezesha timu kutatua kwa urahisi msimbo katika kila hatua kabla ya kufikia awamu ya mwisho. Hii hutoa programu ya ubora wa juu na tayari soko.

Usambazaji wa programu umeratibiwa zaidi na haraka zaidi kutokana na zana za otomatiki ambazo DevOps hutoa (kama vile Ansible, Chef, na Puppet) & ujumuishaji wa hali ya juu unaoendelea (CI).

Kwa kuwa ujuzi wa bidhaa umeenea katika idara mbalimbali, kuna lengo na maono wazi kuhusu bidhaa, ikitafsiriwa kuwa maamuzi bora katika kila hatua ya maendeleo.

Imani iliyokita mizizi kwamba timu za maendeleo na uendeshaji lazima zifanye kazi kando kila wakati imepitwa na wakati na dosari. Falsafa ya siled bado inaweza kuwa hai katika baadhi ya viwanda, lakini hii imesababisha kutokuwepo kwa ufanisi njiani.

DevOps inatafuta kuunganisha timu za maendeleo na uendeshaji na kukuza mabadiliko ya kitamaduni kutoka kwa njia ya zamani ya kufanya kazi katika silos hadi kufanya kazi kwa sanjari ili kupunguza makosa katika msimbo, kuboresha ubora wa programu, kuharakisha nyakati za uwasilishaji na kuongeza tija kwa ujumla. Mwishowe mtumiaji wa mwisho huishia na bidhaa ya hali ya juu kwa wakati ufaao.