DevOps-guide för nybörjare

Vad är betydelsen av DevOps, vad betyder det för IT-proffs, en beskrivning av metoder, ramverk och verktyg.

DevOps-guide för nybörjare

Mycket har hänt sedan termen DevOps tog fäste i IT-världen. Med mycket av ekosystemet med öppen källkod är det viktigt att ompröva varför det började och vad det betyder för en karriär inom IT.

Vad är DevOps

Även om det inte finns någon enskild definition, tror jag att DevOps är ett teknologisk ramverk som möjliggör samarbete mellan utvecklings- och driftteam för att distribuera kod snabbare i produktionsmiljöer med förmågan att iterera och automatisera. Vi kommer att ägna resten av den här artikeln åt att packa upp detta påstående.

Ordet "DevOps" är en kombination av orden "utveckling" och "operationer". DevOps hjälper till att öka leveranshastigheten för applikationer och tjänster. Detta gör det möjligt för organisationer att effektivt betjäna sina kunder och bli mer konkurrenskraftiga på marknaden. Enkelt uttryckt är DevOps kopplingen mellan utveckling och IT-drift med effektivare kommunikation och samarbete.

DevOps involverar en kultur där samarbete mellan utvecklings-, drift- och affärsteam anses vara avgörande. Det handlar inte bara om verktyg, eftersom DevOps i en organisation ständigt gynnar kunderna också. Verktyg är en av dess grundpelare, tillsammans med människor och processer. DevOps ökar organisationers förmåga att leverera högkvalitativa lösningar på kortast möjliga tid. DevOps automatiserar också alla processer, från bygg till implementering, applikation eller produkt.

DevOps-diskussionen fokuserar på förhållandet mellan utvecklare, människorna som skriver mjukvara för sitt uppehälle och de operatörer som ansvarar för att underhålla programvaran.

Utmaningar för utvecklingsteamet

Utvecklare tenderar att vara entusiastiska och ivriga att implementera nya tillvägagångssätt och tekniker för att lösa organisatoriska problem. Men de möter också vissa problem:

  • Den konkurrensutsatta marknaden skapar ett stort tryck att leverera produkten i tid.
  • De måste ta hand om att hantera produktionsklar kod och introducera nya funktioner.
  • Utgivningscykeln kan vara lång, så utvecklingsteamet måste göra flera antaganden innan de implementerar applikationer. I det här scenariot krävs mer tid för att lösa problem som uppstår under distribution till en produktions- eller testmiljö.

Utmaningar som operationsteamet står inför

Driftsteam har historiskt fokuserat på stabilitet och tillförlitlighet hos IT-tjänster. Det är därför driftteam söker stabilitet genom förändringar i resurser, teknologier eller tillvägagångssätt. Deras uppgifter inkluderar:

  • Hantera resursallokering när efterfrågan ökar.
  • Hantera design- eller anpassningsändringar som krävs för användning i en produktionsmiljö.
  • Diagnostisera och lösa produktionsproblem efter självdistribution av applikationer.

Hur DevOps löser utvecklings- och driftsproblem

Istället för att rulla ut ett stort antal appfunktioner på en gång, försöker företag se om de kan rulla ut ett litet antal funktioner till sina kunder genom en serie release-iterationer. Detta tillvägagångssätt har ett antal fördelar, såsom bättre mjukvarukvalitet, snabbare kundfeedback etc. Detta säkerställer i sin tur en hög kundnöjdhet. För att uppnå dessa mål måste företagen:

  • Minska felfrekvensen när du släpper nya utgåvor
  • Öka distributionsfrekvensen
  • Uppnå en snabbare genomsnittlig tid till återhämtning i händelse av en ny programversion.
  • Minska tiden för korrigeringar

DevOps utför alla dessa uppgifter och hjälper till att säkerställa oavbruten leverans. Organisationer använder DevOps för att uppnå produktivitetsnivåer som var otänkbara för bara några år sedan. De utför tiotals, hundratals och till och med tusentals driftsättningar per dag samtidigt som de levererar tillförlitlighet, stabilitet och säkerhet i världsklass. (Läs mer om partistorlekar och deras inverkan på leverans av programvara).

