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 zoom.it, and it needs a new home

Zoom.it?

  • 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"

http://martinfowler.com/articles/microservices.html

What does that really mean?

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

zoomhub-importer

  • 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

Etcd

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

Fleet

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!

Thanks!

developer+ at rackspace

this deck | github

@kenperkins