Definitionen av DevOps Àr mycket komplexa, sÄ varje gÄng mÄste diskussionen börja om frÄn början. Endast pÄ Habr finns det tusen publiceringar om detta Àmne. Men om du lÀser detta, vet du sÀkert vad DevOps Àr. För eftersom jag inte gör det. Hej, jag heter Alexander Titov (@), och vi kommer bara att prata om DevOps och jag kommer att dela med mig av min erfarenhet.

Jag har lÀnge funderat pÄ hur jag ska göra min berÀttelse anvÀndbar, sÄ hÀr kommer det att finnas mÄnga frÄgor - sÄdana som jag stÀller till mig sjÀlv, och sÄdana som jag stÀller till kunderna i vÄrt företag. Genom att svara pÄ dessa frÄgor blir förstÄelsen bÀttre. Jag kommer att förklara varför DevOps Àr viktigt ur min synvinkel, vad det innebÀr, Äterigen frÄn min position, och hur man kan förstÄ om ni rör er mot DevOps, Äterigen frÄn min synvinkel. Den sista punkten kommer att stÀllas genom frÄgor. Genom att svara pÄ dem till mig sjÀlv kan ni förstÄ om ert företag rör sig mot DevOps eller om det finns problem.

En tid gick jag pÄ vÄgorna av sammanslagningar och förvÀrv. Först arbetade jag pÄ den lilla start-upen Qik, sedan köptes den av det nÄgot större företaget Skype, som sedan köptes av det Ànnu större företaget Microsoft. I det ögonblicket fick jag insikt om hur uppfattningen om DevOps förÀndras i företag av olika storlekar. Efter det blev jag intresserad av att se DevOps ur marknadens perspektiv, och vi, tillsammans med kollegor, grundade företaget Express 42. I över 6 Är har vi navigerat pÄ marknaden.
Förutom allt detta Àr jag en av organisatörerna av DevOps Moscow-samhÀllet och arrangör av DevOps-Days 2017, men 2018 organiserade jag inte. Express 42 jobbar med mÄnga företag. Vi utvecklar DevOps dÀr, ser hur det gÄr till, drar slutsatser, analyserar, berÀttar vÄra slutsatser för alla, utbildar folk i DevOps-praktiker. Sammanfattningsvis vÀxer vi pÄ det hÀr omrÄdet vad gÀller erfarenhet och expertis.
Varför DevOps
Den första frÄgan som alltid plÄgar alla Àr - varför? MÄnga tror att DevOps bara handlar om automatisering eller liknande saker, som redan existerar i varje företag.
- Vi hade Continuous Integration - det betyder att vi redan hade DevOps, och varför behövs all denna babblan? DÀr borta roar de sig, men hÀr stör de vÄrt arbete!
Under 9 years of community and methodology development, it has become clear that this is not just marketing hype, but it is still not entirely clear why it is needed. Like any tool or process, DevOps has specific goals that it ultimately addresses.
This is all related to the fact that the world is changing. It is moving away from the enterprise approach where companies move straight towards their dreams, as our St. Petersburg classic sang, from point A to point B according to a specific strategy, with a dedicated structure built for that purpose.

In principle, IT should be structured under this approach. Here, IT is used solely for automating processes.
Automation does not change often, because when a company is on a well-trodden path â why change anything? If it works, don't touch it. Now in the world, approaches are changing, and the one called Agile indicates that the endpoint B is not immediately visible.

As a company navigates the market and works with clients, it is constantly researching the market and changing its endpoint B. Moreover, the more often a company shifts its direction, the more successful it ultimately becomes as it captures more market niches.
An interesting company illustrates this strategy, which I recently learned about. One Box Shave â a subscription service for delivering razors and shaving supplies in a box. They can customize their "box" for different clients. This is handled by specific software that then sends the order to a Korean factory producing the product.
This product was bought by Unilever for $1 billion. It is now competing with Gillette and has taken a significant share of consumers in the American market. One Box Shave says:
"Four blades? Are you serious? Why do you need thatâit does not improve shaving quality at all. A carefully selected cream, fragrance, and a quality razor with two blades address many more issues than those silly four blades from Gillette! Are we soon going to have ten?"
Thus, the world is changing. Unilever claims to have a cool IT system that makes this possible. Ultimately, it looks like the concept of Time-to-market, which has been discussed by many.

