Hvad er vigtigheden af DevOps, hvad betyder det for IT-specialister, beskrivelse af metoder, rammer og værktøjer.

Der er sket meget, siden termen DevOps blev etableret i IT-verdenen. Da en stor del af økosystemet er open source, er det vigtigt at revurdere, hvorfor det startede, og hvad det betyder for karrieren i IT.
Hvad er DevOps
Selvom der ikke findes en enkelt definition, mener jeg, at DevOps er en teknologisk struktur, der sikrer samarbejde mellem udviklingsteams og driftsteams for hurtigere implementering af kode i produktionsmiljøer med mulighed for gentagelse og automatisering. Resten af artiklen vil vi bruge på at udforske denne påstand.
Ordet "DevOps" er en sammensmeltning af ordene "udvikling" (development) og "drift" (operations). DevOps hjælper med at øge hastigheden af levering af applikationer og tjenester. Det gør det muligt for organisationer effektivt at betjene deres kunder og blive mere konkurrencedygtige på markedet. Kort sagt er DevOps synkronisering mellem udvikling og IT-drift med mere effektivt samarbejde.
DevOps indebærer en kultur, hvor samarbejdet mellem udviklingsteams, driftsfolk og forretningsteams anses for at være et kritisk aspekt. Det handler ikke kun om værktøjer, da DevOps i organisationen kontinuerligt gavner også kunderne. Værktøjer er én af søjlerne, sammen med mennesker og processer. DevOps øger organisationers evne til at levere høj kvalitetsløsninger på kort tid. Desuden automatiserer DevOps alle processer, fra bygning til implementering af applikationer eller produkter.
Diskussionen om DevOps fokuserer på forholdet mellem udviklere, dem der skriver software til livsforhold, og operatører, der er ansvarlige for at støtte denne software.
Udfordringer for udviklingsteamet
Udviklere er typisk entusiastiske og ivrige efter at implementere nye tilgange og teknologier til at løse organisationers problemer. Dog står de også over for visse udfordringer:
- Det konkurrenceprægede marked skaber stort pres for rettidig levering af produkter.
- De skal sikre sig, at koden er produktionsklar og implementere nye funktioner.
- Udgivelsescirklen kan være lang, så udviklingsteamet skal lave flere antagelser, før de implementerer applikationer. I et sådant scenarie kræves der en større tidsbuffer til at løse problemer, der opstår under udrulning i en produktions- eller testmiljø.
Problemer, som driftsteamet står overfor
Driftsteam har traditionelt fokuseret på stabilitet og pålidelighed af IT-services. Derfor arbejder operationsteams på at finde stabilitet ved at implementere ændringer i ressourcer, teknologier eller tilgange. Deres opgaver inkluderer:
- Håndtering af ressourcefordeling, mens efterspørgslen vokser.
- Behandling af ændringer i design eller indstillinger, der er nødvendige for at implementere i produktionsmiljøet.
- Diagnose og løsning af produktionsproblemer efter selvstændig udrulning af applikationer.
Hvordan DevOps løser udfordringer mellem udvikling og drift
I stedet for at rulle mange applikationsfunktioner ud på én gang, forsøger virksomheder at finde ud af, om de kan udrulle et begrænset antal funktioner til deres kunder via en række iterationsudgivelser. Denne tilgang har en række fordele, såsom bedre softwarekvalitet, hurtigere feedback fra kunderne mv. Dette sikrer i sin tur en høj grad af kundetilfredshed. For at opnå disse mål kræves der:
- At reducere afvisningsprocenten ved udgivelser
- At øge udrulningsfrekvensen
- At opnå hurtigere gennemsnitlig genopretningstid ved nye applikationsudgivelser.
- At reducere tiden til rettelser
DevOps udfører alle disse opgaver og hjælper med at sikre en kontinuerlig levering. Organisationer bruger DevOps til at nå præstationsniveauer, som for få år siden var utænkelige. De gennemfører dusinvis, hundreder og endda tusinder af udrulninger om dagen, samtidig med at de sikrer pålidelighed, stabilitet og verdensklasse sikkerhed. og deres indvirkning på softwareleverance).
DevOps forsøger at løse forskellige problemer, der opstår som følge af anvendelse af tidligere metoder, herunder:
- Isoleringen af arbejdet mellem udviklings- og driftsgrupper
- Test og implementering som separate faser, der udføres efter design og bygning, samt kræver mere tid end byggefaserne.
- Overdreven tidsforbrug på test, implementering og design i stedet for fokus på at skabe kerneforretningsydelser
- Manuel implementering af kode, hvilket fører til fejl i produktionen
- Forskelle i arbejdstidsplaner mellem udviklings- og driftsgrupper, hvilket fører til yderligere forsinkelser

