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

Mye har skjedd siden termen DevOps ble sementert i IT-verdenen. Siden store deler av økosystemet har åpen kildekode, er det viktig å revurdere hvorfor dette startet og hva det betyr for karrierer innen IT.
Hva er DevOps
Selv om det ikke finnes en enhetlig definisjon, mener jeg at DevOps er en teknologisk struktur som muliggjør samarbeid mellom utviklingsteam og driftsteam for raskere utrulling av kode i produksjonsmiljøer med gjentakelse og automatisering. Resten av artikkelen vil vi bruke på å avdekke denne uttalelsen.
Ordet «DevOps» er en sammenslåing av ordene «utvikling» (development) og «drift» (operations). DevOps bidrar til å øke hastigheten på levering av applikasjoner og tjenester. Dette lar organisasjoner effektivt betjene sine kunder og bli mer konkurransedyktige i markedet. Enkelt sagt innebærer DevOps samsvar mellom utvikling og IT-drift med mer effektivt samarbeid.
DevOps innebærer en kultur der samarbeid mellom utviklingsteam, operatører og forretningsteam anses som en kritisk viktig aspekt. Det handler ikke bare om verktøy, ettersom DevOps i organisasjonen stadig gir fordeler til kundene. Verktøy er en av søylene, sammen med mennesker og prosesser. DevOps øker organisasjoners evne til å levere høy-kvalitetsløsninger på kort tid. DevOps automatiserer også alle prosesser, fra bygging til utrulling, av applikasjoner eller produkter.
Diskusjonen rundt DevOps fokuserer på forholdet mellom utviklere, de som skriver programvare for livet, og operatørene, som er ansvarlige for å støtte denne programvaren.
Utfordringer for utviklingsteamet
Utviklere er som regel entusiastiske og ivrige etter å implementere nye tilnærminger og teknologier for å løse organisasjoners problemer. Imidlertid møter de også bestemte utfordringer:
- Det konkurransedyktige markedet skaper stort press for rettidig produktlevering.
- De skal ta vare på produksjonsklare kodehåndteringssystemer og implementering av nye funksjoner.
- Urelease-syklusen kan være lang, så utviklerteamet må gjøre flere antagelser før de distribuerer applikasjoner. I et slikt scenario kreves det mer buffer for å løse problemer som oppstår under distribusjonen i produksjons- eller testmiljø.
Problemene driftsteamet står overfor
Driftsteam har historisk vært fokusert på stabilitet og pålitelighet av IT-tjenester. Derfor arbeider driftsteam med å oppnå stabilitet gjennom endringer i ressurser, teknologi eller tilnærminger. Deres oppgaver inkluderer:
- Håndtere ressursfordeling etter hvert som etterspørselen øker.
- Behandle endringer i design eller innstillinger som kreves for å bruke i produksjonsmiljø.
- Diagnostisere og løse problemer relatert til produksjon etter egen distribusjon av applikasjoner.
Hvordan DevOps løser utfordringer mellom utvikling og drift
I stedet for å rulle ut en stor mengde applikasjonsfunksjoner samtidig, prøver selskaper å finne ut om de kan distribuere et lite antall funksjoner for sine kunder gjennom en serie iterasjoner. Denne tilnærmingen har flere fordeler, som bedre programvarekvalitet, raskere tilbakemelding fra kunder osv. Dette sikrer på sin side høy grad av kundetilfredshet. For å oppnå disse målene kreves det at selskaper:
- Redusere antall feil ved utgivelse av nye versjoner
- Øke frekvensen av distribusjon
- Oppnå raskere gjennomsnittlig gjenopprettingstid etter en ny applikasjonsutgivelse.
- Forkorte tiden brukt på feilrettinger
DevOps utfører alle disse oppgavene og bidrar til kontinuerlig levering. Organisasjoner bruker DevOps for å oppnå ytelsesnivåer som for noen år siden ville vært utenkelige. De gjennomfører titalls, hundrevis, og til og med tusenvis av distribusjoner om dagen, samtidig som de sikrer pålitelighet, stabilitet og verdensklasse sikkerhet. og deres innvirkning på programvareleveranse).
DevOps prøver å løse ulike problemer som oppstår som følge av metoder fra fortiden, inkludert:
- Isolering av arbeidet til utviklings- og operasjonsteam
- Testing og distribusjon som separate faser som utføres etter design og bygging, og som tar mer tid enn byggesykluser.
- For mye tid brukt på testing, distribusjon og design i stedet for fokus på å lage kjernevirksomhetstjenester
- Manuell distribusjon av kode som fører til feil i produksjon
- Forskjeller i timeplanene til utviklings- og driftsgrupper som fører til ekstra forsinkelser

