Zergatik behar da DevOps eta nor dira DevOps espezialistak?

Aplikazio batek funtzionatzen ez duenean, zure lankideengandik entzun nahi duzun azken gauza "arazoa zure alde dago" esaldia da. Ondorioz, erabiltzaileek sufritzen dute, eta berdin zaie matxuraren arduraduna zein zati den. DevOps kultura, hain zuzen, garapena eta laguntza bateratzeko sortu zen amaierako produktuaren erantzukizun partekatu baten inguruan.

Zer praktika sartzen dira DevOps kontzeptuan eta zergatik behar dira? Zer egiten dute DevOps ingeniariek eta zer egin behar dute? EPAM-eko adituek galdera hauei eta beste batzuei erantzuten diete: Kirill Sergeev, sistemen ingeniari eta DevOps ebanjelaria, eta Igor Boyko, sistema ingeniari nagusia eta konpainiako DevOps taldeetako baten koordinatzailea.

Zergatik behar da DevOps eta nor dira DevOps espezialistak?

Zergatik behar da DevOps?

Aurretik, garatzaileen eta euskarriaren arteko oztopoa zegoen (eragiketak deiturikoak). Paradoxikoa dirudi, baina helburu eta KPI desberdinak zituzten, nahiz eta gauza bera egiten ari ziren. Garapenaren helburua negozio-eskakizunak ahalik eta azkarren ezartzea eta lan-produktu batean gehitzea zen. Aplikazioak egonkor funtzionatzen zuela ziurtatzeaz arduratzen zen euskarria, eta edozein aldaketak egonkortasuna arriskuan jartzen zuen. Interes gatazka bat dago - DevOps agertu zen hori konpontzeko.

Zer da DevOps?

Galdera ona da, eta polemikoa: mundua oraindik ez da azkenean ados jarri honetan. EPAMek uste du DevOps-ek teknologiak, prozesuak eta interakzio-kultura uztartzen dituela talde baten barruan. Elkarte honek azken erabiltzaileei etengabeko balioa ematea du helburu.

Kiril Sergeev: "Garatzaileek kodea idazten dute, probatzaileek berrikusten dute eta administratzaileek azken produktua ekoizpenera zabaltzen dute. Denbora luzez, taldeko atal horiek sakabanatuta egon ziren, eta orduan sortu zen prozesu komun baten bidez elkartzeko ideia. Horrela agertu ziren DevOps praktikak”.

Garatzaileek eta sistema ingeniariek elkarren lanarekiko interesa piztu zuten eguna iritsi zen. Ekoizpenaren eta laguntzaren arteko oztopoa desagertzen hasi zen. Horrela sortu zen DevOps, praktikak, kultura eta talde-interakzioa barne hartzen dituena.

Zergatik behar da DevOps eta nor dira DevOps espezialistak?

Zein da DevOps kulturaren funtsa?

Kontua da azken emaitzaren ardura taldekide bakoitzarena dela. DevOps filosofiaren gauzarik interesgarriena eta zailena ulertzea da pertsona zehatz bat ez dela bere lanaren etaparen arduraduna bakarrik, baizik eta produktu osoa nola funtzionatuko duen. Arazoa ez dago inoren alde, partekatu egiten da eta taldekide bakoitzak konpontzen laguntzen du.

DevOps kultura batean garrantzitsuena arazoa konpontzea da, ez bakarrik DevOps praktikak aplikatzea. Gainera, praktika hauek ez dira "norbaiten alde" ezartzen, produktu osoan zehar baizik. Proiektu batek ez du berez DevOps ingeniaririk behar; arazo bati irtenbidea behar dio, eta DevOps ingeniari baten rola espezializazio ezberdineko hainbat taldekideren artean banatu daiteke.

Zeintzuk dira DevOps praktika motak?

DevOps praktikek softwarearen bizitza-zikloaren fase guztiak hartzen dituzte.

Igor Boyko: "Kasu aproposa da DevOps praktikak erabiltzen hasten garenean proiektu bat hasten denean. Arkitektoekin batera, aplikazioak nolako paisaia arkitektonikoa izango duen planifikatzen dugu, non kokatuko den eta nola eskalatu, eta plataforma bat aukeratzen dugu. Gaur egun, mikrozerbitzuen arkitektura modan dago; horretarako orkestrazio sistema bat aukeratzen dugu: aplikazioaren elementu bakoitza bereizita kudeatu eta besteetatik independentean eguneratu ahal izan behar duzu. Beste praktika bat "azpiegitura kode gisa" da. Hau da proiektuaren azpiegitura kodea erabiliz sortu eta kudeatzen den ikuspegi bati, zerbitzariekin zuzeneko interakzioaren bidez baino.

Ondoren, garapen fasera igaroko gara. Hemen praktika handienetako bat CI/CD eraikitzea da: garatzaileei lagundu behar diezu aldaketak produktuan azkar integratzen, zati txikietan, maizago eta minik gabe. CI/CD-k kodearen berrikuspena, maisua kode-oinarrira kargatzea eta aplikazioa proba- eta ekoizpen-inguruneetara hedatzea biltzen ditu.

