Hvorfor er DevOps nødvendig, og hvem er DevOps-spesialister?

Når en applikasjon ikke fungerer, er det siste du vil høre fra kollegene dine uttrykket "problemet er på din side." Som et resultat lider brukerne – og de bryr seg ikke om hvilken del av teamet som er ansvarlig for sammenbruddet. DevOps-kulturen oppsto nettopp for å bringe utvikling og støtte sammen rundt et felles ansvar for sluttproduktet.

Hvilken praksis er inkludert i konseptet med DevOps, og hvorfor er det nødvendig? Hva gjør DevOps-ingeniører og hva bør de kunne? Eksperter fra EPAM svarer på disse og andre spørsmål: Kirill Sergeev, systemingeniør og DevOps-evangelist, og Igor Boyko, ledende systemingeniør og koordinator for et av selskapets DevOps-team.

Hvorfor er DevOps nødvendig, og hvem er DevOps-spesialister?

Hvorfor er DevOps nødvendig?

Tidligere var det en barriere mellom utviklere og support (såkalt drift). Det høres paradoksalt ut, men de hadde forskjellige mål og KPIer, selv om de gjorde det samme. Målet med utviklingen var å implementere forretningskrav så raskt som mulig og legge dem til et fungerende produkt. Support var ansvarlig for å sikre at applikasjonen fungerte stabilt – og eventuelle endringer setter stabiliteten i fare. Det er en interessekonflikt - DevOps så ut til å løse den.

Hva er DevOps?

Det er et godt spørsmål – og et kontroversielt spørsmål: verden har ennå ikke endelig blitt enige om dette. EPAM mener at DevOps kombinerer teknologier, prosesser og en kultur for interaksjon i et team. Denne foreningen har som mål å kontinuerlig levere verdi til sluttbrukere.

Kirill Sergeev: «Utviklere skriver kode, testere vurderer den, og administratorer distribuerer sluttproduktet til produksjon. Lenge var disse delene av teamet noe spredt, og så oppsto ideen om å forene dem gjennom en felles prosess. Slik så DevOps-praksis ut."

Dagen kom da utviklere og systemingeniører ble interessert i hverandres arbeid. Barrieren mellom produksjon og støtte begynte å forsvinne. Slik oppsto DevOps, som inkluderer praksis, kultur og teaminteraksjon.

Hvorfor er DevOps nødvendig, og hvem er DevOps-spesialister?

Hva er essensen av DevOps-kulturen?

Faktum er at ansvaret for det endelige resultatet ligger hos hvert lagmedlem. Det mest interessante og vanskeligste i DevOps-filosofien er å forstå at en spesifikk person ikke bare er ansvarlig for sin egen arbeidsfase, men er ansvarlig for hvordan hele produktet vil fungere. Problemet ligger ikke på noens side – det deles, og hvert teammedlem er med på å løse det.

Det viktigste i en DevOps-kultur er å løse problemet, ikke bare bruke DevOps-praksis. Dessuten implementeres ikke denne praksisen "på noens side", men gjennom hele produktet. Et prosjekt trenger ikke en DevOps-ingeniør i seg selv – det trenger en løsning på et problem, og rollen som en DevOps-ingeniør kan fordeles på flere teammedlemmer med ulike spesialiseringer.

Hva er typene DevOps-praksis?

DevOps-praksis dekker alle stadier av programvarens livssyklus.

Igor Boyko: «Det ideelle tilfellet er når vi begynner å bruke DevOps-praksis rett ved starten av prosjektet. Sammen med arkitektene planlegger vi hva slags arkitektonisk landskap applikasjonen skal ha, hvor den skal ligge og hvordan skaleres, og velger plattform. I dag er mikrotjenestearkitektur på moten - for den velger vi et orkestreringssystem: du må kunne administrere hvert element i applikasjonen separat og oppdatere det uavhengig av de andre. En annen praksis er "infrastruktur som kode." Dette er navnet på en tilnærming der prosjektinfrastrukturen opprettes og administreres ved hjelp av kode, i stedet for gjennom direkte interaksjon med servere.

Deretter går vi videre til utviklingsstadiet. En av de største praksisene her er å bygge CI/CD: du må hjelpe utviklere med å integrere endringer i produktet raskt, i små porsjoner, oftere og smertefritt. CI/CD dekker kodegjennomgang, opplasting av masteren til kodebasen og distribusjon av applikasjonen til test- og produksjonsmiljøer.

