

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Linux 容器中重新架構為微服務
<a name="refactor-linux-micro"></a>

微服務架構是一種將單一應用程式開發為小型服務套件的方法。每個服務都會以自己的程序執行，並透過輕量型機制與其他 服務通訊。此方法會將單體應用程式細分為較小的服務，其中每個服務都提供單一用途，並部署為容器。

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

如果出現下列情況，此遷移策略很有用：
+ 您想要將您的單體系統分解為微服務。
+ 您擁有可用於重構的資源和時間。
+ 您可以解析所有 .NET Framework 相依性。
+ 您有長時間執行的應用程式。

## 優點
<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>

您可以從五個部署選項中選擇：
+ 如果您想要完全控制運算環境的組態，包括記憶體和儲存設定，以及控制作業系統修補程式：將您的應用程式部署為 EC2 執行個體上的 Linux 容器。
+ 如果您希望容器由 Kubernetes 管理並以無伺服器容器的形式執行：使用 Fargate 將應用程式部署為 Amazon EKS 上的 Linux 容器。
+ 如果您希望容器由 Amazon ECS 管理並以無伺服器容器的形式執行：使用 Fargate 在 Amazon ECS 上將應用程式部署為 Linux 容器。
+ 如果您希望容器由 Kubernetes 管理，但您希望自行管理容器的運算資源：在 Amazon EKS 上將應用程式部署為 Linux 容器。
+ 如果您希望容器由 Amazon ECS 管理，但您希望自行管理容器的運算資源：將應用程式部署為 Amazon ECS 上的 Linux 容器。

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