Varför behövs DevOps och vilka är DevOps-specialister?

När en applikation inte fungerar är det sista du vill höra från dina kollegor frasen "problemet är på din sida." Som ett resultat lider användarna – och de bryr sig inte om vilken del av teamet som är ansvarig för haveriet. DevOps-kulturen växte fram just för att föra utveckling och stöd samman kring ett delat ansvar för slutprodukten.

Vilka metoder ingår i konceptet med DevOps och varför behövs de? Vad gör DevOps-ingenjörer och vad ska de kunna göra? Experter från EPAM svarar på dessa och andra frågor: Kirill Sergeev, systemingenjör och DevOps-evangelist, och Igor Boyko, ledande systemingenjör och koordinator för ett av företagets DevOps-team.

Varför behövs DevOps och vilka är DevOps-specialister?

Varför behövs DevOps?

Tidigare fanns det en barriär mellan utvecklare och support (så kallade operationer). Det låter paradoxalt, men de hade olika mål och nyckeltal, även om de gjorde samma sak. Målet med utvecklingen var att implementera affärskrav så snabbt som möjligt och lägga till dem i en fungerande produkt. Support ansvarade för att applikationen fungerade stabilt – och eventuella ändringar sätter stabiliteten på spel. Det finns en intressekonflikt - DevOps verkade lösa den.

Vad är DevOps?

Det är en bra fråga – och en kontroversiell sådan: världen har ännu inte äntligen kommit överens om detta. EPAM tror att DevOps kombinerar teknologier, processer och en kultur av interaktion inom ett team. Denna förening har som mål att kontinuerligt leverera värde till slutanvändare.

Kirill Sergeev: "Utvecklare skriver kod, testare granskar den och administratörer distribuerar den slutliga produkten till produktion. Länge var dessa delar av teamet något utspridda, och sedan uppstod idén att förena dem genom en gemensam process. Så här såg DevOps-praxis ut.”

Dagen kom då utvecklare och systemingenjörer blev intresserade av varandras arbete. Barriären mellan produktion och stöd började försvinna. Så här uppstod DevOps, som inkluderar praktiker, kultur och teaminteraktion.

Varför behövs DevOps och vilka är DevOps-specialister?

Vad är kärnan i DevOps-kulturen?

Faktum är att ansvaret för det slutliga resultatet ligger hos varje gruppmedlem. Det mest intressanta och svåra i DevOps-filosofin är att förstå att en specifik person inte bara är ansvarig för sin egen arbetsfas, utan är ansvarig för hur hela produkten kommer att fungera. Problemet ligger inte på någons sida – det delas, och varje gruppmedlem hjälper till att lösa det.

Det viktigaste i en DevOps-kultur är att lösa problemet, inte bara tillämpa DevOps-praxis. Dessutom implementeras dessa metoder inte "på någons sida", utan genom hela produkten. Ett projekt behöver inte en DevOps-ingenjör i sig - det behöver en lösning på ett problem, och rollen som DevOps-ingenjör kan fördelas på flera teammedlemmar med olika specialiseringar.

Vilka typer av DevOps-praxis finns?

DevOps-praxis täcker alla stadier av mjukvarans livscykel.

Igor Boyko: "Det ideala fallet är när vi börjar använda DevOps-praxis direkt i början av projektet. Tillsammans med arkitekterna planerar vi vilken typ av arkitektoniskt landskap applikationen ska ha, var den ska placeras och hur vi ska skala samt väljer plattform. Nuförtiden är mikrotjänstarkitektur på modet - för det väljer vi ett orkestreringssystem: du måste kunna hantera varje element i applikationen separat och uppdatera det oberoende av de andra. En annan praxis är "infrastruktur som kod." Detta är namnet på ett tillvägagångssätt där projektinfrastrukturen skapas och hanteras med hjälp av kod, snarare än genom direkt interaktion med servrar.

Därefter går vi vidare till utvecklingsstadiet. En av de största metoderna här är att bygga CI/CD: du måste hjälpa utvecklare att integrera ändringar i produkten snabbt, i små portioner, oftare och smärtfritt. CI/CD omfattar kodgranskning, uppladdning av mastern till kodbasen och distribution av applikationen i test- och produktionsmiljöer.

