Vad Àr DevOps och vilka Àr DevOps-specialister

NĂ€r en applikation inte fungerar, vill man minst av allt höra frasen "problemet ligger hos er" frĂ„n kollegorna. I slutĂ€ndan drabbas anvĂ€ndarna – och de bryr sig inte om vilken del av teamet som Ă€r ansvarig för felet. DevOps-kulturen uppkom just för att förena utveckling och drift och samla dem kring ett gemensamt ansvar för den slutliga produkten.

Vilka metoder ingÄr i begreppet DevOps och varför Àr de viktiga? Vad gör DevOps-ingenjörer och vad bör de kunna? Dessa och andra frÄgor besvaras av experter frÄn EPAM: Kirill Sergeev, systemingenjör och DevOps-evangelist, och Ihor Boiko, ledande systemingenjör och koordinator för ett av DevOps-team i företaget.

Vad Àr DevOps och vilka Àr DevOps-specialister

Varför behövs DevOps?

Tidigare fanns det en barriĂ€r mellan utvecklare och drift (sĂ„ kallad operations). Det lĂ„ter paradoxalt, men de hade olika mĂ„l och KPI:er, Ă€ven om de arbetade mot samma sak. MĂ„let för utvecklingen var att sĂ„ snabbt som möjligt genomföra affĂ€rskrav och lĂ€gga till dem i en fungerande produkt. Driften ansvarade för att applikationen fungerade stabilt – och varje Ă€ndring hotade stabiliteten. Det var en intressekonflikt – DevOps skapades för att lösa den.

Vad Àr DevOps?

FrĂ„gan Ă€r bra – och omstridd: vĂ€rlden har fortfarande inte kommit överens om det. PĂ„ EPAM anser man att DevOps förenar teknologier, processer och kulturer för samarbete inom teamet. Denna förening syftar till att kontinuerligt leverera vĂ€rden till slutkunderna.

Kirill Sergeev: "Utvecklarna skriver kod, testarna verifierar den, och administratörerna installerar den slutliga produkten i produktionsmiljön. Under lÄng tid var dessa delar av teamet nÄgot fragmenterade, men sedan kom idén att förena dem genom en gemensam process. SÄ uppstod DevOps-praktiker."

Den dagen kom dÄ utvecklare och systemingenjörer blev intresserade av varandras arbete. BarriÀren mellan produktion och drift började suddas ut. SÄ kom DevOps till, som innehÄller metoder, kultur och ordning för samarbetet i teamet.

Vad Àr DevOps och vilka Àr DevOps-specialister

Vad Àr kÀrnan i DevOps-kulturen?

Ansvarighet för det slutliga resultatet vilar pÄ varje medlem i teamet. Det mest intressanta och utmanande inom DevOps-filosofin Àr att förstÄ att en specifik person inte bara ansvarar för sin del av arbetet, utan Àven för hur hela produkten kommer att fungera. Problemet ligger inte hos nÄgon specifik person - det Àr gemensamt, och varje medlem i teamet hjÀlper till att lösa det.

Det viktigaste i DevOps-kulturen Àr att faktiskt lösa problemet, snarare Àn att bara tillÀmpa DevOps-praktiker. Dessutom implementeras dessa praktiker inte 'hos nÄgon', utan i hela produkten. Projektet behöver inte en DevOps-ingenjör för sig sjÀlv - det behöver en lösning pÄ problemet, och rollen som DevOps-ingenjör kan spridas över flera teammedlemmar med olika specialiseringar.

Vilka DevOps-praktiker finns det?

DevOps-praktiker omfattar alla steg i programvarulivscykeln.

Ihor Bojko: 'Det perfekta tillfÀllet Àr nÀr vi börjar anvÀnda DevOps-praktiker redan vid projektinitiativet. Tillsammans med arkitekterna planerar vi vilken arkitektur applikationen kommer att ha, var den kommer att ligga och hur den ska skalas, samt vÀljer plattform. Just nu Àr mikrotjÀnstarkitektur pÄ modet - för den vÀljer vi ett orkestreringssystem: man mÄste kunna hantera varje del av applikationen separat och uppdatera den oberoende av de andra. En annan praktik Àr 'infrastruktur som kod'. Det handlar om en metod dÀr projektets infrastruktur skapas och hanteras med hjÀlp av kod, istÀllet för direkt interaktion med servrar.

Sedan gÄr vi vidare till utvecklingsfasen. HÀr Àr en av de största praktikerna att bygga CI/CD: det Àr viktigt att hjÀlpa utvecklarna att integrera Àndringar i produkten snabbt, i smÄ portioner, oftare och med mindre smÀrta. CI/CD omfattar bÄde kodgranskning och uppladdning av master till kodbasen, samt distribution av applikationen i test- och produktionsmiljöer.

