Vad Àr DevOps?

För tillfÀllet Àr detta nÀstan den dyraste positionen pÄ marknaden. Hysterin kring "DevOps"-ingenjörer överstiger alla förestÀllningar, och det vÀrre med Senior DevOps-ingenjörer.
Jag arbetar som chef för integrations- och automatiseringsavdelningen, gissa den engelska förkortningen — DevOps Manager. Speglar den engelska förkortningen verkligen vĂ„r vardagliga verksamhet — knappast, men den ryska varianten Ă€r i detta fall mer exakt. I min roll Ă€r det naturligtvis nödvĂ€ndigt för mig att intervjua framtida medlemmar av mitt team, och under det gĂ„ngna Ă„ret har jag mött cirka 50 personer, och lika mĂ„nga har sorterat bort under prescreening med mina anstĂ€llda.

Vi Àr fortfarande pÄ jakt efter kollegor, eftersom det bakom etiketten DevOps döljer sig en mycket stor grupp av olika typer av ingenjörer.

Allt som stÄr nedan Àr min personliga Äsikt, ni behöver inte hÄlla med, men jag tillÄter mig att tro att det kan fÀrga er uppfattning om Àmnet. Trots risken att hamna i ogynnsam dager publicerar jag min Äsikt, eftersom jag anser att den har sin plats.

Företag har olika uppfattningar om vem DevOps-ingenjörer Àr och för att snabbt rekrytera resurser sÀtter de den etiketten pÄ alla. Situationen Àr ganska mÀrklig, eftersom företagen Àr villiga att betala osannolika belöningar till dessa personer, men i de flesta fall fÄr de en administratör-verktygsspecialist.

SÄ vem Àr egentligen DevOps-ingenjörer?

LĂ„t oss börja med historien om utvecklingen av Development Operations — det kom som ett steg mot att optimera samarbetet i smĂ„ team för att öka produktionshastigheten, som en förvĂ€ntad följd. IdĂ©n var att förstĂ€rka utvecklingsteamet med kunskap om procedurer och metoder för att hantera produktmiljöer. Med andra ord borde en utvecklare förstĂ„ och veta hur deras produkt fungerar under olika förhĂ„llanden, förstĂ„ hur man distribuerar sin produkt, vilka egenskaper i miljön som ska justeras för att öka prestandan. SĂ„, under en tid, dök det upp utvecklare med DevOps-ansats. DevOps-utvecklare skrev skript för byggande och paketering för att förenkla sitt arbete och funktionaliteten i produktionsmiljön. Men med tiden började komplexiteten i lösningarnas arkitektur och det ömsesidiga inflytandet av infrastrukturkomponenter försĂ€mra arbetsresultaten; med varje iteration krĂ€vdes en djupare förstĂ„else av olika komponenter, vilket minskade utvecklarens produktivitet pĂ„ grund av den extra tiden som behövdes för att förstĂ„ komponenterna och finjustera systemen för specifika uppgifter. Utvecklarens egen kostnad ökade, kostnaden för produkten steg ocksĂ„, och kraven pĂ„ nya utvecklare i teamet sköt i höjden, eftersom de ocksĂ„ behövde tĂ€cka ansvaret för "stjĂ€rnorna" i utvecklingen, och naturligtvis blev "stjĂ€rnorna" allt mindre tillgĂ€ngliga. Det Ă€r ocksĂ„ vĂ€rt att notera att, enligt min erfarenhet, Ă€r fĂ„ utvecklare intresserade av specifikationer för hur paket behandlas av operativsystemets kĂ€rna, regler för paket-routing, och aspekter av vĂ€rd-sĂ€kerhet. Det logiska steget blev att involvera en administratör, som Ă€r bekant med dessa frĂ„gor, och Ă„lĂ€gga ansvar av det hĂ€r formatet pĂ„ honom; tack vare hans erfarenhet kunde samma resultat uppnĂ„s till en lĂ€gre kostnad jĂ€mfört med "stjĂ€rnans" kostnad i utvecklingen. Dessa administratörer placerades i teamet, och deras huvudsakliga uppgift var att hantera test- och produktionsmiljöer, baserat pĂ„ reglerna för just det teamet, med resurser avdelade för just detta team. SĂ„, i grund och botten, kom DevOps till de flestas uppfattning.

