docker 對傳統 devops 工具鏈的衝擊 (docker's impact on traditional devops toolchain)

76
William Yeh Architect @ Gogolook 2015-12-10

Upload: william-yeh

Post on 09-Jan-2017

16.685 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

William YehArchitect @ Gogolook

2015-12-10

Page 2: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Page 3: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Page 4: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Page 5: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Page 6: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Page 7: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

Albert Camus

Page 8: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Page 9: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Page 10: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Page 11: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Page 12: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

1. How to recreate your system2. How to safely change your system3. When something has gone wrong

Do you have basic infrastructure? (2015-11-18)http://www.robustperception.io/do-you-have-basic-infrastructure/

Page 13: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

1. How to recreate your system2. How to safely change your system3. When something has gone wrong

private network

CDN LB API servers DB servers

1.1 - 1.2 -

Page 14: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

1. How to recreate your system2. How to safely change your system3. When something has gone wrong

private network

CDN LB API servers DB servers

public network

.1 -

.2 -

Page 15: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

1. How to recreate your system2. How to safely change your system3. When something has gone wrong

private network

CDN LB API servers DB servers

public network

detection recovery diagnosis

Page 16: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

1. How to recreate your system2. How to safely change your system3. When something has gone wrong

private network

CDN LB API servers DB servers

1.1 -

1.2 -

Page 17: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

hardware

bare metal

OS

runtime

app

VM

hardware

OS

runtime

app

hypervisor

Page 18: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

VM

hardware

OS

runtime

app

hypervisor

Page 19: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

VM

hardware

OS

runtime

app

hypervisor

Docker

hardware

OS

runtime

app

hypervisor

container

Page 20: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

Docker

hardware

OS

runtime

app

hypervisor

container

We know:• Container is faster than VM• Container is lightweight• Dockerized app anywhere…

What if…• An OS runs only containers?

Page 21: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Page 22: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

Docker

hardware

OS

runtime

app

hypervisor

container CoreOSRancherOSRed Hat AtomicVMware PhotonSnappy Ubuntu CoreWindows Nano Server

Page 23: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

Docker

hardware

OS

runtime

app

hypervisor

container

Container per VM

hardware

OS

runtime

app

hypervisor

container

Page 24: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

Container per VM

hardware

OS

runtime

app

hypervisor

container Intel Clear Linuxhttp://www.ithome.com.tw/news/96119

Hyperhttps://hyper.sh/

Page 25: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

Container per VM

hardware

OS

runtime

app

hypervisor

container

Unikernel

hardware

library OS

app

hypervisor

unikernelapp stack

Page 26: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

Unikernel

hardware

library OS

app

hypervisor

unikernelapp stack

Unikernels are constructed by using “library operating systems,” from which the developer selects only the minimal set of services required for an application to run.

Page 27: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

Unikernel

hardware

library OS

app

hypervisor

unikernelapp stack

MirageOShttps://mirage.io/

Boxfusehttps://boxfuse.com/

ClickOSCliveHaLVMLINGRump KernelsOSv

Page 28: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

Unikernel image

Immutable infrastructure

Page 29: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

1. How to recreate your system2. How to safely change your system3. When something has gone wrong

private network

CDN ELB API servers DB servers

1.1 -

1.2 -

Page 30: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

service consolidation

resource isolation

native app

VM

container per VM

unikernel

Docker

Page 31: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

1. How to recreate your system2. How to safely change your system3. When something has gone wrong

private network

CDN LB API servers DB servers

1.1 -

1.2 -

Page 32: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

private network

API servers

JDK

app server (Tomcat, …)

app (jar, war, …)

Node.js runtime

npm

app source

Python runtime

pip

uWSGI/Gunicorn

app source

Page 33: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

private network

DB servers

JDK

Elasticsearch

JDK

CassandraMongoDBMySQL

dependenciesdependencies

Page 34: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

private network

LB

HAProxynginx

AWS ELB dependenciesdependencies

Page 35: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

JDK

app server (Tomcat, …)

app (jar, war, …)

Node.js runtime

npm

app source

Python runtime

pip

uWSGI/Gunicorn

app source

JDK

Elasticsearch

JDK

CassandraMongoDBMySQL

dependenciesdependencies

HAProxynginx

AWS ELB dependenciesdependencies

Page 36: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Page 37: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

JDK

app server (Tomcat, …)

app (jar, war, …)

Node.js runtime

npm

app source

Python runtime

pip

uWSGI/Gunicorn

app source

JDK

Elasticsearch

JDK

CassandraMongoDBMySQL

dependenciesdependencies

HAProxynginx

AWS ELB dependenciesdependencies

DevOps tools• Configuration management• Build system• Deployment pipeline• Continuous integration

Page 38: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

JDK

app server (Tomcat, …)

app (jar, war, …)

Node.js runtime

npm

app source

Python runtime

pip

uWSGI/Gunicorn

app source

JDK

Elasticsearch

JDK

CassandraMongoDBMySQL

dependenciesdependencies

HAProxynginx

AWS ELB dependenciesdependencies

Docker

runtime

app

image

immutable image versioned image dev/prod parity

Dockerfiledocker builddocker pushdocker pull

Page 39: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

1. How to recreate your system2. How to safely change your system3. When something has gone wrong

private network

CDN ELB API servers DB servers

1.1 -

1.2 -

Page 40: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

uniform

Docker

Config management will only be used to install Docker, an orchestration system, configure PAM/SSH auth, and tune OS sysctl values.

traditional DevOps toolchain

tedious

… Basically anything not having to do with app deployment.https://blog.containership.io/containers-vs-config-management-e64cbb744a94

Page 41: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

1. How to recreate your system2. How to safely change your system3. When something has gone wrong

private network

CDN LB API servers DB servers

1.1 -

1.2 -

Page 42: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

private network

API servers

As the number of machines grows…how to ensure better allocation?

Page 43: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Page 44: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Page 45: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

pets cattle

Page 46: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

pets cattle

naming?

Page 47: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

pets cattle

dispensable?

Page 48: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

pets cattlenaming?

dispensable?

Page 49: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

pets cattle

PaaSHadoop MapReduceAWS LambdaAWS KinesisGoogle Dataflow

Page 50: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

private network

API servers

As the number of machines grows…how to ensure better allocation?

Page 51: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

Traditional app

OS

runtime

app

tight interaction

hostresources

pets

Page 52: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

https://prezi.com/e7sdy9rdujgp

Page 53: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

private network

API servers

better mobilitycattle

Page 54: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

private network

API servers

even better mobilitycontainer

cattleindependent of

underlying machines

Page 55: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

cattle

Docker Swarm Mesos Kubernetes

allocation, orchestration

Page 56: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

1. How to recreate your system2. How to safely change your system3. When something has gone wrong

private network

CDN ELB API servers DB servers

1.1 -

1.2 -

Page 57: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

Docker SwarmMesosKubernetes

Config management will only be used to install Docker, an orchestration system…

traditional DevOps toolchain

… Don’t assume too much about underlying infrastructure.

cattlepets

Page 58: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Page 59: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

cattle

Long Running Services • Aurora• Marathon• Singularity • SSSP

Batch Scheduling • Chronos• Jenkins• JobServer

Big Data Processing • Cray Chapel• Dpark• Exelixi• Hadoop• Hama• MPI• Spark• Storm

Data Storage • Cassandra• Elasticsearch• Hypertable

Mesos framework

Page 60: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

cattle

Mesos

Page 61: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

1. How to recreate your system2. How to safely change your system3. When something has gone wrong

.1 -

.2 -

private network

CDN LB API servers DB servers

public network

Page 62: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

private network

LB API servers DB servers

• Rolling upgrade• Blue/green deployment• Canary deployment

Traditional app

• in-place update • immutable infra

Page 63: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

private network

API servers

immutable imagescontainer

cattleindependent of

underlying machines

Page 64: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

cattle

Docker Swarm Mesos Kubernetes

allocation, orchestration

Page 65: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

kubectl rolling-update my-nginx --image=nginx:1.9.1

• Rolling upgrade

• Canary deployment• use label

Kubernetes

Page 66: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

Mesos

http://blog.qubit.com/opensourcing-bamboo-automated-mesos-marathon-load-balancing http://www.slideshare.net/johnadowns/making-developers-happier-with-mesos-docker-and-marathon

Page 67: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

Universal Control Plane

https://www.docker.com/universal-control-plane

Page 68: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

public network

1. How to recreate your system2. How to safely change your system3. When something has gone wrong

private network

CDN ELB API servers DB servers

.1 -

.2 -

Page 69: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

Docker SwarmMesosKubernetes

traditional DevOps toolchain

Consider the benefits: • immutable infrastructure • automated allocation • automated orchestration

cattlepets

Page 70: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

private network

CDN LB API servers DB servers

Key Takeaways

Page 71: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

1. How to recreate your system2. How to safely change your system3. When something has gone wrong

Do you have basic infrastructure? (2015-11-18)http://www.robustperception.io/do-you-have-basic-infrastructure/

Page 72: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

service consolidation

resource isolation

native app

VM

container per VM

unikernel

Docker

Immutable infrastructure

Page 73: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

uniform

Docker

Config management will only be used to install Docker, an orchestration system… anything other than app deployment.

traditional DevOps toolchain

tedious

Page 74: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

Docker SwarmMesosKubernetes

traditional DevOps toolchain

… Don’t assume too much about underlying infrastructure.

cattlepets

Page 75: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

cattle

Docker Swarm Mesos Kubernetes

allocation, orchestration

Page 76: Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

http://s

end.wtf/

docker20

15