Have you heard the fairy tale that application performance on the cloud is automatically optimized, without any effort from developers or administrators?
Too many people believe it’s reality, and not a fairy tale.
I blame the confusion on early cloud hype, when “elasticity” was often stated as something related to cloud performance. Although elasticity does let you scale on demand by provisioning servers, or perhaps automatically these days using serverless computing technology, the elasticity concept unto itself does not guarantee well-performing applications.
There are three reasons the elasticity reality doesn’t live up to the performance fairy tale:
First, performance issues are typically with the design, development, and deployment of the application itself. Poorly performing applications do not benefit from faster virtual processors or more numerous virtual processors to the extent that some people might assume.
Application performance is engineered into the application by those who designed and built it.
Second, you’ll spend more money for less return. Although you can get marginal performance benefits for unoptimized software from cloud platforms’ virtual hardware and services, the fact is you’ll end up spending more on cloud services for a minimal return on performance gains.
There are public clouds that provide auto-scaling and auto-provisioning services, and it can be tempting to use them if application performance is an issue. But turning them on means that you’ve pushed control to the cloud provider to try to solve the applications’ intrinsic performance problems. In many instances, you’re giving the cloud provider a blank check. Some of my clients have received huge and unexpected cloud bills as a result of their use of auto-scaling and auto-provisioning services.
Third, you’ll likely forget about security and governance, which are performance killers if not done correctly. For example, if you encrypt everything per government regulations, you could reduce performance by as much as 25 percent. The good news is that was 50 percent just a few years ago. The developer of a well-engineered application will have thought through the encryption overhead in how it manages the data in the first place, to minimize the encryption price.
What to do instead. The answer is not to simply turn the performance problem over to your cloud provider. Instead, you have to do the design, development, and testing work to get the best performance.
As you “lift and shift” applications to the cloud, be sure to think about how you’ll address systemic performance issues before you move your applications to the cloud. That’s the only way.