When I joined ‘V’, one of the products I am managing had huge performance issues. As the tool had became popular, the database-heavy code had caused the application and its servers to collapse onto itself. Since the product is a classic LAMP application, a decision had been made, rushed, to move everything to AWS and use a huge RDS instance for the database.
Let me pause for a second. What’s RDS ? Relational Data Service is a product from the good folks at Amazon, an implementation of MySQL as a service (as opposed to renting a virtual machine instance and installing MySQL 5.x on it). I like that approach since it frees us from having to
- install security fixes to the OS,
- bug fixes to the database engine,
- back-up the database (mostly)
- and other administrative chores.
The downside is minimal:
- Price, a RDS instance is slightly more expensive than an EC2 instance with MySQL on it
- RDS does not _yet_ support some features that we might want to use down the line (Replication, myisampack, …)
Now of course moving to an extra large RDS instance, the modern version of ‘throw hardware at the problem’, did not solve our performance issue. The dev team has been hard at work optimizing the application, getting pretty incredible performance improvements in the process. While they’re doing that, I am working on putting the right AWS based cluster in place to host the application for now and the future.
More on that later.