DevOps-veiledning for nybegynnere

Hva er viktigheten av DevOps, hva betyr det for IT-fagfolk, en beskrivelse av metoder, rammeverk og verktøy.

DevOps-veiledning for nybegynnere

Mye har skjedd siden begrepet DevOps tok tak i IT-verdenen. Med mye av økosystemet åpen kildekode, er det viktig å revurdere hvorfor det startet og hva det betyr for en karriere innen IT.

Hva er DevOps

Selv om det ikke er noen enkelt definisjon, tror jeg at DevOps er et teknologirammeverk som gjør det mulig for samarbeid mellom utviklings- og driftsteam å distribuere kode raskere inn i produksjonsmiljøer med muligheten til å iterere og automatisere. Vi bruker resten av denne artikkelen på å pakke ut denne påstanden.

Ordet "DevOps" er en kombinasjon av ordene "utvikling" og "operasjoner". DevOps bidrar til å øke hastigheten på levering av applikasjoner og tjenester. Dette gjør at organisasjoner effektivt kan betjene sine kunder og bli mer konkurransedyktige på markedet. Enkelt sagt, DevOps er justeringen mellom utvikling og IT-drift med mer effektiv kommunikasjon og samarbeid.

DevOps involverer en kultur der samarbeid mellom utviklings-, drift- og forretningsteam anses som kritisk. Det handler ikke bare om verktøy, da DevOps i en organisasjon også kontinuerlig kommer kundene til gode. Verktøy er en av pilarene, sammen med mennesker og prosesser. DevOps øker organisasjoners evne til å levere løsninger av høy kvalitet på kortest mulig tid. DevOps automatiserer også alle prosesser, fra bygg til distribusjon, applikasjon eller produkt.

DevOps-diskusjonen fokuserer på forholdet mellom utviklere, menneskene som skriver programvare for å leve, og operatørene som er ansvarlige for vedlikehold av programvaren.

Utfordringer for utviklingsteamet

Utviklere har en tendens til å være entusiastiske og ivrige etter å implementere nye tilnærminger og teknologier for å løse organisatoriske problemer. Imidlertid står de også overfor visse problemer:

  • Det konkurranseutsatte markedet skaper et stort press for å levere produktet til rett tid.
  • De må ta seg av å administrere produksjonsklar kode og introdusere nye funksjoner.
  • Utgivelsessyklusen kan være lang, så utviklingsteamet må gjøre flere forutsetninger før de implementerer applikasjoner. I dette scenariet kreves det mer tid for å løse problemer som oppstår under distribusjon til et produksjons- eller testmiljø.

Utfordringer som driftsteamet står overfor

Driftsteam har historisk fokusert på stabiliteten og påliteligheten til IT-tjenester. Det er derfor driftsteamene søker stabilitet gjennom endringer i ressurser, teknologier eller tilnærminger. Deres oppgaver inkluderer:

  • Administrer ressursallokering etter hvert som etterspørselen øker.
  • Håndtere design- eller tilpasningsendringer som kreves for bruk i et produksjonsmiljø.
  • Diagnostiser og løs produksjonsproblemer etter selvdistribusjon av applikasjoner.

Hvordan DevOps løser utviklings- og driftsproblemer

I stedet for å rulle ut et stort antall appfunksjoner på en gang, prøver selskaper å se om de kan rulle ut et lite antall funksjoner til kundene sine gjennom en rekke utgivelsesiterasjoner. Denne tilnærmingen har en rekke fordeler, som bedre programvarekvalitet, raskere tilbakemeldinger fra kunder osv. Dette sikrer igjen høy kundetilfredshet. For å nå disse målene må bedrifter:

  • Reduser feilfrekvensen når du slipper nye utgivelser
  • Øk distribusjonsfrekvensen
  • Oppnå en raskere gjennomsnittlig tid til gjenoppretting i tilfelle en ny applikasjonsutgivelse.
  • Reduser tiden for korrigeringer

DevOps utfører alle disse oppgavene og bidrar til å sikre uavbrutt levering. Organisasjoner bruker DevOps for å oppnå produktivitetsnivåer som var utenkelige for bare noen få år siden. De utfører titalls, hundrevis og til og med tusenvis av distribusjoner per dag, samtidig som de leverer pålitelighet, stabilitet og sikkerhet i verdensklasse. (Les mer om partistørrelser og deres innvirkning på programvarelevering).

