Vad Àr vikten av DevOps, vad innebÀr det för IT-specialister, en beskrivning av metoder, ramverk och verktyg.

Mycket har hÀnt sedan termen DevOps etablerades i IT-vÀrlden. Med tanke pÄ att en stor del av ekosystemet har öppen kÀllkod, Àr det viktigt att omvÀrdera varför detta började och vad det betyder för karriÀrer inom IT.
Vad Àr DevOps
Ăven om det inte finns en enkel definition, anser jag att DevOps Ă€r en teknisk struktur som möjliggör samarbete mellan utvecklingsteam och driftteam för en snabbare distribution av kod i produktionsmiljöer med Ă„terkommande Ă„tgĂ€rder och automatisering. Resterande del av artikeln kommer vi att Ă€gna Ă„t att utforska detta uttalande.
Ordet "DevOps" Àr en sammanslagning av orden "utveckling" (development) och "drift" (operations). DevOps hjÀlper till att öka hastigheten pÄ leveransen av applikationer och tjÀnster. Det gör det möjligt för organisationer att effektivt betjÀna sina kunder och bli mer konkurrenskraftiga pÄ marknaden. Enkelt uttryckt, DevOps Àr en överenskommelse mellan utveckling och IT-drift med mer effektivt samarbete och interaktion.
DevOps föresprÄkar en kultur dÀr samarbetet mellan utvecklingsteam, operatörer och affÀrsteam anses vara en kritisk aspekt. Det handlar inte bara om verktyg, eftersom DevOps i organisationen kontinuerligt gynnar bÄde kunderna. Verktyg Àr en av dess pelare, tillsammans med mÀnniskor och processer. DevOps ökar organisationers förmÄga att leverera högkvalitativa lösningar pÄ kort tid. Dessutom automatiserar DevOps alla processer, frÄn byggande till distribution av applikationen eller produkten.
Diskussionen om DevOps fokuserar pÄ relationerna mellan utvecklare, mÀnniskor som skriver mjukvara för att leva, och operatörer som Àr ansvariga för att stödja denna mjukvara.
Utmaningar för utvecklarteam
Utvecklare brukar entusiastiskt och med vilja implementera nya metoder och teknologier för att lösa organisationers problem. Men de stÀlls ocksÄ inför vissa utmaningar:
- Den konkurrensutsatta marknaden skapar ett stort tryck för att leverera produkter i tid.
- De mÄste ta hand om hanteringen av produktionsredo kod och implementering av nya funktioner.
- Release-cykeln kan vara lÄng, sÄ utvecklingsteamet mÄste göra flera antaganden innan de implementerar applikationer. I ett sÄdant scenario krÀvs en större buffert för att lösa problem som uppstÄr under utplaceringen i produktions- eller testmiljö.
Problem som driftsgruppen stÄr inför
Driftsgrupper har historiskt sett inriktat sig pÄ stabilitet och pÄlitlighet i IT-tjÀnster. DÀrför arbetar driftsgrupper med att söka stabilitet genom att göra Àndringar i resurser, teknik eller metoder. Deras uppgifter inkluderar:
- Hantering av resursallokering i takt med att efterfrÄgan ökar.
- Behandling av Àndringar i design eller instÀllningar som behövs för att anvÀnda i produktionsmiljö.
- Diagnos och lösning av problem relaterade till produktion efter sjÀlvstÀndig utplacering av applikationer.
Hur DevOps löser utvecklings- och driftsproblem
IstÀllet för att rulla ut en stor mÀngd funktioner av applikationen pÄ en gÄng försöker företagen ta reda pÄ om de kan rulla ut ett begrÀnsat antal funktioner för sina kunder genom en serie releaseiterationer. Denna metod har flera fördelar, sÄsom bÀttre programvarukvalitet, snabbare Äterkoppling frÄn kunder osv. Detta ger i sin tur en hög grad av kundnöjdhet. För att uppnÄ dessa mÄl krÀvs det av företagen:
- Minska andelen misslyckade release vid nya utgÄvor
- Ăka frekvensen av utplaceringar
- UppnÄ snabbare genomsnittlig ÄterstÀllningstid vid utgivningen av en ny applikationsversion.
- Minska tiden för att ÄtgÀrda fel
DevOps utför alla dessa uppgifter och hjÀlper till att sÀkerstÀlla en sömlös leverans. Organisationer anvÀnder DevOps för att uppnÄ prestationsnivÄer som för bara nÄgra Är sedan var otÀnkbara. De genomför tiotals, hundratals och till och med tusentals utplaceringar per dag, samtidigt som de sÀkerstÀller vÀrldsklassens tillförlitlighet, stabilitet och sÀkerhet. och deras inverkan pÄ programvaruleverans).
DevOps försöker lösa olika problem som uppstÄr till följd av tillÀmpningen av metodologier frÄn det förflutna, inklusive:
- Isoleringen av arbetet mellan utvecklingsteamen och driftteamen
- Testning och distribution som separata faser, som genomförs efter design och byggande och som krÀver mer tid Àn byggcykler.
- Ăverdriven tidsĂ„tgĂ„ng för testning, distribution och design istĂ€llet för att fokusera pĂ„ skapandet av kĂ€rnverksamhetstjĂ€nster
- Manuell distribution av kod, vilket leder till fel i produktionen
- Skillnader i arbetsplaner mellan utvecklingsgrupper och drift som leder till ytterligare förseningar

