select合适的AWS服务和软件工具

我正在开发一个原型物联网应用程序,它执行以下操作

  1. 接收/存储来自传感器的数据。
  2. 带有基于Web的IDE的Web应用程序,供用户部署在Docker Containers中执行的简单JavaScript / Python脚本。
  3. 来自传感器的数据被传输到这些容器。
  4. 用户程序可以使用这些数据来进行分析,监测等。
  5. 这些程序的日志在webapp上输出给用户

在这里输入图像说明

当前架构和服务

  1. 使用一个AWS EC2实例。 我selectEC2是因为我试图弄清楚架构。
  2. Stack是Node.js,RabbitMQ,Express,MySQl,MongoDB和Docker
  3. 我对使用AWS IoT和Greengrass等AWS IoT服务不感兴趣
  4. 我已经排除了Heroku,因为我正在使用其他AWS服务。

问题和疑虑

我的目标是为一组50个用户提供一个Beta版本的原型开发 (希望别人可以帮助/开发一个产品发布)

  1. 尽可能地,我不想花很多时间在服务之间迁移,因为开发产品是关键。 我应该坚持使用EC2还是转到Beanstalk?
  2. 如果我坚持EC2,处理中小stream量的最佳方式是什么? 使用一个大的EC2机器或许多小的微型实例?
  3. 什么是pipe理容器的好方法? 它是值得使用群体和容器pipe理? 如果我必须使用多个实例呢?
  4. 我也有一些小脚本,它们具有web应用程序和其他服务所需要的传感器信息的状态。 如果我移动到多个实例,我怎样才能使这些脚本可用于多台机器?
  5. 上述问题也适用于服务器,消息总线,数据库等。

我的目标当然不是​​产品发布。 我想完成产品,展示我有用户谁感兴趣,当然,表明产品的作品!

任何在这方面的帮助将非常感激!

如果您想在AWS中以最less的麻烦pipe理Docker容器,则可以使用Amazon ECS服务来部署容器,或者使用Beanstalk。 您也不需要在AWS中使用Swarm,ECS将为您工作。

使用小到中等大小的EC2实例总是可以扩大规模。 然而,您将面临的挑战是pipe理和扩展基础EC2以及docker集装箱。 这导致您使用Large EC2实例来保留EC2缩放,并关注docker缩放(这会增加额外的成本)

另一个可用于Web应用程序部分的替代方法是将AWS Lambda和API网关堆栈与无服务器框架一起使用 ,这需要最less的操作开销,并附带DevOps工具。

您可以将您的Web应用程序保留在Heroku上,并在AWS EC2或AWS Lambda中运行您的IoT服务器。 Heroku在AWS上,所以这个拆分设置不会影响性能。 您可以通过编写一个Terraform脚本来处理“坐在两把椅子上”的不便,该脚本既提供了EC2实例,又提供了Heroku应用程序,并将它们绑定在一起。

或者,您可以使用Dockhero插件在您的Heroku应用程序旁边的Docker容器中运行您的IoT服务器。

ps:我是一个Dockhero维护者