Bakit kailangan ang DevOps at sino ang mga espesyalista sa DevOps?

Kapag ang isang application ay hindi gumana, ang huling bagay na gusto mong marinig mula sa iyong mga kasamahan ay ang pariralang "ang problema ay nasa iyong panig." Bilang resulta, nagdurusa ang mga user – at wala silang pakialam kung aling bahagi ng team ang may pananagutan sa pagkasira. Eksaktong lumitaw ang kultura ng DevOps upang pagsama-samahin ang pag-unlad at suporta sa isang ibinahaging responsibilidad para sa panghuling produkto.

Anong mga kasanayan ang kasama sa konsepto ng DevOps at bakit kailangan ang mga ito? Ano ang ginagawa ng mga inhinyero ng DevOps at ano ang dapat nilang magawa? Sinasagot ng mga eksperto mula sa EPAM ang mga ito at ang iba pang mga tanong: Kirill Sergeev, systems engineer at DevOps evangelist, at Igor Boyko, nangungunang systems engineer at coordinator ng isa sa mga DevOps team ng kumpanya.

Bakit kailangan ang DevOps at sino ang mga espesyalista sa DevOps?

Bakit kailangan ang DevOps?

Dati, may hadlang sa pagitan ng mga developer at suporta (tinatawag na mga operasyon). Parang kabalintunaan, ngunit magkaiba sila ng mga layunin at KPI, bagaman pareho ang kanilang ginagawa. Ang layunin ng pag-unlad ay upang ipatupad ang mga kinakailangan sa negosyo sa lalong madaling panahon at idagdag ang mga ito sa isang gumaganang produkto. Ang suporta ay responsable para sa pagtiyak na ang application ay gumagana nang matatag - at anumang mga pagbabago ay naglalagay sa katatagan sa panganib. Mayroong salungatan ng interes - lumitaw ang DevOps upang lutasin ito.

Ano ang DevOps?

Ito ay isang magandang tanong - at isang kontrobersyal: ang mundo ay hindi pa sa wakas ay sumang-ayon dito. Naniniwala ang EPAM na pinagsasama ng DevOps ang mga teknolohiya, proseso at kultura ng pakikipag-ugnayan sa loob ng isang team. Nilalayon ng asosasyong ito na patuloy na maghatid ng halaga sa mga end user.

Kirill Sergeev: β€œAng mga developer ay sumusulat ng code, sinusuri ito ng mga tagasubok, at inilalagay ng mga administrator ang panghuling produkto sa produksyon. Sa loob ng mahabang panahon, ang mga bahaging ito ng pangkat ay medyo nakakalat, at pagkatapos ay lumitaw ang ideya na pagsamahin sila sa pamamagitan ng isang karaniwang proseso. Ganito lumabas ang mga kasanayan sa DevOps.”

Dumating ang araw na naging interesado ang mga developer at system engineer sa trabaho ng isa't isa. Ang hadlang sa pagitan ng produksyon at suporta ay nagsimulang mawala. Ito ay kung paano lumitaw ang DevOps, na kinabibilangan ng mga kasanayan, kultura at pakikipag-ugnayan ng team.

Bakit kailangan ang DevOps at sino ang mga espesyalista sa DevOps?

Ano ang kakanyahan ng kultura ng DevOps?

Ang katotohanan ay ang responsibilidad para sa huling resulta ay nakasalalay sa bawat miyembro ng koponan. Ang pinaka-kawili-wili at mahirap na bagay sa pilosopiya ng DevOps ay upang maunawaan na ang isang partikular na tao ay hindi lamang responsable para sa kanyang sariling yugto ng trabaho, ngunit responsable para sa kung paano gagana ang buong produkto. Ang problema ay hindi nasa panig ng sinuman - ito ay ibinabahagi, at ang bawat miyembro ng koponan ay tumutulong upang malutas ito.

Ang pinakamahalagang bagay sa isang kultura ng DevOps ay upang malutas ang problema, hindi lamang maglapat ng mga kasanayan sa DevOps. Bukod dito, ang mga kasanayang ito ay hindi ipinatupad "sa panig ng isang tao", ngunit sa buong produkto. Ang isang proyekto ay hindi nangangailangan ng isang DevOps engineer per se - ito ay nangangailangan ng isang solusyon sa isang problema, at ang papel ng isang DevOps engineer ay maaaring ipamahagi sa ilang mga miyembro ng koponan na may iba't ibang mga espesyalisasyon.

