Wednesday, March 28, 2012

Advantages of managing your servers in the Cloud


Our BitNami Cloud Hosting tool provides a simple way to manage servers in the Cloud. We use it to run most of our internal IT, including a bug tracking system, wiki, licensing application, automatic build and testing setup and a variety of other applications. In a previous post we covered multiple reasons why you may want to run your web apps in the cloud, mainly from the perspective of a developer. In this post I wanted to share some of the advantages of moving your servers to the cloud from the perspective of a system administrator.

When we were hosting our internal applications and build and test systems onsite, we took the following steps to minimize the chance that we lost our data in the event of catastrophic failure:
  • Servers with RAID disk setups
  • Daily incremental backups of application, database and source control systems
  • Full weekly offsite backups
  • Replicated critical services on remote server setup
When there was an issue in an application or in the server machine itself, at times I had to get the screwdriver and feel like Tim Allen in "Home improvement": get another server, replace hard disks, restore the application from backups, etc while my coworkers asked me "When will be the app ready?". Since we moved those servers to the cloud that has not happened again. All servers are backed up hourly using EBS snapshots, so they can be restored in one click. Short of somebody nuking the Amazon data centers, we do not need to worry about our servers being stolen, the office catching fire or hardware malfunctioning. In the process, we have reduced our monthly electricity bill by approximately $1000 and our build and the time to build and test our stacks to a fraction of the time it took.

Server cloning is another cool functionality that you get for free. Last week we encountered a problem with our customer relationship system. To fix a search-related issue the vendor recommended to run a reindexing process. Our database is quite big, so we were afraid of the impact this would have in the system. If this application had been running in a physical server in our office I would have had to try and duplicate everything in a separate staging machine and run the reindexing process to understand the impact on the system. This process would likely have taken multiple several hours and I would not even be sure the server would behave exactly as the original production one.

With our servers in the cloud, we can create an exact clone of any machine in literally seconds and test any change in minutes. Not in a staging server similar to the production server, but in an identical copy. Not only that, for this task I resized the server to have more CPU and RAM resources and run it the database reindexing process faster. Once I checked that everything was fine, I was able to confidently run the same task in the production instance. I could have chosen as well to scale down the cloned and fixed server and reassign the previous IP address to the new instance.

Some of these issues could have been solved with an onsite virtualized setup and appropriate backup & restore infrastructure. The beauty of using the cloud is that you somebody else took care already of setting that up for us at a fraction of the cost it would cost to build, host and maintain it.