The cloud has been evolving rapidly for many years now, and thankfully, we have passed the peak of the hype curve. In all new technologies, as they are created and discussed and developed there is often a significant amount of hype. You'll see news articles in business magazines. Tech entrepreneurs are shown on the cover of Forbes. And then at some point reality hits. There are problems and there are issues. Sure, some early adopters make it work, but by and large there is a large group of organizations that just can't make it work for them. It's still early.
This accurately describes the 2000-2010, maybe even 2015 era of cloud computing. Many of the promises were over-hyped and reality had to set in.
Luckily, we are now passed that point and most of the issues have been identified and solutions found. We know the areas that work well and we know how to apply the right solutions to the right problems. So, the time is definitely right to move to the cloud.
As we look at your organization, three questions typically come up.
• Why should we move to the cloud? • Should we move our existing infrastructure directly to the cloud, a.k.a. Infrastructure as a Service (IaaS)? • Should we take this opportunity to rewrite and modernize to leverage the cloud as the platform, a.k.a. Platform as a Service (PaaS)?
This post is going to talk about the decision process.
Why should we move to the cloud?
Clearly the hype cycle has passed and now we are looking at reasons why we should move to the cloud. Each organization is different and has different needs, but some driving factors are always the same.
Cost - Cloud computing is often discussed as lower cost. Cost savings may be achieved if your business is cyclical where you have peak demand times and non-peak times. With the cloud, you can design your applications and infrastructure to either scale up or scale out as need. You no longer need to provision a data center and staff for peak times. This of course all depends on your applications and infrastructure … to save in the Cloud, you must be prepared.
Disaster Recovery - The cloud systems are designed to be more fault tolerant Built into the lowest layers, they will shift your virtual machines between hardware if they detect a failure. They'll move your data to multiple sites as a precaution. All designed to take the Disaster Recovery and transform it into a hidden process that just works instead of painful process that the IT department rarely tests.
More Options - One of the best reasons to go to the cloud with your solutions is the use of services that are simply not available in the on-premise solutions. For example, most IT departments are just starting to look at Machine Learning and Artificial Intelligence. They don't have an infrastructure setup and ready to process large amounts of data.
IaaS - Should we just use it as an extension of our data center?
One of the easiest ways to move to the cloud is to simply virtualize your on-premise systems and transfer them directly up to the cloud. The advantage of this is that your existing staff already has most of the knowledge to continue to operate the systems.
The advantages now are that you can scale up your systems easily. Want to add more processors and more memory? Just move a slider, change a configuration, reboot the VM and it now has additional CPU cores and more memory. It also has an increased cost.
Many of the cloud providers now allow scale while the VM is running and so automation scripts can keep the system at normal capacity during the week, lower on the weekends, and expand it to maximum capacity during peak loads. This allows for minimizing the cost while maximizing the availability, something on-premise solutions cannot do. They must handle the maximum capacity at all times or at least within the datacenter.
What are the disadvantages? As the scaling for peak loads occurs, the cost increases as well. If the system tends to run at peak loads all the time, the cost savings may not be present. IT staff is still responsible for maintaining the systems. Upgrading them with the latest security patches and operating system features.
It is however the easiest way to get started in the cloud. Another option is to break down the systems into specific component parts and services and compose them in the cloud directly. This is known as PaaS.
PaaS - Should we just recompose the system using the cloud services?
One of the more compelling reasons to go to the cloud is to recompose the system in the cloud using cloud services. What is that exactly? Instead of just moving the system into virtual machine, the system is redesigned based on small reusable components.
For example, a standard three tier application with a web server and an application server and a database server. Moving that up into the cloud using IaaS will keep those systems all in the same data center and pretty co-located.
Using PaaS, the organization has the opportunity to break apart the system into a small web sites that are distributed globally, putting the web servers closer to the end users. This results in a more performant application when used globally.
The application server, can be broken down into smaller services that are composed from independent microservices. Each microservice may be responsible for a business specific function. Email distribution, credit card processing, logging, etc. Each of these can be developed in -house or composed from existing open source software or purchased from external vendors.
And finally, instead of trying to scale up the database, systems are more easily composed from document databases and relational databases together. Common development patterns such as Command Query Responsibility Segregation (CQRS), allow for global scaling of an application by relying on the document databases for suppling data to the web services, and using the SQL database a single location where exact calculation needs to be made such as banking transactions and inventory control.
The benefits of recomposing the application should be clear. First, there is an opportunity to reconfirm and re-envision the system. The needs of systems that have been in place for sometimes decades surely have changed. This is a clear opportunity to reevaluate the business process they support and design a better business process.
Composing the application through proven cloud components also provide a clear benefit. The cloud solutions provided are an 80-90% effective solution for most systems. Instead of inventing a custom solution that is similar or the same, a common cloud solution is often more robust and better suited to the modern global marketplace.
As the IT department evaluates systems to move to the cloud, the decision process should be clear. The evaluation is based on features, capacity, and growth.
Is the system currently fully featured, close to capacity, and not needing more? If so, it probably isn't a good candidate to move to the cloud. At least until, the hardware and systems are ready to retire.
Is the system a legacy system that does exactly what it needs to do, but is sitting on out dated hardware? Does the system require better fault tolerance than it currently has? Does it need to scale up? This system is a good candidate to move to the cloud using IaaS. It requires minimal effort to move it up and can benefit from the immediate scaling and redundancy the cloud offers.
Is the system outdated, and is ready to be modernized? If so, instead of looking at moving the system wholesale as an IaaS. Now is the time to leverage the cloud platform as it was intended using PaaS. Use the time to redesign the business process and keep it current. Invest in the system to bring real value back to the organization, and leverage the cloud components to quickly and reliably build it.