continuous delivery med tutum och docker

46
Kristoffer Vidmo kristoffer.vidmo@c ag.se Continuous Delivery med Tutum och Docker Daniel Marell daniel.marell@cag .se Code Night #4 2016-02-11

Upload: kristoffer-vidmo

Post on 19-Feb-2017

228 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Continuous Delivery med Tutum och Docker

Kristoffer [email protected]

Continuous Delivery

med Tutum och Docker

Daniel [email protected]

Code Night #42016-02-11

Page 2: Continuous Delivery med Tutum och Docker

Joina Slacken

https://cagdemo.slack.com

Ta del av användbara länkar

Page 3: Continuous Delivery med Tutum och Docker

● Arkitektur och utveckling● .NET och Java● Continuous Delivery och DevOps● Molnbaserade tjänster och miljöer● Verktyg och metoder för att implementera

Continuous Delivery

Vår bakgrund och vad vi gör

Page 4: Continuous Delivery med Tutum och Docker

● Stegvis förändring mot Continuous Delivery● Helhetslösning, startar igång och följer upp● Hjälper till under hela resan, inte bara en

rapport● Pipelines● Tjänstemockar

Vad vi gör

Page 5: Continuous Delivery med Tutum och Docker

● Sparar flera tusen timmar per år● Antal fel minskar drastiskt● Tiden att åtgärda ett fel minskar drastiskt

Puppet Labs - State of DevOps 2015

Resultat

Page 6: Continuous Delivery med Tutum och Docker

● Systemutveckling i ett CD-sammanhang

● Build pipelines● Automatiserad test● Mikrotjänster● Automatisering, scriptning● Molnplattformar med AWS och Azure● REST- och SOAP-tjänster● A och B-testning● Blue-Green och Zero downtime deploy

Vi vill bli fler

Page 7: Continuous Delivery med Tutum och Docker

Problemet med IT

IT är ett hinder

inte en möjliggörare

Page 8: Continuous Delivery med Tutum och Docker

IT på 2000-talet?Manuell

- test

- deploy

- verifiering

Page 9: Continuous Delivery med Tutum och Docker

Utveckling SystemtestAcceptans-test

Prod

Vilken av alla 100 saker är det som går fel...

Krav

Stora releaser varje kvartal

Page 10: Continuous Delivery med Tutum och Docker

Utveckling SystemtestAcceptans-test

Prod

95% av tiden från krav till prod är väntetid

Krav

Överlämningar krav - utv - test - prod

Page 11: Continuous Delivery med Tutum och Docker

Utveckling SystemtestAcceptans-test

Prod

Hur var det nu det skulle fungera?

Krav

Feedback kommer för sent

Page 12: Continuous Delivery med Tutum och Docker

● Paketerar applikationer i containers

● Baserat på Linux LXC● En container körs som process i

hosten● Copy-on-write filsystem● Docker image

Vad är Docker?

https://www.docker.com/products/docker-toolbox$ docker run -it --rm ubuntu bash

Page 13: Continuous Delivery med Tutum och Docker

DockerfileFROM java:8-jreCOPY target/myapp.jar /EXPOSE 8080CMD java -jar /myapp.jar

https://www.docker.com/products/docker-toolbox$ docker run -it --rm ubuntu bash

Page 14: Continuous Delivery med Tutum och Docker

● Repeterbara deployments i produktion● Applikationer med konfliktande

beroenden● Isolation av applikationer● Distribuerad hantering av virtuella

miljöer (repo)● Låg overhead

Problem som Docker löser

https://www.docker.com/products/docker-toolbox$ docker run -it --rm ubuntu bash

Page 16: Continuous Delivery med Tutum och Docker

appapp

Utveckling Drift

Virtualiserad miljö

app app

Körmiljö för containers

Containers vs Virtualisering

Page 17: Continuous Delivery med Tutum och Docker

Hur det började

Page 18: Continuous Delivery med Tutum och Docker

Webbsajt:http://welcomeapp.se

Webapp:https://app.welcomeapp.se

Server API:https://api.welcomeapp.se

Page 19: Continuous Delivery med Tutum och Docker
Page 20: Continuous Delivery med Tutum och Docker

Antal användare100 000Antal operationer per användare 10Tid timmar 4Operationer per sekund snitt 69Belastningstopp faktor 10Operationer per sekund, peak 694

Lastberäkning