Under CI/CD-stegen gÄr koden genom kvalitetsportar. Med deras hjÀlp kontrollerar man att koden som kommer frÄn utvecklarens arbetsstation överensstÀmmer med uppsatta kvalitetskriterier. HÀr tillkommer enhets- och anvÀndargrÀnssnittstester. För snabb, smÀrtfri och fokuserad distribution av produkten kan man vÀlja en lÀmplig typ av distribution.

DevOps-praktiker har sin plats Àven i supportfasen av en fÀrdig produkt. De anvÀnds för övervakning, feedback, sÀkerhet och införande av förÀndringar. För dessa uppgifter ser DevOps pÄ dem ur perspektivet av kontinuerliga förbÀttringar. Vi minimerar upprepade operationer och automatiserar dem. Detta inkluderar Àven migrationer, utvidgning av applikationen och stöd för driftsÀkerheten.

Vad Àr fördelarna med DevOps-praktiker?

Om vi skulle skriva en lÀrobok om moderna DevOps-praktiker skulle tre punkter stÄ pÄ dess första sida: automatisering, snabbare release och snabb feedback frÄn anvÀndare.

Kirill Sergeev: "Det första – Ă€r automatisering. Alla interaktioner i teamet kan vi automatisera: skriva kod – lansera – kontrollera – installera – samla feedback – Ă„tergĂ„ till början. Allt detta – automatiskt.

Det andra – att pĂ„skynda releaseprocessen och till och med förenkla utvecklingen. För kunden Ă€r det alltid viktigt att produkten kommer ut pĂ„ marknaden sĂ„ snabbt som möjligt och börjar ge nytta tidigare Ă€n konkurrenternas alternativ. Processen för produktleverans kan stĂ€ndigt förbĂ€ttras: minska tiden, lĂ€gga till extra kontrollpunkter och förbĂ€ttra övervakningen.

Det tredje – att pĂ„skynda feedbacken frĂ„n anvĂ€ndaren. Om de har kommentarer kan vi omedelbart göra Ă€ndringar och uppdatera applikationen direkt.

Vad Àr DevOps och vilka Àr DevOps-specialister

Hur relaterar begreppen "systemingenjör", "build-ingenjör" och "DevOps-ingenjör"?

De överlappar, men tillhör nÄgot olika omrÄden.

Systemingenjör pĂ„ EPAM – Ă€r en tjĂ€nst. De kan vara av olika nivĂ„er: frĂ„n junior till chief-specialist.

Build-ingenjör – Ă€r snarare en roll som kan utföras i projektet. Just nu kallar man dem som ansvarar för CI/CD.

DevOps-ingenjören Àr en specialist som implementerar DevOps-praktiker i projektet.

Om vi summerar allt detta blir det ungefÀr följande: en person som har tjÀnsten systemingenjör utför i projektet rollen som build-ingenjör och sysslar med att implementera DevOps-praktiker.

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

DevOps-ingenjörer sammanför alla delar som utgör ett projekt. De kĂ€nner till programmerares, testares och systemadministratörers arbetsmetod och hjĂ€lper till att förenkla deras arbete. De förstĂ„r affĂ€rens behov och krav, dess roll i utvecklingsprocessen – och bygger processen med kundens intressen i Ă„tanke.

Vi har pratat mycket om automatisering – det Ă€r det som DevOps-ingenjörer fokuserar pĂ„ först och frĂ€mst. Detta Ă€r en mycket stor punkt, som bland annat involverar förberedelse av miljön.

Kirill Sergeev: "Innan uppdateringar implementeras i produkten mĂ„ste de testas i en extern miljö. Den förbereds av DevOps-ingenjörer. De frĂ€mjar ocksĂ„ DevOps-kulturen inom projektet i stort: de implementerar DevOps-praktiker pĂ„ alla lager av sina projekt. Dessa tre principer: automatisering, förenkling, acceleration – de införlivar i allt de kan nĂ„."

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

Generellt sett bör de ha kunskap inom flera omrÄden: programmering, arbete med operativsystem, databaser, bygg- och konfigurationssystem. Dessutom tillkommer förmÄgan att arbeta med molninfrastruktur, orkestreringssystem och övervakning.

1. ProgrammeringssprÄk

