在本教程中,您将一个整体式 node.js 应用程序部署到 Docker 容器,然后在不停机的情况下将该应用程序拆分为微服务。node.js 应用程序承载了一个简单的留言板,其中包含用户之间的线程和消息。
传统的整体式架构难以扩展。随着应用程序代码库的增长,其更新和维护变得复杂。引入新功能、语言、框架和技术变得非常困难,进而限制了创新和新想法。
在微服务架构中,每个应用程序组件都作为自己的服务运行,并通过妥善定义的 API 与其他服务进行通信。微服务是围绕业务功能构建的,每项服务执行单个功能。微服务可以使用不同的框架和编程语言来编写,您可以单独部署它们,并可以将它们作为单个服务或一组服务进行部署。
在本教程中,我们将展示如何在 Docker 容器中运行简单的整体式应用程序,将相同的应用程序部署为微服务,然后将流量切换到微服务而不造成任何停机。完成后,您可以使用本教程和其中的代码作为模板,在 AWS 上构建和部署您自己的容器化微服务。


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

微服务架构
node.js 应用程序的每个功能都在自己的容器中作为单独的服务运行。这些服务可以独立于其他服务进行扩展和更新。
完成所需时间:2 小时
完成所需成本:本架构中使用的每项服务均可享受 AWS 免费套餐。如果超出免费套餐的使用量限制,您最多只需支付 0.25 美元即可完成本教程。
使用的技术:要完成本教程,您将使用:
- 有效的 AWS 账户**
- 文本编辑器:AWS 推荐 Atom
- 浏览器:AWS 推荐 Chrome
- Amazon EC2
- Amazon Elastic Container Service
- Amazon Elastic Container Registry
- Amazon VPC
- AWS CloudFormation
- Elastic Load Balancing
- Docker
- GitHub
- node.js
*此估算值假定您在整个教程中遵循建议的配置,并在 24 小时内终止所有资源。
**过去 24 小时内创建的账户可能尚不具有完成此项目所需的一切资源的权限。