@

Allen Madsen

Sr. Engineer @ Cinch Financial

Previously @ Gazelle

github.com/blatyo

@blatyo

Stats

  • 4 Stacks
  • 34 Images
  • 32 Apps
  • 150 Services (48 in production)
  • 679 Containers (~400 in production)
  • 17 Node Clusters
  • 57 Nodes

Naming Conventions

Convention Examples
Stack env tst
stg
prd
ops
Service env-app-process(-color) tst-rex-web-blue
tst-rex-web-green
tst-wam-worker
tst-bam-poller
Load Balancer env-group-lb tst-open-lb
tst-gen-lb
Cluster env-group-instancetype tst-open-m3large
tst-private-m3large
CName env-app.cns.gazelle.com tst-rex.cns.gazelle.com

Images

(hub)

Git,

dev

master

latest

feature

release

20160506130744

20160607140845

feature

tst (manual)

20160506130744

20160607140845

prd & stg (manual)

tst (auto)

Env

Docker, &

Network Setup

VPC

lb

lb

lb

restricted-x

restricted-y

open

lb

app

app

app

app

app

app

private

data

rds

rds

rds

ec

lb

app

app

app

app

buy

sell

lb

gen

wh

y

x

sell

buy

gen

Monitoring & Logging

Node A

Node B

app

app

app

app

app

app

app

Monitoring Dashboard

Gazelle Extras

Docker Cloud Backup

  1. Listens to Docker Cloud events via the socket API
  2. When a service or stackfile is updated, create a backup in a versioned S3 bucket

Docker versions your app, but not its config.

Gazelle Deploy

  1. In slack: gz deploy env app tag
  2. Bot starts deploy
    1. Find all env-app-* services
    2. Update image to gazelle/app:tag
    3. ​Deploy env-app-migrate if present and waits for it to exit successfully
    4. Deploy env-app-web
      • If env-app-web-green or env-app-web-blue, automatically does a blue green deploy
    5. Deploy other env-app-*
    6. If anything fails, rolls back to previous version

Docker deploys processes, not applications.

Questions?

Docker & Gazelle

By blatyo

Docker & Gazelle

  • 1,045