Motsetninger mellom DevOps, Agile og tradisjonell IT
DevOps diskuteres ofte i sammenheng med andre IT-praksiser, spesielt agile og tradisjonell IT-infrastruktur.
Agile er et sett med prinsipper, verdier og metoder for programvareproduksjon. Hvis du for eksempel har en idé du vil forvandle til programvare, kan du bruke prinsippene og verdiene fra Agile. Men denne programvaren kan kun fungere i utviklings- eller testmiljøer. Du trenger en enkel og sikker måte å raskt og med høy repetisjonsfrekvens overføre programvare til produksjonsmiljøet, og veien går gjennom verktøy og metoder fra DevOps. Den agile programvareutviklingsmetodologien fokuserer på utviklingsprosesser, mens DevOps tar ansvar for utvikling og distribusjon – på den mest sikre og pålitelige måten.
Sammenligningen av den tradisjonelle vannfallsmodellen med DevOps er en god måte å forstå fordelene som DevOps gir. I det følgende eksemplet antas det at applikasjonen skal lanseres om fire uker, utviklingen er fullført med 85 %, applikasjonen vil bli lansert, og prosessen med å kjøpe servere for å sende koden er nettopp startet.
Tradisjonelle prosesser
Prosesser i DevOps
Etter å ha bestilt nye servere arbeider utviklingsteamet med testing. Operasjonsteamet jobber med omfattende dokumentasjon som kreves for distribusjon av infrastruktur i virksomhetene.
Etter å ha plassert en bestilling på nye servere, jobber utvikler- og operatørteamene sammen om prosessene og dokumentflyten for å installere de nye serverne. Dette bidrar til en bedre forståelse av infrastrukturkravene.
Informasjonen om gjenoppretting etter svikt, redundans, plassering av datasentre og krav til lagringsløsninger er forvrengt, da det mangler innspill fra utviklerteamet som har dyp kunnskap om anvendelse.
Detaljert informasjon om sviktgjenoppretting, redundans, katastrofegjenoppretting, plassering av datasentre og krav til lagringsløsninger er kjent og korrekt takket være bidragene fra utviklerteamet.
Operasjonsteamet har ikke oversikt over fremdriften til utviklerteamet. De utvikler også en overvåkningsplan basert på egne oppfatninger.
Operasjonsteamet er fullt informert om fremdriften oppnådd av utviklerteamet. De samarbeider også med utviklerteamet, og sammen utvikler de en overvåkningsplan som tilfredsstiller IT- og forretningsbehovene. De benytter også verktøy for overvåking av applikasjonsytelse (APM).
Lasttesting før lansering av applikasjonen fører til et sammenbrudd av applikasjonen, noe som forsinker dens lansering.
Lasttesting før lansering av applikasjonen fører til redusert ytelse. Utviklerteamet løser raskt flaskehalsene, og applikasjonen lanseres i tide.
DevOps-livssyklusen
DevOps innebærer å adoptere visse anerkjente praksiser.
Kontinuerlig planlegging
Kontinuerlig planlegging baserer seg på prinsipper for slanking, for å begynne i det små ved å definere de ressursene og resultatene som er nødvendige for å verifisere forretningsverdien eller visjonen, kontinuerlig tilpasning, måling av fremdrift, kartlegging av kundebehov, endring av retning når det er nødvendig for smidighet, samt oppdatering av forretningsplanen.
Samarbeidsutvikling
Prosessen med samarbeidende utvikling gjør det mulig for bedrifter, utviklingsteam og testteam, som er spredt over forskjellige tidssoner, å kontinuerlig levere kvalitet programvare. Dette inkluderer plattformovergripende utvikling, støtte for programmering på forskjellige språk, skapelse av brukerhistorier, utvikling av ideer og livssyklusadministrasjon. Samarbeidende utvikling omfatter prosessen og praksisen med kontinuerlig integrasjon, noe som fremmer hyppig koding og automatisk bygging. Ved hyppig innføring av kode i applikasjonen, oppdages integrasjonsproblemer tidlig i livssyklusen (når det er lettere å fikse dem), og de samlede integrasjonsinnsatsene reduseres takket være kontinuerlig tilbakemelding, ettersom prosjektet viser kontinuerlig og synlig fremgang.
Kontinuerlig testing
Kontinuerlig testing reduserer testkostnadene ved å hjelpe utviklingsteam med å balansere mellom fart og kvalitet. Det eliminerer også flaskehalser i testing ved hjelp av virtualisering av tjenester og gjør det enklere å opprette virtualiserte testmiljøer som kan deles, distribueres og oppdateres enkelt etterhvert som systemene endres. Disse mulighetene reduserer kostnadene for initiering og vedlikehold av testmiljøer, samt forkorter testsyklustiden, noe som gjør at integrasjonstesting kan utføres tidlig i livssyklusen.
Kontinuerlige utgivelser og distribusjon
Disse metodene fører med seg en av de grunnleggende praksisene: kontinuerlige utgivelser og distribusjon. Dette sikrer en kontinuerlig pipeline som automatiserer nøkkelprosesser. Den reduserer antall manuelle operasjoner, ventetid på ressurser og omfanget av omarbeiding, noe som gjør det mulig å distribuere med ett klikk, noe som gir flere utgivelser, færre feil og full transparens.
Automatisering spiller en nøkkelrolle i å sikre stabil og pålitelig programvareutgivelse. En av de viktigste oppgavene er å ta i bruk manuelle prosesser, som bygging, regresjon, distribusjon og oppretting av infrastruktur, og automatisere dem. Dette krever versjonskontroll av kildekoden; test- og distribusjonsscript; data om infrastruktur og konfigurasjon av applikasjoner; samt biblioteker og pakker som applikasjonen er avhengig av. En annen viktig faktor er muligheten til å forespørre status for alle miljøer.
Kontinuerlig overvåking
Kontinuerlig overvåking gir rapportering på bedriftsnivå som hjelper utviklingsteam å forstå tilgjengelighet og ytelse av applikasjoner i produksjonsmiljøet før de blir rullet ut til produksjon. Tidlig tilbakemelding fra kontinuerlig overvåking er kritisk for å redusere kostnader knyttet til feil og for å styre prosjekter i riktig retning. Denne praksisen involverer ofte overvåkingsverktøy som vanligvis avdekker ytelsesmål relatert til applikasjonene.
Kontinuerlig tilbakemelding og optimalisering
Kontinuerlig tilbakemelding og optimalisering gir visuell representasjon av kundestrømmen og nøyaktig identifisering av problemområder. Tilbakemelding kan inkluderes både i pre-salg og post-produksjonsfaser for å maksimere verdien og sikre vellykket gjennomføring av enda flere transaksjoner. Alt dette gir umiddelbar visualisering av årsaken til kundens problemer som påvirker deres atferd og innvirkning på virksomheten.

