Maven_super_16 - itnett/FTD02H-N GitHub Wiki

Her er det sekstende kapittelet formatert for en GitHub Wiki i Markdown med LaTeX-støtte:


Kapittel 16: Programvareutvikling og DevOps i IT-drift

Innhold

  1. Målsetting
  2. Teori
  3. Emner
  4. Fakta
  5. Eksempler
  6. Øvingsoppgaver
  7. Template for Dokumentasjon
  8. Kilder

Målsetting

Målet med dette kapittelet er å gi en innføring i samspillet mellom programvareutvikling og IT-drift gjennom DevOps-praksis. Du vil lære om prinsippene bak DevOps, hvordan det kan implementeres i en organisasjon, og hvordan det bidrar til kontinuerlig integrasjon og leveranse av programvare.

Teori

Hva er DevOps?

DevOps er en kultur, metodologi og sett med praksiser som kombinerer programvareutvikling (Dev) og IT-drift (Ops) med det formål å korte ned utviklingssykluser, øke leveringsfrekvensen, og sikre høy programvarekvalitet gjennom automatisering og samarbeid.

$$ \text{DevOps} = \text{Dev} + \text{Ops} + \text{Automatisering + Samarbeid} $$

Kjernekomponenter i DevOps

  1. Kontinuerlig Integrasjon (CI): Utviklere integrerer kode i en delt repository flere ganger om dagen. Hver innsjekk valideres ved en automatisert build og test.
  2. Kontinuerlig Leveranse (CD): Programvaren er alltid klar for leveranse til produksjon, og alle endringer er testet automatisk.
  3. Infrastruktur som kode (IaC): Infrastruktur administreres og klargjøres gjennom kode og automatiserte prosesser, i stedet for manuelle konfigurasjoner.
  4. Overvåking og Logging: Kontinuerlig overvåking av systemer og applikasjoner for å fange opp problemer tidlig og sikre stabil drift.

Prinsipper i DevOps

  1. Samarbeid: Fjerner siloer mellom utvikling og driftsteam for bedre kommunikasjon og felles målsettinger.
  2. Automatisering: Automatiserer repeterende oppgaver som bygging, testing, distribusjon, og infrastrukturadministrasjon for å øke effektiviteten.
  3. Kontinuerlig Forbedring: Fokus på stadig forbedring gjennom iterativ utvikling og feedback-looper.
  4. Måling og Analyse: Bruk av data og metrikker for å måle ytelse og kontinuerlig forbedre prosessene.

Emner

  • DevOps-prinsipper: Forståelse av de grunnleggende prinsippene og metodene i DevOps.
  • Kontinuerlig Integrasjon og Leveranse (CI/CD): Hvordan implementere CI/CD pipelines for å automatisere bygging, testing og distribusjon av programvare.
  • Infrastruktur som kode (IaC): Hvordan bruke verktøy som Terraform eller Ansible for å administrere infrastruktur.

Fakta

  1. DevOps-adopsjon: Ifølge en rapport fra Puppet, har organisasjoner som implementerer DevOps, 46 ganger flere kodeimplementeringer og 440 ganger raskere lead-tider.

  2. Automatisering: 75% av DevOps-aktive organisasjoner bruker automatisering for å forbedre kvaliteten på programvareleveranser og redusere menneskelige feil.

  3. IaC-verktøy: Terraform, Ansible, og Chef er blant de mest populære verktøyene for Infrastructure as Code, og de brukes av ledende selskaper globalt.

Eksempler

Eksempel 1: Implementering av en CI/CD Pipeline

Scenario

En organisasjon ønsker å automatisere bygging, testing og distribusjon av applikasjoner for å øke leveringshastigheten.

