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


Published on

Docker describes itself as "an open source project to pack, ship and run any application as a lightweight container." Learn how to use Docker to create a simple Platform-as-a-Service for packaging and deploying your Node.js applications! Introducing Borealis.

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • ``
  • 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.
  • 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.
  • 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.
  • 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.
  • Overcome platform constraints (dyno limits on Heroku, paywalls). Quick deployment. Make your own rules. It’s fun.
  • Code walkthrough. Demo.
  • We used Node for all the core components.
  • Building a Platform-as-a-Service with Docker and Node.js

    1. 1. Building a Platformas-a-Service with Docker and Node.js @kevinswiber
    2. 2. You may know…
    3. 3. “We all live every day in virtual environments, defined by our ideas.” Michael Crichton
    4. 4. The enterprise cometh…
    5. 5. Design Goals • • • • • Process isolation Rapid deployment Ops visibility Elastic scaling Developer experience
    6. 6. 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
    7. 7. Components • • • • • • User Management Routing Logging Application Lifecycle Add-on Support Monitoring
    8. 8. Docker Features • • • • Images Community Registry Containers
    9. 9. Personal Platforms Flynn Deis Dokku
    10. 10. borealis
    11. 11. Borealis Components • • • • Routing Logging Host API Deployment
    12. 12. Why use Node? • • • • • Event loop HTTP JSON Rich module ecosystem We know it, and so do you.
    13. 13. Challenges • • • • Routing between containers SSH WTF??? $ man iptables Docker API quirks
    14. 14. Future Work • • • • User Management Application Lifecycle Better deploy strategy Scale out
    15. 15. Thanks! Current contributors: @kevinswiber @mdobs @AdamMagaluk