CI/CD etapetan, kodea kalitatezko ateetatik pasatzen da. Haien laguntzarekin, garatzailearen lan-estaziotik ateratzen den kodeak zehaztutako kalitate-irizpideak betetzen dituela egiaztatzen dute. Unitatearen eta interfazearen probak gehitzen dira hemen. Produktua azkar, minik gabeko eta bideratua lortzeko, inplementazio mota egokia hauta dezakezu.

DevOps-eko profesionalek ere lekua dute amaitutako produktua laguntzeko fasean. Monitorizazioa, iritzia, segurtasuna eta aldaketak sartzeko erabiltzen dira. DevOps-ek zeregin horiek guztiak etengabeko hobekuntzaren ikuspegitik aztertzen ditu. Eragiketa errepikakorrak minimizatzen ditugu eta automatizatzen ditugu. Horrek migrazioak, aplikazioen hedapena eta errendimendurako laguntza ere barne hartzen ditu".

Zein dira DevOps praktiken onurak?

DevOps praktika modernoei buruzko testu-liburu bat idatziko bagenu, lehen orrialdean hiru puntu egongo lirateke: automatizazioa, argitalpenak bizkortzea eta erabiltzaileen feedback azkarra.

Kiril Sergeev: “Lehenengo gauza automatizazioa da. Taldeko interakzio guztiak automatiza ditzakegu: kodea idatzi - zabaldu - egiaztatu - instalatu - iritziak bildu - hasierara itzuli. Hau guztia automatikoa da.

Bigarrena kaleratzea bizkortzea eta garapena sinplifikatzea ere bada. Beti garrantzitsua da bezeroarentzat produktua merkatuan ahalik eta azkarren sartzea eta lehiakideen analogoek baino lehen onurak ematen hastea. Produktuak entregatzeko prozesua etengabe hobetu daiteke: denbora murriztu, kontrol-marka gehigarriak gehitu, monitorizazioa hobetu.

Hirugarrena erabiltzaileen iritzia bizkortzea da. Iruzkinak baditu, berehala egin ditzakegu doikuntzak eta aplikazioa berehala eguneratu».

Zergatik behar da DevOps eta nor dira DevOps espezialistak?

Nola erlazionatzen dira "sistemen ingeniaria", "eraikitzeko ingeniaria" eta "DevOps ingeniaria" kontzeptuak?

Gainjartzen dira, baina apur bat eremu desberdinetakoak dira.

EPAMeko sistemen ingeniaria postu bat da. Maila ezberdinetan datoz: juniortik hasi eta espezialista nagusira.

Eraikitzeko ingeniari bat proiektu batean bete daitekeen rol bat gehiago da. Orain, horrela deitzen dira CI/CD arduradunak.

DevOps ingeniari bat proiektu batean DevOps praktikak ezartzen dituen espezialista bat da.

Guztia laburbilduz gero, honelako zerbait lortzen dugu: sistemen ingeniari postuan dagoen pertsona batek eraikuntzako ingeniari baten papera betetzen du proiektu batean eta DevOps praktiken ezarpenean parte hartzen du bertan.

Zer egiten du zehazki DevOps ingeniari batek?

DevOps ingeniariek proiektu bat osatzen duten pieza guztiak biltzen dituzte. Programatzaileen, probatzaileen, sistema administratzaileen lanaren berezitasunak ezagutzen dituzte eta haien lana errazten laguntzen dute. Negozioaren beharrak eta eskakizunak ulertzen dituzte, garapen prozesuan duen eginkizuna, eta bezeroaren interesak kontuan hartuta eraikitzen dute prozesua.

Automatizazioari buruz asko hitz egin dugu - hau da DevOps ingeniariek lehenik eta behin jorratzen dutena. Oso puntu handia da, besteak beste, ingurumena prestatzea barne.

Kiril Sergeev: "Produktuan eguneraketak ezarri aurretik, hirugarrenen ingurune batean probatu behar dira. DevOps ingeniariek prestatu dute. DevOps kultura txertatzen dute proiektu osoan: DevOps praktikak sartzen dituzte beren proiektuen geruza guztietan. Hiru printzipio hauek: automatizazioa, sinplifikazioa, azelerazioa - iristen diren tokira eramaten dute".

Zer jakin behar du DevOps ingeniari batek?

Oro har, hainbat arlotako ezagutzak izan behar ditu: programazioa, sistema eragileekin lan egitea, datu-baseak, muntaketa eta konfigurazio sistemak. Horiek hodeiko azpiegitura, orkestrazio eta monitorizazio sistemekin lan egiteko gaitasunarekin osatzen dira.

1. Programazio lengoaiak

DevOps-eko ingeniariek automatizaziorako oinarrizko hainbat hizkuntza ezagutzen dituzte eta, adibidez, programatzaile bati esan diezaiokete: "Zer moduz instalatzen duzu kodea ez eskuz, gure script-a erabiliz, dena automatizatzen duena? Konfigurazio-fitxategi bat prestatuko dugu horretarako, zuk eta guk irakurtzeko komenigarria izango da, eta edozein unetan aldatzeko aukera izango dugu. Gainera, ikusiko dugu nork, noiz eta zergatik egiten dituen aldaketak».