Trinnvis Prosess

  1. Repository: Opprett et sentralt repository for kildekoden i Git.
  2. CI Server: Sett opp en CI-server som Jenkins eller GitLab CI for å håndtere byggeprosessen.
  3. Testing: Implementer automatiserte tester som kjøres hver gang ny kode sjekkes inn i repositoryet.
  4. Distribusjon: Konfigurer CD-prosesser for å distribuere applikasjonen til staging eller produksjonsmiljøet automatisk etter at alle tester er bestått.

Refleksjon

  • Automatisering av bygging, testing og distribusjon reduserer risikoen for menneskelige feil og forbedrer leveringshastigheten.

Eksempel 2: Infrastruktur som kode med Terraform

Scenario

En bedrift ønsker å automatisere oppsettet av sin skyinfrastruktur for å sikre konsistens på tvers av miljøer.

Trinnvis Prosess

  1. Definer Infrastruktur: Skriv Terraform-manuskript som definerer infrastrukturen, inkludert nettverk, lagring og beregningsressurser.
  2. Planlegging: Bruk Terraform til å planlegge infrastrukturen, som vil vise hva som vil bli opprettet, endret eller fjernet.
  3. Implementering: Kjør Terraform-manuskriptet for å opprette eller oppdatere infrastrukturen basert på definisjonene.
  4. Vedlikehold: Bruk Terraform til å administrere og oppdatere infrastrukturen etter hvert som behovene endrer seg.

Refleksjon

  • Bruk av IaC-verktøy som Terraform sikrer konsistente miljøer, forbedrer skalerbarhet og gjør det enklere å reprodusere miljøer på tvers av utvikling, testing og produksjon.

Øvingsoppgaver

  1. Oppgave 1: Sett opp en CI/CD Pipeline med Jenkins

    • Mål: Installer Jenkins og konfigurer en pipeline for et enkelt prosjekt som bygger, tester og distribuerer applikasjonen automatisk.
    • Verktøy: Jenkins, Git.
  2. Oppgave 2: Implementer Infrastruktur som kode med Terraform

    • Mål: Skriv et Terraform-manuskript for å opprette en enkel infrastruktur på AWS, inkludert EC2-instans, S3-bøtte, og en RDS-database.
    • Verktøy: Terraform, AWS.
  3. Oppgave 3: Overvåk en DevOps Pipeline

    • Mål: Implementer overvåking og logging for en DevOps pipeline ved hjelp av verktøy som Prometheus og Grafana, for å sikre at alle trinn i pipeline fungerer optimalt.
    • Verktøy: Prometheus, Grafana.

Template for Dokumentasjon

Bruk denne malen for å dokumentere DevOps-prosesser og -praksis:

# [Tittel på DevOps-prosess eller -prosjekt]

## Introduksjon
Kort beskrivelse av DevOps-praksisen eller prosjektet som dokumenteres.

## CI/CD Pipeline
- **Verktøy:**
- **Byggetrinn:**
- **Testing:**
- **Distribusjon:**

## Infrastruktur som kode (IaC)
Beskrivelse av infrastrukturen som er definert i kode, inkludert nettverk, lagring og beregningsressurser.

## Overvåking og Logging
Detaljer om hvordan CI/CD-pipeline og infrastruktur overvåkes, inkludert metrikker og alarmer.

Kilder

  • Kim, G., Humble, J., Debois, P., & Willis, J. (2016). The DevOps Handbook: How to Create World-Class Agility, Reliability, & Security in Technology Organizations. IT Revolution Press.
  • HashiCorp. (2021). Terraform: Up & Running. O'Reilly Media.
  • AWS. (2021). AWS DevOps Services Documentation. Retrieved from aws.amazon.com.

Dette kapittelet gir deg innsikt i hvordan DevOps-praksis kan transformere programvareutvikling og IT-drift gjennom automatisering, samarbeid og kontinuerlig forbedring. Med de riktige verktøyene og metodene kan du forbedre leveringshastigheten, redusere feil og sikre høy programvarekvalitet.

Ønsker du å fortsette med kapittel 17?