Hvorfor DevOps er viktig og hva DevOps-spesialister gjør

Når applikasjonen ikke fungerer, er det minst ønskelig å høre fra kolleger utsagnet «problemet er på deres side». I siste instans lider brukerne – og de bryr seg ikke om hvilken del av teamet som er ansvarlig for feilen. DevOps-kulturen oppsto nettopp for å forene utvikling og støtte og samle dem rundt et felles ansvar for det endelige produktet.

Hvilke praksiser inngår i begrepet DevOps og hva er de gode for? Hva jobber DevOps-ingeniører med, 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 Bojko, ledende systemingeniør og koordinator for et av DevOps-teamene i selskapet.

Hvorfor DevOps er viktig og hva DevOps-spesialister gjør

Hvorfor er DevOps nødvendig?

Tidligere fantes det en barriere mellom utviklere og støtte (såkalt operations). Paradoxalt nok hadde de forskjellige mål og KPIer, selv om de jobbet med det samme. Utviklingens mål var å implementere forretningskrav så raskt som mulig og legge dem til det fungerende produktet. Støtte var ansvarlig for at applikasjonen fungerte stabilt – og enhver endring setter stabiliteten i fare. Det var en konflikt mellom interesser – DevOps ble opprettet for å løse dette.

Hva er DevOps?

Det er et godt spørsmål – og et omstridt ett: det er ikke enighet i verden om dette ennå. I EPAM mener de at DevOps forener teknologier, prosesser og kultur for samarbeid innen teamet. Denne foreningen er rettet mot kontinuerlig levering av verdier til sluttbrukerne.

Kirill Sergeev: «Utviklerne skriver kode, testerne sjekker den, og administratorene installerer det endelige produktet i produksjonsmiljøet. I lang tid har disse delene av teamet vært noe fragmenterte, før ideen om å forene dem rundt en felles prosess oppsto. Slik ble DevOps-praksisene født.»

Dagen kom da utviklere og systemingeniører ble interessert i hverandres arbeid. Barrieren mellom produksjon og støtte begynte å viskes ut. Slik kom DevOps til live, som inkluderer praksis, kultur og orden for samarbeid i teamet.

Hvorfor DevOps er viktig og hva DevOps-spesialister gjør

Hva er essensen av DevOps-kulturen?

Det er en forutsetning at ansvaret for det endelige resultatet hviler på hver enkelt deltaker i teamet. Det mest interessante og utfordrende med DevOps-filosofien er å forstå at en spesifikk person ikke bare er ansvarlig for sitt arbeidsstadium, men at de også har ansvar for hvordan hele produktet vil fungere. Problemet ligger ikke på én persons side – det er felles, og hvert teammedlem bidrar til å løse det.

Den viktigste prinsippet i DevOps-kultur er å løse problemet, ikke bare å anvende DevOps-praksis. Videre implementeres disse praksisene ikke ‘på vegne av noen’, men i hele produktet. Prosjektet trenger ikke bare en DevOps-ingeniør, men en løsning på problemet, og rollen til DevOps-ingeniøren kan fordeles blant flere teammedlemmer med ulik spesialisering.

Hvilke DevOps-praksiser finnes?

DevOps-praksiser dekker alle faser av programvarelivssyklusen.

Igor Bojko: 'Ideelt sett begynner vi å bruke DevOps-praksiser samtidig med prosjektinitiering. Sammen med arkitektene planlegger vi hvordan applikasjonen vil ha sitt arkitektoniske landskap, hvor den vil plasseres og hvordan den skal skaleres, vi velger plattform. Mikrotjenestearkitektur er nå på moten – for den velger vi et orkestreringssystem: vi må kunne administrere hver eneste komponent i applikasjonen individuelt og oppdatere den uavhengig av de andre. En annen praksis er “infrastruktur som kode”. Dette er tilnærmingen der prosjektets infrastruktur blir skapt og administrert ved hjelp av kode, i stedet for direkte interaksjon med servere.

Deretter går vi videre til utviklingsfasen. Her er en av de største praksisene bygging av CI/CD: vi må hjelpe utviklerne med å integrere endringer i produktet raskt, i små inkrementer, oftere og med mindre smerte. CI/CD dekker både koding/testing, og opplasting av master til kodebasen, og utrulling av applikasjonen i test- og produksjonsmiljøer.

