Robust Application Development, and Distribution
BinaryFusion fuses application with virtual machine images to create isolated, robust, and reliable machine images that can be used both in development and production.
Problems in traditional physical (or p2v) application deployment
- in-place applications updates are risky
- os updates are difficult without disrupting a running application
- application rollbacks are difficult
Problems with Platform as a Services
- Paas frameworks will always lag behind Iaas innovations.
- Iaas providers will likely evolve and make many generic Paas a paasing fad.
- prohibitive (availablibity, expense) to create private clouds
- applications updates can still break a working deployment
- limited regions per provider [dg: is this AWS vs PAAS argument?]
- Deployment script (e.g. CloudFront)
- Stack script (e.g. Elastic Beanstalk)
- Instance script (e.g. BinFusion)
- Instance preparation script (e.g. Puppet, Chef)
Opportunities with cloud computing
- cloud computing makes deploying a brand-new application fast, easy, and cheap
- virtual machine images can be re-created each update
- os is always up to date
- can replace the entire working stack each update, no risky deployments
- the new stack can be tested before live deployment
- live migration step only involves re-pointing a load balancer
- rollback is easy
- How is a/b testing done
- Staging and Test use different AWS credentials
- high scale of continuous deployment (10 to 50 per day)
We need good tools that take this approach!
- a good tool should provision and create an AMI with one command
- a good tool should provide good default builds
- a good tool should make deployment fun
BinaryFusion is a Ruby application that can be installed via Ruby gems.
$ gem install binfuse $ cd my/project $ binfuse init
init command will ask you for your AWS credentials,
and what kind of project you are running.
- Create a project that contains a
- Build an image with
After an new image has been fused it is ready to be attached and run in AWS.