Kodėl reikalingas „DevOps“ ir kas yra „DevOps“ specialistai?

Kai programa neveikia, paskutinis dalykas, kurį norite išgirsti iš kolegų, yra frazė „problema yra jūsų pusėje“. Dėl to kenčia vartotojai – ir jiems nesvarbu, kuri komandos dalis atsakinga už gedimą. „DevOps“ kultūra atsirado kaip tik tam, kad plėtra ir palaikymas būtų sujungti kartu su bendra atsakomybe už galutinį produktą.

Kokios praktikos įtrauktos į „DevOps“ koncepciją ir kodėl jos reikalingos? Ką daro „DevOps“ inžinieriai ir ką jie turėtų sugebėti? Į šiuos ir kitus klausimus atsako EPAM ekspertai: Kirilas Sergejevas, sistemų inžinierius ir „DevOps“ evangelistas, ir Igoris Boiko, vadovaujantis sistemų inžinierius ir vienos iš įmonės „DevOps“ komandų koordinatorius.

Kodėl reikalingas „DevOps“ ir kas yra „DevOps“ specialistai?

Kodėl reikalingas „DevOps“?

Anksčiau tarp kūrėjų ir palaikymo (vadinamųjų operacijų) buvo barjeras. Skamba paradoksaliai, bet jie turėjo skirtingus tikslus ir KPI, nors darė tą patį. Plėtros tikslas buvo kuo greičiau įgyvendinti verslo reikalavimus ir pridėti juos prie veikiančio produkto. Pagalba buvo atsakinga už tai, kad programa veiktų stabiliai, o dėl bet kokių pakeitimų kyla pavojus stabilumui. Kilo interesų konfliktas – „DevOps“ jį išsprendė.

Kas yra DevOps?

Tai geras ir prieštaringas klausimas: pasaulis dar nėra galutinai dėl to susitaręs. EPAM tiki, kad „DevOps“ sujungia technologijas, procesus ir sąveikos kultūrą komandoje. Ši asociacija siekia nuolat teikti vertę galutiniams vartotojams.

Kirilas Sergejevas: „Kūrėjai rašo kodą, bandytojai jį peržiūri, o administratoriai diegia galutinį produktą į gamybą. Ilgą laiką šios komandos dalys buvo kiek išsibarsčiusios, o paskui kilo mintis jas suvienyti per bendrą procesą. Taip atsirado „DevOps“ praktika.

Atėjo diena, kai kūrėjai ir sistemų inžinieriai susidomėjo vieni kitų darbais. Pradėjo nykti barjeras tarp gamybos ir paramos. Taip atsirado „DevOps“, apimantis praktiką, kultūrą ir komandos sąveiką.

Kodėl reikalingas „DevOps“ ir kas yra „DevOps“ specialistai?

Kokia DevOps kultūros esmė?

Faktas yra tas, kad atsakomybė už galutinį rezultatą tenka kiekvienam komandos nariui. Įdomiausia ir sunkiausia DevOps filosofijoje yra suprasti, kad konkretus žmogus yra atsakingas ne tik už savo darbo etapą, bet ir už tai, kaip veiks visas produktas. Problema slypi ne niekieno pusėje – ja dalijamasi, ir kiekvienas komandos narys padeda ją išspręsti.

Svarbiausias dalykas DevOps kultūroje yra išspręsti problemą, o ne tik taikyti DevOps praktiką. Be to, ši praktika įgyvendinama ne „kažkieno pusėje“, o visame gaminyje. Projektui per se nereikia „DevOps“ inžinieriaus – jam reikia problemos sprendimo, o „DevOps“ inžinieriaus vaidmuo gali būti paskirstytas keliems skirtingų specializacijų komandos nariams.

Kokie yra „DevOps“ praktikos tipai?

„DevOps“ praktika apima visus programinės įrangos gyvavimo ciklo etapus.

Igoris Boiko: „Idealus atvejis, kai pradedame naudoti „DevOps“ praktiką iš karto projekto inicijavimo metu. Kartu su architektais planuojame, kokį architektūrinį kraštovaizdį turės aplikacija, kur ji bus ir kaip mastelį, parenkame platformą. Šiais laikais madinga mikropaslaugų architektūra – jai renkamės orkestravimo sistemą: kiekvieną aplikacijos elementą reikia mokėti valdyti atskirai ir atnaujinti nepriklausomai nuo kitų. Kita praktika yra „infrastruktūra kaip kodas“. Taip vadinamas metodas, kai projekto infrastruktūra kuriama ir valdoma naudojant kodą, o ne tiesiogiai sąveikaujant su serveriais.

Toliau pereiname prie kūrimo etapo. Viena didžiausių praktikų čia yra CI/CD kūrimas: reikia padėti kūrėjams greitai, mažomis porcijomis, dažniau ir neskausmingai integruoti pakeitimus į produktą. CI / CD apima kodo peržiūrą, pagrindinio failo įkėlimą į kodo bazę ir programos diegimą bandymo ir gamybos aplinkoje.