DevOps prøver å løse ulike problemer som følge av tidligere metoder, inkludert:

  • Isolering av arbeid mellom utviklings- og driftsteam
  • Testing og distribusjon er separate faser som skjer etter design og bygging og krever mer tid enn byggesykluser.
  • Overdreven tid brukt på testing, distribusjon og design i stedet for å fokusere på å bygge kjernevirksomhetstjenester
  • Manuell kodedistribusjon som fører til feil i produksjonen
  • Forskjeller i utviklings- og driftsteamplaner som forårsaker ytterligere forsinkelser

DevOps-veiledning for nybegynnere

Konfrontasjon mellom DevOps, Agile og tradisjonell IT

DevOps blir ofte diskutert i forhold til annen IT-praksis, spesielt Agile og Waterfall IT.

Agile er et sett med prinsipper, verdier og praksiser for programvareproduksjon. Så hvis du for eksempel har en idé som du vil transformere til programvare, kan du bruke smidige prinsipper og verdier. Men denne programvaren kan bare kjøres i et utviklings- eller testmiljø. Du trenger en enkel, sikker måte å flytte programvaren til produksjon raskt og gjentatte ganger, og veien er gjennom DevOps-verktøy og -teknikker. Agil programvareutvikling fokuserer på utviklingsprosesser og DevOps er ansvarlig for utvikling og distribusjon på den sikreste og mest pålitelige måten.

Å sammenligne den tradisjonelle fossefallsmodellen med DevOps er en god måte å forstå fordelene som DevOps gir. Følgende eksempel forutsetter at applikasjonen vil være live om fire uker, utviklingen er 85 % fullført, applikasjonen vil være live, og prosessen med å kjøpe servere for å sende koden har nettopp begynt.

Tradisjonelle prosesser
Prosesser i DevOps

Etter å ha lagt inn en bestilling på nye servere jobber utviklingsteamet med testing. Arbeidsgruppen jobber med den omfattende dokumentasjonen som kreves av bedrifter for å distribuere infrastruktur.
Når en bestilling på nye servere er lagt inn, jobber utviklings- og driftsteamene sammen om prosessene og papirene for å installere de nye serverne. Dette lar deg bedre forstå infrastrukturkravene dine.

Informasjon om failover, redundans, datasenterplasseringer og lagringskrav er feilaktig representert fordi det ikke er noen innspill fra et utviklingsteam som har dyp domenekunnskap.
Detaljer om failover, redundans, katastrofegjenoppretting, datasenterplasseringer og lagringskrav er kjent og korrekt på grunn av innspill fra utviklingsteamet.

Driftsteamet har ingen formening om utviklingsteamets fremdrift. Hun utvikler også en overvåkingsplan basert på egne ideer.

Driftsteamet er fullt klar over utviklingen av utviklingsteamet. Hun samhandler også med utviklingsteamet og de jobber sammen for å utvikle en overvåkingsplan som møter IT- og forretningsbehov. De bruker også verktøy for overvåking av applikasjonsytelse (APM).

En belastningstest utført før en applikasjon starter, fører til at applikasjonen krasjer, noe som forsinker lanseringen.
En belastningstest utført før kjøring av et program resulterer i dårlig ytelse. Utviklingsteamet løser raskt flaskehalser og applikasjonen lanseres i tide.

DevOps livssyklus

DevOps innebærer vedtakelse av visse allment aksepterte praksiser.

Kontinuerlig planlegging

Kontinuerlig planlegging er avhengig av lean-prinsipper for å starte i det små ved å identifisere ressursene og resultatene som trengs for å teste verdien av virksomheten eller visjonen, kontinuerlig tilpasse seg, måle fremgang, lære av kundenes behov, endre retning etter behov for å imøtekomme smidighet, og gjenoppfinne forretningsplanen.

Felles utvikling

Den samarbeidende utviklingsprosessen lar virksomheter, utviklingsteam og testteam spredt over ulike tidssoner kontinuerlig levere kvalitetsprogramvare. Dette inkluderer utvikling av flere plattformer, programmeringsstøtte på tvers av språk, opprettelse av brukerhistorier, utvikling av ideer og livssyklusadministrasjon. Samarbeidsutvikling inkluderer prosessen og praksisen med kontinuerlig integrasjon, som fremmer hyppig kodeintegrasjon og automatiserte bygg. Ved å distribuere kode ofte til en applikasjon, identifiseres integrasjonsproblemer tidlig i livssyklusen (når de er lettere å fikse) og den totale integrasjonsinnsatsen reduseres gjennom kontinuerlig tilbakemelding ettersom prosjektet viser kontinuerlig og synlig fremgang.

