Migratration into containers, modernization, moving applications to azure, Virtualization,
With this methodology, the different tasks that are required to be carried out to move an application that is in an OnPremise environment to a virtualized one, such as Containers, can be carried out safely, including all the necessary elements for this technological migration.
Ensuring that all the necessary elements to modernize our application are considered is not an easy task, and many times important elements are omitted that, at the moment of finishing the migration to containers, results in an underestimated environment that does not meet the minimum characteristics required by the system, or that is left over, which results in a higher expense than was initially contemplated.
This offer is made up of a series of stages that facilitate both the obtaining of information and the design and creation of the container environment, and a testing phase to ensure correct operation; The stages that make up the offer are as follows:
It is the core stage that allows knowing the system and all the elements that are related to it, for this reason it is important to consider the following elements:
- Identify the application type: Web Application, Batch or Scheduled Jobs.
- Server capacity: Documenting the hardware (memory, CPU, disk) of current production servers, as well as the average and maximum number of requests and resource usage. This information is useful for guiding how much memory the container is going to use and the number of shares that are using the container.
- Inventory of the secrets: Verify secrets and passwords in all properties and configuration files of production servers. Configuration files containing passwords or credentials can also be found within the app.
- Certificate Inventory: Documenting all certificates used for public SSL endpoints.
- Read only Static Content: If the app currently serves static content, you'll need an alternate location for it. You might want to consider moving your static content to Azure Blob storage.
- Determine if multiple container images are needed: For example, a multi-tier application can be rendered on a single domain, but have two images, one for the “front-end” and one for the “back-end”. It is useful to be able to update the front-end, without updating the back-end and vice versa.
- Determine if the application contains operating system-specific code: If the application contains code with dependencies on the host system, you will need to refactor to remove those dependencies.
- Determine if and how the file system is used.
- Inventory of external resources and dependencies: External resources, such as data sources, may require migration or reconfiguration. It should be verified that all external dependencies of the application can be met after migration.
- Generation or obtaining current architecture.
- Context testing: Before container images are created, the application is thoroughly tested to ensure conformance and performance.
Before starting any movement, the aim is to have the architecture to be used outlined, contemplating:
- Architecture design to implement
- Creation of Test Matrix
Based on the results obtained from the evaluation and inventory described in the previous point, it may be necessary to adapt the code, since now the system is going to be making use of new Azure elements, so it is considered:
- Perform code refactoring
- Adaptations of the application, if required.
MigrationOnce the adaptation process is finished, we can carry out the migration tasks, which include:
- Configuration file generation for image creation.
- Build the image locally to simplify testing and refine the image before initial deployment to the Azure Container Registry (ACR).
- Build and upload the image to the Azure Container Registry (ACR).
- Implementation of the image.
Once the migration objectives defined above have been achieved, the comprehensive acceptance tests are carried out to verify that everything works as planned.
Some topics for post-migration enhancements to consider are:
- Adjust scaling. Dynamic scaling is a key value proposition.
- Get performance monitoring of optimized applications with Azure Monitor and Application Insight.
- Deploy applications with Azure DevOps (CI/CD).
- Integrate authentication and authorization with Azure Active Directory.