Re-architecting as microservices in Linux containers
A microservices architecture is an approach to developing a single application as a suite of small services. Each service runs in its own process and communicates with other services through lightweight mechanisms. This approach breaks down a monolithic application into smaller services, where each service serves a single purpose and is deployed as a container.
Use cases
This migration strategy is useful if:
You want to break your monolithic system into microservices.
You have the resources and time available for refactoring.
You can 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:
Faster innovation because it's easier to add new features in a microservices architecture
High availability and reliability
Increased agility and on-demand scalability
Independent deployment and modern continuous integration and continuous deployment (CI/CD) pipelines
Strong module boundaries and technical diversity
Disadvantages
Effort and cost of refactoring
Potential operational complexity
AWS services
You can use the following AWS services to develop a microservices-based architecture:
Tools and offerings
AWS Professional Services offers custom tools and services to help you refactor your monolithic applications into microservices.
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.
