Kwa nini DevOps inahitajika na ni nani wataalamu wa DevOps?

Wakati maombi hayafanyi kazi, jambo la mwisho unalotaka kusikia kutoka kwa wenzako ni maneno "tatizo liko upande wako." Kwa hivyo, watumiaji wanateseka - na hawajali ni sehemu gani ya timu inayohusika na kuvunjika. Utamaduni wa DevOps uliibuka kwa usahihi ili kuleta maendeleo na usaidizi pamoja karibu na jukumu la pamoja la bidhaa ya mwisho.

Ni mazoea gani yamejumuishwa katika dhana ya DevOps na kwa nini yanahitajika? Wahandisi wa DevOps hufanya nini na wanapaswa kuwa na uwezo wa kufanya nini? Wataalamu kutoka EPAM wanajibu maswali haya na mengine: Kirill Sergeev, mhandisi wa mifumo na mwinjilisti wa DevOps, na Igor Boyko, mhandisi mkuu wa mifumo na mratibu wa mojawapo ya timu za DevOps za kampuni.

Kwa nini DevOps inahitajika na ni nani wataalamu wa DevOps?

Kwa nini DevOps inahitajika?

Hapo awali, kulikuwa na kizuizi kati ya watengenezaji na usaidizi (kinachojulikana shughuli). Inasikika kama kitendawili, lakini walikuwa na malengo tofauti na KPIs, ingawa walikuwa wakifanya kitu kimoja. Kusudi la maendeleo lilikuwa kutekeleza mahitaji ya biashara haraka iwezekanavyo na kuwaongeza kwenye bidhaa inayofanya kazi. Usaidizi ulikuwa na jukumu la kuhakikisha kuwa ombi lilifanya kazi kwa utulivu - na mabadiliko yoyote yaliweka uthabiti hatarini. Kuna mgongano wa maslahi - DevOps ilionekana kuutatua.

DevOps ni nini?

Ni swali zuri - na lenye utata: ulimwengu bado haujakubaliana juu ya hili. EPAM inaamini kuwa DevOps inachanganya teknolojia, michakato na utamaduni wa mwingiliano ndani ya timu. Uhusiano huu unalenga kuendelea kutoa thamani kwa watumiaji wa mwisho.

Kirill Sergeev: β€œWatengenezaji huandika msimbo, wanaojaribu huikagua, na wasimamizi hupeleka bidhaa ya mwisho kwa uzalishaji. Kwa muda mrefu, sehemu hizi za timu zilitawanyika kwa kiasi fulani, na kisha wazo likaibuka la kuwaunganisha kupitia mchakato wa kawaida. Hivi ndivyo mazoea ya DevOps yalionekana."

Siku ilikuja ambapo watengenezaji na wahandisi wa mfumo walipendezwa na kazi ya kila mmoja. Kizuizi kati ya uzalishaji na usaidizi kilianza kutoweka. Hivi ndivyo DevOps ilivyoibuka, ambayo inajumuisha mazoea, utamaduni na mwingiliano wa timu.

Kwa nini DevOps inahitajika na ni nani wataalamu wa DevOps?

Ni nini kiini cha utamaduni wa DevOps?

Ukweli ni kwamba jukumu la matokeo ya mwisho ni la kila mwanachama wa timu. Jambo la kuvutia zaidi na ngumu katika falsafa ya DevOps ni kuelewa kwamba mtu maalum sio tu kuwajibika kwa hatua yake mwenyewe ya kazi, lakini anajibika kwa jinsi bidhaa nzima itafanya kazi. Tatizo haliko upande wa mtu yeyote - linashirikiwa, na kila mwanachama wa timu husaidia kutatua.

Jambo muhimu zaidi katika utamaduni wa DevOps ni kutatua tatizo, sio tu kutumia mazoea ya DevOps. Aidha, mazoea haya hayatekelezwi "kwa upande wa mtu", lakini katika bidhaa nzima. Mradi hauhitaji mhandisi wa DevOps kwa kila sekunde - unahitaji suluhu kwa tatizo, na jukumu la mhandisi wa DevOps linaweza kusambazwa miongoni mwa washiriki kadhaa wa timu walio na taaluma tofauti.