CI/CD etapuose kodas pereina per kokybės vartus. Su jų pagalba jie patikrina, ar kodas, išeinantis iš kūrėjo darbo vietos, atitinka nurodytus kokybės kriterijus. Čia pridedamas vieneto ir vartotojo sąsajos testavimas. Norėdami greitai, neskausmingai ir tiksliai įdiegti produktą, galite pasirinkti tinkamą diegimo tipą.

„DevOps“ praktikai taip pat turi vietą gatavo produkto palaikymo etape. Jie naudojami stebėjimui, atsiliepimams, saugumui ir pakeitimams diegti. „DevOps“ į visas šias užduotis žiūri iš nuolatinio tobulinimo perspektyvos. Sumažiname pasikartojančias operacijas ir jas automatizuojame. Tai taip pat apima perkėlimą, programų išplėtimą ir našumo palaikymą.

Kokie yra „DevOps“ praktikos pranašumai?

Jei rašytume vadovėlį apie šiuolaikines „DevOps“ praktikas, pirmame puslapyje būtų trys punktai: automatizavimas, leidimų paspartinimas ir greiti vartotojų atsiliepimai.

Kirilas Sergejevas: „Pirmas dalykas yra automatika. Galime automatizuoti visas komandos sąveikas: parašėme kodą – išleidome – patikrinome – įdiegėme – surinkome atsiliepimus – grįžome į pradžią. Visa tai automatizuota.

Antrasis – paspartinti išleidimą ir net supaprastinti kūrimą. Klientui visada svarbu, kad prekė kuo greičiau patektų į rinką ir pradėtų teikti naudą anksčiau nei konkurentų analogai. Produkto pristatymo procesą galima tobulinti be galo: sutrumpinti laiką, pridėti papildomų kontrolinių ženklų, pagerinti stebėjimą.

Trečia – vartotojų atsiliepimų paspartinimas. Jei jis turi pastabų, galime nedelsdami pakoreguoti ir atnaujinti programą.

Kodėl reikalingas „DevOps“ ir kas yra „DevOps“ specialistai?

Kaip yra susijusios sąvokos „sistemų inžinierius“, „konstravimo inžinierius“ ir „devOps inžinierius“?

Jie sutampa, bet priklauso šiek tiek skirtingoms sritims.

EPAM sistemų inžinierius užima pareigas. Jie būna įvairių lygių: nuo jaunesniojo iki vyriausiojo specialisto.

Statybos inžinierius yra daugiau vaidmuo, kurį galima atlikti projekte. Dabar taip vadinami žmonės, atsakingi už CI/CD.

„DevOps“ inžinierius yra specialistas, įgyvendinantis „DevOps“ praktiką projekte.

Jei viską susumuotume, gautume maždaug taip: sistemų inžinieriaus pareigas einantis asmuo atlieka statybos inžinieriaus vaidmenį projekte ir dalyvauja ten įgyvendinant DevOps praktikas.

Ką tiksliai daro „DevOps“ inžinierius?

„DevOps“ inžinieriai sujungia visas projekto dalis. Jie išmano programuotojų, testuotojų, sistemų administratorių darbo specifiką ir padeda supaprastinti jų darbą. Jie supranta verslo poreikius ir reikalavimus, jo vaidmenį plėtros procese – ir kuria procesą atsižvelgdami į kliento interesus.

Mes daug kalbėjome apie automatizavimą – su tuo pirmiausia užsiima „DevOps“ inžinieriai. Tai labai didelis taškas, kuris, be kita ko, apima aplinkos paruošimą.

Kirilas Sergejevas: „Prieš įdiegiant produkto naujinimus, juos reikia išbandyti trečiosios šalies aplinkoje. Jį parengė „DevOps“ inžinieriai. Jie įdiegia „DevOps“ kultūrą visam projektui: pristato „DevOps“ praktiką visuose savo projektų sluoksniuose. Šie trys principai: automatizavimas, supaprastinimas, pagreitis – jie atneša visur, kur tik gali pasiekti.

Ką turėtų žinoti „DevOps“ inžinierius?

Apskritai jis turi turėti žinių iš įvairių sričių: programavimo, darbo su operacinėmis sistemomis, duomenų bazėmis, surinkimo ir konfigūravimo sistemomis. Juos papildo galimybė dirbti su debesų infrastruktūra, orkestravimo ir stebėjimo sistemomis.

1. Programavimo kalbos

„DevOps“ inžinieriai žino kelias pagrindines automatizavimo kalbas ir, pavyzdžiui, gali pasakyti programuotojui: „O kaip, jei kodą įdiegtumėte ne ranka, o naudodami mūsų scenarijų, kuris viską automatizuoja? Jai paruošime konfigūracijos failą, jį bus patogu skaityti ir jums, ir mums, bet kada galėsime pakeisti. Taip pat pamatysime, kas, kada ir kodėl jį keičia.

