Riker - Heroku-like app deployments for AWS
Deploy a Node.js app
First, let’s clone a sample Node.js app:
Then deploy it with just one command:
And open it in your default web browser:
That’s it! While this example deploys a sample Node.js application, any language can be deployed, since Riker uses Heroku Buildpacks. More information on exactly what buildpacks Riker supports, and how to use a custom buildpack.
Deploy a static website
First, generate a static website:
Then use the same commands as before to deploy and open the website:
Scalable, zero-downtime deployments
How It Works
Riker provides a set of best-practices and structure to your infrastructure, while leaning on as much of the features AWS provides as possible.
- Load Balancing: Elastic Load Balancer (ELB)
- Scaling: EC2 Auto-Scaling and Launch Configurations
- DNS: Route 53
- Static website hosting: Simple Storage Service (S3)
Riker also abstracts away the EC2 instances, and instead lets you only care about the application itself: code, dependencies, and configuration. Riker makes your instances easy to destroy and recreate, removing the need to ever manually provision a machine. This also makes scaling trivial. To enable this abstraction, Riker uses Docker to run your application in its own sandbox, as well as Heroku Buildpacks to deploy many different types of applications. Today, Riker also uses Dokku, but may move away from it to allow Riker to also run your application locally during development, but more about that later.
By default, Riker will deploy changes directly to existing instances.
However, with the
--scale flag, Riker will deploy changes to new instances,
and only swap old instances out for new instances when the new instances
become healthy, and the old instances no longer have active connections.
While Riker is in active development, it’s probably not ready for prime-time, unless you’re really willing to help contribute and test things out.
There are many ways you can help make Riker better:
- Use it! Report bugs, suggest features and ask questions on GitHub
- Write documentation: Anything you feel requires documentation, please feel free to write it in the Wiki. Please follow these instructions for contributing to Wikis
- Write code: Either from the Issues list, or your own idea. Pull requests are encouraged!
Let me know what you think! Look for subsequent posts about the rationale behind Riker and why it’s different than other comparable services.