Espen Henriksen

Senioringeniør

Statens Kartverk

esphen_

esphen

espen.dev

Continous Deployment

Det var en gang

Lars foreslo en endring

Teamet kodet endringen

Produksjon samme dag

Teamet itererte

Glede brøt ut,

snipp snapp snute

Hvorfor er dette et mål?

Cycle time

  • Fra kode til verdi raskest mulig
  • Teamet fokuserer på å levere verdi over leveransevinduer
  • Slipper å vente uker om man misser et vindu
  • Minst mulig byråkrati

Quality of life

  • Utviklere elsker det
  • Bruker tid på det de liker å bruke tid på
  • Produkteiere kan teste raskt
  • Alle får bedre oversikt over hva som er i prod

Brukerfokus

  • Test ut nye funksjoner med ekte brukere
  • Få tilbakemelding på hypoteser
  • Iterere på idéer
  • A/B testing
  • Kundene merker når man evner å snu seg raskt

Hva er CI/CD

CI

  • Kontinuerlig integrasjon
  • Delt koderepo som merges til
  • Bygg trigges for hver push
  • Kjøre tester i hvert bygg
  • Gi tilbakemelding når testene feiler
  • Feedback loop

CD

  • Kontinuerlig leveranse OG kontinuerlig utrulling
  • Leveranse: At koden kan deployes til enhver tid og at når det gjøres er det automatisk (prosess)
  • Utrulling: At leveranser skjer kontinuerlig og automatisk når ny funksjonalitet kodes
  • Snakker først og fremst om kontinuerlig utrulling

Eksempel

Hva er utfordringene?

Kvalitet

  • Hvordan kan vi sikre at kvaliteten er ivaretatt med kontinuerlige leveranser?
  • Hvordan overbeviser man produktsiden?
  • Hvordan kan vi ha tiltro til at systemet gjør det rette?

Arbeidsflyt

  • Hvordan samarbeider vi?
  • En god arbeidsflyt bygger kvalitet inn i leveransene
  • Bruk GitHub
    • Pull requests
    • Peer review
    • Auditability

Git

  • Main = prod
  • Hvordan kan git fasilitere for CD?
  • Lurt å ha pratet om git-arbeidsflyt i teamet
  • git-flow passer ikke til CD
  • Kortlevde branches som merges ofte
  • Passer godt med PR
  • Eksempler: trunk based, github-flow

Versjonering

  • Hvordan versjonerer vi applikasjonen?
  • Hver push til master er en ny deploy
  • Ønsker oversikt over hva som er i prod, ikke bare "latest"
  • Forslag: Time based tags
  • 2022-04-10-5-acd213
  • date-buildnum-gitsha
  • Alfabetisk sorterbar
  • Kommniserer relevant info

Hvilke virkemidler har vi?

Kommunikasjon

Gradvis implementasjon

Quality gates

Enkle rollbacks, raske fikser

Enkle rollbacks, raske fikser

Canary deploys

Automatiske rollbacks

4 key metrics

Feature flags

Feature flags

Deploy previews

Hva med verktøy?

GitOps

Push vs. Pull based deploy

Harness

ArgoCD

Harness er en platform

Argo er fokusert på GitOps

Config Connector

  • Del av ACM
  • Setter opp skyressurser
  • CRD-basert, opprett CR i ditt Namespace
  • Støtter DB, Secret Mgr., Pub/Sub, mm.
  • Delvis erstatter for Terraform
  • Ekstremt brukervennlig
  • Synergieffekt med Argo++

Fin

https://slides.com/esphen/cd

Continous Deployment

By Eline H

Continous Deployment

  • 34