Vid CI/CD-stadierna passerar koden genom kvalitetsgrindar. Med deras hjälp kontrollerar de att koden som kommer ut från utvecklarens arbetsstation uppfyller de angivna kvalitetskriterierna. Enhets- och UI-testning läggs till här. För snabb, smärtfri och fokuserad produktdistribution kan du välja lämplig implementeringstyp.

DevOps-utövare har också en plats i stadiet för att stödja den färdiga produkten. De används för övervakning, feedback, säkerhet och införa förändringar. DevOps ser på alla dessa uppgifter ur ett ständigt förbättringsperspektiv. Vi minimerar repetitiva operationer och automatiserar dem. Detta inkluderar även migrering, applikationsexpansion och prestandastöd.”

Vilka är fördelarna med DevOps-metoder?

Om vi ​​skulle skriva en lärobok om moderna DevOps-praxis, skulle det finnas tre punkter på första sidan: automatisering, snabbare releaser och snabb feedback från användare.

Kirill Sergeev: ”Det första är automatisering. Vi kan automatisera alla interaktioner i teamet: skrev koden - rullade ut - kontrollerade den - installerade den - samlade in feedback - gick tillbaka till början. Allt detta är automatiskt.

Det andra är att påskynda releasen och till och med förenkla utvecklingen. Det är alltid viktigt för kunden att produkten kommer ut på marknaden så snart som möjligt och börjar ge fördelar tidigare än konkurrenternas analoger. Produktleveransprocessen kan förbättras oändligt: ​​minska tiden, lägg till ytterligare kontrollmärken, förbättra övervakningen.

Tredje är accelerationen av användarfeedback. Om han har synpunkter kan vi omedelbart göra justeringar och uppdatera ansökan omedelbart.”

Varför behövs DevOps och vilka är DevOps-specialister?

Hur hänger begreppen "systemingenjör", "byggingenjör" och "DevOps ingenjör" ihop?

De överlappar varandra, men tillhör lite olika områden.

Systemingenjör på EPAM är en tjänst. De finns på olika nivåer: från junior till chefsspecialist.

En byggingenjör är mer en roll som kan utföras på ett projekt. Nu heter det här de ansvariga för CI/CD.

En DevOps-ingenjör är en specialist som implementerar DevOps-praxis i ett projekt.

Om vi ​​summerar det hela får vi ungefär så här: en person i positionen som systemingenjör spelar rollen som byggingenjör i ett projekt och är involverad i implementeringen av DevOps-praxis där.

Vad exakt gör en DevOps-ingenjör?

DevOps-ingenjörer sätter ihop alla delar som utgör ett projekt. De känner till detaljerna i arbetet med programmerare, testare, systemadministratörer och hjälper till att förenkla deras arbete. De förstår verksamhetens behov och krav, dess roll i utvecklingsprocessen – och bygger processen med hänsyn till kundens intressen.

Vi pratade mycket om automation – det här är vad DevOps ingenjörer sysslar med först och främst. Detta är en mycket stor punkt, som bland annat innefattar att förbereda miljön.

Kirill Sergeev: "Innan uppdateringar implementeras i produkten måste de testas i en tredjepartsmiljö. Den är förberedd av DevOps-ingenjörer. De ingjuter en DevOps-kultur på projektet som helhet: de introducerar DevOps-praxis i alla lager av sina projekt. Dessa tre principer: automatisering, förenkling, acceleration - de tar med vart de än kan nå."

Vad bör en DevOps-ingenjör veta?

I stort sett ska han ha kunskaper från olika områden: programmering, arbete med operativsystem, databaser, montering och konfigurationssystem. Dessa kompletteras med förmågan att arbeta med molninfrastruktur, orkestrering och övervakningssystem.

1. Programmeringsspråk