Page 21: Continuous Delivery med Tutum och Docker

● Installera testmiljö och produktionsmiljö● Installera Build Pipeline● DNS och certifikat● Wireframes● Infomodell● Utveckla frontend-applikation● Utveckla server-applikation● Chat med websockets/RabbitMQ● App Store och Google Play

Det blev mycket att göra

Page 22: Continuous Delivery med Tutum och Docker

Infomodell

Page 23: Continuous Delivery med Tutum och Docker

Pipeline

prod

GoogleAnalytics

Logging

Dashboardoperation status

uattest

DNS

coderepo

Alarms

DashboardKPIs

Backup S3

Page 24: Continuous Delivery med Tutum och Docker

Welcome! Frontend application

load balancer

cluster

web server 1

web server 2

Web browser

web app

Page 25: Continuous Delivery med Tutum och Docker

Welcome! Backend server

load balancer

cluster

server1

server3

server2

server4

MongoDBweb browser

web app

RabbitMQ

Page 26: Continuous Delivery med Tutum och Docker

Frontend:https://app.welcomeapp.se

Backend:https://api.welcomeapp.se

Loggar:https://papertrailapp.com/systems/WelcomeApiAutolarge/events

Welcome! Demo

Page 27: Continuous Delivery med Tutum och Docker

Test-, driftmiljöer och pipeline

Dockerhost

Jenkins

RabbitMQMongoDBdata

MongoDB

api server app web server

www web server

deploy

Alt. 1a

Page 28: Continuous Delivery med Tutum och Docker

Dockerhost

Test-, driftmiljöer och pipeline

Jenkins

RabbitMQMongoDBdata

MongoDB

api server app web server

www web server

deploy

Alt. 1a

Page 29: Continuous Delivery med Tutum och Docker

Dockerhost

Test-, driftmiljöer och pipeline

Jenkins

www stack

app stack

api stack

deploy

docker-compose

Alt. 1b

Page 30: Continuous Delivery med Tutum och Docker

mongo: image: mongo

rabbitmq: image: 'tutum.co/@tutumuser@/rabbitmq:latest'

server: build: api links: - mongo:mongo - rabbitmq:rabbitmq environment: - SE_CAGLABS_WELCOME_SERVER_ENVIRONMENT=test ports: - "8080:8080"

docker-compose.yml

Page 31: Continuous Delivery med Tutum och Docker

DockerhostDockerhost

Dockerhost

Test-, driftmiljöer och pipeline

Dockerhost

Jenkins docker container

deploy

Docker swarmAlt. 1c

Page 32: Continuous Delivery med Tutum och Docker

Heroku

Alt. 2

Page 33: Continuous Delivery med Tutum och Docker

Tutum Alt. 3

Page 34: Continuous Delivery med Tutum och Docker

TutumÄr en plattform där du kan

bygga,

deploya

och hantera containers

samt dess infrastruktur

Page 35: Continuous Delivery med Tutum och Docker

TutumSkapa noder och gruppera dem i

kluster

Page 36: Continuous Delivery med Tutum och Docker

TutumSkapa containers och gruppera dem i

stackar

Page 37: Continuous Delivery med Tutum och Docker

TutumMolnbaserad miljö, enkelt snabbt och

smidigt

Page 38: Continuous Delivery med Tutum och Docker

TutumWebbaserat, men har REST api

Page 39: Continuous Delivery med Tutum och Docker

Demo

Page 40: Continuous Delivery med Tutum och Docker

Pipeline med Jenkins

produattest

kod-repo

Utvecklar-dator

Page 41: Continuous Delivery med Tutum och Docker

Pipeline med Jenkins

Page 42: Continuous Delivery med Tutum och Docker
Page 43: Continuous Delivery med Tutum och Docker

Pipeline med Jenkins

produattest

kod-repo

Artifaktrepo

app build 42

Page 44: Continuous Delivery med Tutum och Docker

Pipeline med GoCD

produattest

kod-repo

Artifaktrepo

app build 42

Page 45: Continuous Delivery med Tutum och Docker

Pipeline med GoCD

Stort tack och mycket cred till Mikael Sennerholm (Avega) för pipelinesetup med GoCD till Tutum

Page 46: Continuous Delivery med Tutum och Docker

● Demo systemproduktionslina● Demo automatisk test● Demo lasttestning med loader.io● Skala upp service, ny nod● Skala upp service, lastbalansering