Betydelsen av Time-to-market handlar inte om hur ofta vi deployar. Vi kan ofta deploya, men releasecyklerna kan vara lÄnga. Om vi lÀgger tre mÄnader lÄnga releasecykler ovanpÄ varandra, flyttande dem med en vecka, sÄ verkar det som om företaget deployar en gÄng i veckan. Men frÄn idé till slutlig implementation tar det tre mÄnader.
Time-to-market handlar om att minimera tiden frÄn idé till slutlig implementation.
I det hÀr fallet interagerar programvaran med marknaden. SÄ i One Box Shave interagerar webbplatsen med kunden. De har inga sÀljare - bara en webbplats dÀr besökaren klickar och lÀmnar önskemÄl. DÀrför mÄste man stÀndigt publicera nÄgot nytt pÄ webbplatsen och uppdatera den i enlighet med önskemÄlen. Till exempel, i Sydkorea rakar man sig inte som i Ryssland, och de föredrar dofter som inte Àr av tall utan till exempel morotsvanilj.
Eftersom det krÀvs att snabbt Àndra innehÄllet pÄ webbplatsen, förÀndras programvaruutvecklingen avsevÀrt. Genom programvaran mÄste vi ta reda pÄ vad kunden vill ha. Tidigare fick vi veta detta pÄ olika omvÀgar, till exempel genom affÀrsadministration. Sedan designade vi, lade in kraven i IT-systemet, och allt var bra. Nu Àr det annorlunda - programvaran designas av alla som Àr involverade i processen, inklusive ingenjörer, eftersom de fÄr insikter om hur marknaden fungerar genom tekniska specifikationer och ocksÄ delar sina insikter med affÀrssidan.
Till exempel, i företaget Qik fick vi plötsligt veta att folk verkligen gillar att ladda upp kontaktlistor till servern, och de gav oss en app. Vi tÀnkte inte pÄ detta frÄn början. I ett klassiskt företag skulle alla ha bedömt att det var en bugg eftersom det inte stod i specifikationen att det skulle fungera bra och det var dessutom genomfört pÄ ett hastigt sÀtt, de skulle ha stÀngt av funktionen och sagt: "Det behövs inte, det viktigaste Àr att den grundlÀggande funktionaliteten fungerar." Men ett teknologiskt företag ser en möjlighet i detta och börjar Àndra programvaran i enlighet med det.

Ă
r 1968 formulerade den kloka killen Melvin Conway följande idé.
Organisationen som skapar ett system Àr begrÀnsad av designen som speglar kommunikationsstrukturen i denna organisation.
För att producera system av en annan typ behöver ni dessutom ha en kommunikationsstruktur inom företaget av en annan typ. Om ni har en topp-ner hierarkisk kommunikationsstruktur, kommer det inte att tillÄta er att skapa system som kan sÀkerstÀlla en mycket hög Time-to-market.
LÀs mer kan . Den Àr viktig för att förstÄ kulturen eller filosofin bakom DevOps, eftersom det enda som grundlÀggande förÀndras inom DevOps Àr just kommunikationsstrukturen mellan teamen..
Ur processens synvinkel har alla faser: analys, utveckling, testning, drift, i DevOps varit linjÀra.
I DevOps pÄgÄr alla dessa processer samtidigt.

Time-to-market kan endast uppnÄs pÄ detta sÀtt. För personer som har arbetat i den gamla processen kan detta verka ganska futuristiskt, och överlag inte sÄ tilltalande.
SÄ varför behövs DevOps?
För utvecklingen av digitala produkter.Om ni inte har en digital produkt i ert företag, behövs inte DevOps - detta Àr mycket viktigt.
DevOps övervinner de hastighetsbegrÀnsningar som Àr förknippade med en sekventiell produktionsmodell.I den sker alla processer samtidigt.
Komplexiteten ökar. NÀr DevOps-evangelister sÀger att det kommer att bli enklare att slÀppa programvara med DevOps - det Àr nonsens.
Med DevOps blir allt bara mer komplext.
PÄ konferensen pÄ Avitos monter kunde man se hur man deployar en Docker-container - en orealistisk uppgift. Komplexiteten blir övervÀldigande, man mÄste jonglera med mÄnga bollar samtidigt.
DevOps förĂ€ndrar helt processen och organisationen i företaget â snarare förĂ€ndrar inte DevOps, utan den digitala produkten. För att nĂ„ DevOps mĂ„ste man Ă€ndĂ„ förĂ€ndra hela denna process.
FrÄgor för specialisten
Och vad har ni? FrÄgor som ni kan stÀlla till er sjÀlva nÀr ni arbetar i företaget och utvecklas som specialist.
Har ni en strategi för att skapa en digital produkt? Om ni har det â bra. Det betyder att ert företag rör sig mot DevOps.
Skapar ert företag redan en digital produkt? Det innebĂ€r att ni kan ta ett steg uppĂ„t till, engagera er i intressantare verksamhet â ur DevOps-perspektiv. Jag hĂ€nvisar endast till detta perspektiv.
Ăr ert företag en av marknadsledarna inom en nisch med digital produkt? Spotify, Yandex, Uber â företag som just nu Ă€r i framkant av teknologisk utveckling.
StÀll dessa frÄgor till dig sjÀlv, och om alla svar Àr negativa, Àr det kanske bÀst att du inte sysslar med DevOps pÄ det hÀr företaget. Men om DevOps verkligen intresserar dig, kanske⊠du borde övervÀga att byta företag? Om ditt företag vill gÄ över till DevOps, men du svarade "Nej" pÄ alla frÄgor, pÄminner det om den hÀr vackra noshörningen som aldrig kommer att förÀndras.

