It’s impossible to ignore the fact that cloud computing is becoming a de facto standard for deploying applications. According to a recent survey, only 20% of organizations with more than 500 employees are not using any public cloud services. There are very good reasons to use the cloud: flexibility of utilizing resources (scaling both up and down on demand), no need to manage your own data centers, no need to upgrade hardware, operational expense (OpEx) instead of capital expenditure (CapEx), and so on.
The cloud has also enabled new approaches to software. A new class of software – cloud-native or cloud-ready applications – has been created. This kind of software is written with the cloud in mind, which means it contains mechanisms to take advantage of cloud features and deal with the respective issues. For example, a cloud-ready application may distribute load over several machines, sites or even data centers. It can even create virtual machines on demand. Another example is a fail-safe scenario: in the case of a partial outage, a cloud-ready application can quickly redirect load to running machines and thus not expose users to any downtime.
In fact, the majority of enterprise software today is not made for the cloud. There is no magic: in order to handle the scenarios described above, the application must be very carefully engineered, which is not easy. For this reason, most software written today does not utilize cloud potential. If specific mechanisms are not programmed into the software, it will not provide safeguards or scaling. This is what we call “classic software”.
Think of your accounting program. Most likely it was written to run on a single workstation or a server. Now think of the rest of the applications and servers on which you based your operations. Are they cloud-ready? Even a data base server, unless clustered by an experienced technician, will not fully utilize the potential of the cloud.
If you work for a start-up, there is a fair chance that your newly-developed core software is cloud-ready and your operations run on SaaS platforms. If you work for an established company, however, there is a good chance that most of your software is classic software. Seen from the cloud perspective, you could even call them legacy software.
Challenges for Classic Software
What is the big deal about classic software running in the cloud? Well, it’s possible, but think about what happens if a virtual machine goes down and a classic software stops working – now you have a service outage, which could result in data loss and could cost you both money and customers.
It doesn’t help if your cloud provider has multiple data centers in various locations. If your classic software doesn’t know how to move the load to another location, it’s a game over.
Some people think this is not very likely. Cloud providers these days have 99.99% SLAs (service-level agreements). Some even claim to have a 100% SLA. If you know technology, you also know that these are marketing claims only. Given enough time, any component will fail. It doesn’t help to have a redundant power supply or network when a dysfunctional fire extinguishing system takes out an entire data center. Unfortunately, this happens more often than cloud providers’ marketing will admit (for example, see these two reports from 1 March 2017 and 28 February 2017).
Conclusion: Infrastructure can help mitigate the disadvantages
If classic software cannot deal with availability issues in the same way as cloud-native apps, proper infrastructure is the solution. Specialized infrastructure exists that can elevate classic softwares performance to virtually match that of cloud-native or cloud-ready apps. Such infrastructure can also guarantee no data loss and no downtime, even in the case of an entire data center outage.
However, technical leaders must take special care while planning the migration of classic workloads to the cloud. They should not be satisfied by SLAs without understanding the underlying technical reasons for such claims. Instead, they should have a realistic approach to risk exposure.
When the things turn bad, it will not help to explain to your boss or your customers that the cloud provider claimed the outage would never happen. In the end, your reputation and your customer satisfaction is at stake.