It is surprising to see how every new technology suddenly becomes the thing that will solve every problem. The cloud is no different. Everybody rushes to migrate their applications to the cloud because they think this will magically make them faster, cheaper, agile, competitive and… add any other buzzword that comes to mind. Well, not so fast! You don't need to move every single application to the cloud! Or at lest not in its current state.
There are thousands of articles on Internet that discuss what applications are applicable for the cloud (including several that I have written) and what are not. There are also thousands of articles discussing the different cloud technologies and how they can be used. Unfortunately what I have seen in the last four years is that people don't pay attention to those writings and choose applications that are not applicable for the cloud or severely misuse the technology.
Take for example the following scenario. The IT team at a very large enterprise creates virtual machines on AWS for each analyst, installs desktop software that uses local database (file based) and let them use those at their discretion. This is certainly enough to have a checkbox next to "Migrated application to the cloud" on your performance review but is this the solution? First, let's look at what the problems with this "migration" are:
- Because the VM is used by a single user it's utilization will be no more than 8h a day or 30%. And this is only if this analyst doesn't take any breaks, which means that the utilization of the VM will be much lower. The goal of the cloud is to maximize the utilization of your infrastructure and improve the efficiency and I am not talking from cloud vendor point of view.
- If you make a simple calculation you will find out that throughout the year they will pay Amazon amount that equals to pretty decent notebook. But wait, the analyst already has a notebook! And she or he uses this notebook to connect to the VM. Hence they are paying double for something that they already have - why don't use the analysts notebook to install the software there. (I know there are certain reasons why you don't want to do that but just bare with me).
- The user experience will be suboptimal when Amazon decides to move your VM from one node to another. This will result in interruptions, possible loss of data and low satisfaction from the analysts.
- Although they can create VM template managing all those VMs is a tedious task. You need to go patch them, update the template, troubleshoot them etc. that will increase their management costs.
- The part that mostly bothered me in this scenario was that the technology for solving this problem has been available for long time - it is called Terminal Services and there are few established vendors that made business of that long before the cloud term was even conceived.
Now, if you really want to make an impact in your organization you should approach the problem differently. The questions that you need to ask are:
- How can I increase utilization?
- How can I decrease spending?
- How can I allow centralized management?
Implementing Terminal Services in your organization may be the simplest answer. As mentioned the technology is available for long time, it is proven and it is easy to implement. If you want to show that you are up to date with the latest developments and mention cloud on your resume look at VDI (or Virtual Desktop Infrastructure). Last but not least if you want to prepare your application for the future consider reworking it into a modern web application that uses central database, services and multi-tenant UI.
As it seems the cloud can be solution for your app but you will need to put the effort to find the right way.