The Future?

Deploying micro-service based
node apps on coreos

Ken Perkins
Rackspace Developer Experience | @kenperkins

Kickstarter. Seriously.

A look to the past

Microsoft shuts down, and it needs a new home

  • Multi-resolution imaging as a service
  • 1.2 million images
  • 1.2 billion image tiles
  • All hosted on Azure

I got 5 million problems,
but node aint one

  • top ~5k images resulted in
    ~4.2m image tiles to migrate

The monolith

Or how I used to solve this problem

Data migration problems

  • Identifying what to migrate
  • pause/resume
  • auto retry
  • capturing failed transfers
  • statistics (i.e. items/sec, etc)
  • ...

Microservices Definition

"The microservice architectural style [1] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API"

What does that really mean?

Small, lightweight apps, designed to do a single task well


  • zh-populate
  • zh-import-blobs
  • zh-upload-dzis
  • zh-stats
  • redis*

But how do we now deploy, configure, and coordinate multiple apps?

Enter Docker

Docker is an open source project to pack, ship and run any application as a lightweight container

CoreOS & CoreOS Clusters

warehouse-scale computing on top of a minimal, modern operating system


A highly-available key value store for shared configuration and service discovery


fleet ties together systemd and etcd into a distributed init system

Deploy Some Services

Redis, Populate, and Stats, plus the heavy lifters

5 Systemd services

Demo + fleetctl

Schedule & Start the services

Not Covered

  • Persistent Data Stores
  • Load Balancing & HA
  • Failover
  • ...

Final Thoughts

  • build small, simple services
  • use coreos to scale horizontally
  • experiment & learn!


developer+ at rackspace

this deck | github