Hvorfor er DevOps nødvendigt, og hvem er DevOps-specialister?

Når en applikation ikke fungerer, er det sidste, man ønsker at høre fra kollegerne, sætningen "problemet er på jeres side". I sidste ende lider brugerne – de bekymrer sig ikke om, hvilken del af teamet der er ansvarlig for fejlen. DevOps-kulturen opstod netop for at forene udvikling og drift og samle dem omkring et fælles ansvar for det endelige produkt.

Hvilke praksisser indgår i begrebet DevOps, og hvorfor er de nødvendige? Hvad laver DevOps-ingeniører, og hvad skal de kunne? På disse og andre spørgsmål svarer eksperter fra EPAM: Kirill Sergeev, systemingeniør og DevOps-evangelist, og Igor Boiko, førende systemingeniør og koordinator for et af virksomhedens DevOps-teams.

Hvorfor er DevOps nødvendigt, og hvem er DevOps-specialister?

Hvorfor er DevOps nødvendigt?

Tidligere eksisterede der en barriere mellem udviklere og drift (den såkaldte operations). Det lyder paradoksalt, men de havde forskellige mål og KPI'er, selvom de arbejdede på det samme. Målet med udviklingen var at implementere forretningskrav så hurtigt som muligt og tilføje dem til det fungerende produkt. Driften havde til opgave at sikre, at applikationen kørte stabilt – og enhver ændring truer stabiliteten. Her er der et interessekonflikt – DevOps opstod for at løse dette.

Hvad er DevOps?

Det er et godt – og diskutabelt – spørgsmål: verden har endnu ikke nået enighed om dette. I EPAM mener man, at DevOps samler teknologi, processer og kulturen for samarbejde i teamet. Denne sammenfletning er rettet mod kontinuerlig levering af værdi til slutbrugerne.

Kirill Sergeev: „Udviklere skriver kode, testere verificerer den, og administratorer installerer det endelige produkt i produktionsmiljøet. Længe har disse dele af teamet været noget opsplittede, men så opstod idéen om at samle dem under en fælles proces. Så blev DevOps-praksisserne til.“

Den dag er kommet, hvor udviklere og systemingeniører har fået interesse for hinandens arbejde. Barrieren mellem produktion og drift er begyndt at forsvinde. Så blev DevOps til, som indeholder praksisser, kultur og rækkefølge for samarbejdet i teamet.

Hvorfor er DevOps nødvendigt, og hvem er DevOps-specialister?

Hvad er essensen af DevOps-kulturen?

Det er vigtigt, at ansvaret for det endelige resultat ligger hos hvert medlem af teamet. Det mest interessante og komplekse ved DevOps-filosofien er at forstå, at en bestemt person ikke bare er ansvarlig for sin del af arbejdet, men også bærer ansvaret for, hvordan hele produktet vil fungere. Problemet ligger ikke på en persons side – det er fælles, og hvert medlem af teamet bidrager til at løse det.

Det vigtigste princip i DevOps-kulturen er netop at løse problemer, ikke bare at anvende DevOps-praksisser. Desuden implementeres disse praksisser ikke "på en bestemt side", men i hele produktet. Projektet har ikke brug for en DevOps-ingeniør for sig selv – de har brug for en løsning på problemet, og rollen som DevOps-ingeniør kan fordeles blandt flere medlemmer af teamet med forskellige specialiseringer.

Hvilke DevOps-praksisser findes der?

DevOps-praksisser dækker alle faser af softwarelivscyklussen.

Igor Boiko: "Den ideelle situation er, når vi begynder at bruge DevOps-praksisser lige fra projektstart. Sammen med arkitekterne planlægger vi, hvordan applikationens arkitektoniske landskab vil se ud, hvor den vil være placeret, og hvordan den kan skaleres, og vi vælger platformen. Lige nu er mikroservicesarkitektur populært – til den vælger vi et orkestreringssystem: man skal kunne administrere hver enkelt del af applikationen særskilt og opdatere den uafhængigt af andre. Endnu en praksis er 'infrastruktur som kode'. Dette er en tilgang, hvor projekts infrastruktur oprettes og styres ved hjælp af kode, ikke gennem direkte interaktion med serverne.

