Wêrom is DevOps nedich en wa binne DevOps-spesjalisten?

As in applikaasje net wurket, is it lêste wat jo fan jo kollega's wolle hearre de sin "it probleem is oan jo kant." As gefolch hawwe brûkers lije - en it makket har net út hokker diel fan it team ferantwurdlik is foar de ôfbraak. DevOps-kultuer ûntstie krekt om ûntwikkeling en stipe byinoar te bringen om in dielde ferantwurdlikens foar it einprodukt.

Hokker praktiken binne opnommen yn it konsept fan DevOps en wêrom binne se nedich? Wat dogge DevOps-yngenieurs en wat moatte se kinne dwaan? Eksperts fan EPAM beantwurdzje dizze en oare fragen: Kirill Sergeev, systeemingenieur en DevOps-evangelist, en Igor Boyko, liedend systeemingenieur en koördinator fan ien fan 'e DevOps-teams fan it bedriuw.

Wêrom is DevOps nedich en wa binne DevOps-spesjalisten?

Wêrom is DevOps nedich?

Earder wie der in barriêre tusken ûntwikkelders en stipe (saneamde operaasjes). It klinkt paradoksaal, mar se hiene ferskillende doelen en KPIs, hoewol't se dogge itselde ding. It doel fan 'e ûntwikkeling wie om saaklike easken sa rap mooglik út te fieren en ta te foegjen oan in wurkjend produkt. Stipe wie ferantwurdlik foar it garandearjen dat de applikaasje stabyl wurke - en alle feroaringen sette stabiliteit yn gefaar. D'r is in belangekonflikt - DevOps die bliken it op te lossen.

Wat is DevOps?

It is in goede fraach - en in kontroversjele ien: de wrâld is der noch net einliks oer iens. EPAM is fan betinken dat DevOps technologyen, prosessen en in kultuer fan ynteraksje binnen in team kombineart. Dizze feriening hat as doel om kontinu wearde te leverjen oan ein brûkers.

Kirill Sergeev: “Untwikkelders skriuwe koade, testers beoardielje it, en behearders sette it definitive produkt yn foar produksje. Lange tiid wiene dizze parten fan it team wat ferspraat, en doe ûntstie it idee om se troch in mienskiplik proses te ferienigjen. Dit is hoe't DevOps-praktiken ferskynden."

De dei kaam doe't ûntwikkelders en systeem yngenieurs ynteressearre yn elkoars wurk. De barriêre tusken produksje en stipe begon te ferdwinen. Dit is hoe't DevOps ûntstie, dy't praktiken, kultuer en team ynteraksje omfettet.

Wêrom is DevOps nedich en wa binne DevOps-spesjalisten?

Wat is de essinsje fan DevOps-kultuer?

It feit is dat de ferantwurdlikens foar it einresultaat by elk teamlid leit. It meast nijsgjirrige en lestige ding yn 'e DevOps-filosofy is om te begripen dat in spesifike persoan net allinich ferantwurdlik is foar syn eigen poadium fan wurk, mar ferantwurdlik is foar hoe't it heule produkt sil wurkje. It probleem leit net oan 'e kant fan ien - it wurdt dield, en elk teamlid helpt it op te lossen.

It wichtichste ding yn in DevOps-kultuer is it probleem op te lossen, net allinich DevOps-praktiken tapasse. Boppedat wurde dizze praktiken net "oan 'e kant fan immen" ymplementearre, mar troch it heule produkt. In projekt hat per se gjin DevOps-yngenieur nedich - it hat in oplossing nedich foar in probleem, en de rol fan in DevOps-yngenieur kin wurde ferdield oer ferskate teamleden mei ferskate spesjalisaasjes.

Wat binne de soarten DevOps-praktiken?

DevOps-praktiken dekke alle stadia fan 'e softwarelibbensyklus.

Igor Boyko: "It ideale gefal is as wy DevOps-praktiken begjinne te brûken direkt by it inisjearjen fan it projekt. Tegearre mei de arsjitekten planje wy hokker soart arsjitektoanysk lânskip de applikaasje sil hawwe, wêr't it komt en hoe't it skaalber is, en kieze in platfoarm. Tsjintwurdich is mikrotsjinst-arsjitektuer yn 'e moade - dêrfoar kieze wy in orkestraasjesysteem: jo moatte elk elemint fan 'e applikaasje apart kinne beheare en it ûnôfhinklik fan 'e oaren bywurkje. In oare praktyk is "ynfrastruktuer as koade." Dit is de namme foar in oanpak wêryn de projektynfrastruktuer wurdt makke en beheard mei help fan koade, ynstee fan troch direkte ynteraksje mei servers.

