DevOps och Continuous Delivery @ TUI Nordic
Hur går man från manuella processer till helt automatiserade, från silos till DevOps?
Vilka resultat kan man förvänta sig och framförallt hur börjar man?
Vi kommer berätta hur vår resa mot DevOps och helautomatiserade processer har sett ut samt vilka resultat vi har fått.
15. “I may not have gone where I intended to
go, but I think I have ended up where I
needed to be.”
― Douglas Adams, The Long Dark Tea-Time of the Soul
Editor's Notes
Presentation
Tillsammans utvecklar vi och driftar en av nordens största e-handelsplatser
Omsättning: 13 miljarder
Besökare: 20 Miljoner
Introduktion
Presentera oss
Christopher
Kristoffer
Tillsammans utvecklar vi och driftar ett av nordens största e-handelsplatser med en omsättning på ca 13 miljarder och har 20 miljoner besökare årligen.
Vi har idag all teknik och alla verktyg som behövs.
Det är inte det som är svårt.
Det svåraste med devops och continuous delivery är att ändra kulturen och processerna.
Så vi började med kulturen
Gemensamm mål / vision
Tidigare såg det ut så här
Utveckling -> Fokus på funktionalitet
Operations -> Fokus på stabilitet
Ändrade till ett gemensamt ansvar för både funktionalitet och stabilitet
samt att
Varje story ska gå så snabbt som möjligt från idé till produktion med hög prestanda och kvalité.
Vi ville även riva silos och istället ha ett nära samarbete
Enkelt; Träffas och prata om vad som händer och vad vi kan göra
Vi kunde inte fysiskt sitta nära varandra
men tex istället för mail, gå till varandra och prata
after-work etc
- Inte en verktygsfråga, mail, chat etc kan man gå över till när den mänskliga kommunikationen finns på plats.
Vi hade mandat att gemensamt lösa uppgiften
Ingen detaljstyrning, vision och mål från ledare men hur vi gjorde det var upp till oss
vårt ansvar att prioritera och se till att det genomfördes
Startade i liten skala och växer
Började med DevOps Möte
Fokus-grupp med representanter från dev och ops
Ett system och ett flöde
Växer stegvis
Kontinuerlig utvärdering
Automatiserad process
Ville få bort all manuella steg,
dels för prestanda och dels för kvalité
Kod pushas till Github
Webhook till Jenkins
Bygger
Kör enhetstest
Paketering
Release med versionsnummer
Releasenotes
Sparar paket i repository
Övervakning, på/av
Lastdelare, ta ut en maskin i taget
Ta bort gammal version, återställer allt till desired state
Lägg ut ny version
Verifiera
Samma process i alla miljöer dvs test, acce, prod
så att vi även får en verifikation på processen
har vi lagt till / ändrat steg så ser vi direkt ev problem tidigt
Eftersom vi litar på processen så har vi automatisk deploy till UAT, högst innan prod
Där efter är det ett manuellt beslut om vi vill gå ut direkt eller vänta.
Men för att inte hindra flödet så använder vi ofta feature-switch för att separera deploy och release.
Dvs kod kan deployas men den används inte så länge feature switch är av.
Vill vi ha feedback på en viss funktion så kan vi även göra ramp-up och testa den på en del av användarna.
Får feedback på hur den används och fungerar som vi tänkt.
Värdefull info till tex produktägare som kan fatta bättre beslut på hur funktionen ska vidareutvecklas
Continous Deployment
Återskapa alla steg i deploy
States: DSC (DSC/Ansible)
Ha kontroll
Server roll
Patching
IPAM
Load balancing
Owner / Contact
Visualisering
viktigt inte bara för teamen utan även för att visa övriga vad vi gör
Mäter ett antal KPI:er som vi visar upp på en dashboard
Tex
- Sparad tid
- Antal deployer
- Ledtider
- Antal Incidenter
- Vem som ska köpa fika
Transparanta
Dashboard öppen för alla
inspirera andra team
inspirera verksamheten
nästa tanke är att göra dashboards med mer affärsvärden
Process utan manuella steg
-Människor – Vara kreativa och fatta beslut
Trygghet – Vi vet att vi kan lita på infrastruktur, kod och konfiguration
Infrastucture as code – Versionskontroll på config.
Färre fel
Buggar löses på en timme
Ansvar för kod
Ny tänk i grupperna
4x Kortare ledtider (från user story till prod.) ca 1v istf 4v
6x fler deployer
20x snabbare åtgärda problem i produktion
Can I fire someone?
Tekniskit arv
Stå stilla eller bli snabbare