Organisationen
Som jag redan har nĂ€mnt, enligt Conwayâs lag, förĂ€ndras organisationen inom företaget. Jag börjar med vad som hindrar DevOps frĂ„n att trĂ€nga in i företaget just ur organisatoriskt perspektiv.
Problemet med "siloer"
Det engelska ordet "Silo" översĂ€tts hĂ€r till ryska som "ĐșĐŸĐ»ĐŸĐŽĐ”Ń" (brunn). Problemet hĂ€r handlar om att det inte finns nĂ„got informationsutbyte mellan teamen.. Varje team grĂ€ver djupt inom sin egen expertis, utan att bygga en gemensam karta dĂ€r man kan orientera sig.
Det pÄminner lite om en person som just har anlÀnt till Moskva och Ànnu inte kan navigera pÄ tunnelbanekartan. Moskva-invÄnare brukar kÀnna till sitt omrÄde bra, och i hela Moskva orienterar de sig efter tunnelbanekartan. NÀr du kommer till Moskva för första gÄngen har du inte den fÀrdigheten, och du Àr bara desorienterad.
DevOps erbjuder att gÄ igenom denna desorienteringsperiod och tillsammans med alla avdelningar bygga en gemensam interaktionskarta.
TvÄ faktorer hindrar detta.
Konsekvenserna av företagets ledningssystem. Det Ă€r uppbyggt av separata hierarkiska "siloer". Till exempel finns det vissa KPI:er i företag som stöder detta system. Ă andra sidan hindras det av mĂ€nniskors tĂ€nkande, dĂ€r det kan vara svĂ„rt att gĂ„ utanför sin egen expertis och orientera sig i hela systemet. Det Ă€r helt enkelt obekvĂ€mt. TĂ€nk dig att du hamnat pĂ„ Bangkok flygplats â dĂ€r Ă€r det svĂ„rt att snabbt orientera sig. Det Ă€r ocksĂ„ svĂ„rt att navigera i DevOps, och dĂ€rför sĂ€ger folk att man mĂ„ste hitta en guide för att komma dit.
Men det viktigaste Àr att problemet med "siloer" för en ingenjör som har anammat DevOps-andan och lÀst Fowler och massor av andra böcker, uttrycker sig i att "siloer" hindrar att "uppenbara" saker görs. Vi samlas ofta efter DevOps Moscow, pratar med varandra, och folk klagar:
â Vi ville bara starta CI, men det visade sig att ledningen inte behövde det.
Det beror just pÄ att CI och Continuous Delivery-processen ligger pÄ grÀnsen till mÄnga expertiser. Genom att inte övervinna problemet med «brunnar» pÄ organisationsnivÄ kommer det inte att gÄ att göra framsteg, oavsett vad ni gör och hur sorgligt det Àn kan verka.

