

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Linux 容器中重新架构为微服务
<a name="refactor-linux-micro"></a>

微服务架构是一种将单个应用程序开发为一套小型服务的方法。每项服务都在自己的进程中运行，并通过轻量级机制与其他服务进行通信。这种方法将单体应用程序分解为较小的服务，其中每项服务仅用于单一目的并作为容器部署。

## 使用案例
<a name="refactor-linux-micro-use-case"></a>

在以下情况下，此迁移策略非常有用：
+ 你想将你的整体系统分解成微服务。
+ 您有足够的资源和时间进行重构。
+ 您可以解析所有.NET 框架依赖关系。
+ 你有一个长时间运行的应用程序。

## 优点
<a name="refactor-linux-micro-advantages"></a>

与本地.NET 应用程序相比，这种迁移方法具有以下优点：
+ 更快的创新，因为在微服务架构中添加新功能更容易
+ 高可用性和可靠性
+ 提高灵活性和按需扩展性
+ 独立部署和现代持续集成和持续部署 (CI/CD) 管道
+ 强大的模块界限和技术多样性

## 缺点
<a name="refactor-linux-micro-disadvantages"></a>
+ 重构的工作量和成本
+ 潜在的操作复杂性

## AWS 服务
<a name="refactor-linux-micro-services"></a>

您可以使用以下 AWS 服务来开发基于微服务的系统：
+ [Amazon API Gateway](https://aws.amazon.com/api-gateway)
+ [Amazon Simple Notification Service (Amazon SNS)](https://aws.amazon.com/sns)
+ [Amazon Simple Queue Service (Amazon SQS)](https://aws.amazon.com/sqs)
+ [Amazon ECS](https://aws.amazon.com/ecs)
+ [Amazon EKS](https://aws.amazon.com/eks)
+ [AWS Lambda](https://aws.amazon.com/lambda)
+ [AWS Fargate](https://aws.amazon.com/fargate)
+ [CloudFormation](https://aws.amazon.com/cloudformation) 或 [AWS Cloud Development Kit (AWS CDK)](https://aws.amazon.com/cdk)
+ [AWS Identity and Access Management](https://aws.amazon.com/iam) (IAM)
+ [Amazon Simple Storage Service（Amazon S3）](https://aws.amazon.com/s3)
+ [Amazon ECR](https://aws.amazon.com/ecr)

## 工具
<a name="refactor-linux-micro-tools"></a>

AWS Professional Services 提供自定义工具和服务，帮助您将整体应用程序重构为微服务。

## 部署决策
<a name="refactor-linux-micro-deploy"></a>

您可以从五个部署选项中进行选择：
+ 如果您想完全控制计算环境的配置，包括内存和存储设置，并控制操作系统补丁，请将您的应用程序作为 Linux 容器部署在 EC2 实例上。
+ 如果您希望容器由 Kubernetes 管理并作为无服务器容器运行，请使用 Fargate 将您的应用程序作为 Linux 容器部署到亚马逊 EKS 上。
+ 如果您希望容器由 Amazon ECS 管理并作为无服务器容器运行，请使用 Fargate 将您的应用程序作为 Linux 容器部署到亚马逊 ECS 上。
+ 如果您希望容器由 Kubernetes 管理，但又想自己管理容器的计算资源，请将您的应用程序作为 Linux 容器部署在 Amazon EKS 上。
+ 如果您希望容器由 Amazon ECS 管理，但又想自己管理容器的计算资源，请将您的应用程序作为 Linux 容器部署在 Amazon ECS 上。

 ![Refactoring .NET applications as microservices in Linux containers on AWS](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/modernization-net-applications/images/rearchitect-linux.png) 