DevOps-ingenjörer kĂ€nner till flera grundlĂ€ggande sprĂ„k för automatisering och kan till exempel sĂ€ga till en programmerare: "LĂ„t oss göra installationskoden inte för hand, utan med hjĂ€lp av vĂ„rt skript som automatiserar allt? Vi kommer att förbereda en config-fil för den, vilket kommer att vara enkelt att lĂ€sa bĂ„de för dig och för oss – och vi kan Ă€ndra den nĂ€r som helst. Dessutom kommer vi att se vem, nĂ€r och varför Ă€ndrar den."

DevOps-ingenjören kan lĂ€ra sig ett eller flera av dessa sprĂ„k: Python, Groovy, Bash, Powershell, Ruby, Go. Det krĂ€vs inte att de kan dem pĂ„ djup nivĂ„ – tillrĂ€ckligt med grunderna i syntax, objektorienterad programmering och förmĂ„gan att skriva enklare skript för automatisering.

2. Operativsystem

DevOps-ingenjören mÄste förstÄ vilken server produkten kommer att installeras pÄ, i vilken miljö den kommer att köras och med vilka tjÀnster den kommer att interagera. Man kan vÀlja att specialisera sig pÄ Windows eller Linux-familjer.

3. Versionskontrollsystem

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

4. Molnleverantörer

AWS, Google, Azure – sĂ€rskilt nĂ€r vi pratar om Windows-inriktning.

Kirill Sergeev: «Molnleverantörer ger oss virtuella servrar, som passar perfekt för CI/CD-processer.

Installationen av tio fysiska servrar krĂ€ver cirka hundra manuella operationer. Varje server mĂ„ste startas manuellt, ha rĂ€tt operativsystem installerat, vĂ„r applikation installerad pĂ„ dessa tio servrar, och sedan kontrollera 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. SĂ„ sparar man tid, resurser och pengar – bĂ„de för kunden och företaget.»

5. Orkestreringssystem: Docker och Kubernetes

Kirill Sergeev: «De virtuella servrarna Àr uppdelade i containrar, dÀr vi kan installera vÄr applikation. NÀr det finns mÄnga containrar mÄste de hanteras: en slÄss pÄ, en annan av, och var gör vi sÀkerhetskopior. Det blir ganska komplicerat, för vilket man behöver ett orkestreringssystem.

Tidigare hanterades varje applikation av en separat server – alla förĂ€ndringar i dess funktion kunde pĂ„verka applikationens funktionalitet. Tillsammans med containrar blir applikationerna isolerade och körs separat – varje pĂ„ sin virtuella maskin. Om det uppstĂ„r ett fel behöver man inte slösa tid pĂ„ att hitta orsaken. Det Ă€r enklast att ta bort den gamla containern och lĂ€gga till en ny.»

6. Konfigurationssystem: Chef, Ansible, Puppet

NÀr man behöver underhÄlla en hel park av servrar mÄste mÄnga likartade operationer utföras. Detta Àr tidskrÀvande och komplicerat, och dessutom ökar manuellt arbete risken för fel. HÀr kommer konfigurationssystem in i bilden. Med deras hjÀlp skapar man ett skript som Àr lÀtt att lÀsa bÄde för programmerare, DevOps-ingenjörer och systemadministratörer. Detta skript hjÀlper till att automatiskt utföra liknande operationer pÄ servrar. SÄ det blir fÀrre manuella operationer (och dÀrmed fÀrre fel).

Vilken karriÀr kan en DevOps-ingenjör bygga?

Man kan utvecklas bÄde horisontellt och vertikalt.

Ihor Bojko: «FrÄn ett horisontellt utvecklingsperspektiv har DevOps-ingenjörer för nÀrvarande de bredaste möjligheterna. Allt förÀndras stÀndigt, och man kan bygga fÀrdigheter inom mÄnga olika omrÄden: frÄn versionskontrollsystem till övervakning, frÄn konfigurationshantering till databaser.

Man kan bli systemarkitekt om en anstĂ€lld Ă€r intresserad av att förstĂ„ hur en applikation fungerar i alla faser av sin livscykel – frĂ„n utveckling till underhĂ„ll.

Hur blir man DevOps-ingenjör?

  1. LÀs böckerna "Projekt 'Fenix'" och DevOps Handbook. Dessa Àr riktiga pelare inom DevOps-filosofin, dÀr den första Àr en skönlitterÀr roman.
  2. Studera teknologierna frÄn listan ovan: pÄ egen hand eller genom onlinekurser.
  3. GÄ med som DevOps-ingenjör i ett open source-projekt.
  4. Praktisera och föreslÄ DevOps-praktiker i dina personliga och arbetsprojekt.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster