Alm Brand IT-OPERATIONS / IT-UDVIKLING Escape velocity: Slashing deployment times with Docker DrivingIT 04/11 2016 Loke Johannessen & Sune Keller
Agenda 1. Hvor kommer vi fra 2. Hvor ville vi hen 3. Fart på 4. Deploymentflow 5. Elk 6. Puppet 7. Hvor lang er vi kommet 2
1. Hvor kommer vi fra Ekstremt varierende deploy tider Kø ved deployments til udvikling og test En fejl kunne få fatale konsekvenser for efterfølgende deploys Tung administration af silo stages Besværligt udviklingsflow Store logs med output fra flere apps Ingen reel garanti at stages var ens 3
2. Hvor ville vi hen Hurtigere deploy tider Ingen typer af kører ved deployment Komplet isolering mellem services Simplere administration og ens opbygninger af stages Hurtigere og simplere udviklingsflow Søgning af logs for en given service ved et klik More cattle, less pets 4
5 3. Fart på med Docker
3. Fart på med Docker, Elastic & venner Docker -> A standardized unit for software development Logstash -> A Server-side data processing pipeline that ingests data Elasticsearch -> A distributed, RESTful search and analytics engine Kibana -> A analytics and visualization platform 6
3. Fart på med Docker, Elastic & venner Consul -> Service discovery and configuration made easy GitLab -> Is an application to code, test, and deploy code together Puppet -> A configuration management tool Jenkins -> A continuous integration and continuous delivery application 7
4. Deployment flow Projekt start Opret i GitLab Kopier eksisterende projekt, tilret service name i Dockerfile og.gitlab-ci.yml samt artifact ID i pom.xml Opret i DTR (indtil vi bruger Artifactory) Opret i Jenkins Tilføj evt. ny config data til Consul Check kode ind Bygges i GitLab CI Deployes til DTR (senere Artifactory) Jenkins pipeline startes Deploy til miljøer Klik på pil 8
9 Check kode ind & deploy til miljøer
4. Deployment flow Projekt start Opret i GitLab Kopier eksisterende projekt, tilret service name i Dockerfile og.gitlab-ci.yml samt artifact ID i pom.xml Opret i DTR (indtil vi bruger Artifactory) Opret i Jenkins Tilføj evt. ny config data til Consul Check kode ind Bygges i GitLab CI Deployes til DTR (senere Artifactory) Jenkins pipeline startes Deploy til miljøer Klik på pil Overvåg health og inspicer logs Deploy-job starter først nye, lukker så gamle, hvis /health=200 OK Logs sendes til Logstash cluster, som sender til Elastic, som vises i Kibana link til Kibana skrives ud i Jenkins deploy job log Links til servicen på load-balanceren udledes af servicenavn og skrives ud i Jenkins deploy job loggen Metrics udstilles på /metrics og sendes til Graphite Exporter, hvor Prometheus læser hvert 5. sekund, så der kan ses grafer i Grafana 10
5. ELK Single source of truth Clustering af Logstash og Kibana Let måde at lave ledelsesrapporter (fx fejlrate, ) Historisk sammenligning (havde vi samme aktivitet som for x måneder siden) Fejlsøgningsværktøj til releases (fx: har fejlbeskeder optrådt før deploytidspunktet) Indblik i, hvad der sker i applikationerne i daglig drift Korrelation af logs fra flere kilder på samme tidspunkt Ad hoc visualisering uden gigantisk overhead 11
6. Puppet System- og infrastrukturstandardisering Ensartethed i VM er Sikkerhed for, at processer kører VM-roller og -profiler infrastruktur som (versionerbar) kode Bruges til de fundamentale bestanddele i hver node (forretningsservices styres ikke med Puppet) Afværger configuration drift Ro i hverdagen og i weekenderne! Servernedbrud bliver en oplysning ikke en katastrofe 12
7. Hvor langt er vi kommet? Hurtigere deploy tider Ingen typer af køer ved deployment Komplet isolering mellem services Simplere administration og ens opbygninger af stages Hurtigere og simplere udviklingsflow Søgning af logs for en given service ved et klik More cattle, less pets Mangler: Projektskabelon (integreret bestillingsformular) Systemiske performance metrics (kald mellem services og automatiske systemtegninger) Performance tuning Konsolidering mellem stages af Consul, UCP af hensyn til overblik og minimering af fejl Modulstyring i Puppet, når der er flere led i kæden Vault til hemmeligheder og certifikatstyring bundet op på LDAP Køre flere af infrastruktursoftwarekomponenterne i Docker (hvis det anbefales i dag) 13
14 Spørgsmål?