kontinuerlig leveransei skatteetatenpart-2
TRANSCRIPT
UAVGENGIGHET I PRAKSIS
Små biter, store tall
• 50 applikasjoner • 2-8 prosesser • 20 databaser
• 13 miljø
• Over 1000 kjørende prosesser (100 i prod) • Over 200 databaser (20 i prod)
• Summen større enn bitene til sammen
Tid og dynamikk
• Forskjellig takt gir forskjellige behov
• Testing og uavhengighet er essensielt
• Miljø skal ikke være en knapphetsressurs
• Forskjellig kapasitet til forskjellige tider
• Skatteetaten noe større…
KONTINUERLIGE LEVERANSER
Kontinuerlige leveranser
Continuous delivery is a set of principles and practices to reduce the cost, time, and risk of
delivering incremental changes to users.
– Jez Humble
http://www.thoughtworks.com/insights/blog/case-continuous-delivery
Kontinuerlige leveranser
• Få funksjonalitet foran brukerne
• Reduser risko
• Forbedre stabilitet
• Øke effektivitet og redusere kost
Teknikker…
The HP LaserJet Firmware team re-architected their software so they could apply these practices (even though they were not releasing the firmware any more frequently). In the excellent book they
published about their journey (from 2008 - 2011), they record the outcomes they achieved:
• Overall development costs reduced by ~40%
• Programs under development increased by ~140%
• Development costs per program reduced by 78%
• Resources driving innovation increased by 5x
http://www.thoughtworks.com/insights/blog/case-continuous-delivery
Kontinuerlige leveranser
• Automatisering
• Kvalitetssikring
• Størrelse på endringer
• Separasjon av endringer
• Uavhengighet i tid
• Felles målsetning
Kvalitet
• Hvem tester på tvers?
• Hvordan får du til akseptansetester?
• … som ikke i seg selv er hindring mot endring…
• Hva skjer når det går galt?
KONTINUERLIGE LEVERANSER I PRAKSIS
Automatisering!
• For mange bevegelige deler • For få mennesker
• Alt må automatiseres
– Deploy – WebSeal/BigIP – Databaser – Filområder – SFTP
• Løsninger på problemer må automatiseres
Automatisering!
• Deploy – En kommando – Oppgradering av data – Automatiserer resursser
• Hvordan løser du det når noe går galt? – Analyse – Rulle tilbake? – Rulle fremover – Manuelle fikser
• Men…
DevOps
DevOps
Kode
Konfigurasjon
Tjenester
Operativsystem
Nettverk
Hardware
Team
Drift
Team
Drift
Stack
Java 1.7
Java 1.6
Glassfish 3.2.1 (Java 1.7)
Tjenester
Oracle 11
MongoDB 2.4
MongoDB 2.2
Webseal
Tydelig grensesnitt
• Utvikling – Utvikler basert på tilgjengelige stack og tjenester
• Plattformdrift – Lager stacks og tjenester – Drifter plattformen
• Drift – Sørger for maskiner – Tilgjengelige ressurser
• Reduserer båndbredde og sikrer likhet på tvers av miljø
• PaaS
PaaS
• Felles målsetning?
• Fleksibilitet i plattform
• Nyutvikling av stacks og tjenester
• Alle trenger en IaaS
– Gulerot eller pisk?
THE GOOD PARTS
Pakking og standard deploy
• Leveransepakker
– Inspirasjon fra Heroku
– Versjoner via Nexus
• Migreringer
• Liten avhengighet til maskin
• Mange instanser fra samme pakke
Teknologier
Java
Glassfish
Elastic Search
Akka
Hazelcast
Guice
Jetty
Grizzly
Distribuert arkitektur
• Uavhengighet mellom applikasjoner
• Build pipeline…
• Oppslagstjenesten…
• Driftsdashboardet…
• Robusthet…
Build pipeline
• Release når alt ser bra ut – Tester – Pakking – Release – Kodesjekker – Deploy til miljø – Grensesnittstester
• Jenkins – Groovy automatisering
• Øker automatisering og kvalitetssikring • Akseptansetester…
Build pipeline
Oppslagstjenesten
• Tjenesteregister
• Sparer oss for konfigurasjon
• Inspirasjon fra Netflix og AirBnB
• Fleksibilitet i fremtiden
• Noe vil alltid være i bevegelse
• Driftsinformasjon
Oppslagstjenesten
Oppslags-tjenesten
Parts-registeret
Parts-registeret
Magnet-saldo-rente
Magnet-saldo-rente
Magnet-saldo-rente
Oppslagstjenesten
Driftsdashboardet
• Oversikt for ett miljø
• Helsesjekker
• Systemer med tjenester
• Hvis alt er rødt, hvor begynner du?
• Hvis alt er grønt, hva skal du sjekke i tillegg?
Driftsdashboardet
Robusthet i applikasjoner
• Feil kontrollert
• Selvbevisste applikasjoner
• Sjekk omgivelser
• Prøv igjen når situasjonen ikke eksisterer lenger
Helsesjekker
• Hva er feil?
– Internt
– Eksternt
– Forventet/uventet
• Hvor alvorlig er det?
– Vent og se
– Sjekk et annet sted
– Debug
Helsesjekk
FREMTIDEN
Fremtiden
Begrensede resursser på driftssiden kan
håndtere store mengder
applikasjoner og teknologier
Utvikling må ha frihet til å velge, innovere og bevege seg i forskjellig
takt
Fremtiden
• Høyere kvalitet – Testdata – Akseptansetester – Verdikjeder
• Mindre konfigurasjon • Mindre (manuell) overvåkning • Raskere deploy • Mindre deler som deployes oftere • Nye teknologier • Nye tjenester
Lykke til
• Alt må automatiseres
• Robusthet må bygges inn
• Kvalitet bygges inn
• Feedback looper kortes ned
• Det hjelper å gjøre det
• Det er forskjellig fra system til system, organisasjon til organisasjon
SPØRSMÅL?