DevOps for nybegynnere: En komplett guide

DevOps er et begrep som har fått mye oppmerksomhet, men som kan bety forskjellige ting for ulike mennesker.

Det kan være vanskelig å forstå og definere hva DevOps egentlig innebærer. Derfor er det nyttig å kjenne til de grunnleggende ideene som folk flest forbinder med DevOps, samt historien bak utviklingen av dette konseptet. Dette kan gi et mer helhetlig perspektiv.

DevOps» opprinnelse

DevOps er et godt eksempel på smidig programvareutvikling i praksis. Behovet for å holde tritt med raskere programvareutvikling, i kombinasjon med smidige metoder, var drivkraften bak fremveksten av DevOps. De siste ti årene har den smidige kulturen og dens praksiser vist at det er behov for en mer integrert tilnærming til hele livssyklusen for programvareleveranser.

Du lurer kanskje på hva smidig programvareutvikling er –

Smidig utvikling er et overordnet begrep som brukes for å beskrive flere iterative og inkrementelle metoder for programvareutvikling. Noen kjente smidige metoder er Scrum, Kanban, Scaled Agile Framework® (SAFe®), Lean Development og Extreme Programming (XP).

Alle disse smidige metodene har de samme grunnleggende verdiene og visjonene, men de har forskjellige tilnærminger. Felles for alle er bruken av iterasjoner og kontinuerlig tilbakemelding for å lykkes med å forbedre og levere programvare som kan skaleres. Alle metodene innebærer kontinuerlig planlegging, kontinuerlig testing, kontinuerlig integrasjon og andre løpende prosesser relatert til både prosjektet og programvaren.

I motsetning til de tradisjonelle fossefallsprosessene er de smidige metodene fleksible og tilpasningsdyktige. En av de største fordelene med disse metodene er at de fokuserer på å styrke teammedlemmene til å samarbeide og ta raske beslutninger sammen.

DevOps viderefører den smidige utviklingspraksisen for å forbedre flyten i programvareendringer gjennom bygging, validering, distribusjon og de ulike leveringsstadiene. Dette gir tverrfaglige team et helhetlig eierskap til programvareproduktet, fra design til produksjon.

Utfordringer DevOps løser

Distribusjonsprosesser – Distribuerte applikasjoner krever ofte at binærfiler og konfigurasjonsfiler distribueres til flere servere. Dette blir mer komplisert når du har mange servere. Det kan være vanskelig å holde oversikt over hva, hvordan og hvor du skal distribuere. Hva er resultatet av dette?

Lange ventetider på å få elementer inn i neste miljø, før de er klare for lansering, fører til forsinkelser i testing, tid til lansering, og andre prosesser.

DevOps lar programvareutviklere og IT-drift samarbeide om å utvikle distribusjonsprosesser som er så feilfrie som mulig. Dette gjør det mulig å verifisere hva som fungerer, og deretter ta det til neste nivå med automatisering for å oppnå kontinuerlig utvikling. Dette legger også til rette for hyppigere utgivelser.

DevOps» mål

DevOps forbedrer samarbeidet mellom involverte parter fra planlegging til levering, og bruker automatisering i leveringsprosessen for å:

  • Øke hyppigheten av utrullinger
  • Redusere tiden det tar å lansere det endelige produktet
  • Redusere feilraten i nye utgivelser
  • Forkorte tiden mellom feilrettinger
  • Forbedre tiden det tar å gjenopprette etter feil

Et typisk DevOps-scenario

Når et nytt programvareprosjekt skal startes, samles hele teamet. Teamet består av utviklere, testere, drifts- og supporteksperter. Sammen legger de en plan for å lage fullt funksjonell programvare som er klar for distribusjon.

Når utviklerne har fullført ny kode, blir den distribuert daglig. Automatiske testprosedyrer sikrer at koden er klar for implementering. Når koden har passert de automatiske testene, distribueres den til et lite antall brukere. Koden overvåkes i en kort periode for å sikre at det ikke oppstår uforutsette problemer, og at den er stabil. Den nye koden distribueres deretter til resten av brukerne når den endelige overvåkingen har vist at koden er stabil. Mye av arbeidet etter planleggings- og utviklingsfasen utføres uten menneskelig innblanding.

Ulike faser i DevOps-modenhet

Det er flere ulike faser i DevOps-modenhet. Her er noen nøkkelbegrep du bør kjenne til.

Fossutvikling

Før kontinuerlig integrasjon var vanlig, skrev utviklingsteam store mengder kode, som deretter ble slått sammen fra ulike team i forbindelse med utgivelsen. Kodeversjonene var ofte så ulike at det krevdes omfattende endringer.

Det kunne ta flere måneder å implementere disse endringene. Denne prosessen var lite effektiv.