„DevOps“ inžinierius gali išmokti vieną ar kelias iš šių kalbų: Python, Groovy, Bash, Powershell, Ruby, Go. Nebūtina jų išmanyti giliai – pakanka sintaksės pagrindų, OOP principų, gebėjimo rašyti paprastus automatizavimui skirtus scenarijus.

2. Operacinės sistemos

„DevOps“ inžinierius turi suprasti, kokiame serveryje produktas bus įdiegtas, kokioje aplinkoje jis veiks ir su kokiomis paslaugomis sąveikaus. Galite pasirinkti specializuotis „Windows“ arba „Linux“ šeimoje.

3. Versijų valdymo sistemos

Be žinių apie versijų valdymo sistemą, DevOps inžinierius niekur nėra. Git šiuo metu yra viena populiariausių sistemų.

4. Debesų paslaugų teikėjai

AWS, Google, Azure – ypač jei kalbame apie Windows kryptį.

Kirilas Sergejevas: „Debesų paslaugų teikėjai mums teikia virtualius serverius, kurie puikiai tinka CI/CD.

Norint įdiegti dešimt fizinių serverių, reikia atlikti apie šimtą rankinių operacijų. Kiekvienas serveris turi būti rankiniu būdu paleistas, įdiegti ir sukonfigūruoti reikiamą operacinę sistemą, įdiegti mūsų programą šiuose dešimtyje serverių ir tada dar kartą viską patikrinti dešimt kartų. Debesijos paslaugos pakeičia šią procedūrą dešimčia kodo eilučių, o geras „DevOps“ inžinierius turėtų mokėti su jomis dirbti. Tai taupo laiką, pastangas ir pinigus – tiek klientui, tiek įmonei.

5. Orkestravimo sistemos: Docker ir Kubernetes

Kirilas Sergejevas: „Virtualūs serveriai yra suskirstyti į konteinerius, kurių kiekviename galime įdiegti savo aplikaciją. Kai konteinerių daug, reikia juos tvarkyti: vieną įjungti, kitą išjungti, kur nors daryti atsargines kopijas. Tai tampa gana sudėtinga ir reikalauja orkestravimo sistemos.

Anksčiau kiekviena programa buvo tvarkoma atskiro serverio – bet kokie jo veikimo pakeitimai galėjo turėti įtakos programos tinkamumui naudoti. Dėl konteinerių programos tampa izoliuotos ir veikia atskirai – kiekviena savo virtualioje mašinoje. Jei įvyksta gedimas, nereikia gaišti laiko ieškant priežasties. Lengviau sunaikinti seną konteinerį ir pridėti naują.

6. Konfigūravimo sistemos: Chef, Ansible, Puppet

Kai jums reikia prižiūrėti visą serverių parką, turite atlikti daug to paties tipo operacijų. Tai ilgas ir sunkus, o rankų darbas taip pat padidina klaidų tikimybę. Čia į pagalbą ateina konfigūracijos sistemos. Su jų pagalba jie sukuria scenarijų, kurį lengva perskaityti programuotojams, „DevOps“ inžinieriams ir sistemos administratoriams. Šis scenarijus padeda automatiškai atlikti tas pačias operacijas serveriuose. Tai sumažina rankinių operacijų (taigi ir klaidų) skaičių.

Kokią karjerą gali sukurti „DevOps“ inžinierius?

Galite kurti tiek horizontaliai, tiek vertikaliai.

Igoris Boiko: „Horizontalios plėtros požiūriu „DevOps“ inžinieriai dabar turi didžiausias perspektyvas. Viskas nuolat keičiasi, o įgūdžius galite įgyti įvairiose srityse: nuo versijų valdymo sistemų iki stebėjimo, nuo konfigūracijos valdymo iki duomenų bazių.

Sistemos architektu galite tapti, jei darbuotojui įdomu suprasti, kaip programa veikia visais jos gyvavimo ciklo etapais – nuo ​​kūrimo iki palaikymo.

Kaip tapti „DevOps“ inžinieriumi?

  1. Perskaitykite „Phoenix Project“ ir „DevOps“ vadovą. Tai yra tikrieji „DevOps“ filosofijos ramsčiai, kurių pirmasis yra grožinės literatūros kūrinys.
  2. Mokykitės technologijų iš aukščiau pateikto sąrašo: savarankiškai arba per internetinius kursus.
  3. Prisijunkite prie atvirojo kodo projekto „DevOps“ inžinieriumi.
  4. Praktikuokite ir siūlykite „DevOps“ praktiką savo asmeniniuose ir darbo projektuose.

Šaltinis: www.habr.com

Добавить комментарий