Waarom is DevOps nodig en wie is DevOps-spesialiste?

Wanneer 'n toepassing nie werk nie, is die laaste ding wat jy van jou kollegas wil hoor die frase "die probleem is aan jou kant." Gevolglik ly gebruikers – en hulle gee nie om watter deel van die span verantwoordelik is vir die ineenstorting nie. DevOps-kultuur het juis ontstaan ​​om ontwikkeling en ondersteuning bymekaar te bring rondom 'n gedeelde verantwoordelikheid vir die eindproduk.

Watter praktyke is ingesluit in die konsep van DevOps en hoekom is dit nodig? Wat doen DevOps-ingenieurs en wat moet hulle kan doen? Kenners van EPAM beantwoord hierdie en ander vrae: Kirill Sergeev, stelselingenieur en DevOps-evangelis, en Igor Boyko, voorste stelselingenieur en koördineerder van een van die maatskappy se DevOps-spanne.

Waarom is DevOps nodig en wie is DevOps-spesialiste?

Hoekom is DevOps nodig?

Voorheen was daar 'n versperring tussen ontwikkelaars en ondersteuning (sogenaamde bedrywighede). Dit klink paradoksaal, maar hulle het verskillende doelwitte en KPI's gehad, hoewel hulle dieselfde ding gedoen het. Die doel van die ontwikkeling was om besigheidsvereistes so vinnig as moontlik te implementeer en dit by 'n werkende produk te voeg. Ondersteuning was daarvoor verantwoordelik om te verseker dat die toepassing stabiel werk - en enige veranderinge plaas stabiliteit in gevaar. Daar is 'n botsing van belange - DevOps het blykbaar dit opgelos.

Wat is DevOps?

Dit is 'n goeie vraag - en 'n omstrede een: die wêreld het nog nie finaal hieroor saamgestem nie. EPAM glo dat DevOps tegnologieë, prosesse en 'n kultuur van interaksie binne 'n span kombineer. Hierdie vereniging poog om voortdurend waarde aan eindgebruikers te lewer.

Kirill Sergeev: “Ontwikkelaars skryf kode, toetsers hersien dit, en administrateurs ontplooi die finale produk na produksie. Vir 'n lang tyd was hierdie dele van die span ietwat verstrooi, en toe het die idee ontstaan ​​om hulle deur 'n gemeenskaplike proses te verenig. Dit is hoe DevOps-praktyke verskyn het.”

Die dag het aangebreek toe ontwikkelaars en stelselingenieurs in mekaar se werk begin belangstel het. Die versperring tussen produksie en ondersteuning het begin verdwyn. Dit is hoe DevOps ontstaan ​​het, wat praktyke, kultuur en spaninteraksie insluit.

Waarom is DevOps nodig en wie is DevOps-spesialiste?

Wat is die kern van DevOps-kultuur?

Die feit is dat verantwoordelikheid vir die finale uitslag by elke spanlid lê. Die interessantste en moeilikste ding in die DevOps-filosofie is om te verstaan ​​dat 'n spesifieke persoon nie net verantwoordelik is vir sy eie stadium van werk nie, maar verantwoordelik is vir hoe die hele produk sal werk. Die probleem lê aan niemand se kant nie – dit word gedeel, en elke spanlid help om dit op te los.

Die belangrikste ding in 'n DevOps-kultuur is om die probleem op te los, nie net DevOps-praktyke toe te pas nie. Boonop word hierdie praktyke nie "aan iemand se kant" geïmplementeer nie, maar deur die hele produk. 'n Projek het nie 'n DevOps-ingenieur per se nodig nie - dit benodig 'n oplossing vir 'n probleem, en die rol van 'n DevOps-ingenieur kan onder verskeie spanlede met verskillende spesialisasies versprei word.

Wat is die tipes DevOps-praktyke?

DevOps-praktyke dek alle stadiums van die sagteware-lewensiklus.

Igor Boyko: “Die ideale geval is wanneer ons DevOps-praktyke begin gebruik reg met die aanvang van 'n projek. Saam met die argitekte beplan ons watter argitektoniese landskap die toepassing sal hê, waar dit geleë sal wees en hoe om te skaal, en kies 'n platform. Deesdae is mikrodiensargitektuur in die mode; daarvoor kies ons 'n orkestrasiestelsel: jy moet elke element van die toepassing afsonderlik kan bestuur en dit onafhanklik van die ander kan bywerk. Nog 'n praktyk is "infrastruktuur as kode." Dit is die naam vir 'n benadering waarin die projek-infrastruktuur geskep en bestuur word met behulp van kode, eerder as deur direkte interaksie met bedieners.

