使用 AWS Copilot、Amazon ECS、Docker 和 AWS Fargate 将整体式应用程序拆分为微服务

教程

简介

概览

在本教程中,您将一个整体式 Node.js 应用程序部署到 Docker 容器,然后在不停机的情况下将该应用程序拆分为微服务。Node.js 应用程序承载了一个简单的留言板,其中包含用户之间的线程和消息。

为何这很重要

传统的整体式架构难以扩展。随着应用程序代码库的增长,其更新和维护变得复杂。引入新功能、语言、框架和技术变得非常困难,进而限制了创新和新想法。

在微服务架构中,每个应用程序组件都作为自己的服务运行,并通过妥善定义的 API 与其他服务进行通信。微服务是围绕业务功能构建的,每项服务执行单个功能。微服务可以使用不同的框架和编程语言来编写,您可以单独部署它们,并可以将它们作为单个服务或一组服务进行部署。

您将学到的内容

在本教程中,我们将展示如何在 Docker 容器中运行简单的整体式应用程序,将相同的应用程序部署为微服务,然后将流量切换到微服务而不造成任何停机。完成后,您可以使用本教程和其中的代码作为模板,在 AWS 上构建和部署您自己的容器化微服务。

整体式架构

整个 Node.js 应用程序作为单个服务在容器中运行,每个容器都具有与所有其他容器相同的功能。如果一个应用程序功能遇到需求峰值,则必须扩展整个架构。

微服务架构

Node.js 应用程序的每个功能都在自己的容器中作为单独的服务运行。这些服务可以独立于其他服务进行扩展和更新。

先决条件

  • 一个 AWS 账户:如果您还没有账户,请遵循设置 AWS 环境教程中的说明获取快速概览。
  • 安装和配置 AWS CLI
  • 安装和配置 AWS Copilot
  • 安装和配置 Docker
  • 文本编辑器。在本教程中,我们将使用 VS Code,但您可以使用自己喜欢的 IDE。

 AWS 使用经验

中级

 最短完成时间

110 分钟

 所需费用

免费套餐资格

 需要

  • 一个 AWS 账户:如果您还没有账户,请遵循设置 AWS 环境教程中的说明获取快速概览。
  • 安装和配置 AWS CLI。
  • 安装和配置 AWS Copilot。
  • 安装和配置 Docker。
  • 文本编辑器。在本教程中,我们将使用 VS Code,但您可以使用自己喜欢的 IDE。 

 代码

可从 GitHub 上的 AWS Labs 获得

 上次更新日期

2023 年 3 月 31 日

模块

此教程分为以下模块。您必须完成每个模块,才能进入下一个模块。

  1. 设置(20 分钟):在本模块中,您将安装和配置 AWS CLI、安装 AWS Copilot 以及安装 Docker。
  2. 容器化和部署单体(30 分钟):在本模块中,您将容器化应用程序,使用 AWS Copilot 实例化 EC2 计算实例的托管集群,并将映像部署为在集群上运行的容器。
  3. 拆分整体式结构(20 分钟):在本模块中,您要将 Node.js 应用程序拆分成多项互联服务,并将每项服务的映像推送到 Amazon Elastic Container Registry(Amazon ECR)存储库。
  4. 部署微服务(30 分钟):在本模块中,您将以一组互联服务的形式将您的 Node.js 应用程序部署在应用程序负载均衡器(ALB)后面。然后,您将使用 ALB 将流量从整体式架构无缝转移到微服务。
  5. 清理(10 分钟):在本模块中,您将终止您在此教程中创建的资源。您将停止在 Amazon ECS 上运行的服务、删除 ALB,并删除 AWS CloudFormation 堆栈以终止 Amazon ECS 集群,包括所有的底层 EC2 实例。

此页内容对您是否有帮助?