DevOps-guide for begyndere

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

DevOps-guide for begyndere

Der er sket meget, siden udtrykket DevOps tog fat i it-verdenen. Med meget af økosystemet open source er det vigtigt at genoverveje, hvorfor det startede, og hvad det betyder for en karriere inden for IT.

Hvad er DevOps

Selvom der ikke er nogen enkelt definition, mener jeg, at DevOps er en teknologiramme, der gør det muligt for samarbejde mellem udviklings- og driftsteams at implementere kode hurtigere i produktionsmiljøer med evnen til at iterere og automatisere. Vi vil bruge resten af ​​denne artikel på at pakke denne påstand ud.

Ordet "DevOps" er en kombination af ordene "udvikling" og "drift". DevOps hjælper med at øge leveringshastigheden af ​​applikationer og tjenester. Dette giver organisationer mulighed for effektivt at betjene deres kunder og blive mere konkurrencedygtige på markedet. Kort sagt er DevOps tilpasningen mellem udvikling og it-drift med mere effektiv kommunikation og samarbejde.

DevOps involverer en kultur, hvor samarbejde mellem udviklings-, drift- og forretningsteams betragtes som kritisk. Det handler ikke kun om værktøjer, da DevOps i en organisation også løbende kommer kunderne til gode. Værktøjer er en af ​​dens søjler sammen med mennesker og processer. DevOps øger organisationers evne til at levere løsninger af høj kvalitet på kortest mulig tid. DevOps automatiserer også alle processer, fra build til implementering, applikation eller produkt.

DevOps-diskussionen fokuserer på forholdet mellem udviklere, de mennesker, der skriver software til deres levebrød, og de operatører, der er ansvarlige for at vedligeholde denne software.

Udfordringer for udviklingsteamet

Udviklere har en tendens til at være entusiastiske og ivrige efter at implementere nye tilgange og teknologier til at løse organisatoriske problemer. Men de står også over for visse problemer:

  • Det konkurrenceprægede marked skaber et stort pres for at levere produktet til tiden.
  • De skal sørge for at administrere produktionsklar kode og introducere nye funktioner.
  • Udgivelsescyklussen kan være lang, så udviklingsteamet er nødt til at gøre flere antagelser, før de implementerer applikationer. I dette scenarie kræves der mere tid til at løse problemer, der opstår under udrulning til et produktions- eller testmiljø.

Udfordringer, som driftsteamet står over for

Driftsteams har historisk set fokuseret på stabiliteten og pålideligheden af ​​it-tjenester. Det er derfor, driftsteams søger stabilitet gennem ændringer i ressourcer, teknologier eller tilgange. Deres opgaver omfatter:

  • Administrer ressourceallokering, efterhånden som efterspørgslen stiger.
  • Håndter design- eller tilpasningsændringer, der kræves til brug i et produktionsmiljø.
  • Diagnosticer og løs produktionsproblemer efter selv-implementering af applikationer.

Hvordan DevOps løser udviklings- og driftsproblemer

I stedet for at udrulle et stort antal appfunktioner på én gang, forsøger virksomheder at se, om de kan udrulle et lille antal funktioner til deres kunder gennem en række udgivelsesgentagelser. Denne tilgang har en række fordele, såsom bedre softwarekvalitet, hurtigere kundefeedback osv. Dette sikrer igen høj kundetilfredshed. For at nå disse mål skal virksomhederne:

  • Reducer fejlfrekvensen, når du udgiver nye udgivelser
  • Øg implementeringsfrekvensen
  • Opnå en hurtigere gennemsnitlig tid til genopretning i tilfælde af en ny applikationsudgivelse.
  • Reducer tiden til rettelser

DevOps udfører alle disse opgaver og hjælper med at sikre uafbrudt levering. Organisationer bruger DevOps til at opnå produktivitetsniveauer, som var utænkelige for blot et par år siden. De udfører titusinder, hundreder og endda tusindvis af implementeringer om dagen, mens de leverer pålidelighed, stabilitet og sikkerhed i verdensklasse. (Læs mere om partistørrelser og deres indvirkning på softwarelevering).

