The Future?
Deploying micro-service basednode apps on coreos
Ken PerkinsRackspace Developer Experience | @kenperkins
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
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!