På CI/CD-stadiene går koden gjennom kvalitetsporter. Med deres hjelp sjekker de at koden som kommer ut av utviklerens arbeidsstasjon oppfyller de angitte kvalitetskriteriene. Enhets- og brukergrensesnitttesting legges til her. For rask, smertefri og fokusert produktdistribusjon kan du velge riktig distribusjonstype.

DevOps-utøvere har også en plass på stadiet for å støtte det ferdige produktet. De brukes til overvåking, tilbakemelding, sikkerhet og innføring av endringer. DevOps ser på alle disse oppgavene fra et kontinuerlig forbedringsperspektiv. Vi minimerer repeterende operasjoner og automatiserer dem. Dette inkluderer også migreringer, programutvidelse og ytelsesstøtte.»

Hva er fordelene med DevOps-praksis?

Hvis vi skulle skrive en lærebok om moderne DevOps-praksis, ville det vært tre punkter på den første siden: automatisering, raskere utgivelser og rask tilbakemelding fra brukere.

Kirill Sergeev: «Det første er automatisering. Vi kan automatisere alle interaksjoner i teamet: skrev koden - rullet den ut - sjekket den - installerte den - samlet tilbakemelding - returnerte til begynnelsen. Alt dette er automatisk.

Den andre er å fremskynde utgivelsen og til og med forenkle utviklingen. Det er alltid viktig for kunden at produktet kommer inn på markedet så snart som mulig og begynner å gi fordeler tidligere enn konkurrentenes analoger. Produktleveringsprosessen kan forbedres i det uendelige: reduser tid, legg til flere kontrollmerker, forbedre overvåking.

For det tredje er akselerasjonen av tilbakemeldinger fra brukere. Hvis han har kommentarer, kan vi umiddelbart gjøre justeringer og oppdatere søknaden umiddelbart.»

Hvorfor er DevOps nødvendig, og hvem er DevOps-spesialister?

Hvordan henger begrepene «systemingeniør», «byggingeniør» og «DevOps-ingeniør» sammen?

De overlapper hverandre, men tilhører litt forskjellige områder.

Systemingeniør i EPAM er en stilling. De kommer på forskjellige nivåer: fra junior til sjefspesialist.

En bygningsingeniør er mer en rolle som kan utføres på et prosjekt. Nå heter dette de ansvarlige for CI/CD.

En DevOps-ingeniør er en spesialist som implementerer DevOps-praksis på et prosjekt.

Hvis vi oppsummerer det hele, får vi noe sånt som dette: en person i stillingen som systemingeniør spiller rollen som byggeingeniør på et prosjekt og er involvert i implementeringen av DevOps-praksis der.

Hva gjør en DevOps-ingeniør?

DevOps-ingeniører setter sammen alle delene som utgjør et prosjekt. De kjenner detaljene til arbeidet til programmerere, testere, systemadministratorer og hjelper til med å forenkle arbeidet deres. De forstår behovene og kravene til virksomheten, dens rolle i utviklingsprosessen – og bygger prosessen under hensyntagen til kundens interesser.

Vi snakket mye om automatisering – det er dette DevOps-ingeniørene driver med først og fremst. Dette er et veldig stort poeng, som blant annet inkluderer å forberede miljøet.

Kirill Sergeev: «Før du implementerer oppdateringer i produktet, må de testes i et tredjepartsmiljø. Den er utarbeidet av DevOps-ingeniører. De innpoderer en DevOps-kultur på prosjektet som helhet: de introduserer DevOps-praksis i alle lag av prosjektene sine. Disse tre prinsippene: automatisering, forenkling, akselerasjon - de bringer dit de kan nå."

Hva bør en DevOps-ingeniør vite?

I det store og hele må han ha kunnskap fra ulike områder: programmering, arbeid med operativsystemer, databaser, montering og konfigurasjonssystemer. Disse er supplert med muligheten til å jobbe med skyinfrastruktur, orkestrerings- og overvåkingssystemer.

1. Programmeringsspråk