Derefter går vi videre til udviklingsfasen. Her er en af de største praksisser opbygning af CI/CD: man skal hjælpe udviklerne med hurtigt at integrere ændringer i produktet i små portioner, oftere og med mindre besvær. CI/CD dækker både kodekontrol, melding af master til kodebasen og udrulning af applikationen på test- og produktionsmiljøer.

I CI/CD-faserne passerer koden gennem quality gates. Med deres hjælp kontrolleres det, at koden, der kommer fra udviklerens arbejdsstation, lever op til de fastsatte kvalitetskriterier. Her tilføjes enheds- og UI-testning. For hurtig, smertefri og fokuseret udrulning af produktet kan en passende type deployment vælges.

Der er plads til DevOps-praksis, selv i supportfasen af et færdigt produkt. De anvendes til overvågning, feedback, sikkerhed og implementering af ændringer. For alle disse opgaver ser DevOps på det i forhold til løbende forbedringer. Vi minimerer gentagne operationer og automatiserer dem. Dette inkluderer også migreringer, udvidelse af applikationen og sikring af driftsstabilitet.

Hvad er fordelene ved DevOps-praksis?

Hvis vi skulle skrive en lærebog om moderne DevOps-praksis, ville de første tre punkter være automation, hurtigere udgivelser og hurtig feedback fra brugerne.

Kirill Sergeev: "Det første er automation. Alle interaktioner i teamet kan automatiseres: vi skriver kode – ruller det ud – tjekker – installerer – samler feedback – og går tilbage til starten. Alt dette sker automatisk.

Det andet er hurtigere release-udgivelser og endda forenkling af udviklingen. For kunden er det altid vigtigt, at produktet kommer på markedet så hurtigt som muligt og begynder at skabe værdi før konkurrenternes alternativer. Produktleveringsprocessen kan forbedres uendeligt: forkorte tiden, tilføje ekstra kontrolpunkter, forbedre overvågningen.

Det tredje er hurtigere feedback fra brugeren. Hvis der er bemærkninger, kan vi straks foretage justeringer og opdatere applikationen med det samme.

Hvorfor er DevOps nødvendigt, og hvem er DevOps-specialister?

Hvordan relaterer begreberne "systemingeniør", "build-ingeniør" og "DevOps-ingeniør" til hinanden?

De overlapper, men relaterer sig til lidt forskellige områder.

En systemingeniør hos EPAM er en stilling. De kan have forskellige niveauer: fra junior til chief specialist.

Build-ingeniør er snarere en rolle, som man kan have i et projekt. I dag bruges termen om personer, der er ansvarlige for CI/CD.

En DevOps-ingeniør er en specialist, der implementerer DevOps-praksis i projektet.

Hvis man opsummerer det hele, ser det omtrent sådan ud: en person i stillingen som systemingeniør indtager rollen som build-ingeniør i projektet og arbejder der med at implementere DevOps-praksis.

Hvad er det præcist, at DevOps-ingeniøren arbejder med?

DevOps-ingenører samler alle de dele, som et projekt består af. De kender til programmereres, testeres og systemadministratorers arbejdsmetoder og hjælper med at forenkle deres arbejde. De forstår virksomhedens behov og krav, dens rolle i udviklingsprocessen – og opbygger processen med hensyntagen til kundens interesser.

Vi har talt meget om automatisering – det er først og fremmest, hvad DevOps-ingenører beskæftiger sig med. Det er en meget vigtig del, som blandt andet inkluderer forberedelse af miljøet.

Kirill Sergeev: "Før opdateringer integreres i produktet, skal de testes i et eksternt miljø. Det forbereder DevOps-ingenørerne. De implementerer også DevOps-kulturen i projektet som helhed: de indfører DevOps-praksis på alle lag af deres projekter. Disse tre principper: automatisering, forenkling, acceleration – bringer de overalt, hvor de kan nå."

Hvad skal en DevOps-ingenør vide?

I det store hele bør han have viden fra forskellige områder: programmering, arbejde med operativsystemer, databaser, build- og konfigurationssystemer. Herudover tilføjes evnen til at arbejde med cloud-infrastruktur, orkestrerings- og overvågningssystemer.

1. Programmeringssprog