Kontinuerlig testing

Kontinuerlig testing reduserer kostnadene for testing ved å hjelpe utviklingsteam med å balansere hastighet med kvalitet. Det eliminerer også testflaskehalser gjennom tjenestevirtualisering og gjør det enkelt å lage virtualiserte testmiljøer som enkelt kan deles, distribueres og oppdateres etter hvert som systemene endres. Disse egenskapene reduserer kostnadene for klargjøring og vedlikehold av testmiljøer og forkorter testsyklustider, slik at integrasjonstesting kan skje tidligere i livssyklusen.

Kontinuerlig utgivelse og distribusjon

Disse teknikkene bringer med seg en kjernepraksis: kontinuerlig utgivelse og distribusjon. Dette sikres av en kontinuerlig pipeline som automatiserer nøkkelprosesser. Det reduserer manuelle trinn, ressursventetider og omarbeid ved å aktivere distribusjon ved å trykke på en knapp, noe som resulterer i flere utgivelser, færre feil og fullstendig åpenhet.

Automatisering spiller en nøkkelrolle for å sikre stabil og pålitelig programvareutgivelse. En av de største utfordringene er å ta manuelle prosesser som build, regresjon, distribusjon og infrastrukturoppretting og automatisere dem. Dette krever kildekodeversjonskontroll; scenarier for testing og distribusjon; infrastruktur og applikasjonskonfigurasjonsdata; og bibliotekene og pakkene som applikasjonen er avhengig av. En annen viktig faktor er muligheten til å spørre om tilstanden til alle miljøer.

Kontinuerlig overvåking

Kontinuerlig overvåking gir rapportering i bedriftsklasse som hjelper utviklingsteam med å forstå tilgjengeligheten og ytelsen til applikasjoner i produksjonsmiljøer før de distribueres til produksjon. Tidlig tilbakemelding gitt av kontinuerlig overvåking er avgjørende for å redusere kostnadene ved feil og styre prosjekter i riktig retning. Denne praksisen inkluderer ofte overvåkingsverktøy som vanligvis avslører beregninger relatert til applikasjonsytelse.

Konstant tilbakemelding og optimalisering

Kontinuerlig tilbakemelding og optimalisering gir en visuell representasjon av kundeflyt og identifiserer problemområder. Tilbakemelding kan inkluderes i både før- og ettersalgsstadier for å maksimere verdien og sikre at enda flere transaksjoner fullføres. Alt dette gir en umiddelbar visualisering av grunnårsaken til kundeproblemer som påvirker deres atferd og forretningseffekt.

DevOps-veiledning for nybegynnere

Fordeler med DevOps

DevOps kan bidra til å skape et miljø der utviklere og drifter jobber som et team for å oppnå felles mål. En viktig milepæl i denne prosessen er implementering av kontinuerlig integrasjon og kontinuerlig levering (CI/CD). Disse teknikkene vil tillate team å få programvare på markedet raskere med færre feil.

Viktige fordeler med DevOps er:

  • Forutsigbarhet: DevOps tilbyr en betydelig lavere feilfrekvens for nye utgivelser.
  • Vedlikehold: DevOps muliggjør enkel gjenoppretting hvis en ny utgivelse mislykkes eller en applikasjon går ned.
  • Reproduserbarhet: Versjonskontroll av en build eller kode lar deg gjenopprette tidligere versjoner etter behov.
  • Høyere kvalitet: Å adressere infrastrukturproblemer forbedrer kvaliteten på applikasjonsutviklingen.
  • Tid til markedet: Optimalisering av programvarelevering reduserer tiden til markedet med 50 %.
  • Risikoreduksjon: Implementering av sikkerhet i programvarens livssyklus reduserer antall defekter gjennom livssyklusen.
  • Kostnadseffektivitet: Jakten på kostnadseffektivitet i programvareutvikling appellerer til toppledelsen.
  • Stabilitet: Programvaresystemet er mer stabilt, sikkert, og endringer kan revideres.
  • Bryte ned en større kodebase i håndterbare deler: DevOps er basert på smidige utviklingsmetoder, som lar deg bryte ned en stor kodebase i mindre, håndterbare biter.

DevOps-prinsipper

