Nowadays, digital transformation is a must in the fight to be a market leader. The rapidly changing market conditions generate new business needs that need to be responded to very quickly. Even today, companies face many problems, such as too long time-to-market, lack of availability of specialized human resources, and limited pandemic-related or cost optimization. So how do you kill a few birds with one stone?
Certainly, one of the ways to achieve this goal is to migrate software from on-premise solutions to the cloud. However, not everyone knows how to do it and where to start, but don’t worry - it’s not as difficult as it seems. However, you’ll probably need to involve an experienced partner who will help you achieve your goals.
In QRSOLVE we have completed many such migrations and we share our experience. We give you some tips that will allow you not only to move your solution to the cloud but also to modernize it and open it to new, unlimited possibilities. See how we do it in QRSOLVE.
Foundations
-
Audit of the on-prem solution
The basic step to starting the migration to the cloud is to take a closer look at your current solution in order to identify its architecture, technology, components, third-party tools, internal communication, protocols, interfaces, build process, etc. it is very valuable in itself, and additionally, it is the The basis for determining the scope of work necessary to be performed both on the software side (if necessary) and on the side of the further migration to the cloud. At this stage, we identify bottlenecks and obstacles that may have a negative impact on the operation of your software in the future in order to eliminate them.
-
Designing architecture in Cloud
Each solution requires an individual architecture design in the Cloud. All components, interfaces, communication, protocols, etc. present in your solution must be mapped to the services and components provided by the given Cloud provider. For this purpose, only generally accepted standards and patterns should be used. Remember that non-standard solutions usually generate high maintenance costs. You also need to ensure that individual components are properly isolated, access security, efficient internal communication, regionalization, scalability, and many other aspects that a trusted partner should inform you about.
-
Solution adjustment
Your on-premise software will have to meet certain standards to be able to be embedded in the cloud. This is a good time to modernize it. On the basis of the audit and the agreed architecture, you will learn which technologies and tools should be replaced with others, and which should only be integrated with the services provided by the cloud. For example, switching to File Storage, or messaging provided by the cloud, etc. To be able to fully automate the installation, you should also take care of containerization (eg Docker) and orchestration (eg Kubernetes) of your software.
-
Automatic infrastructure creation
It is a good practice to use the Infrastructure as a Code pattern. Thanks to scripts (e.g. terraform) you will be able to create any architecture in a fully automated manner, without any manual actions. This will allow you to avoid mistakes in its creation (especially when establishing new environments or regions). It is also a huge time (cost) saving. A fully functioning infrastructure built from the beginning in a dozen or so minutes without any manual actions.
-
Install and deploy automation
It is extremely important to ensure the automatic installation of your software in the cloud. This is the last step in the basic scope of migrating to the cloud. Appropriate preparation of the pipeline and ensuring the compliance of the production process with Git Flow will allow you to implement changes to production in several minutes from their preparation. Linking the appropriate branches with pipelines allows you to upload changes to the test, stage, and prod environments in an isolated manner with ZERO-downtime behavior. No interruptions in the operation of the software for the time of uploading changes, automatic database migration, and automatic switching to the new version of the website are just some of the advantages of the appropriate process of professionally prepared CI/CD.
Extensions
Based on the prepared audit, your partner should indicate to you the elements that are required to install the software in the cloud, but also those that are not necessary, but you should make them so that the software is modern and open to unlimited development possibilities. What you should remember:
-
Microservice approach
Decomposing monolithic systems is a difficult task, but it is also a very good investment. This allows you to disperse the business logic, open it to new possibilities, and reuse components between different systems. It also gives great opportunities to fine-tune individual elements depending on the load, which in practice is not evenly distributed. It, therefore, gives a real reduction in maintenance costs, the possibility of faster development, no vendor-lock, etc.
-
E2E test automation
Test automation allows you to implement new standards in the solution quality and stability, and such tests must be multi-level. Starting from unit tests, through integration tests, and finally, E2E tests. Only such a set of tests performed as part of the pipeline in the CI/CD process allows you to automatically implement changes to production without any interruptions.
Technical benefits
-
Security - the cloud provider (in accordance with the shared responsibility model) is responsible for handling the hardware part and appropriate levels of isolation based on permissions.
-
Scalability - automatic launch of new service instances, with higher load.
-
Installation automation - with a professionally designed pipeline - any change in the code can go to production in several minutes.
-
Zero downtime - while the changes are being installed, the existing service instances remain active until the unnoticeable switch to the new version.
-
Failure prevention - multi-regions with at least two data centers located in different geographic regions and backups mechanisms provide the highest failure prevention which cannot be ensured with an on-premise approach.
-
Monitoring - continuous application monitoring at the hardware resources, and logs level. Alerts are automatically sent in the event of an anomaly.
Business benefits
-
Time-to-market - the time needed from the preparation of changes to implementation into production takes about a dozen to several dozen minutes.
-
Reduction of maintenance costs - no need to maintain your own servers and server rooms, no maintenance tools to ensure security, and a large number of employees necessary to service in every location where there is an on-premise solution
-
Costs under control - cloud resources are invoked on-demand
-
Switching the business model to subscriptions - improving the attractiveness of the solution in the subscription model for your customers
-
Launching the multitenancy model - one solution for everyone with separate data for each organization working on a cloud solution
-
Compliance with GDPR/RODO - thanks to installation in the relevant regions, compliance with GDPR in terms of data storage and processing requirements is ensured.
Summary
If you are interested in how we prepare the infrastructure in Cloud, click here.
Watch the movie from our workshop.