DevOps försöker lösa olika problem som härrör från tidigare metoder, inklusive:

  • Isolering av arbete mellan utvecklings- och verksamhetsteam
  • Testning och driftsättning är separata faser som inträffar efter design och konstruktion och kräver mer tid än byggcykler.
  • Överdriven tid ägnas åt att testa, implementera och designa istället för att fokusera på att bygga kärnverksamhetstjänster
  • Manuell koddistribution som leder till fel i produktionen
  • Skillnader i utvecklings- och driftteams scheman orsakar ytterligare förseningar

DevOps-guide för nybörjare

Konfrontation mellan DevOps, Agile och traditionell IT

DevOps diskuteras ofta i relation till annan IT-praxis, särskilt Agile och Waterfall IT.

Agile är en uppsättning principer, värderingar och metoder för mjukvaruproduktion. Så om du till exempel har en idé som du vill omvandla till mjukvara kan du använda dig av Agila principer och värderingar. Men den här programvaran kan bara köras i en utvecklings- eller testmiljö. Du behöver ett enkelt, säkert sätt att flytta din programvara till produktion snabbt och upprepade gånger, och vägen är genom DevOps-verktyg och -tekniker. Agil mjukvaruutveckling fokuserar på utvecklingsprocesser och DevOps ansvarar för utveckling och driftsättning på det säkraste och mest tillförlitliga sättet.

Att jämföra den traditionella vattenfallsmodellen med DevOps är ett bra sätt att förstå fördelarna som DevOps ger. Följande exempel förutsätter att applikationen kommer att vara live om fyra veckor, utvecklingen är 85 % klar, applikationen kommer att vara live och processen med att köpa servrar för att skicka koden har precis börjat.

Traditionella processer
Processer i DevOps

Efter att ha lagt en beställning på nya servrar arbetar utvecklingsteamet med att testa. Arbetsgruppen arbetar med den omfattande dokumentation som krävs av företag för att distribuera infrastruktur.
När en beställning på nya servrar har lagts, arbetar utvecklings- och driftteamen tillsammans med processerna och pappersarbetet för att installera de nya servrarna. Detta gör att du bättre kan förstå dina infrastrukturkrav.

Information om failover, redundans, datacenterplatser och lagringskrav är felaktiga eftersom det inte finns någon input från ett utvecklingsteam som har djup domänkunskap.
Detaljer om failover, redundans, katastrofåterställning, datacenterplatser och lagringskrav är kända och korrekta på grund av utvecklingsteamets input.

Driftteamet har ingen aning om utvecklingsteamets framsteg. Hon tar också fram en övervakningsplan utifrån sina egna idéer.

Driftsteamet är fullt medvetet om utvecklingsteamets framsteg. Hon interagerar också med utvecklingsteamet och de arbetar tillsammans för att ta fram en övervakningsplan som möter IT- och affärsbehov. De använder också verktyg för övervakning av applikationsprestanda (APM).

Ett belastningstest som utförs innan en applikation startar gör att applikationen kraschar, vilket fördröjer lanseringen.
Ett belastningstest som utförs innan ett program körs resulterar i dålig prestanda. Utvecklingsteamet löser snabbt flaskhalsar och applikationen lanseras i tid.

DevOps livscykel

DevOps innebär antagandet av vissa allmänt accepterade metoder.

Kontinuerlig planering

Kontinuerlig planering bygger på lean-principer för att börja i det små genom att identifiera de resurser och resultat som behövs för att testa värdet av verksamheten eller visionen, kontinuerligt anpassa, mäta framsteg, lära av kundernas behov, ändra riktning efter behov för att tillgodose smidighet och återuppfinna affärsplanen.

Gemensam utveckling

Den gemensamma utvecklingsprocessen tillåter företag, utvecklingsteam och testteam spridda över olika tidszoner att kontinuerligt leverera kvalitetsmjukvara. Detta inkluderar utveckling av flera plattformar, stöd för programmering över flera språk, skapande av användarberättelser, idéutveckling och livscykelhantering. Samarbetsutveckling inkluderar processen och praktiken av kontinuerlig integration, vilket främjar frekvent kodintegrering och automatiserade byggen. Genom att distribuera kod ofta till en applikation identifieras integrationsproblem tidigt i livscykeln (när de är lättare att fixa) och den övergripande integrationssatsningen minskas genom kontinuerlig feedback eftersom projektet visar kontinuerliga och synliga framsteg.