MotstÄnd mellan DevOps, Agile och traditionell IT
DevOps diskuteras ofta i samband med andra IT-praktiker, sÀrskilt agil och vattenfalls IT-infrastruktur.
Agile Ă€r en uppsĂ€ttning principer, vĂ€rden och metoder för programvaruproduktion. Till exempel, om du har en idĂ© som du vill omvandla till programvara kan du anvĂ€nda principer och vĂ€rden frĂ„n Agile. Men denna programvara kan bara fungera i en utvecklings- eller testmiljö. Du behöver ett enkelt och sĂ€kert sĂ€tt att snabbt och med hög repeterbarhet flytta programvaran till produktionsmiljö, och vĂ€gen gĂ„r genom DevOps-verktyg och metoder. Agil mjukvaruutvecklingsmetodik fokuserar pĂ„ utvecklingsprocesser, medan DevOps ansvarar för utveckling och distribution â pĂ„ det sĂ€kraste och mest pĂ„litliga sĂ€ttet.
En jÀmförelse mellan den traditionella vattenfallsmodellen och DevOps Àr ett bra sÀtt att förstÄ de fördelar som DevOps ger. I det följande exemplet antas att en applikation ska lanseras om fyra veckor, att utvecklingen Àr 85% fÀrdig, att applikationen kommer att lanseras, och att processen för att köpa servrar för att skicka koden just har pÄbörjats.
Traditionella processer
Processer i DevOps
Efter bestÀllningen av nya servrar arbetar utvecklingsteamet med testning. Driftsgruppen arbetar med den omfattande dokumentation som krÀvs för att driftsÀtta infrastrukturen.
Efter att bestÀllningen av nya servrar har lagts, arbetar utvecklingsteamet och operatörer tillsammans med processerna och dokumenthanteringen för installationen av de nya servrarna. Detta gör det möjligt att bÀttre förstÄ kraven pÄ infrastrukturen.
Informationen om ÄterhÀmtning efter driftstopp, redundans, placering av datacenter och krav pÄ lagring Àr förvanskad, eftersom det saknas insikter frÄn utvecklingsteamet som har djupgÄende kunskaper inom omrÄdet.
Detaljerad information om att övervinna driftstopp, redundans, katastrofÄterstÀllning, placering av datacenter och krav pÄ lagring Àr kÀnd och korrekt tack vare bidraget frÄn utvecklingsteamet.
Operativa gruppen har ingen insikt i framstegen frÄn utvecklingsteamet. De utarbetar ocksÄ en övervakningsplan baserad pÄ sina egna uppfattningar.
Operativa gruppen Àr helt informerad om de framsteg som uppnÄtts av utvecklingsteamet. De samarbetar ocksÄ med utvecklingsteamet och utvecklar tillsammans en övervakningsplan som möter IT- och affÀrsbehov. De anvÀnder Àven prestandaövervakningsverktyg (APM).
Belastningstestet som genomförs före lanseringen av applikationen orsakar ett fel i applikationen, vilket fördröjer dess lansering.
Belastningstestet som genomförs före lanseringen av applikationen leder till en prestandaförsÀmring. Utvecklingsteamet ÄtgÀrdar snabbt flaskhalsarna, och applikationen lanseras i tid.
DevOps livscykel
DevOps innebÀr att man följer vissa allmÀnt vedertagna metoder.
Kontinuerlig planering
Kontinuerlig planering baseras pÄ principer för smidighet, för att börja i liten skala och identifiera resurser och resultat som Àr nödvÀndiga för att verifiera affÀrsvÀrdet eller visionen, kontinuerlig anpassning, mÀtning av framsteg, förstÄelse av kundbehov, förÀndring av kurs vid behov med hÀnsyn till smidighet, samt uppdatering av affÀrsplanen.
Samarbetsutveckling
Processen för samutveckling gör att företag, utvecklarteam och testteam, som Àr fördelade över olika tidszoner, kontinuerligt kan leverera högkvalitativ programvara. Detta inkluderar plattformsoberoende utveckling, stöd för programmering pÄ olika sprÄk, skapande av anvÀndarberÀttelser, idéutveckling och livscykelhantering. Samutveckling omfattar processer och metoder för kontinuerlig integration, vilket frÀmjar frekvent kodintegration och automatisk byggnation. Genom att ofta införa kod i applikationen upptÀcks integrationsproblem i ett tidigt skede av livscykeln (nÀr de Àr lÀttare att ÄtgÀrda), och de totala integrationsinsatserna minskas tack vare kontinuerlig Äterkoppling, dÄ projektet visar stÀndig och tydlig framsteg.
Kontinuerlig testning
Kontinuerlig testning minskar kostnaderna för testning genom att hjÀlpa utvecklarteam att balansera mellan hastighet och kvalitet. Det eliminerar ocksÄ flaskhalsar i testningen genom virtualisering av tjÀnster och förenklar skapandet av virtualiserade testmiljöer som enkelt kan delas, distribueras och uppdateras i takt med att systemen förÀndras. Dessa möjligheter minskar kostnaderna för att initiera och stödja testmiljöer och förkortar testcykeltiden, vilket möjliggör genomförande av integrationstestning i ett tidigt skede av livscykeln.
Kontinuerlig release och distribution
Dessa metoder introducerar en av grundprinciperna: kontinuerlig release och distribution. Detta sÀkerstÀller en kontinuerlig pipeline som automatiserar nyckelprocesser. Den minskar antalet manuella operationer, vÀntetider för resurser och omarbetningar, vilket möjliggör distribution med en knapptryckning, vilket ger fler releaser, minskar antalet fel och ger fullstÀndig transparens.
Automatisering spelar en avgörande roll för att sÀkerstÀlla stabil och pÄlitlig programvaruleverans. En av de viktigaste uppgifterna Àr att ta hand om manuella processer, sÄsom byggnation, regression, distribution och skapande av infrastruktur, och automatisera dem. Detta krÀver versionskontroll av kÀllkod; tester och distributionsskript; information om infrastruktur och applikationskonfigurationer; samt bibliotek och paket som applikationen Àr beroende av. En annan viktig faktor Àr möjligheten att begÀra status pÄ alla miljöer.
Kontinuerlig övervakning
Kontinuerlig övervakning sÀkerstÀller att rapporter pÄ företagsnivÄ genereras, vilket hjÀlper utvecklarteam att förstÄ tillgÀngligheten och prestandan hos applikationer i produktionsmiljö innan de distribueras i produktion. Den tidiga feedback som kontinuerlig övervakning ger À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 mÀtvÀrden relaterade till applikationsprestanda.
Kontinuerlig feedback och optimering
Kontinuerlig feedback och optimering ger en visuell representation av kundflödet och exakt definierar problemomrÄden. Feedback kan involveras sÄvÀl i för-sÀljnings- som efter-produktionsskeden för att maximera vÀrdet och sÀkerstÀlla framgÄngen för Ànnu fler transaktioner. Allt detta skapar en omedelbar visualisering av grundorsaken till kundproblem som pÄverkar deras beteende och inverkan pÄ affÀrerna.

