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

Når en applikation ikke virker, er det sidste, du ønsker at høre fra dine kolleger, sætningen "problemet er på din side." Som følge heraf lider brugerne - og de er ligeglade med, hvilken del af teamet der er ansvarlig for sammenbruddet. DevOps-kulturen opstod netop for at bringe udvikling og support sammen omkring et fælles ansvar for slutproduktet.

Hvilken praksis er inkluderet i konceptet med DevOps, og hvorfor er de nødvendige? Hvad laver DevOps-ingeniører, og hvad skal de kunne? Eksperter fra EPAM besvarer disse og andre spørgsmål: Kirill Sergeev, systemingeniør og DevOps-evangelist, og Igor Boyko, førende systemingeniør og koordinator for et af virksomhedens DevOps-teams.

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

Hvorfor er DevOps nødvendig?

Tidligere var der en barriere mellem udviklere og support (såkaldte operationer). Det lyder paradoksalt, men de havde forskellige mål og KPI'er, selvom de gjorde det samme. Målet med udviklingen var at implementere forretningskrav så hurtigt som muligt og tilføje dem til et fungerende produkt. Support var ansvarlig for at sikre, at applikationen fungerede stabilt - og eventuelle ændringer satte stabiliteten i fare. Der er en interessekonflikt - DevOps så ud til at løse den.

Hvad er DevOps?

Det er et godt spørgsmål - og et kontroversielt spørgsmål: verden er endnu ikke endelig blevet enige om dette. EPAM mener, at DevOps kombinerer teknologier, processer og en kultur af interaktion inden for et team. Denne forening har til formål løbende at levere værdi til slutbrugere.

Kirill Sergeev: “Udviklere skriver kode, testere gennemgår den, og administratorer implementerer det endelige produkt til produktion. I lang tid var disse dele af teamet noget spredt, og så opstod ideen om at forene dem gennem en fælles proces. Sådan så DevOps-praksis ud."

Dagen kom, hvor udviklere og systemingeniører blev interesserede i hinandens arbejde. Barrieren mellem produktion og støtte begyndte at forsvinde. Sådan opstod DevOps, som omfatter praksis, kultur og teaminteraktion.

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

Hvad er essensen af ​​DevOps-kulturen?

Faktum er, at ansvaret for det endelige resultat ligger hos hvert teammedlem. Det mest interessante og svære i DevOps-filosofien er at forstå, at en bestemt person ikke kun er ansvarlig for sit eget arbejdstrin, men er ansvarlig for, hvordan hele produktet vil fungere. Problemet ligger ikke på nogens side – det deles, og hvert teammedlem er med til at løse det.

Det vigtigste i en DevOps-kultur er at løse problemet, ikke kun anvende DevOps-praksis. Desuden implementeres denne praksis ikke "på nogens side", men gennem hele produktet. Et projekt behøver ikke en DevOps-ingeniør i sig selv - det har brug for en løsning på et problem, og rollen som en DevOps-ingeniør kan fordeles på flere teammedlemmer med forskellige specialiseringer.

Hvad er typerne af DevOps-praksis?

DevOps-praksis dækker alle stadier af softwarens livscyklus.

Igor Boyko: “Det ideelle tilfælde er, når vi begynder at bruge DevOps-praksis lige ved starten af ​​et projekt. Sammen med arkitekterne planlægger vi, hvilken slags arkitektonisk landskab applikationen skal have, hvor den skal placeres og hvordan den skal skaleres, og vælger platform. I dag er mikroservicearkitektur på mode - til den vælger vi et orkestreringssystem: du skal være i stand til at administrere hvert element i applikationen separat og opdatere det uafhængigt af de andre. En anden praksis er "infrastruktur som kode." Dette er navnet på en tilgang, hvor projektinfrastrukturen skabes og styres ved hjælp af kode i stedet for gennem direkte interaktion med servere.

Dernæst går vi videre til udviklingsstadiet. En af de største praksisser her er at bygge CI/CD: du skal hjælpe udviklere med at integrere ændringer i produktet hurtigt, i små portioner, oftere og smertefrit. CI/CD dækker kodegennemgang, upload af master til kodebasen og implementering af applikationen til test- og produktionsmiljøer.