Ni aina gani za mazoea ya DevOps?

Mazoea ya DevOps hufunika hatua zote za mzunguko wa maisha ya programu.

Igor Boyko: "Kesi inayofaa ni wakati tunapoanza kutumia mazoezi ya DevOps wakati wa kuanzishwa kwa mradi. Pamoja na wasanifu, tunapanga ni aina gani ya mazingira ya usanifu ambayo maombi yatakuwa nayo, ambapo itakuwa iko na jinsi ya kupima, na kuchagua jukwaa. Siku hizi, usanifu wa microservice uko katika mtindo - kwa ajili yake tunachagua mfumo wa orchestration: unahitaji kuwa na uwezo wa kusimamia kila kipengele cha maombi kando na kusasisha bila kujali wengine. Kitendo kingine ni "miundombinu kama kanuni." Hili ni jina la mbinu ambayo miundombinu ya mradi huundwa na kudhibitiwa kwa kutumia msimbo, badala ya kupitia mwingiliano wa moja kwa moja na seva.

Ifuatayo, tunaendelea kwenye hatua ya maendeleo. Moja ya mazoea makubwa hapa ni kujenga CI/CD: unahitaji kuwasaidia watengenezaji kuunganisha mabadiliko kwenye bidhaa haraka, kwa sehemu ndogo, mara nyingi zaidi na bila maumivu. CI/CD inashughulikia ukaguzi wa msimbo, kupakia bwana kwenye msingi wa msimbo, na kupeleka programu kufanya majaribio na mazingira ya uzalishaji.

Katika hatua za CI/CD, msimbo hupita kupitia milango ya ubora. Kwa usaidizi wao, wanaangalia kwamba msimbo unaotoka kwenye kituo cha kazi cha msanidi unakidhi vigezo maalum vya ubora. Jaribio la kitengo na UI huongezwa hapa. Kwa upelekaji wa haraka, usio na uchungu na unaolenga, unaweza kuchagua aina inayofaa ya uwekaji.

Wataalamu wa DevOps pia wana nafasi katika hatua ya kusaidia bidhaa iliyokamilishwa. Zinatumika kwa ufuatiliaji, maoni, usalama na kuleta mabadiliko. DevOps hutazama kazi hizi zote kwa mtazamo wa uboreshaji unaoendelea. Tunapunguza utendakazi unaojirudia na kuufanya otomatiki. Hii pia inajumuisha uhamaji, upanuzi wa programu, na usaidizi wa utendaji."

Je, ni faida gani za mazoea ya DevOps?

Iwapo tungekuwa tunaandika kitabu kuhusu mazoea ya kisasa ya DevOps, kungekuwa na pointi tatu kwenye ukurasa wa kwanza: otomatiki, kuongeza kasi ya matoleo, na maoni ya haraka kutoka kwa watumiaji.

Kirill Sergeev: "Jambo la kwanza ni automatisering. Tunaweza kubadilisha mwingiliano wote katika timu kiotomatiki: aliandika msimbo - akaitoa - akaikagua - aliisakinisha - maoni yaliyokusanywa - kurudishwa mwanzoni. Yote hii ni moja kwa moja.

Ya pili ni kuongeza kasi ya kutolewa na hata kurahisisha maendeleo. Daima ni muhimu kwa mteja kwamba bidhaa inaingia sokoni haraka iwezekanavyo na kuanza kutoa faida mapema kuliko analogi za washindani. Mchakato wa utoaji wa bidhaa unaweza kuboreshwa bila mwisho: kupunguza muda, kuongeza alama za udhibiti wa ziada, kuboresha ufuatiliaji.

Tatu ni kuongeza kasi ya maoni ya mtumiaji. Ikiwa ana maoni, tunaweza kufanya marekebisho mara moja na kusasisha programu mara moja.

Kwa nini DevOps inahitajika na ni nani wataalamu wa DevOps?

