Re-architecting as a Linux container - AWS Prescriptive Guidance

Re-architecting as a Linux container

By porting your .NET Framework applications to .NET Core or .NET 6, you can run your applications on multiple platforms, reduce your license costs, increase performance, and improve scalability.

Use cases

This migration strategy is useful in any of the following scenarios:

  • You have the resources and time available to refactor your application.

  • You’re able to resolve all .NET Framework dependencies.

  • You have a long-running application.

Advantages

This migration approach provides the following benefits, when compared with on-premises .NET applications:

  • Lower total cost of ownership (TCO)

  • Improved security and performance

  • Accelerated innovation

  • Benefits of converting to cloud-native applications

  • Open-source

Disadvantages

  • Effort and cost of refactoring

AWS services

For storing container images:

For orchestrating containers:

AWS Fargate is a serverless, pay-as-you-go compute engine that lets you focus on building applications without managing servers. Fargate is compatible with both Amazon ECS and Amazon EKS.

Tools

Tool Purpose Resource
Porting Assistant for .NET This analysis tool scans .NET Framework applications and generates a .NET Core compatibility assessment. The assessment helps you port your applications to Linux faster.
AWS App2Container (A2C) A2C is a command line tool for modernizing .NET and Java applications by converting them into containerized applications with minimal effort.

Deployment decisions

You can choose from five deployment options:

  • If you want complete control over the configuration of your compute environment, including memory and storage settings, and control over operating system patches: deploy your application as a Linux container on an EC2 instance.

  • If you want the container to be managed by Kubernetes and run as a serverless container: deploy your application as a Linux container on Amazon EKS with Fargate.

  • If you want the container to be managed by Amazon ECS and run as a serverless container: deploy your application as a Linux container on Amazon ECS with Fargate.

  • If you want the container to be managed by Kubernetes, but you want to manage the compute resources of the container yourself: deploy your application as a Linux container on Amazon EKS.

  • If you want the container to be managed by Amazon ECS, but you want to manage the compute resources of the container yourself: deploy your application as a Linux container on Amazon ECS.

Refactoring .NET applications as Linux containers on AWS