Fördelar med DevOps
DevOps kan bidra till att skapa en miljö dÀr utvecklare och driftspersonal arbetar som ett team för att uppnÄ gemensamma mÄl. En viktig milstolpe i denna process Àr införandet av kontinuerlig integration och kontinuerlig leverans (CI/CD). Dessa metoder möjliggör för team att snabbare fÄ ut programvara pÄ marknaden med fÀrre fel.
De viktigaste fördelarna med DevOps Àr:
- FörutsÀgbarhet: DevOps erbjuder en betydligt lÀgre frekvens av fel vid lansering av nya versioner.
- UnderhÄllbarhet: DevOps gör det enkelt att ÄterstÀlla vid fel i en ny version eller om en applikation slutar fungera.
- Reproducerbarhet: Versionskontrollsystem för byggen eller kod gör det möjligt att ÄterstÀlla tidigare versioner vid behov.
- Högre kvalitet: Problemlösning av infrastrukturen förbÀttrar kvaliteten pÄ apputvecklingen.
- Tid till marknad: Optimering av mjukvaruleverans minskar tiden till marknad med 50%.
- Riskminimering: SÀkerstÀllande av sÀkerhet genom mjukvaruutvecklingscykeln minskar antalet defekter genom hela livscykeln.
- Kostnadseffektivitet: StrÀvan efter kostnadseffektivitet i mjukvaruutvecklingen tilltalar ledningen.
- Stabilitet: Det mjukvarusystemet Àr mer stabilt, sÀkert och förÀndringar kan verifieras.
- Större kodbaser delas upp i hanterbara delar: DevOps bygger pÄ flexibla utvecklingsmetoder som gör det möjligt att dela upp stora kodbaser i mindre och hanterbara delar.
DevOps-principer
Antagandet av DevOps har lett till flera principer som har utvecklats (och fortsÀtter att utvecklas). De flesta leverantörer av lösningar har utvecklat sina egna modifieringar av olika metoder. Alla dessa principer grundar sig pÄ ett holistiskt tillvÀgagÄngssÀtt för DevOps, och organisationer av alla storlekar kan tillÀmpa dem.
Utveckla och testa i en miljö som liknar produktionsmiljön
KÀrnan ligger i att lÄta utvecklingsteam och kvalitetssÀkringsexperter (QA) utveckla och testa system som beter sig som produktionssystem, sÄ att de kan se hur applikationen beter sig och fungerar lÄngt innan den Àr redo för distribution.
Applikationen mÄste kopplas till produktionssystem sÄ tidigt som möjligt under livscykeln för att lösa tre huvudsakliga potentiella problem. För det första gör det det möjligt att testa applikationen i en miljö som Àr nÀra den verkliga. För det andra möjliggör det tidig testning och validering av applikationens leveransprocesser. För det tredje gör det att driftteamet kan kontrollera tidigt i livscykeln hur deras miljö kommer att bete sig nÀr applikationerna distribueras, vilket gör att de kan skapa en skrÀddarsydd, applikationsorienterad miljö.
Distribuering med reproducerbara, tillförlitliga processer
Denna princip gör det möjligt för utvecklings- och driftteam att upprÀtthÄlla flexibla mjukvaruutvecklingsprocesser genom hela livscykeln. Automatisering Àr avgörande för att skapa iterativa, tillförlitliga och reproducerbara processer. DÀrför mÄste organisationen skapa en leveranspipeline som garanterar kontinuerlig automatiserad distribution och testning. Frekvent distribution gör det ocksÄ möjligt för team att testa distributionsprocesserna, vilket minskar risken för distributionsfel under verkliga lanseringar.
Ăvervakning och kvalitetskontroll
Organisationer Ă€r bra pĂ„ att övervaka applikationer i produktion eftersom de har verktyg som fĂ„ngar mĂ€tvĂ€rden och nyckelprestandaindikatorer (KPI) i realtid. Denna princip flyttar övervakningen till de tidiga stadierna av livscykeln och sĂ€kerstĂ€ller att automatiserad testning spĂ„rar funktionella och icke-funktionella attribut hos applikationen i de tidiga stadierna av processen. Varje gĂ„ng applikationen testas och distribueras mĂ„ste kvalitetsmĂ„tten granskas och analyseras. Ăvervakningsverktyg erbjuder tidig varning om problem relaterade till drift och kvalitet som kan uppstĂ„ i produktionsprocessen. Dessa mĂ„tt bör samlas in i ett format som Ă€r tillgĂ„ngligt och begripligt för alla intressenter.
FörbÀttring av Äterkopplingscykler
Ett av mÄlen med DevOps-processerna Àr att möjliggöra för organisationer att snabbare reagera och göra förÀndringar. Vid mjukvaruleverans 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 gör det möjligt för intressenter att fÄ tillgÄng och interagera med feedback-principen. Utvecklingen kan göras genom att justera sina projektplaner eller prioriteter. Produktion kan agera genom att förbÀttra produktionsmiljön.
Dev
- Planering: Kanboard, Wekan och andra alternativ till Trello; GitLab, Tuleap, Redmine och andra alternativ till JIRA; Mattermost, Roit.im, IRC och andra alternativ till Slack.
- Kodning: Git, Gerrit, Bugzilla; Jenkins och andra öppen kÀllkod-verktyg för CI/CD
- Byggande: Apache Maven, Gradle, Apache Ant, Packer
- Tester: JUnit, Cucumber, Selenium, Apache JMeter
Ops
- UtgÄvan, distribution, operationer: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
- Ăvervakning: Grafana, Prometheus, Nagios, InfluxDB, Fluentd, och andra som tĂ€cks i den hĂ€r guiden.
(* Verktyg för operationer har numrerats i den ordning de anvÀnds av operativa team, men deras verktyg överlappar med livscykelverktygen för release och distribution. För lÀsbarhet har numreringen tagits bort.)
Avslutningsvis
DevOps Àr en alltmer populÀr metodik vars mÄl Àr att förena utvecklare och operatörer i ett enhetligt system. Den Àr unik, skiljer sig frÄn traditionella IT-operationer och kompletterar Agile (men Àr inte lika flexibel).

LÀr dig mer om hur du kan skaffa en eftertraktad yrkesroll frÄn grunden eller Level Up dina fÀrdigheter och din lön genom att ta betalda onlinekurser frÄn SkillFactory:
- (12 mÄnader)
fler kurser
- (12 veckor)
- (12 mÄnader)
- (9 mÄnader)
- (9 mÄnader)
Nyttigt
KĂ€lla: habr.com