DevOps-ingenører kender flere grundlæggende sprog til automatisering og kan for eksempel sige til programmøren: "Lad os sige, at du skal installere koden ikke manuelt, men ved hjælp af vores script, der automatiserer alt? Til det forbereder vi en config-fil, som det vil være nemt at læse for både dig og os – og vi kan ændre den når som helst. Og vi vil også kunne se, hvem, hvornår og hvorfor der foretager ændringer i den."

DevOps-ingenøren kan lære et eller flere af disse sprog: Python, Groovy, Bash, Powershell, Ruby, Go. Det er ikke nødvendigt at have en dybdegående viden – det er tilstrækkeligt at kende grundlæggende syntaks, OOP-principper, og at kunne skrive enkle scripts til automatisering.

2. Operativsystemer

DevOps-ingenøren bør forstå, hvilken server produktet vil blive installeret på, i hvilket miljø det vil blive kørt, og hvilke tjenester det vil interagere med. Man kan vælge specialisering inden for Windows eller Linux-familien.

3. Versionskontrolsystemer

Uden viden om versionskontrolsystemer kommer DevOps-ingenøren ikke langt. Git er et af de mest populære systemer i øjeblikket.

4. Cloud-udbydere

AWS, Google, Azure – især hvis vi taler om Windows-retningen.

Kirill Sergeev: «Cloud-udbydere giver os virtuelle servere, som passer perfekt til CI/CD-rammer.

At installere ti fysiske servere kræver omkring hundrede manuelle operationer. Hver server skal startes, operativsystemet installeres, og vores applikation skal installeres på disse ti servere, hvorefter alt skal kontrolleres ti gange. Cloud-tjenester erstatter denne procedure med ti linjer kode, og en god DevOps-ingeniør skal kunne arbejde med dem. Det sparer tid, kræfter og penge – både for kunden og for virksomheden».

5. Orkestrationssystemer: Docker og Kubernetes

Kirill Sergeev: «Virtuelle servere opdeles i containere, hvor vi kan installere vores applikation. Når der er mange containere, skal de styres: en tændes, en anden slukkes, og man skal lave backups forskellige steder. Det bliver et ret komplekst arbejde, som kræver et orkestreringssystem.

Tidligere blev hver applikation håndteret af en enkelt server – enhver ændring i dens funktion kunne påvirke applikationens stabilitet. Takket være containere bliver applikationer isolerede og kører separat – hver på sin egen virtuelle maskine. Hvis der sker en fejl, behøver man ikke bruge tid på at finde årsagen. Det er nemmere at ødelægge den gamle container og tilføje en ny».

6. Konfigurationssystemer: Chef, Ansible, Puppet

Når man skal vedligeholde et helt antal servere, er man nødt til at udføre mange ensartede opgaver. Det er tidskrævende og kompliceret, og manuel arbejde øger risikoen for fejl. Her kommer konfigurationssystemer til hjælp. Med dem kan man lave et script, der er nemt at læse for både programmører, DevOps-ingeniører og systemadministratorer. Dette script hjælper med at udføre ensartede operationer på serverne automatisk. Så antallet af manuelle operationer (og dermed fejl) reduceres.

Hvilken karriere kan en DevOps-ingeniør bygge?

Man kan udvikle sig både horisontalt og vertikalt.

Igor Boiko: «Set fra en horisontal udviklingsvinkel har DevOps-ingeniører i øjeblikket de bredeste perspektiver. Alt ændrer sig konstant, og man kan udvide sine færdigheder inden for mange forskellige områder: fra versionskontrolsystemer til overvågning, fra konfigurationsstyring til databaser.

Man kan blive systemarkitekt, hvis en medarbejder er interesseret i at forstå, hvordan applikationen fungerer i alle faser af sin livscyklus – fra udvikling til support.

Hvordan bliver man DevOps-ingeniør?

  1. Læs bøgerne "Projekt 'Fønix'" og DevOps Handbook. De er sande søjler i DevOps-filosofien, hvoraf den første er en skønlitterær roman.
  2. Studer teknologierne fra listen ovenfor: selvstændigt eller på online kurser.
  3. Deltag som DevOps-ingeniør i et open source-projekt.
  4. Øv dig og foreslå DevOps-praksisser på dine personlige og arbejdsmæssige projekter.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster