What would be the best option to migrate a simple .NET framework 4.8 app with IIS web server from a windows server 2016 EC2 instance to GCP? I am contemplating refactoring the app to upgrade to .NET Core so that I can use a Linux GCE VM. There is also a AWS RDS DB that needs to be migrated to Cloud SQL in GCP. I see the following 3 options
1. Lift and Shift - Direct EC2 snapshot, boot into GCE direct using OS image, RDP into VM & Edit DB Settings
2. Deploy from Source - new Windows VM, deploy new app on IIS using the codebase
3. Replatform- Upgrade current .NET Framework 4.8 to .NET 8 using .NET Assist upgrade, deploy on Linux VM on GCP (prefer this option since it eliminates windows licensing costs)
Solved! Go to Solution.
Quite a few options here.
In terms of a lift and shift, you can use Migrate to Virtual Machines, this has native AWS API support to pull the VM over directly. See: https://cloud.google.com/migrate/virtual-machines/docs/5.0/migrate/create-an-aws-source
If deployment from source is something well documented and tested, then I would normally encourage this though as a preferred option, it will use a fresh Google native image and also gives the opportunity to use the latest release of Windows Server.
If you are looking to modernise to the latest version of .NET for more options, there is tooling to help with this as you point out: https://dotnet.microsoft.com/en-us/platform/upgrade-assistant
Once you are running a modern .NET codebase, this definitely opens up options, certainly exploring running on a Linux OS is one but also looking at serverless options like Cloud Run: https://cloud.google.com/run/docs/quickstarts/build-and-deploy/deploy-dotnet-service
In most cases this should very much be possible, but if your application depends on external libraries or binaries that are Windows specific, this might tie you to a Windows operating system environment.
Finally for the database, RDS to Cloud SQL is the preferred path and for this we have the Database Migration Service which also supports an RDS source for MS SQL Server, see: https://cloud.google.com/database-migration/docs/supported-databases#sql-server
Quite a few options here.
In terms of a lift and shift, you can use Migrate to Virtual Machines, this has native AWS API support to pull the VM over directly. See: https://cloud.google.com/migrate/virtual-machines/docs/5.0/migrate/create-an-aws-source
If deployment from source is something well documented and tested, then I would normally encourage this though as a preferred option, it will use a fresh Google native image and also gives the opportunity to use the latest release of Windows Server.
If you are looking to modernise to the latest version of .NET for more options, there is tooling to help with this as you point out: https://dotnet.microsoft.com/en-us/platform/upgrade-assistant
Once you are running a modern .NET codebase, this definitely opens up options, certainly exploring running on a Linux OS is one but also looking at serverless options like Cloud Run: https://cloud.google.com/run/docs/quickstarts/build-and-deploy/deploy-dotnet-service
In most cases this should very much be possible, but if your application depends on external libraries or binaries that are Windows specific, this might tie you to a Windows operating system environment.
Finally for the database, RDS to Cloud SQL is the preferred path and for this we have the Database Migration Service which also supports an RDS source for MS SQL Server, see: https://cloud.google.com/database-migration/docs/supported-databases#sql-server
Thanks so much @alexmoore . I will aim for the Linux and serverless options , has benefits from cost , scaling perspective.