使用 AWS Copilot、Amazon ECS、Docker 和 AWS Fargate 将整体式应用程序拆分为微服务
教程
简介
概览
在本教程中,您将一个整体式 Node.js 应用程序部署到 Docker 容器,然后在不停机的情况下将该应用程序拆分为微服务。Node.js 应用程序承载了一个简单的留言板,其中包含用户之间的线程和消息。
为何这很重要
传统的整体式架构难以扩展。随着应用程序代码库的增长,其更新和维护变得复杂。引入新功能、语言、框架和技术变得非常困难,进而限制了创新和新想法。
在微服务架构中,每个应用程序组件都作为自己的服务运行,并通过妥善定义的 API 与其他服务进行通信。微服务是围绕业务功能构建的,每项服务执行单个功能。微服务可以使用不同的框架和编程语言来编写,您可以单独部署它们,并可以将它们作为单个服务或一组服务进行部署。
您将学到的内容
在本教程中,我们将展示如何在 Docker 容器中运行简单的整体式应用程序,将相同的应用程序部署为微服务,然后将流量切换到微服务而不造成任何停机。完成后,您可以使用本教程和其中的代码作为模板,在 AWS 上构建和部署您自己的容器化微服务。
整体式架构
整个 Node.js 应用程序作为单个服务在容器中运行,每个容器都具有与所有其他容器相同的功能。如果一个应用程序功能遇到需求峰值,则必须扩展整个架构。
微服务架构
Node.js 应用程序的每个功能都在自己的容器中作为单独的服务运行。这些服务可以独立于其他服务进行扩展和更新。
模块
此教程分为以下模块。您必须完成每个模块,才能进入下一个模块。
- 设置(20 分钟):在本模块中,您将安装和配置 AWS CLI、安装 AWS Copilot 以及安装 Docker。
- 容器化和部署单体(30 分钟):在本模块中,您将容器化应用程序,使用 AWS Copilot 实例化 EC2 计算实例的托管集群,并将映像部署为在集群上运行的容器。
- 拆分整体式结构(20 分钟):在本模块中,您要将 Node.js 应用程序拆分成多项互联服务,并将每项服务的映像推送到 Amazon Elastic Container Registry(Amazon ECR)存储库。
- 部署微服务(30 分钟):在本模块中,您将以一组互联服务的形式将您的 Node.js 应用程序部署在应用程序负载均衡器(ALB)后面。然后,您将使用 ALB 将流量从整体式架构无缝转移到微服务。
- 清理(10 分钟):在本模块中,您将终止您在此教程中创建的资源。您将停止在 Amazon ECS 上运行的服务、删除 ALB,并删除 AWS CloudFormation 堆栈以终止 Amazon ECS 集群,包括所有的底层 EC2 实例。