Choosing the right AWS Services and software tools

Viewed 240

I'm developing a prototype IoT application which does the following

  1. Receive/Store data from sensors.
  2. Web application with a web-based IDE for users to deploy simple JavaScript/Python scripts which gets executed in Docker Containers.
  3. Data from the sensors gets streamed to these containers.
  4. User programs can use this data to do analytics, monitoring etc.
  5. The logs of these programs are outputted to the user on the webapp

enter image description here

Current Architecture and Services

  1. Using one AWS EC2 instance. I chose EC2 because I was trying to figure out the architecture.
  2. Stack is Node.js, RabbitMQ, Express, MySQl, MongoDB and Docker
  3. I'm not interested in using AWS IoT services like AWS IoT and Greengrass
  4. I've ruled out Heroku since I'm using other AWS services.

Questions and Concerns

My goal is prototype development for a Beta release to a set of 50 users (hopefully someone else will help/work on a production release)

  1. As far as possible, I don't want to spend a lot of time migrating between services since developing the product is key. Should I stick with EC2 or move to Beanstalk?
  2. If I stick with EC2, what is the best way to handle small-medium traffic? Use one large EC2 machine or many small micro instances?
  3. What is a good way to manage containers? Is it worth it use swarm and do container management? What if I have to use multiple instances?
  4. I also have small scripts which have status of information of sensors which are needed by web app and other services. If I move to multiple instances, how can I make these scripts available to multiple machines?
  5. The above question also holds good for servers, message buses, databases etc.

My goal is certainly not production release. I want to complete the product, show I have users who are interested and of course, show that the product works!

Any help in this regard will be really appreciated!

2 Answers
Related