Vervolgens gaan ons na die ontwikkelingstadium. Een van die grootste praktyke hier is om CI/CD te bou: jy moet ontwikkelaars help om veranderinge vinnig, in klein porsies, meer gereeld en pynloos in die produk te integreer. CI/CD dek kodehersiening, die oplaai van die meester na die kodebasis, en die implementering van die toepassing na toets- en produksieomgewings.

By die CI/CD-stadiums gaan die kode deur kwaliteithekke. Met hul hulp kyk hulle of die kode wat uit die ontwikkelaar se werkstasie kom, aan die gespesifiseerde kwaliteitskriteria voldoen. Eenheid- en UI-toetsing word hier bygevoeg. Vir vinnige, pynlose en gefokusde produkontplooiing, kan u die toepaslike ontplooiingstipe kies.

DevOps-praktisyns het ook 'n plek in die stadium van ondersteuning van die voltooide produk. Hulle word gebruik vir monitering, terugvoer, sekuriteit en die bekendstelling van veranderinge. DevOps kyk na al hierdie take vanuit 'n deurlopende verbeteringsperspektief. Ons minimaliseer herhalende bewerkings en outomatiseer dit. Dit sluit ook migrasies, toepassingsuitbreiding en werkverrigtingondersteuning in.”

Wat is die voordele van DevOps-praktyke?

As ons 'n handboek oor moderne DevOps-praktyke sou skryf, sou daar drie punte op die eerste bladsy wees: outomatisering, bespoediging van vrystellings en vinnige terugvoer van gebruikers.

Kirill Sergeev: “Die eerste ding is outomatisering. Ons kan alle interaksies in die span outomatiseer: het die kode geskryf - dit uitgerol - dit nagegaan - dit geïnstalleer - terugvoer ingesamel - teruggekeer na die begin. Dit alles is outomaties.

Die tweede is om die vrystelling te bespoedig en selfs ontwikkeling te vereenvoudig. Dit is altyd belangrik vir die kliënt dat die produk so gou moontlik die mark betree en vroeër voordele as mededingers se analoë begin bied. Die produkleweringsproses kan eindeloos verbeter word: verminder tyd, voeg bykomende kontrolemerke by, verbeter monitering.

Derdens is die versnelling van gebruikerterugvoer. As hy kommentaar het, kan ons dadelik aanpassings maak en die aansoek onmiddellik bywerk.”

Waarom is DevOps nodig en wie is DevOps-spesialiste?

Hoe hou die konsepte van "stelselingenieur", "bou-ingenieur" en "DevOps-ingenieur" verband?

Hulle oorvleuel, maar behoort aan effens verskillende gebiede.

Stelselingenieur by EPAM is 'n pos. Hulle kom in verskillende vlakke: van junior tot hoofspesialis.

'n Bou-ingenieur is meer 'n rol wat op 'n projek uitgevoer kan word. Nou is dit wat mense verantwoordelik vir CI/CD genoem word.

'n DevOps-ingenieur is 'n spesialis wat DevOps-praktyke op 'n projek implementeer.

As ons dit alles opsom, kry ons so iets: 'n persoon in die posisie van 'n stelselingenieur speel die rol van 'n bouingenieur op 'n projek en is betrokke by die implementering van DevOps-praktyke daar.

Wat presies doen 'n DevOps-ingenieur?

DevOps-ingenieurs het al die stukke saamgestel waaruit 'n projek bestaan. Hulle ken die besonderhede van die werk van programmeerders, toetsers, stelseladministrateurs en help om hul werk te vereenvoudig. Hulle verstaan ​​die behoeftes en vereistes van die onderneming, sy rol in die ontwikkelingsproses – en bou die proses met inagneming van die belange van die kliënt.

Ons het baie oor outomatisering gepraat – dit is in die eerste plek waarmee DevOps-ingenieurs te doen het. Dit is 'n baie groot punt, wat onder andere die voorbereiding van die omgewing insluit.

Kirill Sergeev: “Voordat opdaterings in die produk geïmplementeer word, moet dit in 'n derdeparty-omgewing getoets word. Dit word voorberei deur DevOps-ingenieurs. Hulle vestig 'n DevOps-kultuur op die projek as geheel: hulle stel DevOps-praktyke by alle lae van hul projekte bekend. Hierdie drie beginsels: outomatisering, vereenvoudiging, versnelling - hulle bring waar hulle ook al kan bereik."

Wat moet 'n DevOps-ingenieur weet?

Oor die algemeen moet hy kennis van verskillende gebiede hê: programmering, werk met bedryfstelsels, databasisse, samestelling en konfigurasiestelsels. Dit word aangevul deur die vermoë om met wolkinfrastruktuur, orkestrasie en moniteringstelsels te werk.

1. Programmeringstale