Modstanden mellem DevOps, Agile og traditionel IT
DevOps diskuteres ofte i forbindelse med andre IT-praksisser, især Agile og vandfalds-IT-infrastruktur.
Agile er et sæt principper, værdier og metoder til softwareproduktion. For eksempel, hvis du har en idé, du ønsker at transformere til software, kan du anvende Agile-principperne og værdierne. Men denne software kan kun fungere i udviklings- eller testmiljøer. Du har brug for en enkel og sikker metode til hurtigt at overføre software til produktionsmiljøet med høj gentagelsesevne, og vejen går gennem DevOps-værktøjer og metoder. Agile udviklingsmetodologi fokuserer på udviklingsprocesser, mens DevOps står for udvikling og implementering – på den sikreste og mest pålidelige måde.
Sammenligning af den traditionelle vandfaldsmodel med DevOps er en god måde at forstå de fordele, som DevOps medfører. I det følgende eksempel antages det, at applikationen vil blive lanceret om fire uger, udviklingen er afsluttet med 85 %, applikationen vil blive lanceret, og processen med at anskaffe servere til at sende koden er kun lige begyndt.
Traditionelle processer
Processer i DevOps
Efter bestilling af nye servere arbejder udviklingsteamet med testning. Driftsgruppen arbejder på den omfattende dokumentation, der er nødvendig for at implementere infrastrukturen i virksomheder.
Efter bestilling af nye servere arbejder udvikler- og operatorteams sammen om processer og dokumentation til installation af de nye servere. Dette giver en bedre forståelse af infrastrukturkravene.
Information om disaster recovery, redundans, placering af datacentre og lagerkrav er forvrænget, da der mangler input fra udviklerteamet, som har dybdegående viden om anvendelsen.
Detaljer om fejltolerance, redundans, nødgendannelse, placering af datacentre og lagerkrav er kendt og korrekte takket være bidraget fra udviklerteamet.
Operationsgruppen har ingen indsigt i fremskridtene fra udviklerteamet. De udvikler også en overvågningsplan baseret på egne antagelser.
Operationsgruppen er fuldt informeret om fremskridtene gjort af udviklerteamet. De samarbejder også med udviklerteamet og udvikler i fællesskab en overvågningsplan, der opfylder IT- og forretningsbehovene. De anvender også værktøjer til overvågning af applikationsydelse (APM).
En stresstest, der udføres inden lanceringen af applikationen, resulterer i en nedbrudt applikation, hvilket forsinker lanceringen.
En stresstest, der udføres inden lanceringen af applikationen, fører til nedsat ydeevne. Udviklerteamet identificerer hurtigt flaskehalse, og applikationen lanceres til tiden.
DevOps livscykel
DevOps indebærer accept af bestemte anerkendte praksisser.
Løbende planlægning
Løbende planlægning bygger på principper om slankhed for at starte småt, identificere de ressourcer og resultater, der er nødvendige for at teste forretningsværdi eller vision, konstant tilpasning, måling af fremskridt, forståelse af kundernes behov, ændre retning efter behov i forhold til smidighed samt opdatering af forretningsplanen.
Samarbejdende udvikling
Processen for samarbejdsudvikling giver virksomheder, udviklingsteams og testteams, der er fordelt over forskellige tidszoner, mulighed for kontinuerligt at levere kvalitetssoftware. Dette inkluderer multiplatforms udvikling, understøttelse af programmering på forskellige sprog, oprettelse af brugerhistorier, idéudvikling og livscyklusstyring. Samarbejdsudvikling omfatter processen og praksis for kontinuerlig integration, hvilket fremmer hyppig integration af kode og automatisk bygning. Ved hyppig implementering af kode i applikationen identificeres integrationsproblemer tidligt i livscyklussen (når de er lettere at rette), og de samlede integrationsindsatser reduceres takket være kontinuerlig feedback, da projektet demonstrerer kontinuerlig og synlig fremdrift.
Kontinuerlig testning
Kontinuerlig testning reducerer omkostningerne ved testning ved at hjælpe udviklingsteams med at balancere mellem hastighed og kvalitet. Det eliminerer også flaskehalse i testningen ved hjælp af virtualisering af tjenester og forenkler oprettelsen af virtualiserede testmiljøer, som nemt kan deles, implementeres og opdateres, når systemerne ændrer sig. Disse muligheder reducerer omkostningerne ved initiering og vedligeholdelse af testmiljøer og forkorter testcyklustiden, hvilket gør det muligt at udføre integrationstest på tidlige stadier af livscyklussen.
Kontinuerlige udgivelser og implementeringer
Disse metoder bringer en af de grundlæggende praksisser med sig: kontinuerlige udgivelser og implementeringer. Dette skaber en kontinuerlig pipeline, der automatiserer nøgleprocesser. Den reducerer antal manuelle operationer, ventetid på ressourcer og omfanget af omarbejdning, hvilket gør det muligt at implementere med et enkelt tryk på en knap og sikrer flere udgivelser, færre fejl og fuld gennemsigtighed.
Automatisering spiller en central rolle i at sikre en stabil og pålidelig softwareudgivelse. En af de vigtigste opgaver er at tage hånd om manuelle processer som bygning, regression, implementering og oprettelse af infrastruktur og gøre dem automatiserede. Dette kræver versionskontrol af kildekoden; test- og implementeringsscripts; data om infrastruktur og konfiguration af applikationer; samt biblioteker og pakker, som applikationen er afhængig af. En anden vigtig faktor er muligheden for at anmode om status for alle miljøer.
Kontinuerlig overvågning
Kontinuerlig overvågning sikrer generering af corporate-rapporter, der hjælper udviklerteams med at forstå tilgængeligheden og ydeevnen af applikationer i produktionsmiljøet, før de implementeres i produktion. Tidlig feedback, som kontinuerlig overvågning giver, er afgørende for at reducere omkostningerne ved fejl og styre projekter i den rigtige retning. Denne praksis omfatter ofte overvågningsværktøjer, der typisk afslører målinger relateret til applikationsydelse.
Kontinuerlig feedback og optimering
Kontinuerlig feedback og optimering giver en visuel fremstilling af kundestrømmen og præcise identifikationer af problemområder. Feedback kan indsamles både i præ-salg og post-produktionsfaserne for at maksimere værdien og sikre en vellykket afslutning af endnu flere transaktioner. Alt dette muliggør øjeblikkelig visualisering af grundårsagerne til problemer, som kunderne oplever, der påvirker deres adfærd og indflydelse på forretningen.

