growing up with docker: how docker and tsuru have evolved

52
Growing up with Docker How Docker and Tsuru have evolved Francisco Souza @franciscosouza

Upload: francisco-souza

Post on 16-Apr-2017

289 views

Category:

Technology


1 download

TRANSCRIPT

Growing up with Docker

How Docker and Tsuru have evolved

Francisco Souza @franciscosouza

what the f**rancisco?!

• Software Engineer, Video @ NYTimes

• Docker Captain

• One of the first developers of Tsuru PaaS

• Not-as-active-as-in-the-past open-source contributor

What is tsuru?

• Open-source PaaS created by Globo.com

• Also used by other companies

• "Real-life" oriented from day-0

What is tsuru?

% brew install tsuru

% tsuru install

...

20162015

20142013

How did we get here?

2012

20162015

20142013

How did we get here?

2012

January, 2012

• Let's move to the "cloud"

• What does that mean?

• Private cloud

20162015

20142013

2012

IaaS and PaaS

• Are these terms still a thing?

• Back in 2012, they were

• IaaS: OpenStack

• PaaS: Cloud Foundry

20162015

20142013

2012

Issues with the PaaS

20162015

20142013

2012

Issues with the PaaS

• Let's do it ourselves! :)

20162015

20142013

2012

Creating a PaaS in 2012

20162015

20142013

2012

Creating a PaaS in 2012

• No Docker

• "Let's go with VM's and investigate this container thing later"

20162015

20142013

2012

Creating a PaaS in 2012

• No Docker

• "Let's go with VM's and investigate this container thing later"

• Using Go Weekly releases

20162015

20142013

2012

Juju

• "Devops distilled"

• Zookeeper

• Bootstrap instance

Concepts• Platforms

• Platform <-> Juju Charm

• Applications

• Application <-> Juju Deployment + load balancer

• Units

• Unit <-> VM

December, 2012

20162015

20142013

2012

December, 2012

• First application deployed to production

20162015

20142013

2012

December, 2012

• First application deployed to production

• 10-minutes overhead

20162015

20142013

2012

December, 2012

• First application deployed to production

• 10-minutes overhead

• Can we do better?

20162015

20142013

2012

Containers!

• Juju supports lxc! :-D

• Juju supports lxc! :-D

• "Development" mode only :(

• Juju supports lxc! :-D

• "Development" mode only :(

• Let's do it ourselves!

March, 2013

20162015

20142013

2012https://www.youtube.com/watch?v=wW9CAH9nSLs

March, 2013

20162015

20142013

2012https://www.youtube.com/watch?v=wW9CAH9nSLs

Release the Hounds!

20162015

20142013

2012

Concepts• Platforms

• Platform <-> Docker image

• Applications

• Application <-> Docker image + hostname

• Units

• Unit <-> Docker container

December, 2013

• First application deployed to production

• Docker 0.7

• Production environment created with Docker 0.4

20162015

20142013

2012

Tsuru at Globo.com today

20162015

20142013

2012

Tsuru at Globo.com today

• ~800 apps

20162015

20142013

2012

Tsuru at Globo.com today

• ~800 apps

• ~300 deployments a day

20162015

20142013

2012

Tsuru at Globo.com today

• ~800 apps

• ~300 deployments a day

• Running internal applications and large-scale user-facing applications (~400k simultaneous users)

20162015

20142013

2012

Docker in Production

• Docker 0.4: first deployment of the production environment

• Docker 0.7: first application launched

20162015

20142013

2012

What did Docker look like?

github.com/fsouza/docker-0.7

Challenges

Challenges

• Upgrading Docker

Challenges

• Upgrading Docker

• AUFS bugs

Challenges

• Upgrading Docker

• AUFS bugs

• Integrating

Challenges

• Upgrading Docker

• AUFS bugs

• Integrating

• Scaling

Integrating with Docker

Integrating with Docker

• Remote API

Integrating with Docker

• Remote API

• go-dockerclient

Integrating with Docker

• Remote API

• go-dockerclient

• Very unstable API

• Painful upgrades

Scaling/Clustering

• No Swarm/Kubernetes/Mesos at the time

• Let's do it ourselves!

• github.com/tsuru/docker-cluster

docker-cluster

• Library for clustering Docker nodes

• Hold one instance of go-dockerclient per node

• Communicate through the remote API

Network Isolation

• VM-level

• Network-isolated application pools

Future of Tsuru & Docker• Docker shifting towards orchestration

• Less work for Tsuru :)

• Container orchestration solutions

• Docker Swarm

• Mesos/Marathon

• Kubernetes

We’re hiring!

nyti.ms/technology

@NYTDevs | developers.nytimes.com

try tsuru today!% brew tap tsuru/homebrew-tsuru

% brew install tsuru

% tsuru install

% sudo apt-add-repository ppa:tsuru/ppa

% sudo apt-get update

% sudo apt-get install tsuru-client

Growing up with Docker

Francisco Souza @franciscosouza slideshare.net/franciscosouza [email protected]

How Docker and Tsuru have evolved

github.com/tsuru