DevOps forsøger at løse forskellige problemer som følge af tidligere metoder, herunder:

  • Isolering af arbejde mellem udviklings- og driftsteams
  • Test og implementering er separate faser, der opstår efter design og opbygning og kræver mere tid end byggecyklusser.
  • Overdreven tid brugt på at teste, implementere og designe i stedet for at fokusere på at opbygge kerneforretningstjenester
  • Manuel kodeimplementering, der fører til fejl i produktionen
  • Forskelle i udviklings- og driftsteams tidsplaner forårsager yderligere forsinkelser

DevOps-guide for begyndere

Konfrontation mellem DevOps, Agile og traditionel IT

DevOps diskuteres ofte i forhold til anden it-praksis, især Agile og Waterfall IT.

Agile er et sæt principper, værdier og praksisser for softwareproduktion. Så hvis du for eksempel har en idé, som du vil transformere til software, kan du bruge Agile principper og værdier. Men denne software kan kun køre i et udviklings- eller testmiljø. Du har brug for en enkel, sikker måde at flytte din software i produktion hurtigt og gentagne gange, og vejen er gennem DevOps-værktøjer og -teknikker. Agile softwareudvikling fokuserer på udviklingsprocesser, og DevOps er ansvarlig for udvikling og implementering på den sikreste og mest pålidelige måde.

At sammenligne den traditionelle vandfaldsmodel med DevOps er en god måde at forstå de fordele, som DevOps bringer. Det følgende eksempel antager, at applikationen vil være live om fire uger, udviklingen er 85 % fuldført, applikationen vil være live, og processen med at købe servere til at sende koden er lige begyndt.

Traditionelle processer
Processer i DevOps

Efter at have afgivet en ordre på nye servere arbejder udviklingsteamet på at teste. Taskforcen arbejder på den omfattende dokumentation, der kræves af virksomheder for at implementere infrastruktur.
Når en ordre på nye servere er afgivet, arbejder udviklings- og driftsteamene sammen om processerne og papirarbejdet for at installere de nye servere. Dette giver dig mulighed for bedre at forstå dine infrastrukturkrav.

Oplysninger om failover, redundans, datacenterplaceringer og lagerkrav er forkert repræsenteret, fordi der ikke er input fra et udviklingsteam, der har dyb domæneviden.
Detaljer om failover, redundans, disaster recovery, datacenterplaceringer og lagerkrav er kendte og korrekte på grund af input fra udviklingsteamet.

Driftsteamet har ingen idé om udviklingsteamets fremskridt. Hun udvikler også en overvågningsplan baseret på hendes egne ideer.

Driftsteamet er fuldt ud klar over udviklingsteamets fremskridt. Hun interagerer også med udviklingsteamet, og de arbejder sammen om at udvikle en overvågningsplan, der opfylder IT- og forretningsbehov. De bruger også applikationsydelsesovervågningsværktøjer (APM).

En belastningstest, der udføres, før en applikation starter, får applikationen til at gå ned, hvilket forsinker lanceringen.
En belastningstest udført før kørsel af en applikation resulterer i dårlig ydeevne. Udviklingsteamet løser hurtigt flaskehalse, og applikationen lanceres til tiden.

DevOps livscyklus

DevOps indebærer vedtagelse af visse almindeligt accepterede praksisser.

Løbende planlægning

Kontinuerlig planlægning er afhængig af lean-principper for at starte i det små ved at identificere de ressourcer og output, der er nødvendige for at teste værdien af ​​virksomheden eller visionen, løbende tilpasse, måle fremskridt, lære af kundernes behov, ændre retning efter behov for at imødekomme smidighed og genopfinde forretningsplanen.

Fælles udvikling

Den kollaborative udviklingsproces gør det muligt for virksomheder, udviklingsteams og testhold spredt på tværs af forskellige tidszoner kontinuerligt at levere kvalitetssoftware. Dette inkluderer udvikling af flere platforme, programmeringsstøtte på tværs af sprog, oprettelse af brugerhistorier, udvikling af idéer og livscyklusstyring. Samarbejdsudvikling omfatter processen og praksis med kontinuerlig integration, som fremmer hyppig kodeintegration og automatiserede builds. Ved at implementere kode hyppigt til en applikation, identificeres integrationsproblemer tidligt i livscyklussen (når de er nemmere at rette), og den samlede integrationsindsats reduceres gennem løbende feedback, da projektet viser kontinuerlige og synlige fremskridt.