Kontinuerlig testning

Kontinuerlig testning minskar kostnaden för testning genom att hjälpa utvecklingsteam att balansera hastighet med kvalitet. Det eliminerar också testflaskhalsar genom tjänstvirtualisering och gör det enkelt att skapa virtualiserade testmiljöer som enkelt kan delas, distribueras och uppdateras när systemen förändras. Dessa funktioner minskar kostnaderna för att tillhandahålla och underhålla testmiljöer och förkortar testcykeltiderna, vilket gör att integrationstestning kan ske tidigare i livscykeln.

Kontinuerlig release och distribution

Dessa tekniker för med sig en kärnpraxis: kontinuerlig frigivning och distribution. Detta säkerställs av en kontinuerlig pipeline som automatiserar nyckelprocesser. Det minskar manuella steg, resursväntetider och omarbetning genom att möjliggöra driftsättning med en knapptryckning, vilket resulterar i fler releaser, färre fel och fullständig transparens.

Automation spelar en nyckelroll för att säkerställa stabil och pålitlig programvaruversion. En av de största utmaningarna är att ta manuella processer som build, regression, driftsättning och skapande av infrastruktur och automatisera dem. Detta kräver versionskontroll av källkoden; scenarier för testning och driftsättning; infrastruktur och applikationskonfigurationsdata; och de bibliotek och paket som programmet är beroende av. En annan viktig faktor är möjligheten att fråga tillståndet för alla miljöer.

Kontinuerlig övervakning

Kontinuerlig övervakning tillhandahåller rapportering i företagsklass som hjälper utvecklingsteam att förstå tillgängligheten och prestandan för applikationer i produktionsmiljöer innan de distribueras till produktion. Tidig feedback från kontinuerlig övervakning är avgörande för att minska kostnaderna för fel och styra projekt i rätt riktning. Denna praxis inkluderar ofta övervakningsverktyg som vanligtvis avslöjar statistik relaterade till applikationsprestanda.

Ständig feedback och optimering

Kontinuerlig feedback och optimering ger en visuell representation av kundflödet och pekar ut problemområden. Feedback kan inkluderas både före och efter försäljningen för att maximera värdet och säkerställa att ännu fler transaktioner genomförs framgångsrikt. Allt detta ger en omedelbar visualisering av grundorsaken till kundproblem som påverkar deras beteende och affärseffekt.

DevOps-guide för nybörjare

Fördelar med DevOps

DevOps kan hjälpa till att skapa en miljö där utvecklare och verksamheter arbetar som ett team för att uppnå gemensamma mål. En viktig milstolpe i denna process är implementeringen av kontinuerlig integration och kontinuerlig leverans (CI/CD). Dessa tekniker kommer att tillåta team att få mjukvara att marknadsföra snabbare med färre buggar.

Viktiga fördelar med DevOps är:

  • Förutsägbarhet: DevOps erbjuder en betydligt lägre felfrekvens för nya utgåvor.
  • Underhållbarhet: DevOps möjliggör enkel återställning om en ny version misslyckas eller en applikation går ner.
  • Reproducerbarhet: Versionskontroll av en build eller kod låter dig återställa tidigare versioner efter behov.
  • Högre kvalitet: Att ta itu med infrastrukturproblem förbättrar kvaliteten på applikationsutvecklingen.
  • Time to Market: Optimering av mjukvaruleverans minskar tiden till marknaden med 50 %.
  • Riskminskning: Genom att implementera säkerhet i mjukvarans livscykel minskar antalet defekter under hela livscykeln.
  • Kostnadseffektivitet: Strävan efter kostnadseffektivitet i mjukvaruutveckling tilltalar ledande befattningshavare.
  • Stabilitet: Mjukvarusystemet är stabilare, säkrare och ändringar kan granskas.
  • Bryta ner en större kodbas i hanterbara bitar: DevOps är baserat på agila utvecklingsmetoder, vilket gör att du kan bryta ner en stor kodbas i mindre, hanterbara bitar.

DevOps principer