DevOps-ingenjörer kan flera grundläggande språk för automatisering och kan till exempel säga till en programmerare: "Vad sägs om att du inte installerar koden för hand, utan använder vårt skript, som automatiserar allt? Vi kommer att förbereda en konfigurationsfil för den, den kommer att vara bekväm för både dig och oss att läsa, och vi kommer att kunna ändra den när som helst. Vi kommer också att se vem, när och varför som gör ändringar i den.”

En DevOps-ingenjör kan lära sig ett eller flera av dessa språk: Python, Groovy, Bash, Powershell, Ruby, Go. Det är inte nödvändigt att känna till dem på en djup nivå - grunderna för syntax, OOP-principer och förmågan att skriva enkla skript för automatisering räcker.

2. Operativsystem

En DevOps-ingenjör måste förstå vilken server produkten kommer att installeras på, vilken miljö den kommer att köras i och vilka tjänster den kommer att interagera med. Du kan välja att specialisera dig på Windows eller Linux-familjen.

3. Versionskontrollsystem

Utan kunskap om ett versionskontrollsystem är en DevOps-ingenjör ingenstans. Git är ett av de mest populära systemen för tillfället.

4. Molnleverantörer

AWS, Google, Azure - speciellt om vi pratar om Windows-riktningen.

Kirill Sergeev: “Molnleverantörer förser oss med virtuella servrar som passar perfekt in i CI/CD.

Att installera tio fysiska servrar kräver ett hundratal manuella operationer. Varje server måste startas manuellt, installeras och konfigureras det nödvändiga operativsystemet, installera vår applikation på dessa tio servrar och sedan dubbelkolla allt tio gånger. Molntjänster ersätter denna procedur med tio rader kod, och en bra DevOps-ingenjör bör kunna arbeta med dem. Detta sparar tid, ansträngning och pengar – både för kunden och för företaget.”

5. Orkestereringssystem: Docker och Kubernetes

Kirill Sergeev: “Virtuella servrar är uppdelade i containrar, i var och en av dem kan vi installera vår applikation. När det finns många behållare måste du hantera dem: slå på en, stäng av en annan, gör säkerhetskopior någonstans. Detta blir ganska komplicerat och kräver ett orkestreringssystem.

Tidigare hanterades varje applikation av en separat server - eventuella ändringar i dess drift kunde påverka applikationens användbarhet. Tack vare containrar blir applikationer isolerade och körs separat - var och en på sin egen virtuella maskin. Om ett fel inträffar behöver du inte slösa tid på att leta efter orsaken. Det är lättare att förstöra den gamla behållaren och lägga till en ny."

6. Konfigurationssystem: Chef, Ansible, Puppet

När du behöver underhålla en hel flotta av servrar måste du göra mycket av samma typ av operationer. Det är långt och svårt, och manuellt arbete ökar också risken för fel. Det är här konfigurationssystem kommer till undsättning. Med deras hjälp skapar de ett skript som är lätt att läsa för programmerare, DevOps-ingenjörer och systemadministratörer. Detta skript hjälper till att utföra samma operationer på servrar automatiskt. Detta minskar manuella operationer (och därmed fel).

Vilken typ av karriär kan en DevOps-ingenjör bygga?

Du kan utveckla både horisontellt och vertikalt.

Igor Boyko: “Från horisontell utvecklingssynpunkt har DevOps ingenjörer nu de bredaste utsikterna. Allt förändras ständigt och du kan bygga färdigheter inom en mängd olika områden: från versionskontrollsystem till övervakning, från konfigurationshantering till databaser.

Du kan bli systemarkitekt om en anställd är intresserad av att förstå hur en applikation fungerar i alla skeden av dess livscykel – från utveckling till support.”

Hur blir man en DevOps-ingenjör?

  1. Läs The Phoenix Project and DevOps Handbook. Dessa är de verkliga grundpelarna i DevOps-filosofin, där den första är ett fiktionsverk.
  2. Lär dig tekniker från listan ovan: på egen hand eller genom onlinekurser.
  3. Gå med som DevOps-ingenjör för ett projekt med öppen källkod.
  4. Öva och erbjuda DevOps-övningar på dina personliga projekt och arbetsprojekt.

Källa: will.com

Lägg en kommentar