DevOps-ingeniører kan flere grunnleggende språk for automatisering og kan for eksempel fortelle en programmerer: «Hva med å installere koden ikke for hånd, men ved å bruke skriptet vårt, som automatiserer alt? Vi vil forberede en konfigurasjonsfil for den, den vil være praktisk for både deg og oss å lese, og vi vil kunne endre den når som helst. Vi vil også se hvem, når og hvorfor gjør endringer i den.»

En DevOps-ingeniør kan lære ett eller flere av disse språkene: Python, Groovy, Bash, Powershell, Ruby, Go. Det er ikke nødvendig å kjenne dem på et dypt nivå - det grunnleggende om syntaks, OOP-prinsipper og evnen til å skrive enkle skript for automatisering er nok.

2. Operativsystemer

En DevOps-ingeniør må forstå hvilken server produktet skal installeres på, hvilket miljø det skal kjøres i og hvilke tjenester det vil samhandle med. Du kan velge å spesialisere deg i Windows eller Linux-familien.

3. Versjonskontrollsystemer

Uten kunnskap om et versjonskontrollsystem er en DevOps-ingeniør ingensteds. Git er et av de mest populære systemene for øyeblikket.

4. Skyleverandører

AWS, Google, Azure - spesielt hvis vi snakker om Windows-retningen.

Kirill Sergeev: «Skyleverandører gir oss virtuelle servere som passer perfekt inn i CI/CD.

Å installere ti fysiske servere krever omtrent hundre manuelle operasjoner. Hver server må startes manuelt, installeres og konfigureres det nødvendige operativsystemet, installere applikasjonen vår på disse ti serverne, og deretter dobbeltsjekke alt ti ganger. Skytjenester erstatter denne prosedyren med ti linjer med kode, og en god DevOps-ingeniør bør kunne operere med dem. Dette sparer tid, krefter og penger – både for kunden og for selskapet.»

5. Orkestreringssystemer: Docker og Kubernetes

Kirill Sergeev: “Virtuelle servere er delt inn i containere, i hver av dem kan vi installere applikasjonen vår. Når det er mange beholdere, må du administrere dem: slå på en, slå av en annen, ta sikkerhetskopi et sted. Dette blir ganske komplekst og krever et orkestreringssystem.

Tidligere ble hver applikasjon håndtert av en separat server - eventuelle endringer i driften kan påvirke applikasjonens brukbarhet. Takket være containere blir applikasjoner isolert og kjøres separat - hver på sin egen virtuelle maskin. Hvis en feil oppstår, er det ikke nødvendig å kaste bort tid på å lete etter årsaken. Det er lettere å ødelegge den gamle beholderen og legge til en ny."

6. Konfigurasjonssystemer: Chef, Ansible, Puppet

Når du trenger å vedlikeholde en hel flåte av servere, må du gjøre mye av den samme typen operasjoner. Det er langt og vanskelig, og manuelt arbeid øker også sjansen for feil. Det er her konfigurasjonssystemer kommer til unnsetning. Med deres hjelp lager de et skript som er lett å lese for programmerere, DevOps-ingeniører og systemadministratorer. Dette skriptet hjelper til med å utføre de samme operasjonene på servere automatisk. Dette reduserer manuelle operasjoner (og dermed feil).

Hva slags karriere kan en DevOps-ingeniør bygge?

Du kan utvikle deg både horisontalt og vertikalt.

Igor Boyko: «Fra et synspunkt om horisontal utvikling, har DevOps-ingeniører nå de bredeste utsiktene. Alt er i konstant endring, og du kan bygge ferdigheter på en rekke områder: fra versjonskontrollsystemer til overvåking, fra konfigurasjonsadministrasjon til databaser.

Du kan bli systemarkitekt hvis en ansatt er interessert i å forstå hvordan en applikasjon fungerer i alle stadier av livssyklusen – fra utvikling til support.»

Hvordan bli en DevOps-ingeniør?

  1. Les The Phoenix Project and DevOps Handbook. Dette er de virkelige pilarene i DevOps-filosofien, der den første er et skjønnlitterært verk.
  2. Lær teknologier fra listen ovenfor: på egen hånd eller gjennom nettkurs.
  3. Bli med som DevOps-ingeniør for et åpen kildekode-prosjekt.
  4. Øv og tilby DevOps-praksis på dine personlige prosjekter og arbeidsprosjekter.

Kilde: www.habr.com

Legg til en kommentar