Antagandet av DevOps gav upphov till flera principer som har utvecklats (och fortsätter att utvecklas). De flesta lösningsleverantörer har utvecklat sina egna modifieringar av olika tekniker. Alla dessa principer är baserade på ett holistiskt förhållningssätt till DevOps, och organisationer av alla storlekar kan använda dem.

Utveckla och testa i en produktionsliknande miljö

Tanken är att göra det möjligt för utvecklings- och kvalitetssäkringsteam (QA) att utveckla och testa system som beter sig som produktionssystem så att de kan se hur applikationen beter sig och presterar långt innan den är redo för driftsättning.

Applikationen bör kopplas till produktionssystem så tidigt som möjligt i sin livscykel för att lösa tre stora potentiella problem. För det första låter det dig testa applikationen i en miljö nära den verkliga miljön. För det andra låter det dig testa och validera ansökningsleveransprocesser i förväg. För det tredje tillåter det driftteamet att tidigt i livscykeln testa hur deras miljö kommer att bete sig när applikationer distribueras, vilket gör att de kan skapa en mycket anpassad, applikationscentrerad miljö.

Implementera med repeterbara, pålitliga processer

Denna princip tillåter utvecklings- och driftteam att stödja agila mjukvaruutvecklingsprocesser under hela mjukvarans livscykel. Automatisering är avgörande för att skapa iterativa, pålitliga och repeterbara processer. Därför måste organisationen skapa en leveranspipeline som möjliggör kontinuerlig, automatiserad driftsättning och testning. Frekvent distribution gör det också möjligt för team att testa distributionsprocesser, vilket minskar risken för implementeringsfel under livesläpp.

Övervakning och kvalitetskontroll av arbetet

Organisationer är bra på att övervaka applikationer i produktion eftersom de har verktyg som fångar mätvärden och nyckelprestandaindikatorer (KPI:er) i realtid. Denna princip flyttar övervakning tidigt i livscykeln, vilket säkerställer att automatiserad testning övervakar de funktionella och icke-funktionella egenskaperna hos en applikation tidigt i processen. Närhelst en applikation testas och distribueras måste kvalitetsmått granskas och analyseras. Övervakningsverktyg ger tidig varning om drifts- och kvalitetsproblem som kan uppstå under produktionen. Dessa indikatorer måste samlas in i ett format som är tillgängligt och begripligt för alla intressenter.

Förbättra feedback loopar

Ett av målen med DevOps-processer är att göra det möjligt för organisationer att reagera och göra förändringar snabbare. Vid leverans av programvara kräver detta mål att organisationen får feedback tidigt och sedan snabbt lär sig av varje åtgärd som vidtas. Denna princip kräver att organisationer skapar kommunikationskanaler som tillåter intressenter att få tillgång till och interagera på ett återkopplingssätt. Utveckling kan göras genom att justera dina projektplaner eller prioriteringar. Tillverkning kan agera genom att förbättra produktionsmiljön.

dev

  • Planera: Kanboard, Wekan och andra Trello-alternativ; GitLab, Tuleap, Redmine och andra JIRA-alternativ; Mattermost, Roit.im, IRC och andra Slack-alternativ.
  • Skriva kod: Git, Gerrit, Bugzilla; Jenkins och andra verktyg med öppen källkod för CI/CD
  • Hopsättning: Apache Maven, Gradle, Apache Ant, Packer
  • Tester: JUnit, Gurka, Selen, Apache JMeter

Ops

  • Release, distribution, operations: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
  • Övervakning: Grafana, Prometheus, Nagios, InfluxDB, Fluentd och andra som behandlas i den här guiden

(*Operationsverktygen har numrerats i ordningsföljd av driftteamen, men deras verktyg överlappar livscykelstadierna för release- och distributionsverktygen. För att underlätta läsbarheten har numreringen tagits bort.)

Sammanfattningsvis

DevOps är en allt mer populär metodik som syftar till att föra samman utvecklare och verksamhet som en enhet. Den är unik, skiljer sig från traditionell IT-drift och kompletterar Agile (men är inte lika flexibel).

DevOps-guide för nybörjare

Ta reda på detaljer om hur du får ett eftertraktat yrke från grunden eller Level Up när det gäller kompetens och lön genom att ta betalda onlinekurser från SkillFactory:

fler kurser

användbar

Källa: will.com

Lägg en kommentar