Mawazo ya "mhandisi wa mifumo", "mhandisi wa ujenzi" na "mhandisi wa DevOps" yanahusianaje?

Zinaingiliana, lakini ni za maeneo tofauti kidogo.

Mhandisi wa mifumo katika EPAM ni nafasi. Wanakuja katika viwango tofauti: kutoka kwa mdogo hadi mtaalamu mkuu.

Mhandisi wa ujenzi ni zaidi ya jukumu ambalo linaweza kufanywa kwenye mradi. Sasa hivi ndivyo watu wanaohusika na CI/CD wanaitwa.

Mhandisi wa DevOps ni mtaalamu ambaye hutekeleza mazoea ya DevOps kwenye mradi.

Tukijumlisha yote, tunapata kitu kama hiki: mtu aliye katika nafasi ya mhandisi wa mifumo anachukua jukumu la mhandisi wa ujenzi kwenye mradi na anahusika katika utekelezaji wa mazoea ya DevOps huko.

Mhandisi wa DevOps hufanya nini hasa?

Wahandisi wa DevOps huweka pamoja vipande vyote vinavyounda mradi. Wanajua mahususi ya kazi ya waandaaji programu, wanaojaribu, wasimamizi wa mfumo na kusaidia kurahisisha kazi zao. Wanaelewa mahitaji na mahitaji ya biashara, jukumu lake katika mchakato wa maendeleo - na kujenga mchakato kwa kuzingatia maslahi ya mteja.

Tulizungumza mengi juu ya otomatiki - hii ndio ambayo wahandisi wa DevOps hushughulika nayo kwanza kabisa. Hii ni hatua kubwa sana, ambayo, kati ya mambo mengine, inajumuisha kuandaa mazingira.

Kirill Sergeev: β€œKabla ya kutekeleza masasisho kwenye bidhaa, yanahitaji kujaribiwa katika mazingira ya wahusika wengine. Imetayarishwa na wahandisi wa DevOps. Wanasisitiza utamaduni wa DevOps kwenye mradi kwa ujumla: wanaanzisha mazoea ya DevOps katika tabaka zote za miradi yao. Kanuni hizi tatu: otomatiki, kurahisisha, kuongeza kasi - zinaleta popote zinapoweza kufikia."

Je, mhandisi wa DevOps anapaswa kujua nini?

Kwa kiasi kikubwa, lazima awe na ujuzi kutoka kwa maeneo tofauti: programu, kufanya kazi na mifumo ya uendeshaji, hifadhidata, mifumo ya kusanyiko na usanidi. Hizi zinakamilishwa na uwezo wa kufanya kazi na miundombinu ya wingu, ochestration na mifumo ya ufuatiliaji.

1. Lugha za programu

Wahandisi wa DevOps wanajua lugha kadhaa za kimsingi za kiotomatiki na wanaweza, kwa mfano, kumwambia programu: "Vipi kuhusu kusakinisha nambari sio kwa mkono, lakini kwa kutumia hati yetu, ambayo hubadilisha kila kitu kiotomatiki? Tutatayarisha faili ya usanidi kwa ajili yake, itakuwa rahisi kwako na sisi kusoma, na tutaweza kuibadilisha wakati wowote. Pia tutaona ni nani, lini na kwa nini atafanya mabadiliko hayo.”

Mhandisi wa DevOps anaweza kujifunza lugha moja au zaidi kati ya hizi: Python, Groovy, Bash, Powershell, Ruby, Go. Sio lazima kuwajua kwa kiwango cha kina - misingi ya syntax, kanuni za OOP, na uwezo wa kuandika maandiko rahisi kwa automatisering ni ya kutosha.

2. Mifumo ya uendeshaji

Mhandisi wa DevOps lazima aelewe bidhaa itasakinishwa kwenye seva gani, itatumika katika mazingira gani, na itatumia huduma gani. Unaweza kuchagua utaalam katika Windows au familia ya Linux.

3. Mifumo ya udhibiti wa toleo

Bila ujuzi wa mfumo wa udhibiti wa toleo, mhandisi wa DevOps hayupo popote. Git ni moja ya mifumo maarufu zaidi kwa sasa.