Løbende test

Kontinuerlig test reducerer omkostningerne til test ved at hjælpe udviklingsteams med at balancere hastighed med kvalitet. Det eliminerer også testflaskehalse gennem servicevirtualisering og gør det nemt at skabe virtualiserede testmiljøer, der nemt kan deles, implementeres og opdateres, efterhånden som systemerne ændres. Disse egenskaber reducerer omkostningerne ved at klargøre og vedligeholde testmiljøer og forkorter testcyklustider, hvilket tillader integrationstest at finde sted tidligere i livscyklussen.

Kontinuerlig frigivelse og implementering

Disse teknikker bringer en kernepraksis med sig: kontinuerlig frigivelse og implementering. Dette sikres af en kontinuerlig pipeline, der automatiserer nøgleprocesser. Det reducerer manuelle trin, ressourceventetider og omarbejde ved at aktivere implementering med et tryk på en knap, hvilket resulterer i flere udgivelser, færre fejl og fuldstændig gennemsigtighed.

Automatisering spiller en nøglerolle i at sikre stabil og pålidelig softwareudgivelse. En af de største udfordringer er at tage manuelle processer som build, regression, implementering og infrastrukturoprettelse og automatisere dem. Dette kræver kildekodeversionskontrol; test- og implementeringsscenarier; infrastruktur og applikationskonfigurationsdata; og de biblioteker og pakker, som applikationen afhænger af. En anden vigtig faktor er evnen til at forespørge om tilstanden i alle miljøer.

Kontinuerlig overvågning

Kontinuerlig overvågning giver rapportering i virksomhedskvalitet, der hjælper udviklingsteams med at forstå tilgængeligheden og ydeevnen af ​​applikationer i produktionsmiljøer, før de implementeres til produktion. Tidlig feedback fra løbende overvågning er afgørende for at reducere omkostningerne ved fejl og styre projekter i den rigtige retning. Denne praksis inkluderer ofte overvågningsværktøjer, der typisk afslører målinger relateret til applikationsydelse.

Konstant feedback og optimering

Kontinuerlig feedback og optimering giver en visuel repræsentation af kundeflow og udpeger problemområder. Feedback kan inkluderes i både før- og eftersalgsstadier for at maksimere værdien og sikre, at endnu flere transaktioner gennemføres med succes. Alt dette giver øjeblikkelig visualisering af årsagen til kundernes problemer, der påvirker deres adfærd og forretningspåvirkning.

DevOps-guide for begyndere

Fordele ved DevOps

DevOps kan hjælpe med at skabe et miljø, hvor udviklere og drifter arbejder som et team for at nå fælles mål. En vigtig milepæl i denne proces er implementeringen af ​​kontinuerlig integration og kontinuerlig levering (CI/CD). Disse teknikker vil give teams mulighed for at få software på markedet hurtigere med færre fejl.

Vigtige fordele ved DevOps er:

  • Forudsigelighed: DevOps tilbyder en markant lavere fejlrate for nye udgivelser.
  • Vedligeholdelse: DevOps giver mulighed for nem gendannelse, hvis en ny udgivelse fejler, eller en applikation går ned.
  • Reproducerbarhed: Versionskontrol af en build eller kode giver dig mulighed for at gendanne tidligere versioner efter behov.
  • Højere kvalitet: Løsning af infrastrukturproblemer forbedrer kvaliteten af ​​applikationsudvikling.
  • Time to Market: Optimering af softwarelevering reducerer time to market med 50 %.
  • Risikoreduktion: Implementering af sikkerhed i softwarens livscyklus reducerer antallet af defekter gennem hele livscyklussen.
  • Omkostningseffektivitet: Forfølgelsen af ​​omkostningseffektivitet i softwareudvikling appellerer til den øverste ledelse.
  • Stabilitet: Softwaresystemet er mere stabilt, sikkert, og ændringer kan revideres.
  • Nedbrydning af en større kodebase i håndterbare stykker: DevOps er baseret på agile udviklingsmetoder, som gør det muligt at nedbryde en stor kodebase i mindre, håndterbare stykker.

DevOps principper