Varje deltagare i processen inom företaget: backend- och frontend-utvecklare, testning, DBA, drift, nÀtverk, grÀver pÄ sin egen sida, medan ingen har en gemensam karta, utom förvaltaren som pÄ nÄgot sÀtt överser dem och styr med metoden «dela och hÀrska».
MÀnniskor kÀmpar för olika stjÀrnor eller flaggor, varje person fördjupar sin egen expertis.
Som ett resultat, nĂ€r uppgiften att koppla samman allt detta och bygga en gemensam pipeline uppstĂ„r, och det inte lĂ€ngre handlar om att kĂ€mpa för stjĂ€rnor och flaggor, uppstĂ„r frĂ„gan â vad ska man göra överhuvudtaget? Man mĂ„ste pĂ„ nĂ„got sĂ€tt komma överens, och hur man gör det, lĂ€rde ingen oss i skolan. Vi har lĂ€rt oss redan i skolan: Ă„ttonde klass â wow! â jĂ€mfört med sjunde klass! HĂ€r Ă€r det samma.
Ăr det likadant i ert företag?
För att kontrollera detta kan man stÀlla sig följande frÄgor.
AnvÀnder teamen gemensamma verktyg och bidrar de med förÀndringar i dessa gemensamma verktyg?
Hur ofta omorganiseras teamen â övergĂ„r specialister frĂ„n ett team till ett annat? Just i DevOps-miljöer blir detta normalt, eftersom en person ibland helt enkelt inte kan förstĂ„ vad en annan expertis sysslar med. Han gĂ„r till en annan avdelning, jobbar dĂ€r i tvĂ„ veckor för att skapa en karta för orientering och interaktion med den avdelningen.
Kan en kommitté bildas för att göra förÀndringar och Àndra nÄgot? Eller krÀvs det en stark hand frÄn den högsta ledningen och ett beslut? Nyss skrev jag pÄ Facebook om hur en relativt okÀnd bank genom beslut implementerar verktyg: de skrev ett beslut, implementerade i ett Är och ser vad som hÀnder. Det Àr naturligtvis lÄngsamt och sorgligt.
Hur viktigt Àr det för chefer att fÄ personliga prestationer oavsett företagets prestationer?
Om ni svarar pÄ dessa frÄgor blir det tydligare om ni har detta problem i företaget.
Infrastruktur som kod
NÀr detta problem Àr löst Àr den första viktiga praktiken, utan vilken det Àr svÄrt att avancera ytterligare inom DevOps, att infrastruktur som kod.
Oftast uppfattas infrastruktur som kod sÄ hÀr:
â LĂ„t oss automatisera allt med bash, överösa oss med skript sĂ„ att administratörerna fĂ„r mindre manuellt arbete!
Men sÄ Àr det inte.
Infrastruktur som kod innebÀr att du beskriver den IT-system du arbetar med i form av kod, för att stÀndigt förstÄ dess tillstÄnd.
Tillsammans med andra team skapar du en karta i form av kod som alla kan förstĂ„, som kan anvĂ€ndas för att orientera och navigera. Oavsett vilket verktyg som anvĂ€nds â Chef, Ansible, Salt, eller om YAML-filer anvĂ€nds i Kubernetes â spelar det ingen roll.
PÄ konferensen berÀttade en kollega frÄn 2GIS hur de skapade sin interna lösning för Kubernetes, som beskriver strukturen för varje enskilt system. För att beskriva 500 system behövde de ett sÀrskilt verktyg som genererade denna beskrivning. NÀr denna beskrivning finns, kan alla kontrollera med varandra, övervaka Àndringar, hur det kan Àndras och förbÀttras, och vad som saknas.
FörstĂ„s ger separata bash-skript vanligtvis inte denna insyn. PĂ„ ett av de företag jag arbetade pĂ„ fanns det till och med ett namn som "write only"-skript â nĂ€r skriptet Ă€r skrivet gĂ„r det inte att lĂ€sa. Jag tror att ni ocksĂ„ kĂ€nner igen detta.
Infrastruktur som kod Àr Kod som beskriver det aktuella tillstÄndet för infrastrukturen. Denna kod hanteras gemensamt av mÄnga produkt-, infrastrukturs- och serviceteam, och viktigast av allt, alla mÄste förstÄ hur denna kod faktiskt fungerar.
Koden underhĂ„lls enligt bĂ€sta praxis för kodhantering: gemensam utveckling, kodgranskning, XP-programmering, testning, pull requests, CI för infrastrukturkod â allt detta Ă€r vĂ€rdefullt och kan anvĂ€ndas.
Koden blir ett gemensamt sprÄk för alla ingenjörer.
Att Àndra infrastrukturen i koden tar inte mycket tid. Ja, det kan finnas teknisk skuld Àven i infrastrukturkoden. Vanligtvis möter team denna skuld efter ungefÀr ett och ett halvt Är efter att de börjat implementera "infrastruktur som kod" i form av en massa skript eller till och med Ansible, som de skriver som spaghettikod, och sedan slÀnger in bash-skript i grytan!
Det Àr viktigt: om ni inte har provat denna skrÀpa Àn, kom ihÄg att Ansible Àr inte bash! LÀs noga igenom dokumentationen, studera vad som faktiskt skrivs om det hÀr.
Infrastruktur som kod â det handlar om att dela upp infrastrukturell kod i separata lager.
I vÄrt företag identifierar vi tre grundlÀggande lager som Àr tydliga och enkla, men det kan finnas fler. Du kan titta pÄ din infrastrukturella kod och se om du uppfyller detta villkor eller inte. Om inga lager har identifierats, bör du ta tid att refaktorera lite.