DevOps-ingenieurs ken verskeie basiese tale vir outomatisering en kan byvoorbeeld vir 'n programmeerder sê: "Hoe gaan dit om die kode nie met die hand te installeer nie, maar met ons script, wat alles outomatiseer? Ons sal 'n konfigurasielêer daarvoor voorberei, dit sal vir beide u en ons gerieflik wees om te lees, en ons sal dit enige tyd kan verander. Ons sal ook sien wie, wanneer en hoekom veranderinge daaraan maak.”

'n DevOps-ingenieur kan een of meer van hierdie tale leer: Python, Groovy, Bash, Powershell, Ruby, Go. Dit is nie nodig om hulle op 'n diep vlak te ken nie - die basiese beginsels van sintaksis, OOP-beginsels en die vermoë om eenvoudige skrifte vir outomatisering te skryf is genoeg.

2. Bedryfstelsels

'n DevOps-ingenieur moet verstaan ​​op watter bediener die produk geïnstalleer sal word, in watter omgewing dit sal loop en met watter dienste dit sal interaksie hê. U kan kies om in Windows of die Linux-familie te spesialiseer.

3. Weergawebeheerstelsels

Sonder kennis van 'n weergawebeheerstelsel is 'n DevOps-ingenieur nêrens nie. Git is een van die gewildste stelsels op die oomblik.

4. Wolkverskaffers

AWS, Google, Azure - veral as ons praat oor die Windows-rigting.

Kirill Sergeev: “Wolkverskaffers voorsien vir ons virtuele bedieners wat perfek by CI/CD pas.

Die installering van tien fisiese bedieners vereis ongeveer honderd handbewerkings. Elke bediener moet met die hand geloods, geïnstalleer en die vereiste bedryfstelsel gekonfigureer word, ons toepassing op hierdie tien bedieners geïnstalleer word, en dan alles tien keer dubbel gekontroleer word. Wolkdienste vervang hierdie prosedure met tien reëls kode, en 'n goeie DevOps-ingenieur behoort daarmee te kan werk. Dit spaar tyd, moeite en geld – beide vir die kliënt en vir die maatskappy.”

5. Orkestrasiestelsels: Docker en Kubernetes

Kirill Sergeev: “Virtuele bedieners word in houers verdeel, waarin ons elkeen ons toepassing kan installeer. Wanneer daar baie houers is, moet jy dit bestuur: skakel een aan, skakel 'n ander af, maak iewers rugsteun. Dit word redelik kompleks en vereis 'n orkestrasiestelsel.

Voorheen is elke toepassing deur 'n aparte bediener hanteer - enige veranderinge in die werking daarvan kan die diensbaarheid van die toepassing beïnvloed. Danksy houers word toepassings geïsoleer en loop afsonderlik - elkeen op sy eie virtuele masjien. As 'n mislukking voorkom, is dit nie nodig om tyd te mors om na die oorsaak te soek nie. Dit is makliker om die ou houer te vernietig en 'n nuwe een by te voeg.”

6. Konfigurasiestelsels: Sjef, Ansible, Puppet

As u 'n hele vloot bedieners moet onderhou, moet u baie van dieselfde soort bedrywighede doen. Dit is lank en moeilik, en handwerk verhoog ook die kans op foute. Dit is waar konfigurasiestelsels tot die redding kom. Met hul hulp skep hulle 'n skrif wat maklik is om te lees vir programmeerders, DevOps-ingenieurs en stelseladministrateurs. Hierdie skrip help om dieselfde bewerkings outomaties op bedieners uit te voer. Dit verminder handbewerkings (en dus foute).

Watter soort loopbaan kan 'n DevOps-ingenieur bou?

Jy kan beide horisontaal en vertikaal ontwikkel.

Igor Boyko: “Vanuit die oogpunt van horisontale ontwikkeling het DevOps-ingenieurs nou die breedste vooruitsigte. Alles verander voortdurend, en jy kan vaardighede op 'n verskeidenheid gebiede bou: van weergawebeheerstelsels tot monitering, van konfigurasiebestuur tot databasisse.

Jy kan ’n stelselargitek word as ’n werknemer daarin belangstel om te verstaan ​​hoe ’n toepassing in alle stadiums van sy lewensiklus werk – van ontwikkeling tot ondersteuning.”

Hoe om 'n DevOps-ingenieur te word?

  1. Lees The Phoenix Project and DevOps Handbook. Dit is die ware pilare van die DevOps-filosofie, met die eerste 'n fiksiewerk.
  2. Leer tegnologie uit die lys hierbo: op jou eie of deur aanlynkursusse.
  3. Sluit aan as 'n DevOps-ingenieur vir 'n oopbronprojek.
  4. Oefen en bied DevOps-praktyke aan op jou persoonlike en werksprojekte.

Bron: will.com

Voeg 'n opmerking