service discovery for continuous delivery with docker
DESCRIPTION
This talk was given at Docker Meetup Amsterdam on 10 July 2014. It describes the why, what and how we are using Docker for continuous delivery at magnetic.io and how it integrates into the platform we are building.TRANSCRIPT
So what’s magne6c.io?- Next-gen e-commerce platform aimed at the
enterprise market
- Integrate Continuous Delivery from the ground up
- Cocktail of PaaS, containers and micro services
Four whys- Why Docker? => Because encapsulation.
- Why encapsulation? => Because micro services.
- Why micro services? => Because Continuous Delivery.
- Why continuous delivery? => Because time to market is king.
What’s out there already- Skydock (https://github.com/crosbymichael/skydock)
- Deis (http://deis.io/)
- Docker-Discover (https://www.npmjs.org/package/docker-discover
- Thalassa (https://github.com/PearsonEducation/thalassa-aqueduct)
Pre-‐alpha stack
AWS / On premises
CoreOS
ETCD
Docker
CoreOSCoreOS
DockerDocker DockerDockerDocker DockerDockerDocker
Hazelcast
DockerDockerVert.x DockerDockerVert.x DockerDockerVert.x
How do we do it?!██╗ ██╗ █████╗ ███╗ ███╗██████╗ ██║ ██║██╔══██╗████╗ ████║██╔══██╗ ██║ ██║███████║██╔████╔██║██████╔╝ ╚██╗ ██╔╝██╔══██║██║╚██╔╝██║██╔═══╝ ╚████╔╝ ██║ ██║██║ ╚═╝ ██║██║ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ version 1.1 by magnetic.io !==> Starting cluster bootstrap... ==> info: Hazelcast port => 5701 ==> info: Vertx Eventbus port => 5702 ==> info: ETCD host => 10.0.42.1 ==> info: ETCD port => 4001 ==> info: ETCD base path => /vamp/bootstrap ==> info: Public IP => 172.17.8.103 ==> info: Physical hostname => core-03 ==> info: Container hostname => f9dc53532ff4 ==> info: Vertx module to run => vamp-agent-0.1.0 ==> info: Connecting to ETCD ==> info: Connected to ETCD at 10.0.42.1:4001 ==> info: Vamp Bootstrap will try to cluster with started remote host 172.17.8.101 ==> info: Starting Vamp Bootstrap with module vamp-agent-0.1.0 ==> info: Waiting for Vamp Bootstrap to come online... ==> info: Vamp Bootstrap was started with PID 24 and public IP 172.17.8.103
Vamp- vamp bootstrap
- vamp controller
- vamp agent
- vamp metrics
- vamp docker
- vamp discovery
- vamp templates
- vamp dashboard
- etc. etc. etc…
Dockerfile<name><version><port>
ENV SERVICE hello:0.0.2:8080, hello-admin:0.0.2:8081
the ‘business end’ metrics & health
Events!
Docker daemon
Service Managerlistener
etcd
lbmonitor metrics
My Container
start
load balancer
update
start pingstream
read/update
dashboard
1
2
3
4
56
start
Demo ?me
Challenges- Splitting services into multiple containers vs.
multiple actors in one container
- When scaling out, how do you determine which services should be scaled?
Elephants…- Persistent storage & databases
- Container & micro services life cycle management
- Transactional integrity across services
Ques?ons?
we are hirin
g!