Continuous Deployment With Virtualization and Cloud: An Idea for Startups
If you have a new hire, do you want him/her to push code into production system on the very first day? You may be OK with this sometimes. What if it’s a trading system with real money involved? More often than not, you come up with a different answer.
On Wednesday night, I attended a seminar organized by SDForum SAM SIG at LinkedIn headquarter. Pascal-Louis Perez and David Fortunato from Kaching.com engineering team gave a great talk on how they streamlined their software development process to the extent that they normally release 20 times a day to their production system. It’s quite a safe process that it’s OK for a new hire to push code on day one.
Time to learn how to "Google" and manage your VMware and clouds in a fast and secureHTML5 App
kaChing is an online platform that connects investors with outstanding investment managers. We are a technology driven company, which has adopted lean methodologies from the start, and has achieved a 5-minute commit-to-production cycle. Continuous deployment is a way of life and is integral to our engineering culture.
In this talk, we will present our system’s architecture and discuss our service oriented platform dubbed kawala (in the process of being open sourced on http://code.google.com/p/kawala). We will describe the mechanics of an automated release from check-in to production: clean build with full regression testing in less than 3 minutes, packaging and deployment by automatically redirecting traffic using ZooKeeper for coordination, health checks and immune system to monitor the release. Finally, we will talk about planned evolutions and the next challenges we face in our infrastructure.
The idea seems crazy but I think it represents the trend of service software. It requires extensive infrastructure and expertise to support this extreme process. Unfortunately you have to build it by yourself today because there is no integrated solution.
Technology wise, virtualization and cloud computing definitely provides good supporting infrastructure that makes the continuous deployment more flexible, controllable and cost effective. This is a very promising area for any startup to build an out of shelf product/solution that supports continuous deployment using virtualization/cloud computing.