Kontinuerlig integrasjon

Kontinuerlig integrasjon er praksisen med å integrere nyutviklet kode med den viktigste kodebasen for å muliggjøre raske utgivelser. Kontinuerlig integrasjon bidrar til å spare mye tid i forbindelse med kodeutgivelser.

DevOps introduserte ikke dette konseptet. Kontinuerlig integrasjon er en smidig ingeniørpraksis som stammer fra ekstrem programmeringsmetodikk. DevOps har tatt i bruk denne praksisen fordi automatisering er nødvendig for å lykkes med kontinuerlig integrasjon. Kontinuerlig integrasjon er ofte det første trinnet mot DevOps-modenhet.

I et DevOps-perspektiv omfatter kontinuerlig integrasjon trinn som å sjekke inn kode, kompilere den til brukbar kode og kjøre nødvendige valideringstester.

Kontinuerlig levering

Dette er en utvidelse av kontinuerlig integrasjon og det andre stadiet i DevOps.

Kontinuerlig levering lar deg automatisere og teste ytterligere, slik at koden ikke bare raskt slås sammen med hovedkodelinjen, men også er nesten klar til å distribueres uten menneskelig innblanding.

Dette er praksisen med å holde kodebasen i en tilstand som er nesten klar for distribusjon.

Kontinuerlig distribusjon

Kontinuerlig distribusjon er den mest avanserte formen for kontinuerlig levering. Denne praksisen lar oss distribuere all kode til produksjon uten menneskelig innblanding.

Team som jobber med kontinuerlig utvikling distribuerer aldri kode uten testing. All ny kode går gjennom automatisert testing før den kommer i produksjonsfasen. Koden distribueres til et lite antall brukere, og det finnes en automatisert tilbakemeldingssløyfe som overvåker kvaliteten og bruken før koden tas i bruk på et bredere grunnlag.

Noen selskaper, som Netflix, Etsy, Amazon, Pinterest, Flickr, IMVU og Google, praktiserer kontinuerlig utvikling.

Verdien

DevOps legger stor vekt på å utvikle en samarbeidskultur og forbedre effektiviteten gjennom automatisering ved hjelp av ulike DevOps-verktøy. For å implementere DevOps for din programvareløsning, må du bruke en kombinasjon av både kultur og verktøy.

DevOps-kultur

DevOps er en kultur som fremmer samarbeid, reduserer kaos, bidrar til å håndtere delt ansvar på en bedre måte, implementere automatisering, forbedre kvaliteten, øke verdien av tilbakemeldinger og fremme automatisering.

Smidige metoder har alltid vært en god måte å levere programvare på. Når man skal måle fremgang, gjør smidige utviklingsteam dette ved å se på om programvaren fungerer. Den smidige tilnærmingen i DevOps-kulturen gjør at produkteiere, utviklere, testere og UX-ansatte kan jobbe tett sammen mot samme mål.

DevOps-verktøy

Dette omfatter verktøy for konfigurasjonsadministrasjon, testing og byggesystemer, utvikling av applikasjoner, versjonskontroll og overvåking. Implementeringen av kontinuerlig integrasjon, kontinuerlig levering og kontinuerlig distribusjon krever ulike verktøy, samtidig som de også bruker de samme verktøyene. Du vil trenge flere verktøy etter hvert som du beveger deg gjennom leveringskjeden.

La oss se på noen populære verktøy og metoder.

Kildekodelager – dette er et sted der utviklere kan sjekke inn og gjøre endringer i koden. Kildekodelageret administrerer ulike versjoner av koden som sjekkes inn, slik at det unngås at utviklere overskriver hverandres kode.

Git, Apache Subversion, IBM Rational, Artifactory, Nexus og Eclipse er noen av de populære verktøyene for kodelagring.

Byggserver: – Byggserveren er et automatiseringsverktøy som brukes til å kompilere koden i et kodelager til kjørbar kode. Noen av de mest brukte byggeserververktøyene er Jenkins, SonarQube og Artifactory.

Konfigurasjonsadministrasjon – Puppet, Chef, Ansible, SaltStack og Run Deck bidrar til å administrere konfigurasjonen for applikasjoner og infrastruktur for å opprettholde konsistens på tvers av ulike miljøer.

Virtuell infrastruktur – AWS, GCP og Azure er de tre største leverandørene av offentlige skytjenester, og tilbyr nesten alle tjenester innen infrastruktur. De tilbyr API-er som lar deg klargjøre infrastrukturen og administrere den som kode.

Konklusjon

Jeg håper dette har gitt deg en forståelse av hva DevOps er, og at du er interessert i å lære mer om dette. I så fall kan du vurdere å ta et nettbasert masterclass-kurs.

Artikkel av Payal Goyal