Ano ang mga uri ng mga kasanayan sa DevOps?

Saklaw ng mga kasanayan sa DevOps ang lahat ng yugto ng ikot ng buhay ng software.

Igor Boyko: β€œAng pinakamainam na kaso ay kapag sinimulan nating gamitin ang mga kasanayan sa DevOps sa pagsisimula ng proyekto. Kasama ang mga arkitekto, pinaplano namin kung anong uri ng landscape ng arkitektura ang mayroon ang application, kung saan ito matatagpuan at kung paano i-scale, at pumili ng isang platform. Sa ngayon, ang arkitektura ng microservice ay nasa uso - para dito pumili kami ng isang sistema ng orkestrasyon: kailangan mong mapangasiwaan ang bawat elemento ng application nang hiwalay at i-update ito nang hiwalay sa iba. Ang isa pang kasanayan ay "imprastraktura bilang code." Ito ang pangalan para sa isang diskarte kung saan ang imprastraktura ng proyekto ay nilikha at pinamamahalaan gamit ang code, sa halip na sa pamamagitan ng direktang pakikipag-ugnayan sa mga server.

Susunod, lumipat tayo sa yugto ng pag-unlad. Isa sa mga pinakamalaking kasanayan dito ay ang pagbuo ng CI/CD: kailangan mong tulungan ang mga developer na isama ang mga pagbabago sa produkto nang mabilis, sa maliliit na bahagi, nang mas madalas at walang sakit. Sinasaklaw ng CI/CD ang pagsusuri ng code, pag-upload ng master sa code base, at pag-deploy ng application sa pagsubok at mga kapaligiran ng produksyon.

Sa mga yugto ng CI/CD, ang code ay dumadaan sa mga de-kalidad na gate. Sa tulong nila, tinitingnan nila na ang code na lumalabas sa workstation ng developer ay nakakatugon sa tinukoy na pamantayan sa kalidad. Ang pagsubok sa unit at UI ay idinagdag dito. Para sa mabilis, walang sakit at nakatutok na deployment ng produkto, maaari mong piliin ang naaangkop na uri ng deployment.

Ang mga practitioner ng DevOps ay mayroon ding lugar sa yugto ng pagsuporta sa tapos na produkto. Ginagamit ang mga ito para sa pagsubaybay, feedback, seguridad, at pagpapakilala ng mga pagbabago. Tinitingnan ng DevOps ang lahat ng mga gawaing ito mula sa isang patuloy na pananaw sa pagpapabuti. Pinaliit namin ang mga paulit-ulit na operasyon at ino-automate ang mga ito. Kasama rin dito ang mga paglilipat, pagpapalawak ng application, at suporta sa pagganap.”

Ano ang mga pakinabang ng mga kasanayan sa DevOps?

Kung nagsusulat kami ng isang aklat-aralin sa mga modernong kasanayan sa DevOps, magkakaroon ng tatlong puntos sa unang pahina: automation, pagpapabilis ng mga release, at mabilis na feedback mula sa mga user.

Kirill Sergeev: β€œAng unang bagay ay automation. Maaari naming i-automate ang lahat ng pakikipag-ugnayan sa team: isinulat ang code - inilunsad ito - sinuri ito - na-install ito - nakolekta ang feedback - ibinalik sa simula. Ang lahat ng ito ay awtomatiko.

Ang pangalawa ay ang pagpapabilis sa pagpapalabas at pagpapasimple pa ng pag-unlad. Palaging mahalaga para sa customer na ang produkto ay pumasok sa merkado sa lalong madaling panahon at magsimulang magbigay ng mga benepisyo nang mas maaga kaysa sa mga analogue ng mga kakumpitensya. Ang proseso ng paghahatid ng produkto ay maaaring mapabuti nang walang hanggan: bawasan ang oras, magdagdag ng mga karagdagang marka ng kontrol, pagbutihin ang pagsubaybay.

Pangatlo ay ang pagpapabilis ng feedback ng user. Kung may mga komento siya, maaari naming agad na gumawa ng mga pagsasaayos at i-update kaagad ang aplikasyon.