Grundlager â det handlar om hur operativsystemet konfigureras, sĂ€kerhetskopior och andra lĂ„g nivĂ„ saker, till exempel hur Kubernetes distribueras pĂ„ grundnivĂ„.
TjĂ€nstlager â det Ă€r de tjĂ€nster som du tillhandahĂ„ller utvecklaren: loggning som tjĂ€nst, övervakning som tjĂ€nst, databas som tjĂ€nst, load balancer som tjĂ€nst, kö som tjĂ€nst, Continuous Delivery som tjĂ€nst â en mĂ€ngd tjĂ€nster som olika team kan erbjuda utvecklingen. Allt detta mĂ„ste beskrivas i separata moduler i ditt konfigurationshanteringssystem.
Lagret dÀr applikationer görs och dÀr det beskrivs hur de ska distribueras ovanpÄ de tvÄ föregÄende lagren.
KontrollfrÄgor
Har ditt företag ett gemensamt infrastrukturellt arkiv? Kontrollerar ni teknisk skuld i infrastrukturen? AnvĂ€nder ni utvecklingspraxis i det infrastrukturella arkivet? Ăr er infrastruktur uppdelad i lager? Man kan verifiera med schemat Base-service-APP. Hur svĂ„rt Ă€r det att göra en förĂ€ndring?
Om du har stött pÄ situationen dÀr en förÀndring tog en och en halv dag, betyder det att ni har fÄtt teknisk skuld som ni mÄste arbeta med. Du har precis stött pÄ en fÀlla av teknisk skuld i den infrastrukturella koden. Jag minns mÄnga sÄdana historier dÀr för att Àndra nÄgot CCTL mÄste man skriva om hÀlften av den infrastrukturella koden, eftersom kreativitet och viljan att automatisera allt har lett till att allt Àr överbelastat, alla handgrepp har tagits bort och refaktorisering behövs.
Kontinuerlig leverans
Vi sammanfattar debet och kredit. Först finns en beskrivning av infrastrukturen, som kan vara ganska grundlÀggande. Det Àr inte nödvÀndigt att beskriva allt i detalj, men en viss grundlÀggande beskrivning krÀvs för att ni ska kunna arbeta med detta. Annars Àr det oklart hur man ska genomföra kontinuerlig leverans. Alla dessa metoder införs samtidigt nÀr ni kommer till DevOps, men man mÄste börja med att förstÄ vad man har och hur man hanterar det. Det Àr just denna praktik för infrastruktur som kod.
NĂ€r ni har förstĂ„tt vad ni har och hur ni kan hantera det, börjar ni fundera pĂ„ hur utvecklarens kod snabbt kan skickas till produktion. Jag menar tillsammans med utvecklaren â kom ihĂ„g problemet med "brunnar", det vill sĂ€ga det Ă€r inte bara enskilda personer som kommer pĂ„ detta, utan det görs som ett team.
NÀr vi sÄg Vanya Evtuchevich första boken Jez Humble och en grupp författare "Continuous Delivery", som kom ut 2009, funderade vi lÀnge pÄ hur vi skulle översÀtta titeln till svenska. Vi ville översÀtta den som "StÀndigt leverera", men tyvÀrr översatte vi det som "Kontinuerlig leverans". Jag tycker att det finns nÄgot sÄdant ryskt i vÄr titel, med kraft.
StĂ€ndigt leverera â det betyder
Koden som ligger i produktrepositoriet kan alltid rullas ut till produktion. Den kan kanske inte rullas ut, men den Ă€r alltid redo för det. DĂ€rför skriver ni alltid kod med en svĂ„rförklarad kĂ€nsla av viss oro i nedre delen av ryggen. Denna kĂ€nsla av oro uppstĂ„r ofta nĂ€r man rullar ut infrastrukturkod. Det Ă€r just denna kĂ€nsla av oro som mĂ„ste vara nĂ€rvarande â den vĂ€cker mentala processer som gör att man kan skriva kod pĂ„ ett lite annat sĂ€tt. Detta bör dokumenteras i reglerna inom utvecklingen.
För att stĂ€ndigt kunna leverera behöver man ett artefaktformat som gĂ„r igenom den infrastrukturella plattformen. Om ni slĂ€nger olika typer av "avfallsprodukter" över den infrastrukturella plattformen, sĂ„ blir den icke-enhetlig, svĂ„r att underhĂ„lla och det uppstĂ„r ett tekniskt skuldproblem. Artefaktformatet mĂ„ste jĂ€mnas ut â detta Ă€r ocksĂ„ en kollektiv uppgift: man mĂ„ste samlas, tĂ€nka tillsammans och komma pĂ„ detta format.
Artefakten förbÀttras kontinuerligt och anpassas till produktionsmiljön under hela leveranspipeline processen. NÀr artefakten rör sig genom pipelinen, stöter den hela tiden pÄ olika utmaningar som liknar dem som artefakten möter nÀr ni slÀpper den till produktion. Om en systemadministratör hanterar detta i klassisk utveckling, sÄ hÀnder det kontinuerligt i DevOps-processen: hÀr prövar de den med olika tester, dÀr kastas den in i ett Kubernetes-kluster som mer eller mindre liknar produktionen, och plötsligt körs belastningstestning.
Det pÄminner om spelet Pac-Man - artefakten genomgÄr en historia. Det Àr viktigt att övervaka om koden faktiskt genomgÄr en historia som Àr relaterad till er produktion. Historier om produktion kan integreras i Continuous Delivery-processen: det har varit sÄ tidigare nÀr nÄgot har kraschat, lÄt oss programmera det scenariot direkt i systemet. Varje gÄng kommer koden ocksÄ att genomgÄ detta scenario, och ni kommer att upptÀcka problemet mycket tidigare innan det nÄr era kunder.
Olika distributionsstrategier. Till exempel kan ni anvÀnda A/B-testning eller kanariefÄgelsutdelningar för att pÄ olika sÀtt "kÀnna av" koden hos olika kunder, fÄ information om hur koden fungerar och mycket tidigare Àn nÀr den distribueras till 100 miljoner anvÀndare.
"Kontinuerlig leverans" ser ut sÄ hÀr.