DevOps ingeniari batek hizkuntza hauetako bat edo gehiago ikas ditzake: Python, Groovy, Bash, Powershell, Ruby, Go. Ez da beharrezkoa maila sakonean ezagutzea - ​​sintaxiaren oinarriak, OOP printzipioak eta automatizaziorako script sinpleak idazteko gaitasuna nahikoa dira.

2. Sistema eragileak

DevOps ingeniari batek produktua zer zerbitzaritan instalatuko den, zein ingurunetan exekutatzen den eta zer zerbitzurekin elkarreragiten duen ulertu behar du. Windows edo Linux familian espezializatzea aukeratu dezakezu.

3. Bertsioak kontrolatzeko sistemak

Bertsio-kontrol-sistemaren ezagutzarik gabe, DevOps ingeniari bat ez dago inon. Git une honetan sistema ezagunenetako bat da.

4. Hodeiko hornitzaileak

AWS, Google, Azure - batez ere Windows norabideaz ari bagara.

Kiril Sergeev: “Hodeiko hornitzaileek CI/CD-ra ezin hobeto egokitzen diren zerbitzari birtualak eskaintzen dizkigute.

Hamar zerbitzari fisiko instalatzeko ehun bat eskuzko eragiketa behar dira. Zerbitzari bakoitzak eskuz abiarazi, behar den sistema eragilea instalatu eta konfiguratu behar du, gure aplikazioa hamar zerbitzari horietan instalatu eta gero dena hamar aldiz egiaztatu behar da. Hodeiko zerbitzuek prozedura hau hamar kode lerrorekin ordezkatzen dute, eta DevOps ingeniari on batek horiekin funtzionatzeko gai izan beharko luke. Horrek denbora, ahalegina eta dirua aurrezten ditu, bai bezeroarentzat eta baita enpresarentzat ere».

5. Orkestrazio sistemak: Docker eta Kubernetes

Kiril Sergeev: “Zerbitzari birtualak edukiontzietan banatzen dira, eta horietako bakoitzean gure aplikazioa instalatu dezakegu. Edukiontzi asko daudenean, kudeatu behar dituzu: bat piztu, beste bat itzali, babeskopiak egin nonbait. Hau nahiko konplexua bihurtzen da eta orkestrazio sistema bat behar du.

Aurretik, aplikazio bakoitza zerbitzari batek kudeatzen zuen - bere funtzionamenduan egindako aldaketak aplikazioaren zerbitzu-gaitasunari eragin zezakeen. Edukiontziei esker, aplikazioak isolatu egiten dira eta bereizita exekutatzen dira - bakoitza bere makina birtualean. Hutsegiteren bat gertatzen bada, ez dago denborarik galdu behar arrazoia bilatzen. Errazagoa da edukiontzi zaharra suntsitzea eta berria gehitzea».

6. Konfigurazio sistemak: Chef, Ansible, Puppet

Zerbitzarien flota osoa mantendu behar duzunean, eragiketa mota asko egin behar dituzu. Luzea eta zaila da, eta eskuzko lanak ere akatsak izateko aukera areagotzen du. Hemen konfigurazio-sistemak erreskatatu egiten dira. Haien laguntzarekin, programatzaileentzat, DevOps ingeniarientzat eta sistema-administratzaileentzat irakurtzeko erraza den script bat sortzen dute. Script honek zerbitzarietan eragiketa berdinak automatikoki egiten laguntzen du. Horrek eskuzko eragiketak (eta, beraz, akatsak) murrizten ditu.

Nolako karrera egin dezake DevOps ingeniari batek?

Horizontalki zein bertikalki garatu dezakezu.

Igor Boyko: "Garapen horizontalaren ikuspuntutik, DevOps-eko ingeniariek orain aukera zabalenak dituzte. Dena etengabe aldatzen ari da, eta trebetasunak sor ditzakezu hainbat arlotan: bertsioen kontrol sistemetatik monitorizaziora, konfigurazio kudeaketatik datu-baseetara.

Sistemaren arkitekto bihur zaitezke langile batek aplikazio batek bere bizitza-zikloko fase guztietan nola funtzionatzen duen ulertzeko interesa badu, garapenetik hasi eta euskarria arte".

Nola bihurtu DevOps ingeniari?

  1. Irakurri Phoenix Project eta DevOps Eskuliburua. Horiek dira DevOps filosofiaren benetako zutabeak, lehenengoa fikziozko lana izanik.
  2. Ikasi teknologiak goiko zerrendatik: zure kabuz edo lineako ikastaroen bidez.
  3. Sartu DevOps ingeniari gisa kode irekiko proiektu batean.
  4. Praktikatu eta eskaini DevOps praktikak zure proiektu pertsonaletan eta lanekoetan.

Iturria: www.habr.com

Gehitu iruzkin berria