Doesn’t the cloud solve all of my performance issues?

I have heard it said many times that the cloud can solve all of our performance issues. There are two reasons why this claim is not necessarily true:

  1. A misunderstanding of the difference between performance and scalability.
  2. Performance remains application-dependent.

Performance versus scalability

The terms performance and scalability are sometimes used interchangeably, but in actuality they have very distinct differences. The important distinction between the terms is that performance is a measure of a data point, such as the response time of a request, the amount of CPU or memory that a request needs, etc. Scalability, on the other hand, measures your application’s ability to maintain its performance as load increases. In other words, if you can service a single request in 500ms, can you service 1000 requests at 500ms each or does the response time degrade as your load increases?

The cloud is primarily about scalability, not performance. It is true that you can use a very powerful virtual machine in the cloud, which may help performance, but the big deal with the cloud is that you can quickly and elastically scale out your environment to meet your user demand. The idea that deploying an existing application to the cloud will make it perform faster is simply not true. As a matter of fact, your performance may be better in your own data center where you control all aspects of the hardware on which your application is running.

My years of performance tuning and troubleshooting have taught me that we’re always at odds trying to balance performance and scalability. For example, a monolithic web application that handles a request from start-to-finish, has embedded database code, and a data model that is denormalized and maintained all in a single schema will perform better than a web application that is broken into a set of microservices with a decoupled data model. The reason is that the microservices approach may require multiple network calls from the web application to retrieve data that could be more quickly retrieved by a single query. But which one is more scalable? It will be easier to scale out a microservices application and multiple databases than a single application with a single database, but it does so by increasing deployment complexity and at the expense of performance.

Leave a Reply

Your email address will not be published. Required fields are marked *