Leveransprocessen Dev, CI, Test, PreProd, Prod Àr inte en separat miljö, det Àr steg eller stationer med icke-brÀnnbara summor dÀr er artefakt passerar.
Om ni har infrastrukturkod som beskrivs som Base Service APP, hjÀlper den att inte glömma alla scenarier, och att ocksÄ skriva ner dem i form av kod för denna artefakt, att föra artefakten framÄt och att förÀndra den under sin vÀg.
FrÄgor för sjÀlvkontroll
Ăr tiden frĂ„n beskrivning av funktionen till distribution i produktion i 95 % av fallen mindre Ă€n en vecka? FörbĂ€ttras kvaliteten pĂ„ artefakten vid varje steg i pipelinen? Finns det en historia som den genomgĂ„r? AnvĂ€nder ni olika distributionsstrategier?
Om alla svar Àr ja, dÄ Àr ni otroligt duktiga! Skriv svaren i kommentarerna - jag ser fram emot dem).
Feedback
Det hÀr Àr den mest komplexa praktiken av alla. Under konferensen DevOpsConf blev en kollega frÄn Infobip lite osÀker i sina ord nÀr han pratade om detta, eftersom det verkligen Àr en mycket komplex praktik om vad man faktiskt behöver övervaka överhuvudtaget!

Till exempel, för lÀnge sedan, nÀr jag arbetade pÄ Qik och vi insÄg att vi verkligen behövde övervaka allt. Vi gjorde det, och vi hade 150 000 objekt i Zabbix som stÀndigt övervakades. Det var skrÀmmande, teknisk chef snurrade fingret vid tungan:
â Grabbar, varför misshandlar ni servern med nĂ„got oklart?
Men sedan intrÀffade en hÀndelse som visade att detta verkligen Àr en riktigt cool strategi.
En av tjĂ€nsterna började stĂ€ndigt falla. Ursprungligen föll den inte, intressant nog, eftersom ingen kod lades till, eftersom det var en grundlĂ€ggande broker dĂ€r det praktiskt taget inte fanns nĂ„gon affĂ€rsfunktionalitet â den skickade bara meddelanden mellan olika tjĂ€nster. TjĂ€nsten hade inte förĂ€ndrats pĂ„ 4 mĂ„nader, och plötsligt började den falla med ett felmeddelande "Segmentation fault".
Vi var i chock, vi öppnade vÄra grafer i Zabbix, och det visade sig att beteendet hos förfrÄgningar i API-tjÀnsten som anvÀnder denna broker hade förÀndrats kraftigt för en och en halv vecka sedan. Senare sÄg vi att frekvensen för att skicka vissa typer av meddelanden hade förÀndrats. EfterÄt fick vi veta att det var android-klienterna. Vi frÄgade:
â Grabbar, vad hĂ€nde för en och en halv vecka sedan?
Som svar hörde vi en intressant berĂ€ttelse om att de hade gjort om UI. Vem skulle i sĂ„ fall omedelbart sĂ€ga att de bytte HTTP-bibliotek? För android-klienter Ă€r det som att byta tvĂ„l i badrummet â de glömmer helt enkelt bort det. Resultatet blev att efter 40 minuter av samtal kom vi fram till att de faktiskt hade bytt HTTP-bibliotek, och dess standardtidsinstĂ€llningar hade Ă€ndrats. Det ledde till att beteendet hos trafiken pĂ„ API-servern förĂ€ndrades, vilket ledde till situationen som orsakade en race condition inuti brokern, och den började falla.
Utan djupgĂ„ende övervakning Ă€r det helt omöjligt att avslöja detta.. Om det finns ett problem med "brunnar" i organisationen, dĂ€r alla skyller pĂ„ varandra, kan det pĂ„gĂ„ i flera Ă„r. Du startar bara om servern eftersom det Ă€r omöjligt att lösa problemet. NĂ€r du övervakar, spĂ„rar och följer alla hĂ€ndelser som du har, och anvĂ€nder övervakning som testning â skriver kod och anger genast hur den ska övervakas, ocksĂ„ i form av kod (vi har redan infrastruktur som kod), blir allt kristallklart. Ăven sĂ„dana komplexa problem kan enkelt spĂ„ras.

