App migration to cloud services yields many benefits including reduced cost, agility, high scalability, efficiency improvements, and for the most part, better system performance.
Cloud computing today seems to be the future for most applications. Gartner projects that by 2022, 90 percent of organizations will be adopting cloud services, generating a total value of $278.3 billion.
Nevertheless, the cloud isn’t a one-size-fits-all solution. Each organization relies on a unique infrastructure with its set of applications, systems, and platforms to drive its operations. Thus, it is important to verify that your applications are ready for the cloud migration process first.
This guide will help you evaluate your cloud readiness and determine the areas that should be reviewed. The success of the cloud transition, like any other business transformation, requires changes in three main areas: technology, processes, and people.
Let’s start by digging deeper into the technology aspect that may need to be adjusted by an organization to successfully adapt to using the cloud.
In order to evaluate your readiness for a transition to the cloud from a technology viewpoint, you’d need to check your current technology stack, applications characteristics, architecture, and data.
Migration to the cloud may be challenging and require a lot of skill and effort for applications that:
- are built on unique hardware, that is not represented in the cloud, and cannot be virtualized (e.g. specific IoT apps, cryptocurrency cold wallet, etc.);
- have strict security requirements (e.g. aircraft flight control systems, military software, government voting systems, etc.);
- are built on outdated technologies (e.g. apps based on old programming languages like COBOL, ALGOL, etc.);
- imply sensitive data processing and storage (e.g. banking and medical apps).
Everything else can be migrated to the cloud and it’s rather a matter of defining the best-fit cloud infrastructure that would address your business needs in full. Applications requiring more solid security characteristics can be hosted in a private cloud (in full or partially), others would perfectly fit onto a public cloud. Some businesses can choose a multi-cloud solution for disaster recovery and avoiding vendor lock-in. Cloud technologies provide for a lot of possible solutions to diverse business needs and limitations, however, making your app more cloud-friendly would definitely help you get the most out of migration to Cloud.
Let's take a closer look at the technical aspects that need to be checked during the application cloud readiness assessment.
Application cloud readiness in terms of architecture
One of the most important things to figure out before cloud adoption is how the whole application is built. First of all, your application should be able to operate inside a virtualized environment in the most efficient way. To figure out if your architecture is ready for this, take into account:
- Application architecture type. If it is built on a monolithic architecture, it makes sense to consider the conversion to microservices approach applying virtual machines or containers. This may be time-consuming and expensive, however it will provide many benefits besides moving to the cloud, for example making your solution more flexible and easier to customize and maintain.
- App complexity in terms of LOC (line of code), number of servers, and infrastructure elements. Each component increases the cost of migration and makes the process more time-consuming. If there are a lot of lines of code (100.000+), servers and infrastructure elements, it may be reasonable to check what can be cut and optimized.
- Size of storage and backups (magnitude of it: 1GB, 1TB, 1PB, hot, cold). Storage size will also affect your cloud expenditure. Make sure that only what you need is in your storage, otherwise you will have to pay for old junk that does not provide value.
- Requirements for latency and your network specifics. Cloud-hosted applications should have the same or better performance than on-premises deployments. If adequate network bandwidth is not available for the application to perform, it will lead to latency and a bad user experience. You should think thoroughly about these network limitations and assess the current application performance to determine areas for enhancements.
- Requirements for high availability and redundancy (zero-downtime deployment, maintenance window, SLA requirements). For example, if you need to achieve zero-downtime deployment, you need to be ready to invest more time and money at the initial migration stage.
One of the important steps of your application migration readiness strategy is to assess the current security mechanisms and the degree of protection that should be applied to different categories of data your app handles. You need to thoroughly investigate country and industry-specific standards your app needs to comply with, those may impose specific hardware, software, and organizational requirements for the application infrastructure and it may happen that during cloud migration, the application becomes incompatible with these standards.
Therefore, we definitely recommend that you make sure your cloud provider is compatible with your industry and country-specific requirements related to security compliance, GDPR readiness, the disaster recovery process, firewalls, etc. If your data requires a high level of security, you will need to look for a provider with appropriate certifications. For example, if your business is in the healthcare sector you should choose a more niche cloud provider that can enforce HIPAA (Health Insurance Portability and Accountability Act) requirements.
The most popular cloud providers such as AWS and Microsoft Azure Google Cloud, deliver advanced threat protection for workloads in the cloud. For example, the AWS cloud provides a GovCloud option for applications that demand advanced security and special requirements for data handling.
Depth of legacy and technical debt
A crucial element of application assessment for cloud migration is to check your depth of legacy and evaluate technical debt. If the code was written a long time ago and has not been updated for quite a while, but it works fine and is a good match for your needs, there is no problem with the app becoming legacy. However, as soon as you want to move to the cloud, problems may arise.
Even if a legacy app still works, it may become unstable because of compatibility issues with current operating systems, and IT infrastructure. In this case, the best option is to check with your in-house experts or cloud migration service providers if your legacy application can be migrated to the cloud or the code should be rewritten before migration.
The accumulation of technical debt is another factor that negatively affects the organization's ability to apply new technologies. Technical debt is the consequence of dealing with challenging requirements when you choose short-term solutions that can be adverse for your business in the long run. For instance, introducing an overnight solution that is difficult to integrate with other systems or does not support horizontal scaling by design can have a big influence on the possibility of future updates and transformation initiatives such as cloud migration.
So, make sure that before cloud adoption, you create a technical debt reduction plan, because migration may become a multiplier that substantially increases your technical debt.
Next time we will talk about cloud readiness assessments from processes and people’s perspectives.
- Best cloud storage of 2021
Yurii Vysotskyi, Senior Support and Maintenance Engineer, Sigma Software Group