Delvis eller helt, med tiden har dessa systemadministratörer börjat förstÄ behoven hos just detta specifika team inom utveckling, hur man underlÀttar livet för utvecklare och testare, hur man rullar ut en uppdatering utan att behöva spendera natten pÄ kontoret pÄ fredag för att ÄtgÀrda deploy-fel. Tiden gick, nu blev systemadministratörerna "stjÀrnor" som förstod vad utvecklarna ville ha. För att minimera effekten började verktyg för hantering dyka upp, alla kom ihÄg gamla och pÄlitliga metoder för OS-isolering som kunde minimera sÀkerhetskraven, hanteringen av nÀtverksdelen och Àven konfigurationen av vÀrden i stort, vilket i sin tur minskade kraven pÄ de nya "stjÀrnorna".

En "fantastisk" sak dök upp - docker. Varför fantastisk? Endast för att skapa isolering i chroot eller jail, liksom OpenVZ, krÀvde icke-triviala kunskaper om OS, medan det i kontrast med verktyget, som enkelt möjliggör skapandet av en isolerad applikationsmiljö pÄ en vÀrd med allt nödvÀndigt inuti, och Äter överlÀmna styrningen till utvecklingen, medan systemadministratören bara behövde hantera en vÀrd och sÀkerstÀlla dess sÀkerhet och höga tillgÀnglighet - en logisk förenkling. Men framsteg stÄr inte still, och systemen blir Äterigen allt mer komplexa, komponenterna ökar i antal, en enda vÀrd rÀcker inte lÀngre för systemets behov och det Àr nödvÀndigt att bygga kluster, vi ÄtervÀnder till systemadministratörerna som Àr kapabla att bygga dessa system.

Cykel efter cykel dyker olika system upp som förenklar utveckling och/eller administration, det dyker upp orkestreringssystem som, tills det behövs avvika frÄn standardprocessen, Àr enkla att anvÀnda. MikrotjÀnstarkitektur har ocksÄ dykt upp med syftet att förenkla allt ovanstÄende - fÀrre relationer, lÀttare att hantera. I min erfarenhet har jag inte sett en helt mikrotjÀnstarkitektur, jag skulle sÀga 50-50 - 50 procent mikrotjÀnster, svarta lÄdor, vad som kom in, kom ut bearbetat, andra 50 - en sönderdelad monolit, tjÀnster oförmögna att fungera oberoende av andra komponenter. Allt detta har Äterigen infört begrÀnsningar pÄ kunskapsnivÄn bÄde hos utvecklarna och administratörerna.

Liknande expertkunskaper pÄ olika resurser fortsÀtter Àn idag. Men vi har kommit lite off-topic, det finns flera aspekter som förtjÀnar att belysas.

Byggingenjör/Release Engineer

Dessa mycket specialiserade ingenjörer uppstod som ett sÀtt att standardisera processerna för mjukvarubyggnation och dess releaser. I och med införandet av den allmÀldiga Agile-metodiken tycktes de ha förlorat sin relevans, men sÄ Àr verkligen inte fallet. Detta yrke har blivit till för att standardisera just byggnation och leverans av mjukvara i stor skala, det vill sÀga att anvÀnda standardiserade tekniker för alla företagets produkter. Med införandet av DevOps har utvecklarna delvis tagit över funktionerna, eftersom det just Àr utvecklarna som förbereder produkten för leverans, och med den förÀnderliga infrastrukturen och tillvÀgagÄngssÀttet för att leverera sÄ snabbt som möjligt utan att tÀnka pÄ kvalitet, har de över tid blivit ett hinder för förÀndringar, eftersom att följa kvalitetsstandarder ofrÄnkomligen saktar ner leveranserna. SÄledes har gradvis delar av Build/Release-ingenjörernas funktioner övergÄtt till systemadministratörer.

Ops: sÄ olika

Vi gÄr vidare och Äterigen driver en stor uppsÀttning ansvarsomrÄden och bristen pÄ kvalificerad personal oss mot en strÀng specialisering. Som svampar efter regn dyker det upp olika Operations:

  • TechOps — systemadministratörer som servicepersonal aka HelpDesk Engineer
  • LiveOps — systemadministratörer, som huvudsakligen ansvarar för produktionsmiljöer
  • CloudOps — systemadministratörer som specialiserar sig pĂ„ offentliga "moln" som Azure, AWS, GCP, etc.
  • PlatOps/InfraOps/SysOps — systemadministratörer för infrastruktur.
  • NetOps — nĂ€tverksadministratörer
  • SecOps — systemadministratörer som specialiserar sig pĂ„ informationssĂ€kerhet — PCI compliance, CIS compliance, patchning, etc.

