The cloud changes the application performance management picture, depending on how much or how little data is managed through cloud services. What are the implications of the broadening use of the cloud on application performance issues?
One of the promises of the "cloud" is that organizations should no longer have to worry about application performance. The thinking here is that the service provider maintains the expertise in how to best field and manage applications so that they are available and performing as expected. There is a lot of truth to this – using cloud-based technologies can help organizations field high-performance applications by making scaling and performance management the responsibility of the provider. However, there are a number of concerns to take into consideration, and these vary based on the type of cloud providers being utilized.
For Software as a Service (SaaS) applications and applications based on Platform as a Service (PaaS) providers, the chief concerns lie with the vendor providing the service as it is their responsibility to ensure application performance meets acceptable levels. Many cloud vendors are reticent to allow prospective customers to conduct performance testing on their systems because of the potential impact to other customers hosted on the same infrastructure. In the absence of the ability to verify performance characteristics, organizations looking to deploy applications on these technologies should be sure to negotiate an acceptable Service Level Agreement (SLA) so that if the provider fails to live up to their performance obligations, there are appropriate contractual remediation steps in place. Also, when compared to performance analysis and testing tools available for applications deployed on dedicated infrastructure, the customer-facing diagnostic tools available to help users debug issues with perceived performance are less mature.
For systems deployed using Infrastructure as a Service (IaaS) technologies, organizations have more fine-grained control over the environment. The ability to quickly provision additional servers can be very beneficial for addressing application performance issues – especially those related to unexpected or peak loads. One concern, however, is how the underlying application is architected and if the application is built in such a way that it can benefit from additional servers. This can be especially challenging for applications relying on monolithic relational databases because those systems often have to "scale up" rather than "scale out." To best take advantage of IaaS technologies, these applications might have to be restructured to rely on other data storage technologies or approaches – such as database sharing or NoSQL database engines – that are better suited to scaling linearly when provided with additional resources.
Traditional application performance management tools can be used to track and optimize the performance of applications deployed on IaaS technologies, but many do not scale well for gathering data from large numbers of servers. Custom scripts can be used to collect and manage some of this performance data and there are emerging toolsets that are designed specifically to help monitor and tune the performance of applications deployed on top of cloud technologies.
Cloud-based technologies have a lot to offer for organizations looking to deploy high-performance applications. However, before relying on these technologies, organizations should understand both the technical concerns associated with cloud-based architectures as well as the required contractual controls that must be put in place to address potential performance issues.
This was first published in September 2012