Building a Platformas-a-Service with
Docker and Node.js
@kevinswiber
You may know…
“We all live every day in
virtual environments,
defined by our ideas.” Michael Crichton
The enterprise
cometh…
Design Goals
•
•
•
•
•

Process isolation
Rapid deployment
Ops visibility
Elastic scaling
Developer experience
Characteristics
•
•
•
•
•
•
•
•
•

Transparent scale
Developers use their own tools
Access control
Status monitoring
Task scheduling
Release versioning / rollback
Zero-downtime deployments
Built-in analytics
Client SDKs for app developers
Components
•
•
•
•
•
•

User Management
Routing
Logging
Application Lifecycle
Add-on Support
Monitoring
Docker Features
•
•
•
•

Images
Community
Registry
Containers
Personal Platforms
Flynn

Deis
Dokku
borealis

http://github.com/borealis-io/boreal
Borealis
Components
•
•
•
•

Routing
Logging
Host API
Deployment
Why use Node?
•
•
•
•
•

Event loop
HTTP
JSON
Rich module ecosystem
We know it, and so do
you.
Challenges
•
•
•
•

Routing between containers
SSH WTF???
$ man iptables
Docker API quirks
Future Work
•
•
•
•

User Management
Application Lifecycle
Better deploy strategy
Scale out
Thanks!
https://github.com/borealis-io/borealis
Current contributors:
@kevinswiber
@mdobs
@AdamMagaluk

Building a Platform-as-a-Service with Docker and Node.js

Editor's Notes

  • #2 ``
  • #3 You may know some existing public Platform as a Service providers. Platforms as a Service offer application hosting and often integrated deployment features. Heroku, for instance, integrates with the git version control system, allowing you to `git push heroku master` for deployment. Multiple languages and platforms are often supported. Java, Node.js, PHP, Ruby, Python, C#, and even Erlang in some cases.
  • #4 Platforms-as-a-Service make use of a technique called application virtualization. This means apps are run in a sandboxed environment with parameters such as memory usage, disk space, CPU, and bandwidth limits.
  • #5 Open source enterprise PaaS offerings are beginning to emerge. This enables PaaS scenarios inside the firewall and running in data centers that have had years of million dollar investments.
  • #9 Docker - an open source project to pack, ship and run any application as a lightweight container. Docker introduces the concept of a container, an abstraction over lower level OS application virtualization tools. Separate concerns. Web app runs in one container. Database runs in another. Docker was built by a PaaS provider named dotCloud. Over 4,000 GitHub stargazers in 4 months. Now almost 9,000.
  • #11 Overcome platform constraints (dyno limits on Heroku, paywalls). Quick deployment. Make your own rules. It’s fun.
  • #13 Code walkthrough. Demo.
  • #14 We used Node for all the core components.