På CI/CD-stadierne passerer koden gennem kvalitetsgates. Med deres hjælp tjekker de, at koden, der kommer ud af udviklerens arbejdsstation, opfylder de angivne kvalitetskriterier. Enheds- og UI-test tilføjes her. For hurtig, smertefri og fokuseret produktimplementering kan du vælge den passende implementeringstype.

DevOps-udøvere har også en plads på stadiet med at understøtte det færdige produkt. De bruges til overvågning, feedback, sikkerhed og indførelse af ændringer. DevOps ser på alle disse opgaver fra et løbende forbedringsperspektiv. Vi minimerer gentagne operationer og automatiserer dem. Dette inkluderer også migreringer, applikationsudvidelse og ydeevnesupport."

Hvad er fordelene ved DevOps-praksis?

Hvis vi skrev en lærebog om moderne DevOps-praksis, ville der være tre punkter på den første side: automatisering, fremskyndelse af udgivelser og hurtig feedback fra brugere.

Kirill Sergeev: “Det første er automatisering. Vi kan automatisere alle interaktioner i teamet: skrev koden - rullede den ud - tjekkede den - installerede den - indsamlede feedback - vendte tilbage til begyndelsen. Alt dette er automatisk.

Den anden er at fremskynde udgivelsen og endda forenkle udviklingen. Det er altid vigtigt for kunden, at produktet kommer på markedet så hurtigt som muligt og begynder at give fordele tidligere end konkurrenternes analoger. Produktleveringsprocessen kan forbedres uendeligt: ​​reducerer tid, tilføjer yderligere kontrolmærker, forbedrer overvågningen.

For det tredje er accelerationen af ​​brugerfeedback. Hvis han har kommentarer, kan vi straks foretage justeringer og opdatere ansøgningen med det samme."

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

Hvordan hænger begreberne "systemingeniør", "bygningsingeniør" og "DevOps-ingeniør" sammen?

De overlapper hinanden, men hører til lidt forskellige områder.

Systemingeniør hos EPAM er en stilling. De kommer på forskellige niveauer: fra junior til chefspecialist.

En bygningsingeniør er mere en rolle, der kan udføres på et projekt. Det er nu, hvad de ansvarlige for CI/CD hedder.

En DevOps-ingeniør er en specialist, der implementerer DevOps-praksis på et projekt.

Hvis vi opsummerer det hele, får vi noget som dette: en person i stillingen som systemingeniør spiller rollen som bygningsingeniør på et projekt og er involveret i implementeringen af ​​DevOps-praksis der.

Hvad gør en DevOps-ingeniør?

DevOps-ingeniører sammensætter alle de dele, der udgør et projekt. De kender detaljerne i arbejdet med programmører, testere, systemadministratorer og hjælper med at forenkle deres arbejde. De forstår virksomhedens behov og krav, dens rolle i udviklingsprocessen – og bygger processen under hensyntagen til kundens interesser.

Vi talte meget om automatisering – det er først og fremmest, hvad DevOps-ingeniører beskæftiger sig med. Det er et meget stort punkt, som blandt andet omfatter forberedelse af miljøet.

Kirill Sergeev: “Før du implementerer opdateringer i produktet, skal de testes i et tredjepartsmiljø. Det er udarbejdet af DevOps-ingeniører. De indgyder en DevOps-kultur på projektet som helhed: de introducerer DevOps-praksis på alle lag af deres projekter. Disse tre principper: automatisering, forenkling, acceleration - de bringer overalt, hvor de kan nå."

Hvad skal en DevOps-ingeniør vide?

I det store og hele skal han have viden fra forskellige områder: programmering, arbejde med styresystemer, databaser, montage- og konfigurationssystemer. Disse suppleres af evnen til at arbejde med cloud-infrastruktur, orkestrerings- og overvågningssystemer.

1. Programmeringssprog