Folgjende geane wy ​​nei de ûntwikkelingsfaze. Ien fan 'e grutste praktiken hjir is it bouwen fan CI / CD: jo moatte ûntwikkelders helpe om feroaringen yn it produkt fluch, yn lytse dielen, faker en sûnder pine te yntegrearjen. CI / CD beslacht koadebeoardieling, it uploaden fan de master nei de koadebasis, en it ynsetten fan de applikaasje foar test- en produksjeomjouwings.

By de CI / CD-stadia giet de koade troch kwaliteitspoarten. Mei har help kontrolearje se dat de koade dy't út it wurkstasjon fan 'e ûntwikkelder komt, foldocht oan de opjûne kwaliteitskritearia. Unit- en UI-testen wurde hjir tafoege. Foar rappe, pynlike en rjochte produktynset kinne jo it passende ynsettype kieze.

DevOps-beoefeners hawwe ek in plak op it poadium fan it stypjen fan it ôfmakke produkt. Se wurde brûkt foar tafersjoch, feedback, feiligens, en yntrodusearje feroarings. DevOps besjocht al dizze taken út in perspektyf fan trochgeande ferbettering. Wy minimalisearje repetitive operaasjes en automatisearje se. Dit omfettet ek migraasjes, applikaasje-útwreiding, en prestaasjesstipe.

Wat binne de foardielen fan DevOps-praktiken?

As wy in learboek skriuwe oer moderne DevOps-praktiken, soene d'r trije punten op 'e earste side wêze: automatisearring, fersnelle releases en rappe feedback fan brûkers.

Kirill Sergeev: “It earste ding is automatisearring. Wy kinne alle ynteraksjes yn it team automatisearje: de koade skreaun - útrôle - kontrolearre - ynstalleare - feedback sammele - werom nei it begjin. Dit alles is automatysk.

De twadde is it rapperjen fan de frijlitting en sels ferienfâldigje ûntwikkeling. It is altyd wichtich foar de klant dat it produkt sa gau mooglik yn 'e merk komt en begjint foardielen earder te leverjen as analogen fan konkurrinten. It produktleveringsproses kin einleaze wurde ferbettere: tiid ferminderje, ekstra kontrôlemerken tafoegje, tafersjoch ferbetterje.

Tredde is de fersnelling fan feedback fan brûkers. As hy opmerkingen hat, kinne wy ​​fuortendaliks oanpassingen meitsje en de applikaasje daliks bywurkje.

Wêrom is DevOps nedich en wa binne DevOps-spesjalisten?

Hoe ferhâlde de begripen "systeemingenieur", "bouwingenieur" en "DevOps-yngenieur"?

Se oerlappe, mar hearre ta wat ferskillende gebieten.

Systems yngenieur by EPAM is in posysje. Se komme yn ferskate nivo's: fan junior oant haadspesjalist.

In bouingenieur is mear in rol dy't kin wurde útfierd op in projekt. No hjitte dit de minsken dy't ferantwurdlik binne foar CI/CD.

In DevOps-yngenieur is in spesjalist dy't DevOps-praktiken ymplementearret op in projekt.

As wy it allegear gearfetsje, krije wy sa'n ding: in persoan yn 'e posysje fan in systeemingenieur spilet de rol fan in bouingenieur op in projekt en is belutsen by de ymplemintaasje fan DevOps-praktiken dêr.

Wat docht in DevOps-yngenieur krekt?

DevOps-yngenieurs sette alle stikken byinoar dy't in projekt foarmje. Se kenne de spesifiken fan it wurk fan programmeurs, testers, systeembehearders en helpe har wurk te ferienfâldigjen. Se begripe de behoeften en easken fan it bedriuw, har rol yn it ûntwikkelingsproses - en bouwe it proses mei rekkening mei de belangen fan 'e klant.

Wy hawwe in protte praat oer automatisearring - dit is wêr't DevOps-yngenieurs earst en foaral mei omgean. It giet om in hiel grut punt, dêr't ûnder oare it tarieden fan it miljeu op stiet.

Kirill Sergeev: "Foardat updates yn it produkt ymplementearje, moatte se wurde hifke yn in omjouwing fan tredden. It wurdt taret troch DevOps-yngenieurs. Se bringe in DevOps-kultuer op it projekt as gehiel: se yntrodusearje DevOps-praktiken yn alle lagen fan har projekten. Dizze trije prinsipes: automatisearring, ferienfâldiging, fersnelling - se bringe wêr't se kinne berikke."

Wat moat in DevOps-yngenieur witte?

Oer it algemien moat hy kennis hawwe fan ferskate gebieten: programmearje, wurkje mei bestjoeringssystemen, databases, assemblage en konfiguraasjesystemen. Dizze omfetsje de mooglikheid om te wurkjen mei wolkynfrastruktuer, orkestraasje en monitoringsystemen.

1. Programmearring talen