DevOps — en (teori) person som verkligen förstĂ„r hela utvecklingscykeln — utveckling, testning, som förstĂ„r produktens arkitektur, kan bedöma sĂ€kerhetsrisker, och som Ă€r bekant med metoder och verktyg för automatisering, Ă„tminstone pĂ„ en hög nivĂ„, samt som Ă€ven förstĂ„r bĂ„de pre- och post-release support av produkten. En person som kan agera som advokat för bĂ„de Operations och Development, vilket möjliggör ett fördelaktigt samarbete mellan dessa tvĂ„ pelare. FörstĂ„r processerna för arbetsplanering av team och hantering av kundförvĂ€ntningar.

För att utföra sĂ„dana typer av arbete och skyldigheter bör denna person ha verktyg för att hantera inte bara utvecklings- och testprocesser, utan Ă€ven produkternas infrastruktur och planering av resurser. DevOps i denna mening kan inte hĂ€nföras till IT, R&D eller ens PMO, han bör ha inflytande inom alla dessa omrĂ„den — teknisk direktör för företaget, Chief Technical Officer.

Är det sĂ„ i ert företag? — Jag tvivlar. I de flesta fall Ă€r det antingen IT eller R&D.

Brist pĂ„ resurser och möjlighet till inflytande över Ă„tminstone ett av dessa tre verksamhetsomrĂ„den kommer att förskjuta tyngdpunkten av problemen mot den sida dĂ€r det Ă€r enklare att genomföra dessa förĂ€ndringar, som exempelvis att införa tekniska begrĂ€nsningar för utgivningar pĂ„ grund av "smutsig" kod enligt data frĂ„n de statiska analysystemen. Det vill sĂ€ga, nĂ€r PMO sĂ€tter en strikt deadline för lanseringen av funktionalitet, kan R&D inte leverera ett kvalitetsresultat inom dessa tidsramar och ger det som de kan, vilket sparar refaktorering till senare, DevOps som rör sig inom IT, blockerar lanseringen med tekniska medel. Brist pĂ„ befogenhet att förĂ€ndra situationen leder hos ansvariga medarbetare till en överdriven ansvarskĂ€nsla för sĂ„dant de inte kan pĂ„verka, sĂ€rskilt om dessa medarbetare förstĂ„r och ser felen, och hur man rĂ€ttar till dem — "Lycka Ă€r i okunnighet", och som följd blir det utbrĂ€ndhet och förlust av dessa medarbetare.

Marknaden för DevOps-resurser

LÄt oss titta pÄ nÄgra lediga tjÀnster för DevOps frÄn olika företag.

Vi Àr redo att trÀffa dig om du:

  1. BehÀrskar Zabbix och vet vad Prometheus Àr;
  2. Iptables;
  3. Aspirant i BASH;
  4. Professor i Ansible;
  5. Guru i Linux;
  6. Kan du anvÀnda debuggern och tillsammans med utvecklarna hitta problem i applikationerna (php/java/python);
  7. Routing ger dig inga tÄrar;
  8. Du lÀgger stor vikt vid systemets sÀkerhet;
  9. Du backar upp "allt och alla" och ÄterstÀller detta "allt och alla" framgÄngsrikt;
  10. Du kan stÀlla in systemet för att maximera vÀrdet frÄn minimi;
  11. Du stÀller in replikeringar innan du gÄr till sÀngs pÄ Postgres och MySQL;
  12. Att stÀlla in och justera CI/CD Àr för dig en nödvÀndighet som frukost/lunch/middag.
  13. Du har erfarenhet av att arbeta med AWS;
  14. Du Àr redo att utvecklas tillsammans med företaget;

SĂ„:

  • frĂ„n 1 till 6 — systemadministratör
  • 7 — lite nĂ€tverksadministration, vilket ocksĂ„ faller inom systemadministratörens ansvar pĂ„ mellan-nivĂ„
  • 8 — lite sĂ€kerhet, vilket Ă€r nödvĂ€ndigt för en systemadministratör pĂ„ mellan-nivĂ„
  • 9-11 — Middle System Administrator
  • 12 — Beroende pĂ„ de uppgifter som stĂ€lls antingen Middle System Administrator eller Build Engineer
  • 13 — Virtualisering — Middle System Administrator, eller sĂ„ kallad CloudOps, avancerad kunskap om specifika tjĂ€nster hosting pĂ„ plattformen för effektiv anvĂ€ndning av medel och minskning av belastningen pĂ„ drift

