Amazon Web Services has made it extremely easy and cost effective for anyone to own computing infrastructure on the Cloud as a service and launch applications that can be made highly scalable. We have been working on AWS now for more than 2 years and have had situations where our application is spread across 50 AWS EC2 instances. As a project manager and a technical head one of the main concerns that I have is the constant maintenance that the production environment requires. Fortunately I have a very good System Administrator who comes up with good ideas on how to manage this vast production setup.

What do we use for application, platform and development methodologies?
1. We use Github as our Version Control System
2. We use Python and Django in our application
3. We use MySQL as our Database
4. The AWS EC2 platform we use has Micro Ubuntu Instances (Approximately 55)
5. We follow Agile Development

How do we manage to update all the instances for the latest code release?
We use Python-Fabric to automatically SSH to the instances and perform daily Git Pulls and other maintenance

How do we manage to push MySQL database updates for our daily update releases?
We use Python-Fabric to automatically SSH and run our MySQL Alter commands on the database on each instance for each update release

What is Python-Fabric?
Fabric ( is a Python library to SSH to an instance and automate the process of running commands on the instance. Amit, will shortly come out with examples on how to use Fabric in the production environment EC2 management using Python Fabric

Follow on Google+ LinkedIn Updated on June 7, 2013 at
Post your comment

All the fields must be filled out before posting.