Yes. At least in the long term. So maybe we need to ask a different question. Is your business and software ready for cloud migration right now? Is it really a viable short to medium term investment?
Let’s begin by quickly summarising a few of the main drivers for wanting to migrate to the cloud:
- Cost-effectiveness – Leveraging cloud resources involves minimal upfront investment costs, with a flexible monthly billing system that enables businesses to accurately track monthly cost trends. Upfront costs for on-premise hosting includes data centre rack space, energy, cooling, hardware replacement, and staffing. With cloud hosting, all of these costs are included in your monthly usage bill.
- Maintenance offload – Hardware maintenance is no longer a concern. Patching for OS and supporting software is also handled by your cloud provider where required. This can free up internal infrastructure engineers to focus on upskilling in areas such as cloud hosting and devops.
- Scalability at speed – On-demand resources allow you to scale your software to meet increasing demand. Previously, scaling on-premise infrastructure would require provisioning of new virtual machines (VMs), and potentially new hardware, along with the installation and patching of servers prior to deployment. The provisioning of new hardware for on-premise may also have a long lead-time associated with it, causing additional delays in scaling up. Cloud scalability also includes the ability to seamlessly decrease resources as demand decreases, resulting in reduced costs. As with costs, metrics captured by your cloud hosting provider will allow you to track system demand trends.
- Reliability – With multiple availability zones provided seamlessly by most cloud providers, the risk of downtime in your system is greatly reduced. This is particularly advantageous for smaller businesses that do not have multiple data centres for their on-premise hosting.
- Cloud innovation – Cloud providers are regularly adding new services to their cloud offerings that can be leveraged by your business where appropriate.
With many advantages, cloud computing seems like an easy choice. However, it is important to remember the often forgotten benefits that on-premise hosting provides:
- Cost stability – While cloud hosting might appear to be a more economical option, resource requirements will vary based on implementation and demand for auto-scaling systems. Additionally, the rates for these resources may vary based on global demand or vendor price increases. If you value predictability in your costing, on-premise hosting may be more appropriate.
- Control – The transfer of responsibility for a significant portion of your infrastructure to a cloud provider results in a loss of control over critical areas such as hardware, software, data, and more. While not necessarily a downside for all businesses, it should be thoroughly considered when planning a migration to the cloud.
- Latency – For systems or components that are designed with very low latency as a core requirement, cloud hosting may not be the most ideal solution. Latency is naturally higher with cloud hosting, which may negatively impact performance.
- Security – For certain industries, compliance and security is of the utmost importance and non-negotiable. Although cloud security has made considerable strides, being able to implement and control your own security protocols will provide added peace of mind if executed correctly. When assessing the security requirements of your system, be mindful that they are genuine requirements and that you have created a perceived level of security which exceeds what is necessary.
After analysing the benefits of cloud and on-premise hosting, businesses can decide whether cloud hosting is suitable for their needs. If the answer is yes, the next step will be to investigate your software architecture, technologies and delivery processes. Just because your business model would work well in the cloud, it does not mean that your software is cloud ready.
A “monolithic” software system is usually a self contained system (single application, single database, single large codebase, etc) that has been augmented over many years, bolting functionality onto the sides and never revisiting the overall architecture of the system.
Software systems like this make little to no use of cloud benefits. A monolith is likely to require multiple large VMs to install the entirety of the system. If your business wants to try and autoscale your system based on usage, this would require a full install of the entire software system for each new VM, with demand potentially only increasing in a focused area of the business.
Depending on the internal architecture of the monolith, it is possible that your system can only scale vertically and be unable to take advantage of horizontal auto-scaling.
A microservices architecture complements cloud hosting in a number of ways. As previously mentioned, dynamic scalability in the cloud helps with cost efficiency when demand on your system is low, and allows you to remain performant when this demand increases. With microservices, this scaling can be more granular. Rather than scaling your whole system, you can scale targeted functional services as required.
During the migration of a monolithic system to the cloud, it is likely that you will need to perform one large migration. With microservices you can phase your migration, with a select number of services being migrated at a time. This approach is advantageous to those who are deploying cloud technologies for the first time, as it allows you to get used to working with cloud services without a large impact on day to day business operations.
Depending on the nature of your services, the migration may also include transitioning to cloud native technologies (such as AWS Lambda) to further make use of cloud benefits. With each service migrated, the process will become more refined and quicker. During the transitional period, a hybrid hosting model will be established, which is not uncommon in this scenario and will present its own advantages and challenges.
Containerisation, like microservices, also nicely complements cloud hosting. With most cloud hosting providers now natively supporting container hosting, such as AWS ECS and GCP Cloud Run, initial cloud migration can be simplified.
As an added bonus, the use of containers provides continued flexibility with your hosting that can be offered to your customers. For customers who prefer to retain control, they can continue to host on-premise with the same containers used for cloud hosting.
Your current hosting and deployment strategy
Assuming your existing business model does not leverage any cloud capabilities, it is important to consider how your existing on-premise hosting works. A potential complication arises for B2B providers, where customers retain control over the infrastructure, configuration, maintenance etc.
If you decide to move forward with cloud migration, you need to understand how your customers will respond to this. Will they be happy with a managed service provided by your business, or prefer to self-host in the cloud with your support?
It is also possible that there could be a mixture of hosting models between your business and customers. In this scenario, some customers may be open to using a managed service, while others may want to continue to self-host on-premise. This presents a new challenge, as you may need to maintain two delivery and deployment methods for your software to support both on-premise and cloud hosting.
This dual approach may limit you on what cloud native functionality you can leverage. Where your software supports containerisation, the potential for multiple hosting options would be more manageable. If this is not the case, decisions must be made about how your software can be updated to accommodate both hosting models.
Although your software currently may not be in optimal condition for cloud migration, this doesn’t mean you can’t make use of some of the out of the box infrastructure hosting that many cloud platforms provide. The vast majority of software systems use supporting technologies such as databases, messaging services, email services, storage services, etc.
These services can be migrated to the cloud in isolation, using dedicated services such as AWS RDS for databases, Azure Service Bus for messaging services, among many others. With this hybrid hosting model, you can start to reap some of the benefits of cloud hosting while simultaneously preparing your own software for full migration to the cloud.
When considering the cost-saving benefits of a cloud migration, reducing the number of staff is often a factor. While this may be an attractive prospect from a financial standpoint, the skills of support and infrastructure engineers are highly transferable into the cloud space. Take advantage of this transitional period to offer training and upskilling opportunities to your existing staff as career development.
As the effort required to complete your cloud migration will be significant, it will be important to keep up to date with the latest advancements in cloud technology that may impact your business. Who better to keep you informed and on track than your newly trained cloud engineers?
Should I abandon my plans for cloud migration?
Absolutely not. The bottom line here is “do what is right for your business”. While cloud hosting has a long list of benefits for enabling a growing business, the transition needs to be fully understood and implemented in stages, so as not to negatively impact your business or your customers during the transition period.
Take the time to assess your long term business strategy, current software limitations, existing roadmap and customer requirements to formulate a step by step plan to get you where you need to be with a positive outcome for all. It may be that the wider business would need to commit to a 5 year hosting contract if the cloud migration project was delayed, the cost of which may outweigh the downsides to moving. Conversely, it is also OK if your assessment is “not right now”, or “not with our current system”. This will let you focus on the future and start to plan accordingly.