Improving the Cloud Migration Process with Application Dependency Mapping
Improving the Cloud Migration Process with Application Dependency Mapping
Cloud migration can be a big undertaking for developers. Refactoring code and moving large amounts of data to the cloud involves a lot of moving parts, which can be difficult to plan.
Types of cloud migration
There are two types of cloud migration: ‘lift and shift’ and ‘application modernization’.
Lift & Shift
Lift and shift is primarily for data-center evacuation or when changing server providers. In simple terms, it involves moving an exact copy of your existing applications and data, and transferring them to the cloud without redesigning them. Companies that move to public cloud providers like Microsoft Azure or Amazon Web Services (AWS) typically use the lift and shift approach.
Application Modernization
Modernization (also known as a refactor or rewrite) involves moving applications to the cloud but rearchitecting them at the same time to adapt to the cloud infrastructure. For example, switching to microservices is a form of modernization, as it breaks down larger software components into smaller, connected ones.
Some organizations opt for modernization because it allows them to utilize more sophisticated capabilities such as machine learning or AI in a cloud environment.
Dependency mapping for cloud migration
Application-to-application
With application-to-application code dependency mapping, organizations can identify dependencies between the application being migrated and other applications that may or may not be migrated. With this insight, companies can pinpoint vulnerable connections, assess potential impact, and take action to minimize risk before rewriting or refactoring code. This approach reduces the likelihood of application dependencies breaking, which could lead to outages that would surface after the migration.
Businesses can also use application dependency mapping to understand how databases and web services are connected from a macro level view. For example, say an e-commerce application moves to the cloud, but the customer data application does not. The updated e-commerce app must have permissions to access the customer app in the data center, or users won’t be able to log in. In this scenario, application dependency mapping illustrates the application-to-application connections, providing clarity around which component will and will not migrate.
Application dependency mapping also assists organizations in defining the security and performance implications of cloud migration. Businesses will likely need to open firewalls in a strategized way without giving all personnel access. Meanwhile, connecting from the cloud to a data center comes with high-frequency connections that slow functions. In both scenarios, dependency mapping surfaces who is facing issues and where the source stems from.
Within the Application
Teams that opt for modernization will have to decide if a refactor or rewrite makes the most sense. Whereas a refactor involves changes to improve existing code, a rewrite means writing code from scratch and is more time-consuming. Application dependency mapping can indicate which of the two is more efficient by highlighting the complexity, interconnectivity and potential risks hidden within the application.
Application dependency mapping also contributes to data binding. When planning a cloud migration, organizations have to assess whether all the data migrates with the application, or if it makes sense to split the database and move only a select few tables. Alternately, the data could be replicated or cached in the cloud.
If only part of the application needs to migrate to the cloud, teams will need to understand which specific pieces are connected. If the part that needs to be migrated is loosely coupled within the application, then separating the application into microservices at that point might make the most sense. If the part that needs to be migrated is more tightly coupled (everything uses everything within the application), splitting the application into microservices is less practical. Without a firm and accurate understanding of an application’s interconnectivity and code dependencies, businesses cannot make such decisions well-informed.