Sammanfattningsvis om denna tjÀnst kan man sÀga att pojkarna har tillrÀckligt med erfarenhet som Middle/Senior System Administrator.

Förresten, man bör inte dela upp administratörer för mycket i Linux/Windows. Jag förstÄr visserligen att tjÀnsterna och systemen i dessa tvÄ vÀrldar skiljer sig, men grunden Àr densamma och varje respektabel administratör Àr bekant med bÄde och, och Àven om man inte Àr bekant, Àr det för en kompetent administratör ingen svÄrighet att bekanta sig med detta.

LÄt oss övervÀga en annan tjÀnst:

  1. Erfarenhet av att bygga högbelastade system;
  2. UtmÀrkta kunskaper i operativsystemet Linux, allmÀn programvara och webbstacken (Nginx, PHP/Python, HAProxy, MySQL/PostgreSQL, Memcached, Redis, RabbitMQ, ELK);
  3. Erfarenhet av att arbeta med virtualiseringssystem (KVM, VMWare, LXC/Docker);
  4. Kunskap om skriptsprÄk;
  5. FörstÄelse för hur nÀtverksprotokoll fungerar;
  6. FörstÄelse för hur man bygger redundanta system;
  7. SjÀlvstÀndighet och initiativ;

Vi gÄr igenom:

  • 1 — Senior System Administrator
  • 2 — Beroende pĂ„ innebörden av detta stack — Middle/Senior System Administrator
  • 3 — Arbetslivserfarenhet kan ocksĂ„ betyda — "Kluster har jag inte satt upp, men har skapat och hanterat virtuella maskiner, hade en Docker-vĂ€rd, skötta Ă„tkomst till containerna" — Middle System Administrator
  • 4 — Junior System Administrator — ja, en administratör som inte kan skriva grundlĂ€ggande automatiseringsskript, oavsett sprĂ„k, Ă€r inte en administratör — en nybörjare.
  • 5 — Middle System Administrator
  • 6 — Senior System Administrator

Sammanfattningsvis — Middle/Senior System Administrator

Ytterligare en:

  1. Arbetslivserfarenhet inom devops;
  2. Erfarenhet av att anvÀnda en eller flera produkter för att skapa CI/CD-processer. GitLab CI Àr en fördel;
  3. Arbete med containrar och virtualisering; Om du har anvĂ€nt Docker – bra, och om du har anvĂ€nt k8s – utmĂ€rkt!
  4. Erfarenhet av att arbeta i ett agilt team;
  5. Kunskap om nÄgot programmeringssprÄk;

Vi fÄr se:

  • 1 — Hmm... Vad menar killarna? =) Troligen vet de inte sjĂ€lva vad som döljer sig bakom detta.
  • 2 — Build Engineer
  • 3 — Middle System Administrator
  • 4 — Soft skills, vi kommer inte att beakta detta för tillfĂ€llet, Ă€ven om Agile Ă€r en annan sak som tolkas som det passar.
  • 5 — För vag — detta kan vara ett skriptsprĂ„k eller ett kompilerat sprĂ„k. Intressant, skulle de vara nöjda om jag skrev i Pascal och Basic i skolan? =)

Jag vill ocksĂ„ lĂ€mna en kommentar angĂ„ende punkt 3, för att förtydliga förstĂ„elsen av varför den punkten tĂ€cks av systemadministratören. Kubernetes Ă€r bara orkestrering, ett verktyg som kapslar in direkta kommandon till nĂ€tverksdrivrutiner och vĂ€rdar för virtualisering/isolering i ett par kommandon och gör kommunikationen abstrakt, det Ă€r allt. Som exempel kan vi ta ‘build framework’ Make, vilket jag för övrigt inte anser vara ett ramverk. Ja, jag kĂ€nner till trenden att peta in Make överallt dĂ€r det behövs och inte behövs — att kapsla in Maven i Make till exempel, seriöst?
I grund och botten Àr Make bara ett skalmellanslag som förenklar just kommandon för kompilering, lÀnkning och kompileringens miljö, precis som k8s.