Adopsjonen av DevOps ga opphav til flere prinsipper som har utviklet seg (og fortsetter å utvikle seg). De fleste løsningsleverandører har utviklet sine egne modifikasjoner av ulike teknikker. Alle disse prinsippene er basert på en helhetlig tilnærming til DevOps, og organisasjoner av alle størrelser kan bruke dem.

Utvikle og teste i et produksjonslignende miljø

Tanken er å gjøre det mulig for utviklings- og kvalitetssikringsteam (QA) å utvikle og teste systemer som oppfører seg som produksjonssystemer, slik at de kan se hvordan applikasjonen oppfører seg og yter lenge før den er klar for distribusjon.

Applikasjonen bør kobles til produksjonssystemer så tidlig som mulig i livssyklusen for å løse tre store potensielle problemer. For det første lar den deg teste applikasjonen i et miljø nær det virkelige miljøet. For det andre lar den deg teste og validere søknadsleveringsprosesser på forhånd. For det tredje lar det driftsteamet teste tidlig i livssyklusen hvordan miljøet deres vil oppføre seg når applikasjoner distribueres, og dermed tillate dem å lage et svært tilpasset, applikasjonsentrisk miljø.

Distribuer med repeterbare, pålitelige prosesser

Dette prinsippet lar utviklings- og driftsteam støtte smidige programvareutviklingsprosesser gjennom hele programvarens livssyklus. Automatisering er avgjørende for å skape iterative, pålitelige og repeterbare prosesser. Derfor må organisasjonen lage en leveringspipeline som muliggjør kontinuerlig, automatisert distribusjon og testing. Hyppig distribusjon lar også team teste distribusjonsprosesser, og reduserer dermed risikoen for distribusjonsfeil under live-utgivelser.

Overvåke og kontrollere kvaliteten på arbeidet

Organisasjoner er flinke til å overvåke applikasjoner i produksjon fordi de har verktøy som fanger opp beregninger og nøkkelytelsesindikatorer (KPIer) i sanntid. Dette prinsippet flytter overvåking tidlig i livssyklusen, og sikrer at automatisert testing overvåker de funksjonelle og ikke-funksjonelle egenskapene til en applikasjon tidlig i prosessen. Hver gang en applikasjon testes og distribueres, må kvalitetsmålinger undersøkes og analyseres. Overvåkingsverktøy gir tidlig varsling om drifts- og kvalitetsproblemer som kan oppstå under produksjon. Disse indikatorene må samles i et format som er tilgjengelig og forståelig for alle interessenter.

Forbedre tilbakemeldingssløyfer

Et av målene med DevOps-prosesser er å gjøre organisasjoner i stand til å reagere og gjøre endringer raskere. Ved levering av programvare krever dette målet at organisasjonen mottar tilbakemelding tidlig og deretter raskt lærer av hver handling som tas. Dette prinsippet krever at organisasjoner oppretter kommunikasjonskanaler som lar interessenter få tilgang til og samhandle på en tilbakemeldingsmåte. Utvikling kan gjøres ved å justere dine prosjektplaner eller prioriteringer. Produksjon kan handle ved å forbedre produksjonsmiljøet.

dev

  • Planlegger: 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 åpen kildekode-verktøy for CI/CD
  • Montering: Apache Maven, Gradle, Apache Ant, Packer
  • Tester: JUnit, Agurk, Selen, Apache JMeter

Ops

  • Utgivelse, distribusjon, operasjoner: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
  • Overvåkning: Grafana, Prometheus, Nagios, InfluxDB, Fluentd og andre dekket i denne veiledningen

(*Operasjonsverktøy er nummerert i bruksrekkefølge av driftsteamene, men verktøyene deres overlapper livssyklusstadiene til utgivelses- og distribusjonsverktøyene. For å lette lesbarheten er nummereringen fjernet.)

i konklusjonen

DevOps er en stadig mer populær metodikk som tar sikte på å bringe utviklere og drift sammen som en enhet. Den er unik, forskjellig fra tradisjonell IT-drift, og utfyller Agile (men er ikke like fleksibel).

DevOps-veiledning for nybegynnere

Finn ut detaljer om hvordan du får et ettertraktet yrke fra bunnen av eller Level Up når det gjelder ferdigheter og lønn ved å ta betalte nettkurs fra SkillFactory:

flere kurs

nyttig

Kilde: www.habr.com

Legg til en kommentar