I CI/CD-fasene går koden gjennom kvalitetsporter. Disse brukes til å sjekke at koden som kommer fra utviklerens arbeidsstasjon, oppfyller de gitte kvalitetskriteriene. Her blir enhets- og UI-testing lagt til. For rask, smertefri og fokusert utrulling av produktet kan man velge en passende type distribusjon.

Det finnes en plass for DevOps-praksiser også i støttefasen for et ferdig produkt. De brukes til overvåking, tilbakemelding, sikkerhet og implementering av endringer. For alle disse oppgavene ser DevOps på det fra synspunktet om kontinuerlige forbedringer. Vi minimerer gjentatte operasjoner og automatiserer dem. Dette inkluderer migreringer, utvidelse av applikasjonen og opprettholdelse av funksjonalitet.

Hva er fordelene med DevOps-praksiser?

Hvis vi skulle skrive en lærebok om moderne DevOps-praksiser, ville de tre punktene på dens første side være: automatisering, raskere utgivelse og rask tilbakemelding fra brukerne.

Kirill SergeevDet første – er automatisering. Vi kan automatisere alle interaksjoner i teamet: skrive kode – rulle ut – sjekke – installere – samle tilbakemelding – gå tilbake til starten. Alt dette skjer automatisk.

Det andre – er å akselerere utgivelsen og til og med forenkle utviklingen. For kunden er det alltid viktig at produktet kommer på markedet så raskt som mulig og begynner å gi fordeler før konkurrentenes alternativer. Prosessen med produktleveranse kan forbedres uendelig: redusere tid, legge til flere kontrollpunkter og forbedre overvåkingen.

Det tredje – er å akselerere tilbakemeldingen fra brukeren. Hvis de har tilbakemeldinger, kan vi umiddelbart gjøre justeringer og oppdatere applikasjonen med en gang.

Hvorfor DevOps er viktig og hva DevOps-spesialister gjør

Hvordan forholder begrepene «systemingeniør», «build-ingeniør» og «DevOps-ingeniør» seg til hverandre?

De overlapper hverandre, men tilhører litt forskjellige sfærer.

Systemingeniør i EPAM – er en stilling. De finnes på forskjellige nivåer: fra junior til chief-spesialist.

Build-ingeniør – er mer en rolle som kan utføres i prosjektet. Nå kalles folk som er ansvarlige for CI/CD, dette.

En DevOps-ingeniør er en spesialist som implementerer DevOps-praksiser i prosjektet.

Å oppsummere alt dette, kan man si at en person i stillingen som systemingeniør også spiller rollen som build-ingeniør i prosjektet og arbeider med implementeringen av DevOps-praksiser.

Hva gjør egentlig en DevOps-ingeniør?

DevOps-ingeniører samler alle deler som utgjør et prosjekt. De kjenner til spesifikasjonene for arbeidet til programmerere, testere og systemadministratorer, og de hjelper med å forenkle arbeidet deres. De forstår behovene og kravene til virksomheten, dens rolle i utviklingsprosessen – og bygger prosessen med hensyn til kundens interesser.

Vi har snakket mye om automatisering – dette er det DevOps-ingeniører først og fremst jobber med. Dette er et svært stort punkt, som blant annet inkluderer forberedelse av miljøet.

Kirill Sergeev«Før vi implementerer oppdateringer i produktet, må de testes på et ekstern miljø. Dette forberedes av DevOps-ingeniørene. De innfører også DevOps-kulturen i prosjektet: de implementerer DevOps-praksis på alle nivåer i prosjektene sine. Disse tre prinsippene: automatisering, forenkling, akselerasjon – de innfører overalt hvor de kan nå.»

Hva må en DevOps-ingeniør vite?

I stor grad må de ha kunnskap på tvers av forskjellige områder: programmering, arbeid med operativsystemer, databaser, bygg- og konfigurasjonssystemer. I tillegg kommer evnen til å jobbe med skyinfrastruktur, orkestreringssystemer og overvåking.

1. Programmeringsspråk