Fordele ved DevOps
DevOps kan hjælpe med at skabe et miljø, hvor udviklere og operationer arbejder som ét team for at opnå fælles mål. En vigtig milepæl i denne proces er implementeringen af kontinuerlig integration og kontinuerlig levering (CI/CD). Disse metoder vil gøre det muligt for teams at bringe software på markedet hurtigere med færre fejl.
Vigtige fordele ved DevOps inkluderer:
- Forudsigelighed: DevOps tilbyder en betydeligt lavere fejlrate ved udgivelser af nye versioner.
- Vedligeholdelse: DevOps sikrer nem genopretning ved fejl i en ny version eller nedetid i applikationen.
- Reproducerbarhed: Versionskontrolsystemet for bygninger eller kode muliggør genfinding af tidligere versioner efter behov.
- Højere kvalitet: Problemløsning i infrastrukturen forbedrer kvaliteten af applikationsudvikling.
- Tid til marked: Optimering af softwarelevering reducerer tid til markedet med 50%.
- Risikosænkning: Sikkerhed i softwarelivscyklussen mindsker antallet af fejl gennem hele livscyklussen.
- Økonomisk effektivitet: Stræben efter økonomisk effektivitet i softwareudvikling er populært blandt ledelsen.
- Stabilitet: Softwareløsningen er mere stabil, sikker, og ændringer kan verificeres.
- Større kodebase opdeles i håndterbare dele: DevOps er baseret på agile udviklingsmetoder, der muliggør opdeling af en stor kodebase i mindre og mere håndterbare dele.
DevOps-principper
Accept af DevOps har medført flere principper, som har udviklet sig (og fortsat udvikler sig). De fleste udbydere af løsninger har udviklet deres egne variationer af forskellige metoder. Alle disse principper er baseret på en holistisk tilgang til DevOps, og organisationer af enhver størrelse kan anvende dem.
Udvikl og test i et miljø, der ligner produktionsmiljøet
Essensen er at give udviklingsteam og kvalitetssikringsspecialister (QA) mulighed for at udvikle og teste systemer, der fungerer som produktionssystemer, så de kan se, hvordan applikationen opfører sig og fungerer længe før den er klar til implementering.
Applikationen skal tilsluttes produktionssystemer så tidligt som muligt i livscyklussen for at tackle tre hovedpotentielle problemer. For det første giver det mulighed for at teste applikationen i et miljø, der er tættere på den virkelige verden. For det andet muliggør det test og verifikation af applikationsleveringsprocesser tidligt. For det tredje giver det driftsteamet mulighed for tidligt at kontrollere, hvordan deres miljø vil reagere, når applikationer bliver implementeret, hvilket gør det muligt for dem at skabe et skræddersyet, applikationsorienteret miljø.
Implementering med reproducerbare, pålidelige processer
Dette princip gør det muligt for udviklings- og driftsteams at opretholde fleksible softwareudviklingsprocesser gennem hele livscyklussen. Automatisering er afgørende for at skabe iterative, pålidelige og reproducerbare processer. Derfor skal organisationen oprette en leveringspipeline, der sikrer kontinuerlig automatiseret implementering og test. Hyppig implementering giver også teamene mulighed for at teste implementeringsprocesser, hvilket reducerer risikoen for implementeringsfejl under reelle udgivelser.
Overvågning og kvalitetskontrol
Organisationer er dygtige til at overvåge applikationer i produktion, fordi de har værktøjer, der registrerer metrics og nøglepræstationsindikatorer (KPI'er) i realtid. Dette princip flytter overvågning til de tidlige stadier af livscyklussen, hvilket sikrer, at automatiseret test overvåger funktionelle og ikke-funktionelle attributter af applikationen tidligt i processen. Hver gang en applikation testes og implementeres, skal kvalitetsmålinger undersøges og analyseres. Overvågningsværktøjer giver tidlig varsling om problemer relateret til drift og kvalitet, der kan opstå under produktionen. Disse metrics skal indsamles i et format, der er tilgængeligt og forståeligt for alle interessenter.
Forbedring af feedback-cykluser
Et af målene med DevOps-processer er at give organisationer mulighed for at reagere hurtigere og implementere ændringer. Ved softwarelevering kræver dette mål, at organisationen modtager feedback tidligt og derefter hurtigt lærer af hver handling. Dette princip kræver, at organisationer opretter kommunikationskanaler, der giver interessenter adgang til og mulighed for at interagere gennem feedback. Udvikling kan finde sted ved at justere sine projektplaner eller prioriteter. Produktion kan handle ved at forbedre produktionsmiljøet.
Dev
- Planlægning: Kanboard, Wekan og andre alternativer til Trello; GitLab, Tuleap, Redmine og andre alternativer til JIRA; Mattermost, Roit.im, IRC, og andre alternativer til Slack.
- Kodeudvikling: Git, Gerrit, Bugzilla; Jenkins og andre open source værktøjer til CI/CD.
- Bygning: Apache Maven, Gradle, Apache Ant, Packer.
- Tester: JUnit, Cucumber, Selenium, Apache JMeter.
Drift
- Udgivelse, implementering, operationer: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform.
- Overvågning: Grafana, Prometheus, Nagios, InfluxDB, Fluentd, og andre dækket i denne vejledning.
(* Værktøjer til drift er nummereret i rækkefølge af anvendelse af driftsgrupper, men deres værktøjer overlapper med livscyklusfaserne og udgivelses- og implementeringsværktøjer. For læsbarhed er nummereringen fjernet.)
Afslutningsvis
DevOps er en stadig mere populær metodologi, hvis mål er at samle udviklere og operatører i en enhed. Den er unik, adskiller sig fra traditionelle IT-operationer og supplerer Agile (men er ikke lige så fleksibel).

Få detaljer om, hvordan du kan få en eftertragtet profession fra bunden eller level up dine færdigheder og løn ved at tage betalte onlinekurser fra SkillFactory:
- (12 måneder)
yderligere kurser
- (12 uger)
- (12 måneder)
- (9 måneder)
- (9 måneder)
Nyttigt
Kilde: habr.com
