To migrate to the Cloud without risks and to resolve all the pressing business issues, Belitsoft's web development team took the following steps:
Step 1. To Cloud or Not to Cloud
The company considered either migrating to the Cloud or creating additional physical servers in other countries.
Thus, the Client was perfectly aware of the high expenses and difficulties of adding extra physical servers, primarily in India - a country with tough security problems and natural disasters.
After considering expenses and risks, the client migrated to the Cloud.
The choice of the provider was obvious for the enterprise. As they used Microsoft infrastructure (Microsoft Teams, etc.), it was decided to migrate to Azure.
Step 2. Doing a Proof of Concept
Before embarking on the migration process, our development team realized a Proof of Concept (POC) to check the viability of a migration technique, the potential troubles that could appear during the migration, and the ways to mitigate any issues and risks.
At this stage, we evaluated which components of the infrastructure could be used, what are the ways of transferring them to the cloud, how they will function in the cloud, how they will interact with on-premise apps and other details that may affect the smooth migration and further app performance.
Step 3. Assessment of expenses and scope of work
The Client had its core web application as is, not specifically modernized for migration. The Cloud service costs might have increased significantly in this case.
- Belitsoft experts were to evaluate the cost of migration of the app without its modernization.
- We also suggested possible ways of app modernization to decrease expenses.
Step 4. App modernization to optimize it for Cloud
Having defined what peculiarities of the core business app could skyrocket the subscription fee, we fixed these nuances and optimized the app.
At this step, Belitsoft:
- Adapted the database structure to comply with Azure requirements. It included transferring all requests from several databases to a single one, database normalization (structuring a database to reduce data redundancy and improve data integrity), and some other steps.
- Active geo-replication in Azure, which is the creation of a secondary database synchronized with a primary database. It allows us to decrease the load for the main server of the database in the period of peak load. It also enables quick recovery of the database in case of any local disaster.
Step 5. Migration to Azure
The business app had integrations with other in-house apps.
In this case, migrating only a core app into the cloud without the entire infrastructure can stop business.
To avoid this issue, Belitsoft's developers divided the entire migration process into smaller steps:
- SQL Database Migration
- Enhancement of security
- Launching apps in Azure
- Further optimization and reduction of expenses
Step 5.1. SQL Database Migration
Here is what our .NET development team made:
- analyzed the ways of SQL DB migration using either Data Migration Assistant, or Manual Transfer, or GeoReplication, or others;
- created a Proof Of Concept of the best way to migrate the DB;
- Azure SQL DB went live with the ability to work with on-premise apps (that were a part of the IT infrastructure but didn't migrate together with the core business app).
Step 5.2. Enhancement of security
The major concern of the Client and our primary task was ensuring the ultimate security of the company's data after migration to the Cloud.
So together with transferring the data to Azure, it was necessary to set up a new user access system instead of the on-premise Active Directory they initially used.
We fulfilled the task through integration with the identity platform Okta, which enabled multifactor authentication and an SSO (Single Sign-On) solution.
To set up interaction between the core business app and OKTA, we used several approaches (protocols), like Open Authorization (OAuth) and Security Assertion Markup Language (SAML).
Okta became a single place to monitor, manage, and secure employees' access and permissions for the core business app through Cloud.
We also synchronized Azure VPN with on-premise VPN to enable smooth work of the entire infrastructure.
Step 5.3 Launching apps in Azure
In short, our development team realized:
- listed all the apps and integrations and determined in what sequence to migrate them;
- tuned the interaction between on-premise components and Azure;
- migrated the core app;
- migrated collateral apps and integrations to the cloud;
- ran QA and software testing to ensure that everything goes fine;
- delivered the ready and fully functioning solution to the Client.
Step 5.4. Further optimization and reduction of expenses
Now with migrating to the Cloud accomplished, the Client wants to continue improving the app performance, reducing expenses, and expanding the capabilities of Azure services, which requires further app modernization.
We are planning to reduce the client's costs by using Azure components. For example, switching from RabbitMQ to Azure Service Base.
Regarding to faster performance, we are going to tune the active geo-replication further to minimize the ping time for each region.
Throughout the entire migration process, Belitsoft collaborated with the client's Cloud Operation Team, Networking Team, Microsoft Azure Team, Security Team, and others.
Belitsoft has been the driving force behind several of our software development projects within the last few years. This company demonstrates high professionalism in their work approach. They have continuously proved to be ready to go the extra mile. We are very happy with Belitsoft, and in a position to strongly recommend them for software development and support as a most reliable and fully transparent partner focused on long term business relationships.
Global Head of Commercial Development L&D at Technicolor