DevOps-ingeniører kjenner flere grunnleggende språk for automatisering og kan for eksempel si til programmereren: «La oss gjøre kodeinstallasjonen med skriptet vårt som automatiserer alt, i stedet for manuelt. Vi lager en config-fil som vil være enkel å lese for deg, og oss – og vi kan endre den når som helst. Og vi vil også se hvem, når og hvorfor som gjør endringer i den.»

DevOps-ingeniøren kan lære ett eller flere av disse språkene: Python, Groovy, Bash, Powershell, Ruby, Go. Det er ikke nødvendig med dyp kunnskap – det er tilstrekkelig å ha en forståelse av syntaks, prinsipper for OOP, og evnen til å skrive enkle skript for automatisering.

2. Operativsystemer

DevOps-ingeniøren må forstå på hvilken server produktet skal installeres, i hvilket miljø det skal kjøres, og hvilke tjenester det skal samhandle med. Det kan være lurt å spesialisere seg på Windows eller Linux-familien.

3. Versjonskontrollsystemer

Uten kunnskap om versjonskontrollsystemer kommer ikke DevOps-ingeniøren langt. Git er et av de mest populære systemene for tiden.

4. Skyleverandører

AWS, Google, Azure – spesielt når vi snakker om Windows-retning.

Kirill Sergeev: «Skytjenesteleverandører gir oss virtuelle servere, som passer perfekt til CI/CD-sporene.

Installering av ti fysiska servrar krever omtrent hundre manuelle operasjoner. Hver server må startes opp manuelt, installere og konfigurere det nødvendige operativsystemet, installere applikasjonen vår på disse ti serverne, og deretter må alt sjekkes ti ganger. Skytjenester erstatter denne prosedyren med ti linjer med kode, og en god DevOps-ingeniør må kunne håndtere dem. Slik sparer han tid, krefter og penger – både for kunden og for selskapet».

5. Orkestreringssystemer: Docker og Kubernetes

Kirill Sergeev: «Virtuelle servere er delt opp i containere, der vi kan installere applikasjonen vår. Når det er mange containere, må vi administrere dem: slå på en, slå av en annen, ta sikkerhetskopier et sted. Dette blir ganske komplisert, og derfor er det behov for et orkestreringssystem.

Tidligere håndterte hver applikasjon en egen server – eventuelle endringer i dens drift kunne påvirke applikasjonens funksjonalitet. Takket være containere blir applikasjoner isolerte og kjøres separat – hver på sin virtuelle maskin. Hvis det skjer en feil, trenger man ikke bruke tid på å finne årsaken. Det er enklere å slette den gamle containeren og legge til en ny».

6. Konfigurasjonssystemer: Chef, Ansible, Puppet

Når det er nødvendig å vedlikeholde en hel park av servere, er man nødt til å utføre mange like operasjoner. Dette tar tid og er vanskelig, og manuelt arbeid øker sjansen for feil. Her kommer konfigurasjonssystemer til unnsetning. Med deres hjelp lager man et skript som er lett å lese for både programmerere, DevOps-ingeniører og systemadministratorer. Dette skriptet hjelper med å utføre de samme operasjonene på serverne automatisk. Dermed blir det færre manuelle operasjoner (og følgelig færre feil).

Hvilken karriere kan en DevOps-ingeniør bygge?

Man kan utvikle seg både horisontalt og vertikalt.

Igor Bojko: «Fra et horisontalt utviklingsperspektiv har DevOps-ingeniører nå de bredeste perspektivene. Alt endrer seg kontinuerlig, og man kan bygge ferdigheter i en rekke retninger: fra versjonskontrollsystemer til overvåkning, fra konfigurasjonsadministrasjon til databaser.

Man kan bli systemarkitekt hvis det er interessant for medarbeideren å forstå hvordan en applikasjon fungerer gjennom alle faser av livssyklusen – fra utvikling til støtte.

Hvordan bli DevOps-ingeniør?

  1. Les bøkene «Prosjekt "Fenix"» og DevOps Handbook. Disse er ekte søyler av DevOps-filosofien, hvor den første er en skjønnlitterær roman.
  2. Lær deg teknologiene fra listen ovenfor: enten på egen hånd eller gjennom nettkurs.
  3. Bli med som DevOps-ingeniør på et open source-prosjekt.
  4. Praktiser og foreslå DevOps-praksis på egne og jobbprosjekter.

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster