Azure Lift and Shift Migration

·

3 min read

Refer from udacity.com

High-Level View

A Resource Group contains all Azure resources we need for our application. This is a basic example of resources needed in a lift and shift migration.

A virtual network resource is needed to create a private network environment where all VMs and other networking resources can communicate.

Virtual machines reside in a sub-network which assigns a unique private IP address for communication. A public IP address can be configured to allow remote connections from users outside the network to access VMs or load balancers.

VMs data is stored in a disk resource allowing you to export the VM image for other uses.

Diagram showing the resources needed for a basic lift and shift example

Things to Consider for Lift and Shift

Lift and shift is the process of moving on-premise virtual machines to Azure Virtual Machines with similar size and capacity.

There are 3 aspects to consider when lifting and shifting:

  1. Virtual Machine Sizing

    • It’s important to understand the different types of virtual machines Azure offers in order to match the performance you need

    • The process of finding the right type of virtual machine and then the specific size (memory, vCPUs, storage, etc.) is very critical

  2. Cost Prediction

    • Unlike Azure Web App, with virtual machines, you can stop incurring charges by deallocating the VM

    • You are charged hourly for every VM running. When calculating costs, you should keep this in mind as it would be Number of VMs x Number of Hours Running = Cost

  3. Scaling

    • Two options available to scale virtual machines—Auto-scaling with Virtual Machine Scale Sets and manual scaling with a load balancer

Lift and Shift Scaling

There are two options when it comes to scaling with Lift and Shift.

Virtual Machine Scale Sets (VMSS)

VMSS allows the management and scaling of a group of identical load-balanced VMs in order to have a highly available and resilient application.

  • There are two ways to deploy and provision a virtual machine scale set—cloud-init script or a custom image.

    1. A cloud-init script is a definition file for Linux OS that you create when provisioning your VMSS containing details such as packages to install and files to create on each of the VMs.

    2. Custom image deployment: allows you to create the image, including the operating system installed with dependencies as well as the application, so that Azure can easily create identical copies of the image running on Virtual Machines. This is the preferred method of deployment and provisioning of a virtual machine scale set.

  • Autoscaling with VMSS allows you to scale horizontally, increasing or decreasing the number of instances based on key metrics, such as CPU utilization and memory consumption.

Load Balancer

When scaling with a load balancer, we manually create virtual machines, deploy code to each of the virtual machines, and create a load balancer to direct traffic between virtual machines. Many companies choose this approach because it is like a replica of their existing on-prem architecture of a load balancer with an exact number of VMs.

Chart showing the four different load balancers and their use cases

Four types of load balancers, each with a different use case.

Diagram showing the architecture of an application with a web tier, database tier, and file storage using Azure Blob storage