App Dev Manager Mike Finley breaks down several strategies for moving ASP.NET application into the Microsoft cloud.
There are a few key scenarios that you will want to consider as you plan your migration strategy. Unless you have unlimited time, resources and money, it is likely that you will have to consider implementing one or more of the following options:
Your approach depends on your company’s size, application landscape and inventory. If you’re a small to medium sized business with only a few applications, then choosing one option may suit you best. If you are large enterprise corporation with 1000’s of web applications, then you will most likely have to come up with an approach to each one of these that makes the most sense for each type of web application. Maybe because of a lack of source files, documentation or supportability, you may have many legacy applications that would benefit from Lift and Shift or a pure container migration approach. It might also be helpful to consider having a multi-faceted strategy like the following:
Cloud Migration Strategy
Why consider the IaaS option? The main reason to migrate to the cloud, even at an initial IaaS level, is to achieve cost reductions. By using more managed infrastructure services, your organization can lower its investment in hardware maintenance, server or VM provisioning and deployment, and infrastructure management. After you make the decision to move your apps to the cloud, the main reason why you might choose IaaS instead of more advanced options like PaaS is simply that the IaaS environment will be more familiar. Moving to an environment that’s similar to your current, on-premises environment offers a lower learning curve, which makes it the quickest path to the cloud.
However, taking the quickest path to the cloud doesn’t mean that you will gain the most benefit from having your applications running in the cloud. Any organization will gain the most significant benefits from a cloud migration at the already introduced Cloud-Optimized and Cloud-Native maturity levels. Try to keep in mind that correctly configuring, securing, and maintaining VMs requires much more time and IT expertise compared to using PaaS services in Azure. If you are considering Azure Virtual Machines, make sure that you take into account the ongoing maintenance effort required to patch, update, and manage your Azure IaaS VM environment.
What is Cloud Optimized? A Cloud-Optimized application is an approach to building and managing applications that takes advantage of the cloud computing model, while using a combination of containers, Azure App services, managed cloud infrastructure, resilient application techniques, monitoring, continuous delivery, and DevOps, all without the need to re-architect and recode your existing applications. Your organization can adopt these technologies and approaches gradually. You don’t have to embrace all of them, all at once. You can adopt them incrementally, depending on enterprise priorities and user needs.
What is Cloud-Native? It is a more advanced or mature state for large and mission-critical applications. Cloud-Native applications usually require architecture and design that are created from scratch instead of by modernizing existing applications. The key difference between a Cloud-Native application and a simpler Cloud-Optimized web app is the recommendation to use microservices architectures in a cloud-native approach.
What is a Microservice? The microservices architecture is becoming the preferred approach for distributed and large or complex mission-critical applications that are based on multiple, independent subsystems in the form of autonomous services. In a microservices-based architecture, an application is built as a collection of services that can be independently developed, tested, versioned, deployed, and scaled.
Because of the complexity of a microservices architecture, only specific scenarios and certain application types are suitable for microservice-based applications. These include large and complex applications that have multiple, evolving subsystems. In these cases, it’s worth investing in a more complex software architecture, for increased long-term agility and more efficient application maintenance. But for less complex scenarios, it might be better to continue with a monolithic application approach or simpler N-Tier approaches.
Modernize existing .NET applications with Azure cloud and Windows Containers (downloadable eBook)
Containerized Docker application lifecycle with Microsoft platform and tools (downloadable eBook)
Architecting modern web applications with ASP.NET Core and Azure (downloadable eBook)
Let us help you get started with your Web Application Migration efforts.