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
Made with Slides.com