Vedtagelsen af ​​DevOps gav anledning til flere principper, der har udviklet sig (og fortsætter med at udvikle sig). De fleste løsningsudbydere har udviklet deres egne modifikationer af forskellige teknikker. Alle disse principper er baseret på en holistisk tilgang til DevOps, og organisationer af enhver størrelse kan bruge dem.

Udvikle og test i et produktionslignende miljø

Ideen er at gøre det muligt for udviklings- og kvalitetssikringshold (QA) at udvikle og teste systemer, der opfører sig som produktionssystemer, så de kan se, hvordan applikationen opfører sig og yder længe før den er klar til implementering.

Applikationen bør kobles til produktionssystemer så tidligt som muligt i sin livscyklus for at løse tre store potentielle problemer. For det første giver det dig mulighed for at teste applikationen i et miljø tæt på det virkelige miljø. For det andet giver det dig mulighed for at teste og validere ansøgningsleveringsprocesser på forhånd. For det tredje giver det driftsteamet mulighed for tidligt i livscyklussen at teste, hvordan deres miljø vil opføre sig, når applikationer implementeres, hvilket giver dem mulighed for at skabe et meget tilpasset, applikationscentreret miljø.

Implementer med gentagelige, pålidelige processer

Dette princip gør det muligt for udviklings- og driftsteams at understøtte agile softwareudviklingsprocesser gennem hele softwarens livscyklus. Automatisering er afgørende for at skabe iterative, pålidelige og gentagelige processer. Derfor skal organisationen skabe en leveringspipeline, der muliggør kontinuerlig, automatiseret implementering og test. Hyppig implementering giver også teams mulighed for at teste implementeringsprocesser og reducerer derved risikoen for implementeringsfejl under live-udgivelser.

Overvågning og kontrol af kvaliteten af ​​arbejdet

Organisationer er gode til at overvåge applikationer i produktionen, fordi de har værktøjer, der fanger metrics og key performance indicators (KPI'er) i realtid. Dette princip flytter overvågning tidligt i livscyklussen og sikrer, at automatiseret test overvåger en applikations funktionelle og ikke-funktionelle egenskaber tidligt i processen. Når en applikation testes og implementeres, skal kvalitetsmålinger undersøges og analyseres. Overvågningsværktøjer giver tidlig advarsel om drifts- og kvalitetsproblemer, der kan opstå under produktionen. Disse indikatorer skal indsamles i et format, der er tilgængeligt og forståeligt for alle interessenter.

Forbedring af feedback loops

Et af målene med DevOps-processer er at gøre det muligt for organisationer at reagere og foretage ændringer hurtigere. Inden for softwarelevering kræver dette mål, at organisationen modtager feedback tidligt og derefter hurtigt lærer af hver handling, der tages. Dette princip kræver, at organisationer skaber kommunikationskanaler, der tillader interessenter at få adgang til og interagere på en feedback-måde. Udvikling kan ske ved at justere dine projektplaner eller prioriteringer. Fremstilling kan handle ved at forbedre produktionsmiljøet.

dev

  • Planlægning: Kanboard, Wekan og andre Trello-alternativer; GitLab, Tuleap, Redmine og andre JIRA-alternativer; Mattermost, Roit.im, IRC og andre Slack-alternativer.
  • Skrive kode: Git, Gerrit, Bugzilla; Jenkins og andre open source-værktøjer til CI/CD
  • Montering: Apache Maven, Gradle, Apache Ant, Packer
  • test: JUnit, Agurk, Selen, Apache JMeter

Ops

  • Frigivelse, 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

(*Operationsværktøjer er blevet nummereret i rækkefølge af brug af driftsteams, men deres værktøj overlapper livscyklusstadierne for udgivelses- og implementeringsværktøjerne. For at lette læsbarheden er nummereringen blevet fjernet).

Afslutningsvis

DevOps er en stadig mere populær metode, der har til formål at bringe udviklere og operationer sammen som én enhed. Det er unikt, forskelligt fra traditionel IT-drift og supplerer Agile (men er ikke så fleksibelt).

DevOps-guide for begyndere

Find ud af detaljerne om, hvordan du får et efterspurgt erhverv fra bunden eller Level Up med hensyn til færdigheder og løn ved at gennemføre SkillFactory betalte onlinekurser:

flere kurser

nyttig

Kilde: www.habr.com

Tilføj en kommentar