This is with security one of the most controversial topics. Performance is both measurable, therefore objective, and perceived, therefore subjective. The pure performance of an application or process is often the result of a set of interdependent components. Even if one imagines being able to isolate the performance of an application to a single server, one sees by looking at the figure below, that each of the layers has an impact on the objective performance of the application.
Let’s take a simple example. Imagine that you are hosting a file server in your data center. Each user stores the information they need to do their daily work. The performance of access to each of these files is limited by the speed of the network, by the hard disks on which the files are stored and by the processor power that must interpret and service each access request. So we can imagine that if a very large number of users want to access their files at the same time, the server, disks, and network will be put to use and the access times will increase.
With the growth of the files, you quickly arrive at saturation of your storage bays. It is then necessary to find a faster solution than ordering additional hard disks. You then decide to store the files of your users in the cloud. And there, the performance is collapsing because if your storage and the power of the servers have increased dramatically, your network has become the bottleneck. You decide that the performance of the cloud does not live up to your expectations.
Let’s imagine that you have a very data-intensive application that your users have access to in client-server mode. Only the relatively small results are served to the customers. On the other hand, obtaining these results requires a large volume of source data and a high computational power. As the data grows and user requests complexity, the performance deteriorates. You then decide to migrate the application to the cloud by taking care to allow multiple virtual machines to serve user requests. In a few days, users smile again, their requests returning their results almost instantly. You have taken advantage of the computing power of virtual servers, with almost unlimited speed and fast storage. This would have been impossible without massive investment.
I could multiply the examples, but I think you understood the main constraint we encountered: The performance depends on the architecture of your applications and services. That’s why many users are disappointed with the cloud’s unbound promise of performance. Without reflection, you risk disappointment. However, by putting a little effort into the analysis, the performance gains can be exponential.
Using the Cloud wisely
As I like to repeat, the cloud is not the only solution to computer problems. Especially not to the performance issues. But taken in a more global context, it is impossible to ignore it. Any performance problem should focus on its causes. The latter will help you decide if the cloud is the solution. As we have seen in the previous examples, everything will depend on the context.
The cloud remains an ideal and inexpensive way to identify the source of performance issues. It is possible to test different configurations of your applications without investing in expensive hardware. You can change machine and configuration easily and quickly. No risk, no investment. You can then decide, if the tests are conclusive, to migrate the production servers to the cloud.