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