DevOps-yngenieurs kenne ferskate basistalen foar automatisearring en kinne bygelyks in programmeur fertelle: "Hoe soene jo de koade net mei de hân ynstallearje, mar mei ús skript, dat alles automatisearret? Wy sille der in konfiguraasjetriem foar tariede, it sil handich wêze foar sawol jo as ús om te lêzen, en wy kinne it op elk momint feroarje. Wy sille ek sjen wa't, wannear en wêrom dêr feroaringen oan bringt."

In DevOps-yngenieur kin ien of mear fan dizze talen leare: Python, Groovy, Bash, Powershell, Ruby, Go. It is net nedich om se op in djip nivo te kennen - de basis fan syntaksis, OOP-prinsipes, en de mooglikheid om ienfâldige skripts foar automatisearring te skriuwen binne genôch.

2. Bestjoeringssystemen

In DevOps-yngenieur moat begripe op hokker server it produkt sil wurde ynstalleare, yn hokker omjouwing it sil rinne, en mei hokker tsjinsten it sil ynteraksje. Jo kinne kieze om te spesjalisearjen yn Windows as de Linux-famylje.

3. Ferzje kontrôle systemen

Sûnder kennis fan in ferzjekontrôlesysteem is in DevOps-yngenieur nearne. Git is ien fan 'e populêrste systemen op it stuit.

4. Wolke providers

AWS, Google, Azure - foaral as wy it hawwe oer de Windows-rjochting.

Kirill Sergeev: "Wolkproviders jouwe ús firtuele servers dy't perfekt passe yn CI / CD.

It ynstallearjen fan tsien fysike tsjinners fereasket sa'n hûndert hânmjittige operaasjes. Elke server moat it fereaske bestjoeringssysteem manuell wurde lansearre, ynstalleare en konfigureare, ús applikaasje ynstalleare op dizze tsien servers, en dan alles tsien kear dûbel kontrolearje. Wolktsjinsten ferfange dizze proseduere mei tsien rigels koade, en in goede DevOps-yngenieur soe mei har kinne operearje. Dit besparret tiid, muoite en jild - sawol foar de klant as foar it bedriuw.

5. Orchestration systemen: Docker en Kubernetes

Kirill Sergeev: “Firtuele servers binne ferdield yn konteners, wêryn wy elk ús applikaasje kinne ynstallearje. As d'r in protte konteners binne, moatte jo se beheare: ien oansette, in oare útsette, earne backups meitsje. Dit wurdt frij kompleks en fereasket in orkestraasjesysteem.

Eartiids waard elke applikaasje behannele troch in aparte tsjinner - alle feroaringen yn har wurking kinne ynfloed hawwe op de tsjinstberens fan 'e applikaasje. Mei tank oan konteners wurde applikaasjes isolearre en rinne apart - elk op har eigen firtuele masine. As in mislearring optreedt, is d'r gjin need nedich om tiid te fergriemen mei it sykjen nei de oarsaak. It is makliker om de âlde kontener te ferneatigjen en in nije ta te foegjen."

6. Konfiguraasje systemen: Chef, Ansible, Puppet

As jo ​​​​in hiele float fan servers moatte ûnderhâlde, moatte jo in protte fan deselde soarte operaasjes dwaan. It is lang en dreech, en hânwurk fergruttet ek de kâns op flater. Dit is wêr't konfiguraasjesystemen ta de rêding komme. Mei har help meitsje se in skript dat maklik te lêzen is foar programmeurs, DevOps-yngenieurs en systeembehearders. Dit skript helpt om deselde operaasjes op servers automatysk út te fieren. Dit ferminderet hânmjittige operaasjes (en dus flaters).

Hokker soarte karriêre kin in DevOps-yngenieur bouwe?

Jo kinne sawol horizontaal as fertikaal ûntwikkelje.

Igor Boyko: "Ut it eachpunt fan horizontale ûntwikkeling hawwe DevOps-yngenieurs no de breedste perspektiven. Alles feroaret konstant, en jo kinne feardichheden bouwe op in ferskaat oan gebieten: fan ferzjekontrôlesystemen oant tafersjoch, fan konfiguraasjebehear oant databases.

Jo kinne in systeemarsjitekt wurde as in meiwurker ynteressearre is yn te begripen hoe't in applikaasje wurket yn alle stadia fan syn libbenssyklus - fan ûntwikkeling oant stipe.

Hoe kinne jo in DevOps-yngenieur wurde?

  1. Lês The Phoenix Project en DevOps Handbook. Dit binne de echte pylders fan 'e DevOps-filosofy, mei de earste in fiksjewurk.
  2. Learje technologyen út 'e boppesteande list: op jo eigen of fia online kursussen.
  3. Doch mei as DevOps-yngenieur foar in iepen boarne-projekt.
  4. Oefenje en biede DevOps-praktiken oan op jo persoanlike en wurkprojekten.

Boarne: www.habr.com

Add a comment