DevOps-ingeniører kender flere grundlæggende sprog til automatisering og kan for eksempel fortælle en programmør: "Hvad med at installere koden ikke i hånden, men ved at bruge vores script, som automatiserer alt? Vi vil forberede en konfigurationsfil til den, den vil være praktisk for både dig og os at læse, og vi vil være i stand til at ændre den til enhver tid. Vi vil også se, hvem, hvornår og hvorfor der foretager ændringer i det.”

En DevOps-ingeniør kan lære et eller flere af disse sprog: Python, Groovy, Bash, Powershell, Ruby, Go. Det er ikke nødvendigt at kende dem på et dybt niveau - det grundlæggende i syntaks, OOP-principper og evnen til at skrive simple scripts til automatisering er nok.

2. Operativsystemer

En DevOps-ingeniør skal forstå, hvilken server produktet vil blive installeret på, hvilket miljø det vil køre i, og hvilke tjenester det vil interagere med. Du kan vælge at specialisere dig i Windows eller Linux-familien.

3. Versionskontrolsystemer

Uden kendskab til et versionskontrolsystem er en DevOps-ingeniør ingen steder. 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: “Skyudbydere giver os virtuelle servere, der passer perfekt ind i CI/CD.

Installation af ti fysiske servere kræver omkring hundrede manuelle handlinger. Hver server skal startes manuelt, installeres og konfigureres det nødvendige operativsystem, installeret vores applikation på disse ti servere og derefter dobbelttjekkes alt ti gange. Cloud-tjenester erstatter denne procedure med ti linjer kode, og en god DevOps-ingeniør burde være i stand til at arbejde med dem. Det sparer tid, kræfter og penge – både for kunden og for virksomheden.”

5. Orkestreringssystemer: Docker og Kubernetes

Kirill Sergeev: “Virtuelle servere er opdelt i containere, hvor vi hver især kan installere vores applikation. Når der er mange containere, skal du administrere dem: tænd en, sluk for en anden, lav sikkerhedskopier et sted. Dette bliver ret komplekst og kræver et orkestreringssystem.

Tidligere blev hver applikation håndteret af en separat server - enhver ændring i dens drift kunne påvirke applikationens brugbarhed. Takket være containere bliver applikationer isoleret og kører separat - hver på sin egen virtuelle maskine. Hvis der opstår en fejl, er der ingen grund til at spilde tid på at lede efter årsagen. Det er nemmere at ødelægge den gamle beholder og tilføje en ny."

6. Konfigurationssystemer: Chef, Ansible, Puppet

Når du skal vedligeholde en hel flåde af servere, skal du udføre meget af den samme type operationer. Det er langt og svært, og manuelt arbejde øger også risikoen for fejl. Det er her, konfigurationssystemer kommer til undsætning. Med deres hjælp opretter de et script, der er let at læse for programmører, DevOps-ingeniører og systemadministratorer. Dette script hjælper med at udføre de samme operationer på servere automatisk. Dette reducerer manuelle handlinger (og derfor fejl).

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

Du kan udvikle dig både horisontalt og vertikalt.

Igor Boyko: “Set fra horisontal udviklingssynspunkt har DevOps-ingeniører nu de bredeste udsigter. Alt ændrer sig konstant, og du kan opbygge færdigheder inden for en række områder: fra versionskontrolsystemer til overvågning, fra konfigurationsstyring til databaser.

Du kan blive systemarkitekt, hvis en medarbejder er interesseret i at forstå, hvordan en applikation fungerer på alle stadier af dens livscyklus – fra udvikling til support.”

Hvordan bliver man DevOps-ingeniør?

  1. Læs The Phoenix Project and DevOps Handbook. Disse er de egentlige søjler i DevOps-filosofien, hvor den første er et fiktionsværk.
  2. Lær teknologier fra listen ovenfor: på egen hånd eller gennem onlinekurser.
  3. Deltag som DevOps-ingeniør til et open source-projekt.
  4. Øv og tilbud DevOps-praksis på dine personlige projekter og arbejdsprojekter.

Kilde: www.habr.com

Tilføj en kommentar