Bakit kailangan ang DevOps at sino ang mga espesyalista sa DevOps?

Paano nauugnay ang mga konsepto ng "system engineer", "build engineer" at "DevOps engineer"?

Nagsasapawan sila, ngunit nabibilang sa bahagyang magkakaibang mga lugar.

Ang systems engineer sa EPAM ay isang posisyon. Dumating sila sa iba't ibang antas: mula sa junior hanggang sa punong espesyalista.

Ang isang build engineer ay higit pa sa isang tungkulin na maaaring gawin sa isang proyekto. Ngayon ito ang tawag sa mga taong responsable para sa CI/CD.

Ang isang DevOps engineer ay isang espesyalista na nagpapatupad ng mga kasanayan sa DevOps sa isang proyekto.

Kung susumahin natin ang lahat, makakakuha tayo ng ganito: ang isang tao sa posisyon ng isang system engineer ay gumaganap ng papel ng isang build engineer sa isang proyekto at kasangkot sa pagpapatupad ng mga kasanayan sa DevOps doon.

Ano nga ba ang ginagawa ng isang DevOps engineer?

Pinagsama-sama ng mga inhinyero ng DevOps ang lahat ng mga piraso na bumubuo sa isang proyekto. Alam nila ang mga detalye ng gawain ng mga programmer, tester, system administrator at tumutulong na gawing simple ang kanilang trabaho. Naiintindihan nila ang mga pangangailangan at pangangailangan ng negosyo, ang papel nito sa proseso ng pag-unlad - at binuo ang proseso na isinasaalang-alang ang mga interes ng customer.

Marami kaming napag-usapan tungkol sa automation - ito ang una at pangunahin sa mga inhinyero ng DevOps. Ito ay isang napakalaking punto, na, bukod sa iba pang mga bagay, kasama ang paghahanda ng kapaligiran.

Kirill Sergeev: β€œBago ipatupad ang mga update sa produkto, kailangan nilang masuri sa isang third-party na kapaligiran. Inihanda ito ng mga inhinyero ng DevOps. Nagtanim sila ng kultura ng DevOps sa proyekto sa kabuuan: ipinakilala nila ang mga kasanayan sa DevOps sa lahat ng layer ng kanilang mga proyekto. Ang tatlong prinsipyong ito: automation, simplification, acceleration - dinadala nila saanman nila maabot."

Ano ang dapat malaman ng isang DevOps engineer?

Sa pangkalahatan, dapat siyang magkaroon ng kaalaman mula sa iba't ibang lugar: programming, nagtatrabaho sa mga operating system, database, assembly at configuration system. Ang mga ito ay kinukumpleto ng kakayahang magtrabaho sa imprastraktura ng ulap, orkestrasyon at mga sistema ng pagsubaybay.

1. Mga programming language

Alam ng mga inhinyero ng DevOps ang ilang mga pangunahing wika para sa automation at maaari, halimbawa, sabihin sa isang programmer: "Paano kung i-install mo ang code hindi sa pamamagitan ng kamay, ngunit gamit ang aming script, na awtomatiko ang lahat? Maghahanda kami ng isang config file para dito, magiging maginhawa para sa iyo at sa amin na magbasa, at magagawa naming baguhin ito anumang oras. Makikita rin natin kung sino, kailan at bakit gagawa ng mga pagbabago dito.”

Ang isang DevOps engineer ay maaaring matuto ng isa o higit pa sa mga wikang ito: Python, Groovy, Bash, Powershell, Ruby, Go. Hindi kinakailangang malaman ang mga ito sa malalim na antas - sapat na ang mga pangunahing kaalaman sa syntax, mga prinsipyo ng OOP, at kakayahang magsulat ng mga simpleng script para sa automation.

2. Mga operating system

Dapat na maunawaan ng isang DevOps engineer kung saang server mai-install ang produkto, sa anong kapaligiran ito tatakbo, at kung anong mga serbisyo ang makikipag-ugnayan dito. Maaari mong piliing magpakadalubhasa sa Windows o sa pamilya ng Linux.

3. Mga sistema ng kontrol sa bersyon

Kung walang kaalaman sa isang version control system, ang isang DevOps engineer ay wala kahit saan. Ang Git ay isa sa mga pinakasikat na system sa ngayon.