Fordeler med DevOps
DevOps kan fremme et miljø der utviklere og operatører jobber som ett team mot felles mål. En viktig milepæl i denne prosessen er implementeringen av kontinuerlig integrering og kontinuerlig levering (CI/CD). Disse metodene gjør det mulig for team å få programvare raskere på markedet med færre feil.
Viktige fordeler med DevOps inkluderer:
- Forutsigbarhet: DevOps tilbyr betydelig lavere feilrate ved lansering av nye utgivelser.
- Vedlikeholdbarhet: DevOps muliggjør enkel gjenoppretting ved feil i nye utgivelser eller nedetid for applikasjonen.
- Reproduserbarhet: Versjonskontrollsystemet for bygg eller kode lar deg gjenopprette tidligere versjoner ved behov.
- Høyere kvalitet: Løsning av infrastrukturproblemer forbedrer kvaliteten på applikasjonsutviklingen.
- Time-to-market: Optimalisering av programvareleveransen reduserer time-to-market med 50%.
- Redusert risiko: Å sikre sikkerhet i programvarelivssyklusen reduserer antall feil gjennom hele livssyklusen.
- Kostnadseffektivitet: Behovet for kostnadseffektivitet i programvareutvikling er populært blant ledelsen.
- Robusthet: Programvaresystemet er mer stabilt, sikkert, og endringer kan testes.
- Større kodebase deles opp i håndterbare deler: DevOps er basert på smidige utviklingsmetoder som lar store kodebaser deles opp i mindre, håndterbare enheter.
DevOps-prinsipper
Adopsjonen av DevOps har ført til flere prinsipper som har utviklet seg (og fortsetter å utvikle seg). De fleste leverandører av løsninger har utviklet sine egne modifikasjoner av ulike metoder. Alle disse prinsippene er basert på en helhetlig tilnærming til DevOps, og organisasjoner av enhver størrelse kan bruke dem.
Utvikle og teste i et produksjonslignende miljø
Hovedpoenget er å la utviklingsteam og kvalitetssikringspersonell (QA) utvikle og teste systemer som oppfører seg som produksjonssystemer, slik at de kan se hvordan applikasjonen oppfører seg og fungerer lenge før den er klar for distribusjon.
Applikasjonen bør kobles til produksjonssystemene så tidlig som mulig i livssyklusen for å løse tre hovedpotensielle problemer. For det første lar det deg teste applikasjonen i et miljø som ligner på det virkelige. For det andre gir det mulighet for å teste og verifisere prosessene for levering av applikasjonen på forhånd. For det tredje lar det driftsteamet sjekke tidlig i livssyklusen hvordan miljøet deres vil oppføre seg når applikasjonene er rullet ut, og dermed gi dem mulighet til å lage et skreddersydd, applikasjonsorientert miljø.
Distribusjon med reproducerbare, pålitelige prosesser
Dette prinsippet gjør det mulig for utviklings- og driftsteam å opprettholde fleksible prosesser for programvareutvikling gjennom hele livssyklusen. Automatisering er avgjørende for å skape iterative, pålitelige og reproducerbare prosesser. Derfor bør organisasjonen etablere en leveringspipeline som sikrer kontinuerlig automatisert distribusjon og testing. Hyppig distribusjon lar også teamene teste distribusjonsprosessene, og reduserer dermed risikoen for feil under faktiske lanseringer.
Overvåking og kvalitetskontroll
Organisasjoner er flinke til å overvåke applikasjoner i produksjon fordi de har verktøy som registrerer målinger og nøkkelytelsesindikatorer (KPI) i sanntid. Dette prinsippet flytter overvåkingen til de tidlige stadiene av livssyklusen, og sikrer at automatisert testing sporer både funksjonelle og ikke-funksjonelle egenskaper ved applikasjonen tidlig i prosessen. Hver gang applikasjonen blir testet og distribueres, bør kvalitetsmålingene undersøkes og analyseres. Overvåkningsverktøy gir tidlig varsling om problemer som er relatert til drift og kvalitet som kan oppstå under produksjonen. Disse målingene bør samles inn i et format som er tilgjengelig og forståelig for alle interessenter.
Forbedring av tilbakemeldingssykluser
Eitt af markmiðum DevOps ferla er að bjóða fyrirtækjum tækifæri til að bregðast hraðar við og gera breytingar. Þegar hugbúnaður er afhentur krafist þetta að stofnunin fái endurgjöf snemma í ferlinu og læri svo hratt af hverju skrefinu. Þessi meginregla kallar á að fyrirtæki búi til samskiptaleiðir sem leyfa hlutafélögum að fá aðgang og eiga í samskiptum við endurgjöf. Þróun getur fram farið með því að breyta verkefnisáætlunum eða forgangsröðun. Framleiðslan getur starfað með því að bæta aðstöðu sína.
Dev
- Skipulagning: Kanboard, Wekan og aðrir valkostir við Trello; GitLab, Tuleap, Redmine og aðrir valkostir við JIRA; Mattermost, Roit.im, IRC og aðrir valkostir við Slack.
- Kóðaskrif: Git, Gerrit, Bugzilla; Jenkins og aðrir opinn kóði tólar fyrir CI/CD
- Smiður: Apache Maven, Gradle, Apache Ant, Packer
- Próf: JUnit, Cucumber, Selenium, Apache JMeter
Ops
- Útgáfa, dreifing, rekstur: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
- Vöktun: Grafana, Prometheus, Nagios, InfluxDB, Fluentd, og aðrir sem hér eru kynntir
(* Tólin fyrir rekstur voru númeruð í því skyni að nota þau af rekstrarteyminu, en tól þeirra skarast við líftíma frelsis- og dreifingarverkfæri. Til að auðvelda lesningu var númerun fjarlægð.)
Avslutningsvis
DevOps er sífellt að verða vinsælli aðferðafræði sem er markmiðið að sameina þróunaraðila og rekstraraðila í eina heild. Hún er einstök, ólík hefðbundnum IT-aðgerðum og bætir við Agile (en er ekki jafn sveigjanleg).

Fáðu frekari upplýsingar um hvernig á að öðlast eftirsótta starf með því að fara í greiðslukennslu á netinu hjá SkillFactory:
- (12 mánuðir)
önnur námskeið
- (12 vikur)
- (12 mánuðir)
- (9 mánuðir)
- (9 mánuðir)
Gagnlegt
Kilde: habr.com