4. Watoa huduma za wingu

AWS, Google, Azure - haswa ikiwa tunazungumza juu ya mwelekeo wa Windows.

Kirill Sergeev: β€œWatoa huduma za wingu hutupatia seva pepe zinazotoshea kikamilifu kwenye CI/CD.

Kufunga seva kumi za kimwili kunahitaji uendeshaji wa mia moja wa mwongozo. Kila seva lazima izinduliwe kwa mikono, imewekwa na kusanidi mfumo wa uendeshaji unaohitajika, kusakinisha programu yetu kwenye seva hizi kumi, na kisha kukaguliwa mara mbili kila kitu mara kumi. Huduma za wingu hubadilisha utaratibu huu kwa njia kumi za msimbo, na mhandisi mzuri wa DevOps anapaswa kuwa na uwezo wa kufanya kazi nazo. Hii inaokoa muda, juhudi na pesa - kwa mteja na kwa kampuni.

5. Mifumo ya okestration: Docker na Kubernetes

Kirill Sergeev: "Seva pepe zimegawanywa katika vyombo, katika kila moja ambayo tunaweza kusakinisha programu yetu. Wakati kuna vyombo vingi, unahitaji kuvidhibiti: washa moja, zima nyingine, fanya nakala rudufu mahali pengine. Hii inakuwa ngumu sana na inahitaji mfumo wa orchestration.

Hapo awali, kila programu ilishughulikiwa na seva tofauti - mabadiliko yoyote katika uendeshaji wake yanaweza kuathiri utumishi wa programu. Shukrani kwa vyombo, programu hutengwa na kukimbia kando - kila moja kwa mashine yake ya mtandaoni. Ikiwa kushindwa hutokea, hakuna haja ya kupoteza muda kutafuta sababu. Ni rahisi kuharibu chombo cha zamani na kuongeza kipya.

6. Mifumo ya usanidi: Chef, Ansible, Puppet

Wakati unahitaji kudumisha kundi zima la seva, lazima ufanye shughuli nyingi za aina moja. Ni ndefu na ngumu, na kazi ya mwongozo pia huongeza nafasi ya makosa. Hapa ndipo mifumo ya usanidi inakuja kuwaokoa. Kwa msaada wao, huunda hati ambayo ni rahisi kusoma kwa watengenezaji programu, wahandisi wa DevOps, na wasimamizi wa mfumo. Hati hii husaidia kutekeleza shughuli sawa kwenye seva moja kwa moja. Hii inapunguza shughuli za mwongozo (na kwa hivyo makosa).

Je, mhandisi wa DevOps anaweza kujenga kazi ya aina gani?

Unaweza kuendeleza wote kwa usawa na kwa wima.

Igor Boyko: "Kwa mtazamo wa maendeleo ya mlalo, wahandisi wa DevOps sasa wana matarajio mapana zaidi. Kila kitu kinabadilika kila wakati, na unaweza kujenga ujuzi katika maeneo mbalimbali: kutoka kwa mifumo ya udhibiti wa toleo hadi ufuatiliaji, kutoka kwa usimamizi wa usanidi hadi hifadhidata.

Unaweza kuwa mbunifu wa mfumo ikiwa mfanyakazi ana nia ya kuelewa jinsi programu inavyofanya kazi katika hatua zote za mzunguko wa maisha - kutoka kwa maendeleo hadi usaidizi.

Jinsi ya kuwa mhandisi wa DevOps?

  1. Soma The Phoenix Project na DevOps Handbook. Hizi ndizo nguzo halisi za falsafa ya DevOps, na ya kwanza ikiwa ni kazi ya kubuni.
  2. Jifunze teknolojia kutoka kwenye orodha iliyo hapo juu: peke yako au kupitia kozi za mtandaoni.
  3. Jiunge kama mhandisi wa DevOps kwa mradi huria.
  4. Fanya mazoezi na utoe mazoea ya DevOps kwenye miradi yako ya kibinafsi na ya kazini.

Chanzo: mapenzi.com

Kuongeza maoni