Understanding the Need to Scale Your Application Efficiently for AWS
The capability of your application to scale depends on its access to resources. AWS provides consistent access to its resources by using autoscaling, which is a combination of automation and scaling. Monitors generate events that tell services when an application requires additional resources, such as servers, to maintain a constant level of output so that the user doesn’t see any difference between a light and a heavy load.
Even though the real-world performance of autoscaling may not provide precisely this level of consistency, the automation does work well enough so that most users won’t complain from an AWS perspective.
A problem with RDS, or any other database service for that matter, is that resources include data. No matter what you do, throwing additional resources at data management issues will only go so far. At some point, the sheer weight of the data becomes an encumbrance. Searching through several million records to find the one record you need takes time, no matter how many servers you allow and how much memory you provide. With this time factor in mind, you need to consider these issues when working with AWS to create an application that scales well when large amounts of data are involved:
- Use the right RDBMS: Amazon makes a number of database managers available. Even though your first inclination is to use the database engine that you use most commonly in your organization now, speed considerations may trump consistency in this case. If you want your application to scale well, you may need to choose an RDBMS that provides optimal speed in a cloud environment.
- Organize the data using best practices: The use of best practices gives you a good starting point to ensure that your application scales well. A best practice comes into play when experimentation shows that it usually has good results.
- Experiment to find good RDBMS optimizations: Knowledge resources usually focus on the general case because no one can possibly know about your specific needs. However, trade-offs occur when you use various general organizational and optimization techniques, and you need to consider the price of each trade-off when compared to application speed and the application’s capability to scale well under load. In some cases, relying on a best practice that works well in general may not produce the desired result in your specific case.
- Play with AWS to determine whether additional resources will help: AWS may really be able to help you overcome some speed and scaling issues by allowing you access to resources that you wouldn’t normally have. The AWS documentation offers some clues as to when allocating additional resources (and spending more to do it) will yield a desired result. Unfortunately, the only way to verify that using additional AWS resources will provide acceptable gain for the price paid is to experiment and monitor the results of testing carefully.