En gÄng intervjuade jag en kille som anvÀnde k8s i sitt arbete ovanpÄ OpenStack, och han berÀttade hur han distribuerade tjÀnster pÄ det, men nÀr jag frÄgade specifikt om OpenStack visade det sig att det administreras och startas av systemadministratörer. Tror ni verkligen att en person som har startat OpenStack, oavsett vilken plattform han anvÀnder bakom sig, inte kan anvÀnda k8s?=)
Denna sökande Àr faktiskt inte DevOps, utan en vanlig systemadministratör och, för att vara exakt, Kubernetes-administratör.

LĂ„t oss sammanfatta igen — Middle/Senior System Administrator Ă€r tillrĂ€ckligt för dem.

Hur mycket att vÀga i gram

Spannet av erbjudna löner för de angivna tjĂ€nsterna — 90k-200k
Nu skulle jag vilja dra en parallell mellan lönerna för systemadministratörer och DevOps-ingenjörer.

I princip kan man förenkla genom att dela in nivÄer efter arbetslivserfarenhet, Àven om det inte blir exakt, rÀcker det för artikelns syften.

Erfarenhet:

  1. upp till 3 Ă„r — Junior
  2. upp till 6 Ă„r — Middle
  3. mer Ă€n 6 Ă„r — Senior

Jobbsajten erbjuder:
Systemadministratörer:

  1. Junior — 2 Ă„r — 50k rubel.
  2. Middle — 5 Ă„r — 70k rubel.
  3. Senior — 11 Ă„r — 100k rubel.

DevOps-ingenjörer:

  1. Junior — 2 Ă„r — 100k rubel.
  2. Middle — 3 Ă„r — 160k rubel.
  3. Senior — 6 Ă„r — 220k rubel.

För DevOps har erfarenheten anvÀnts som berör SDLC.

Av det ovanstÄende följer att företagen egentligen inte behöver DevOps, och att de skulle kunna spara minst 50 procent av de ursprungligen planerade kostnaderna genom att anstÀlla just en administratör. Dessutom skulle de kunna definiera den sökande personens uppgifter tydligare och snabbare tillfredsstÀlla behovet. Man fÄr inte glömma att ett klart ansvarsfördelning gör att kraven pÄ personalen kan sÀnkas och att det skapar en mer gynnsam atmosfÀr i teamet, tack vare avsaknaden av överlappningar. I en övervÀldigande majoritet av annonserna florerar verktyg och DevOps-etiketter, men har egentligen inte nÄgot krav pÄ en DevOps-ingenjör, utan bara önskemÄl om en verktygsadministrator.

Utbildningen av DevOps-ingenjörer begrÀnsas dessutom till en uppsÀttning specifika uppgifter och verktyg, och ger inte en allmÀn förstÄelse för processerna och deras beroenden. Det Àr förstÄs bra nÀr en person kan anvÀnda Terraform för att deployera AWS EKS, i samband med Fluentd sidecar i den hÀr klustret och AWS ELK-stacken för logghantering pÄ 10 minuter med bara ett kommando i konsolen, men om han eller hon inte förstÄr sjÀlva principen för logghantering och vad de Àr bra för, inte vet hur man samlar in metrik om dem och följer serviceförsÀmringar, dÄ Àr det fortfarande samma typ av person som bara kan anvÀnda vissa verktyg.

EfterfrÄgan föder dock utbud, och vi ser en oerhört upphettad marknad för DevOps-positioner, dÀr kraven inte stÀmmer överens med den verkliga rollen, utan bara gör att systemadministratörer kan tjÀna mer.

SÄ vem Àr de? DevOps eller giriga systemadministratörer? =)

Hur gÄr vi vidare?

För arbetsgivare — att noggrant formulera krav och söka efter de som verkligen behövs, istĂ€llet för att sprida omkring sig etiketter. Om du inte vet vad DevOps gör — sĂ„ behöver du dem inte i sĂ„ fall.

För arbetstagare — att lĂ€ra sig. StĂ€ndigt förbĂ€ttra sina kunskaper, se den övergripande bilden av processerna och följa vĂ€gen mot det uppsatta mĂ„let. Man kan bli vad man vill, man mĂ„ste bara anstrĂ€nga sig.

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