Samla all information om vad som hĂ€nder med artefakten i varje steg av leveransprocessen â inte i produktion.
Ladda upp övervakningen pĂ„ CI, och dĂ€r kommer nĂ„gra grundlĂ€ggande saker att synas. Du kommer att se dem Ă€ven i Test, PredProd och vid belastningstestning. Samla information pĂ„ alla stadier, och inte bara metrik, statistik utan Ă€ven loggar: hur applikationen rullas ut, anomalier â samla allt.
Annars blir det svÄrt att förstÄ. Jag har redan sagt att DevOps innebÀr en större komplexitet. För att hantera denna komplexitet behöver man ha god analys..
FrÄgor för egenkontroll.
Ăr din övervakning och loggning ett utvecklingsverktyg för er? TĂ€nker dina utvecklare, inklusive du sjĂ€lv, nĂ€r de skriver kod pĂ„ hur den ska övervakas?
FĂ„r ni veta om problem frĂ„n kunder? FörstĂ„r ni kunderna bĂ€ttre genom övervakning och loggning? FörstĂ„r ni systemet bĂ€ttre genom övervakning och loggning? Ăndrar ni systemet bara för att ni ser att trenden i systemet ökar och förstĂ„r att om tre veckor kommer allt att kollapsa?
NÀr ni har dessa tre komponenter kan ni fundera pÄ vilken infrastrukturplattform ni har i företaget.
Infrastrukturplattform.
PoÀngen Àr inte att det Àr en uppsÀttning av skilda verktyg som finns i varje företag.
PoÀngen med infrastrukturplattformen Àr att alla team anvÀnder dessa verktyg och utvecklar dem tillsammans.
Det Àr klart att det finns separata team som ansvarar för utvecklingen av specifika delar av infrastrukturplattformen. Men ansvaret för utvecklingen, funktionaliteten och frÀmjandet av infrastrukturplattformen ligger pÄ varje ingenjör. PÄ en intern nivÄ blir detta ett gemensamt verktyg.
Alla team utvecklar infrastrukturplattformen och behandlar den varsamt som sin egen IDE. I din IDE installerar du olika plugins för att allt ska se bra och snabbt ut, och du konfigurerar genvÀgar. NÀr du öppnar Sublime, Atom eller Visual Studio Code, hur koden kraschar och du inser att det Àr nÀstan omöjligt att arbeta, blir du genast nedslagen och springer för att fixa din IDE.
Behandla din infrastrukturplattform pÄ samma sÀtt. Om du upptÀcker att nÄgot Àr fel med den, lÀmna en förfrÄgan om hjÀlp om du inte kan fixa det sjÀlv. Men om det Àr nÄgot enkelt - fixa det sjÀlv och skicka en pull request - teamet kommer att granska och lÀgga till det. Det Àr en nÄgot annan syn pÄ ingenjörsverktyg i utvecklarens huvud.
Infrastrukturplattformen möjliggör överföring av artefakten frÄn utvecklingen till klienten med stÀndiga kvalitetsförbÀttringar. PÄ IP finns en uppsÀttning berÀttelser programmerade som hÀnder med koden i produktion. Under Ären av utveckling har det blivit vÀldigt mÄnga av dessa berÀttelser; en del av dem Àr unika och handlar bara om dig - de gÄr inte att hitta pÄ nÀtet.
Vid denna tidpunkt blir infrastrukturplattformen din konkurrensfördel, eftersom den har inslag som saknas i konkurrentens verktyg. Ju djupare din IP Àr, desto större Àr din konkurrensfördel i termer av Time-to-market. HÀr uppstÄr problemet med vendor lock: du kan ta en annan plattform, men genom att anvÀnda nÄgon annans erfarenhet kommer du inte att förstÄ hur relevant det Àr för dig. Ja, inte alla företag kan bygga en plattform som Amazon. Det Àr en svÄr grÀns dÀr ett företags erfarenhet Àr relevant för dess position pÄ marknaden, och att slÀppa in vendor lock Àr inte tillrÄdligt. Det Àr ocksÄ nÄgot som Àr viktigt att tÀnka pÄ.
Diagram
Detta Àr den grundlÀggande schemat för infrastrukturplattformen, som kommer hjÀlpa dig att etablera alla praxis och processer i ett DevOps-företag.

