选择正确的AWS服务和软件工具

时间:2017-06-02 20:17:04

标签: amazon-web-services docker amazon-ec2 elastic-beanstalk

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

  1. 从传感器接收/存储数据。
  2. 带有基于Web的IDE的Web应用程序,用户可以部署在Docker容器中执行的简单JavaScript / Python脚本。
  3. 来自传感器的数据将流式传输到这些容器。
  4. 用户程序可以使用此数据进行分析,监控等。
  5. 这些程序的日志通过webapp输出给用户
  6. enter image description here

    当前架构和服务

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

      我的目标是针对一组50位用户的Beta版本进行原型开发 (希望其他人可以帮助/处理产品发布)

      1. 我不想花很多时间在服务之间迁移,因为开发产品是关键。我应该坚持使用EC2还是转移到Beanstalk?
      2. 如果我坚持使用EC2,那么处理中小型流量的最佳方法是什么?使用一台大型EC2机器还是许多小型微型机器?
      3. 管理容器的好方法是什么?是否值得使用swarm并进行容器管理?如果我必须使用多个实例怎么办?
      4. 我还有一些小脚本,它们具有Web应用程序和其他服务所需的传感器信息状态。如果我转移到多个实例,如何将这些脚本提供给多台机器?
      5. 上述问题也适用于服务器,消息总线,数据库等。
      6. 我的目标当然不是​​生产发布。我想完成产品,显示我有兴趣的用户,当然,表明该产品有效!

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

2 个答案:

答案 0 :(得分:0)

如果您想在AWS中管理最少麻烦的泊坞容器,您可以使用Amazon ECS服务来部署容器,或者使用Beanstalk。此外,您不需要在AWS中使用Swarm,ECS将为您工作。

使用中小尺寸的EC2实例,最好向外扩展而不是向上扩展。但是,您将面临的挑战是管理和扩展底层EC2以及您的docker容器。这导致您使用大型EC2实例来保持EC2缩放,并专注于泊坞窗缩放(这将为您增加额外成本)

您可以用于Web应用程序部分的另一个替代方法是使用带有Serverless Framework的AWS Lambda和API网关堆栈,这需要最少的操作开销并附带DevOps工具。

答案 1 :(得分:0)

您可以将您的网络应用程序保留在Heroku上,并在AWS EC2或AWS Lambda中运行您的IoT服务器。 Heroku在AWS上,因此这种拆分设置不会影响性能。你可以治愈坐在两把椅子上的不便之处"通过编写一个Terraform脚本来配置EC2实例和Heroku应用程序并将它们绑定在一起。

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

ps:我是Dockhero维护者