4. Mga tagapagbigay ng ulap

AWS, Google, Azure - lalo na kung pinag-uusapan natin ang direksyon ng Windows.

Kirill Sergeev: β€œAng mga tagapagbigay ng Cloud ay nagbibigay sa amin ng mga virtual na server na perpektong akma sa CI/CD.

Ang pag-install ng sampung pisikal na server ay nangangailangan ng humigit-kumulang isang daang manu-manong operasyon. Ang bawat server ay dapat na manu-manong ilunsad, i-install at i-configure ang kinakailangang operating system, i-install ang aming application sa sampung server na ito, at pagkatapos ay i-double check ang lahat ng sampung beses. Pinapalitan ng mga serbisyo ng cloud ang pamamaraang ito ng sampung linya ng code, at ang isang mahusay na engineer ng DevOps ay dapat na makapagpatakbo sa kanila. Makakatipid ito ng oras, pagsisikap at pera – kapwa para sa customer at para sa kumpanya.”

5. Mga sistema ng orkestrasyon: Docker at Kubernetes

Kirill Sergeev: "Ang mga virtual na server ay nahahati sa mga lalagyan, kung saan maaari naming i-install ang aming application. Kapag maraming container, kailangan mong pamahalaan ang mga ito: i-on ang isa, i-off ang isa pa, gumawa ng mga backup sa isang lugar. Ito ay nagiging medyo kumplikado at nangangailangan ng isang sistema ng orkestrasyon.

Noong nakaraan, ang bawat application ay pinangangasiwaan ng isang hiwalay na server - anumang mga pagbabago sa pagpapatakbo nito ay maaaring makaapekto sa pagiging madaling magamit ng application. Salamat sa mga lalagyan, ang mga application ay nagiging isolated at tumatakbo nang hiwalay - bawat isa sa sarili nitong virtual machine. Kung mangyari ang isang pagkabigo, hindi na kailangang mag-aksaya ng oras sa paghahanap para sa dahilan. Mas madaling sirain ang lumang lalagyan at magdagdag ng bago."

6. Configuration system: Chef, Ansible, Puppet

Kapag kailangan mong mapanatili ang isang buong fleet ng mga server, kailangan mong gawin ang maraming parehong uri ng mga operasyon. Ito ay mahaba at mahirap, at ang manu-manong trabaho ay nagdaragdag din ng posibilidad ng pagkakamali. Dito sumagip ang mga configuration system. Sa tulong nila, gumagawa sila ng script na madaling basahin para sa mga programmer, DevOps engineer, at system administrator. Nakakatulong ang script na ito na awtomatikong magsagawa ng parehong mga operasyon sa mga server. Binabawasan nito ang mga manu-manong operasyon (at samakatuwid ay mga error).

Anong uri ng karera ang maaaring itayo ng isang DevOps engineer?

Maaari kang bumuo ng parehong pahalang at patayo.

Igor Boyko: "Mula sa punto ng view ng pahalang na pag-unlad, ang mga inhinyero ng DevOps ay mayroon na ngayong pinakamalawak na mga prospect. Ang lahat ay patuloy na nagbabago, at maaari kang bumuo ng mga kasanayan sa iba't ibang mga lugar: mula sa mga version control system hanggang sa pagsubaybay, mula sa configuration management hanggang sa mga database.

Maaari kang maging isang arkitekto ng system kung interesado ang isang empleyado sa pag-unawa kung paano gumagana ang isang application sa lahat ng yugto ng ikot ng buhay nito - mula sa pag-unlad hanggang sa suporta."

Paano maging isang DevOps engineer?

  1. Basahin ang The Phoenix Project at DevOps Handbook. Ito ang mga tunay na haligi ng pilosopiya ng DevOps, na ang una ay isang gawa ng fiction.
  2. Matuto ng mga teknolohiya mula sa listahan sa itaas: sa iyong sarili o sa pamamagitan ng mga online na kurso.
  3. Sumali bilang isang DevOps engineer para sa isang open source na proyekto.
  4. Magsanay at mag-alok ng mga kasanayan sa DevOps sa iyong personal at mga proyekto sa trabaho.

Pinagmulan: www.habr.com

Magdagdag ng komento