LÄt oss titta pÄ vad den bestÄr av.
Resursorkestreringssystemet, som tillhandahÄller CPU, minne och disk för applikationerna och andra tjÀnster. OvanpÄ detta finns det tjÀnster pÄ lÄg nivÄ: övervakning, loggning, CI/CD-motor, lagring av artefakter, infrastruktur som kod-system.
TjĂ€nster pĂ„ högre nivĂ„: databas som en tjĂ€nst, köer som en tjĂ€nst, Load Balance som en tjĂ€nst, resizing av bilder som en tjĂ€nst, Big Data fabrik som en tjĂ€nst. Ăver detta - pipeline som stĂ€ndigt levererar modifierad kod till din klient.
Du fÄr information om hur din programvara fungerar hos kunden, Àndrar, levererar denna kod igen, fÄr information - och sÄ utvecklar du stÀndigt bÄde din infrastrukturplattform och din programvara.
I schemat bestÄr leveranspipeline av mÄnga steg. Men detta Àr en principskiss som ges som exempel - du behöver inte Äterskapa den exakt. Stegen interagerar med tjÀnster som tjÀnster - varje byggsten i plattformen bÀr sin egen historia: hur resurser tilldelas, hur applikationen startas, arbetar med resurser, övervakas och förÀndras.
Det Àr viktigt att förstÄ att varje del av plattformen bÀr en historia, och att frÄga sig - vilken historia bÀr denna byggsten, kanske bör den slÀngas och ersÀttas med en extern tjÀnst. Till exempel, kan vi istÀllet för byggstenen sÀtta in Okmeter? Kanske har de redan utvecklat denna expertis mycket mer Àn vi. Men kanske inte - kanske har vi unik expertis, och vi behöver sÀtta in Prometheus och utveckla detta vidare.
Att bygga en plattform
Detta Àr en komplex kommunikationsprocess. NÀr du har grundlÀggande praxis, startar du kommunikationen mellan olika ingenjörer och specialister, som utvecklar krav och standarder, och stÀndigt förÀndrar dem till olika verktyg och metoder. HÀr Àr kulturen viktig, som finns i DevOps.

Med kultur Àr allt vÀldigt enkelt - det Àr samarbete och kommunikation, det vill sÀga en vilja att arbeta pÄ gemensam mark med varandra, en vilja att tillsammans behÀrska ett verktyg. Det finns ingen rocket science hÀr - allt Àr vÀldigt enkelt, banalt. Till exempel, vi alla bor i en trappuppgÄng och upprÀtthÄller dess renlighet - en sÄdan nivÄ av kultur.
Och hur Àr det med er?
à terigen frÄgor som du kan stÀlla dig sjÀlv.
Ăr infrastrukturplattformen avskild? Vem ansvarar för dess utveckling? FörstĂ„r ni konkurrensfördelarna med er infrastrukturplattform?
Dessa frĂ„gor mĂ„ste man stĂ€ndigt stĂ€lla sig sjĂ€lv. Om nĂ„got kan outsourcas till externa tjĂ€nster â bör det göras; om den externa tjĂ€nsten börjar blockera din framfart, mĂ„ste man bygga ett system inifrĂ„n.
SĂ„, DevOpsâŠ
⊠Àr ett komplext system som mÄste innehÄlla:
- En digital produkt.
- AffÀrsmoduler som utvecklar denna digitala produkt.
- Produktionsteam som skriver kod.
- Praktiker för Continuous Delivery.
- Plattformar som tjÀnst.
- Infrastruktur som tjÀnst.
- Infrastruktur som kod.
- Separata praktiker för att upprÀtthÄlla tillförlitlighet, inbyggda i DevOps.
- Feedback-praktik som beskriver allt detta.

Denna modell kan anvÀndas, med fÀrgkodning av det som redan finns i ert företag i nÄgot format: det har utvecklats eller behöver fortfarande utvecklas.
Redan om ett par veckor kommer . som en del av RIT++. Kom till konferensen dÀr mÄnga fantastiska förelÀsningar om kontinuerlig leverans, infrastruktur som kod och DevOps-transformation vÀntar pÄ er. , sista datum för priser 20 maj
KĂ€lla: habr.com
