It’s a great time to be a developer. Also a confusing time. We are at a point where there are dozens of legit places that forward-thinking developers can run their apps in the cloud. I’ll be taking a look at a few different types of applications in a brief series of “where the heck do I host my …” blog posts. My goal with this series is to help developers wade through the sea of providers and choose the right one for their situation. In this first one, I’m looking at Node.js. It’s the darling of the startup set and is gaining awareness among a broad of developers. It also may be the single most supported platform in the cloud. Amazing for a technology that didn’t exist just a few years ago (although some saw the impending popularity explosion coming).
Instead of visualizing the results in a giant matrix that would be impossible to read and suffer from data minimization, I’m going briefly describe 11 different Node providers and assess them against the following criteria:
Versions of Node.js supported.
Supported capabilities.
Commitment to the platform.
Complementary services offered.
Pricing plans.
Access to underlying hosting infrastructure.
API and tools available.
Support material offered.
The providers below are NOT ranked. I made it alphabetical to ensure no perception of preference.
Amazon Web Services
AWS offers Node.js as part of its Elastic Beanstalk service. Elastic Beanstalk is a container system that makes it straightforward to package applications and push to AWS in a “PaaS-like” way. Developers and administrators can still access underlying virtual machines, but can still act on the application as a whole for actions like version management.
Versions
Capabilities
Commitment
Add’l Services
Min version is 0.8.6, max version is 0.8.21 (reference)
Load balancing, versioning, WebSockets, health monitoring, Nginx/ Apache support, global data centers
Not a core focus, but seem committed to diverse platform support. Good SDK and reasonable documentation.
Integration with RDS database, DNS services
Pricing Plans
Infrastructure Access
API and Tools
Support
No cost for Beanstalk apps, just costs for consumed resources
Can use API, GUI console, CLI, and direct SSH access to VM host.
Fairly complete API, Git deploy tools
Active support forums, good documentation, AWS support plans for platform services
AppFog
AppFog runs a Cloud Foundry v1 cloud and was recently acquired by Savvis.
Versions
Capabilities
Commitment
Add’l Services
Min version is 0.4.12, max version is 0.8.14 (reference)
Load balancing, scale up/out, health monitoring, library of add-ons (through partners)
Acquired Nodester (Node.js provider) a while back; unclear as to future direction with Savvis
Add-ons offered by partners; DB services like MySQL, PostgreSQL, Redis; messaging with RabbitMQ
Pricing Plans
Infrastructure Access
API and Tools
Support
Free tier for 2GB of memory and 100MB storage; Up to $720 per month for SSL, greater storage and RAM (reference)
No direct infrastructure access, but tunneling supported for access to application services
Appears that API is used through CLI only; web console for application management
Support forums for all users, ticket-based or dedicated support for paid users
CloudFoundry.com
Cloud Foundry, from Pivotal, is an open-source PaaS that can run in the public cloud or on-premises. The open source version (cloudfoundry.org) serves as a baseline for numerous PaaS providers including AppFog, Tier 3, Stackato, and more.
Versions
Capabilities
Commitment
Add’l Services
Default is 0.10.x
Load balancing, scale up/out, health monitoring, management dashboard
Part of many supported platforms, but regular attention paid to Node (e.g. auto-reconfig).
DBs like PostgreSQL, MongoDB, Redis and MySQL; App services like RabbitMQ
Pricing Plans
Infrastructure Access
API and Tools
Support
Developer edition has free trial, then $0.03/GB/hr for apps plus price per svc.
No direct infrastructure access, but support for tunneling into app services.
Use CLI tool (cf), several IDEs, build tool integration, RESTful API
Support documents, FAQs, source code links.services provided Pivotal
dotCloud
Billed as the first multi-language PaaS, dotCloud is a popular provider that has also open-sourced a majority of its framework.
Versions
Capabilities
Commitment
Add’l Services
v0.4.x, v0.6.x, v0.8.x, and defaults to v.0.4.x. (reference)
WebSockets, worker services support, troubleshooting logs, load balancing, vertical/horizontal scaling , SSL
Not a lot of dedicated tutorials (compared to other languages), but great Node.js support across platform services.
Databases like MySQL, MongoDB, and Redis; Solr for search, SMTP, custom service extentions
Pricing Plans
Infrastructure Access
API and Tools
Support
No free tier, but pay per stack deployed
No direct infrastructure access, but can SSH into services and do Nginx configurations
CLI used to manage applications as the API doesn’t appear to be public; web dashboard provides monitoring and some configuration
Documentation, Q&A on StackOverflow, and a support email address.
EngineYard
Longtime PaaS provider well known for Ruby on Rails support, but also hosts apps written in other languages. Runs on AWS infrastructure.
Versions
Capabilities
Commitment
Add’l Services
0.8.11, 0.6.21 (reference)
Git integration, WebSockets, access to environmental variables, background jobs, scalability
Dedicated resource center for Node, and a fair number of Node-specific blog posts
Chef support, dedicated environments, add-ons library, hosted databases for MySQL, Riak, and PostgreSQL.
Pricing Plans
Infrastructure Access
API and Tools
Support
500 hours free on signup, then pay as you go.
SSH access to instances, databases
Offers rich CLI, web console, and API.
Basic support through ticketing system (and docs/forums), and paid, premium tier.
Heroku
Owned by Salesforce.com, this platform has been around for a while and got started supporting Ruby, and has since added Java, Node.js, Python and others.
Versions
Capabilities
Commitment
Add’l Services
From 0.4.7 through 0.10.15 (reference)
Git support, application scaling, worker processes, long polling (no WebSockets), SSL
Clearly not the top priority, but a decent set of capabilities and services.
Heroku Postgres (database-as-a-service), big marketplace of add-ons
Pricing Plans
Infrastructure Access
API and Tools
Support
Free starter account, then pay as you go.
No raw infrastructure access.
CLI tool (called toolbelt), platform API, web console
Basic support for all customers via dev center, and paid support options.
Joyent
The official corporate sponsor of Node.js, Joyent is an IaaS provider that offers developers Node.js appliances for hosting applications.
Versions
Capabilities
Commitment
Add’l Services
0.8.11 by default, but developers can install newer versions (reference). Admin dashboard shows that you can create Node images with 0.10.5, however.
Server resizing, scale out, WebSockets
Strong commitment to overall platform, less likely to become a managed PaaS provider
Memcached support, access to IaaS infrastructure, Manta object storage, application stack templates
Pricing Plans
Infrastructure Access
API and Tools
Support
Free trial, and pay as you go
Native infrastructure access to servers running Node.js
Restful API for accessing cloud servers, web console. Debugging and perf tools for Node.js apps.
Self service support for anyone, paid support option
Modulus.io
A relative newcomer, these folks are focused solely on Node.js application hosting.
Versions
Capabilities
Commitment
Add’l Services
0.2.0 to current release
Persistent storage access, WebSockets, SSL, deep statistics, scale out, custom domains, session affinity, Git integration
Strong, as this is the only platform the company is supporting. Offers a strong set of functional capabilities.
Built in MongoDB integration
Pricing Plans
Infrastructure Access
API and Tools
Support
Each scale unit costs $0.02 per hour, with separate costs for file storage and DB usage
No direct infrastructure access
Web portal or CLI
Basic support options include email, Google group, Twitter
Nodejitsu
The leading pure-play Node.js hosting provider and a regular contributor of assets to the community.
Versions
Capabilities
Commitment
Add’l Services
0.6.x, 0.8.x (reference)
GitHub integration, WebSockets, load balancer, sticky sessions, versioning, SSL, custom domains, continuous deployment
Extremely strong, and proven over years of existence
Free (non high traffic) databases via CouchDB, MongoDB, Redis
Pricing Plans
Infrastructure Access
API and Tools
Support
Free trial, free hosting of open source apps, otherwise pay per compute unit
No direct infrastructure access
Supports CLI, JSON API, web interface
IRC, GitHub issues, or email
OpenShift
Open source platform-as-a-service from Red Hat that supports Node.js among a number of other platforms.
Versions
Capabilities
Commitment
Add’l Services
Supports all available versions
(Auto) scale out, Git integration, WebSockets, load balancing
Dedicated attention to Node.js, but one of many supported platforms.
Databases like MySQL, MongoDB, PostgreSQL; additional tools through partners
Pricing Plans
Infrastructure Access
API and Tools
Support
Three free “gears” (scale units), and pay as you go after that
SSH access available
Offers CLI, web console
Provides KB, forums, and a paid support plan
Windows Azure
Polyglot cloud offered by Microsoft that has made Node.js a first-class citizen on Windows Azure Web Sites.
Versions
Capabilities
Commitment
Add’l Services
0.6.17, 0.6.20, and 0.8.4 (reference)
Scale out, load balancing, health monitoring, Git/Dropbox integration, SSL, WebSockets
Surprisingly robust Node.js development center, and SDK support
Integration with Windows Azure SQL Database, Service Bus (messaging), Identity, Mobile Services
Pricing Plans
Infrastructure Access
API and Tools
Support
Pay as you go, or 6-12 month plans
None for apps deployed to Windows Azure Web Sites
IDE integration, REST API, CLI, PowerShell, web console, SDKs for other Azure services.
Forums and knowledge base for general support, paid tier also available
Summary
This isn’t a complete list of providers, but hits upon the most popular ones. You’ve really got a choice between IaaS providers with Node.js-friendly features, pure-play Node.js cloud providers, and polyglot clouds who offer Node.js as part of a family of supported platforms. If you’re deploying a standalone Node.js app that doesn’t integrate with much besides a database, then the pure-play vendors like Nodejitsu are a fantastic choice. If you have more complex systems made up of components written in multiple languages, or requiring advanced services like messaging or identity, then some of the polyglot clouds like Windows Azure are a better choice. And if you are trying to compliment your existing cloud infrastructure environment by adding Node.js applications, then using something like AWS is probably your best bet.
Thoughts? Any favorites out there?
Filed under: Cloud, Cloud Foundry, Node.js, Tier 3 Web Fabric, Windows Azure