AWS上更优雅的部署(NodeJS)

时间:2016-06-13 20:27:47

标签: node.js amazon-web-services deployment amazon-ec2

我在AWS(EC2)上运行基于NodeJS的应用程序,到目前为止一切都进展顺利。然而,上周,我们的客户注意到,当我们进行部署时,该网站会停机一段时间。仔细研究一下,这似乎是我的节点应用程序的启动时间(读取所有配置文件,连接到服务,加热缓存)。我有几个问题:

  • 新的"部署"在运行新的npm start命令之前,是在同一个虚拟机上运行还是机器被拆除?
  • 在让新代码接管之前,有没有办法让AWS等待信号?

1 个答案:

答案 0 :(得分:1)

在AWS中您可以通过不同方式部署节点APP来处理更优雅的部署。

<强> Using EC2, Load balancing

在此设置中,您可以使用Node App配置至少2个EC2实例,并按顺序将更新部署到每个实例(至少在使用Jenkins进行更新之前提供2个实例)。您必须在负载均衡器后面设置实例以保持系统可用,以便当一个实例由于正在进行更新而不可用时,负载均衡器会将请求发送到另一个实例。

<强> Using AWS Elastic Beanstalk

如果您要部署现有的Node App,建议您这样做。 Beanstalk平台能够进行滚动更新。您还可以在Beanstalk中创建新环境,并Blue Green Deployments交换DNS记录。

<强> Using AWS ECS

如果您可以将Node App容器化,那么您可以进行此操作并创建一个运行多个实例的服务,您可以在其中进行滚动。这里的优点是启动新容器实例非常快(在几秒钟内发生),与启动EC2实例相比(以分钟为单位发生)。

<强> Using AWS Lambda, API Gateway, Cloudfront & S3

这是使用Lambda设置节点应用程序的现代方法,该平台将处理系统的大多数质量属性。例如,没有停机时间,可用性,可用性和部署的部署。这些体系结构通常称为无服务器体系结构。