Есть программа или скажем Облачная служба которая опрашивает устройства по разным протоколам и получает с них данные. Далее или отображает, или архивирует, анализирует, визуализирует и т.д. Приложение работает на службах AWS в вычислительном кластере. Все добавленные устройства, графики и т.д. организуются в пределах одного проекта. То есть, пользователь зашел, создал проект, добавил устройство к проекту и далее.
Каждый созданный пользователем проект будет запускать контейнер докера с ноуд на нем, который будет опрашивать устройства. Например пользователь создал устройства и установил частоту опроса в 2000 миллисекунд. Мы получим что то типа
setInterval(function(){
// опрасить устройство
// сохранить данные в базе
}, 2000);
Но один проект может иметь несколько устройств. Одни могут быть запущены, другие нет. Так что при запуске устройства мы добавляем в базу данных задачу на запуск или остановку опроса или других микро задач. А наш ноуд контейнер будет опрашивать таблицу задач раз в 20 секунд например и исполнять.
Таким образом между сервером АПИ и контейнером проекта не будет прямой связи, и контейнер проекта будет полностью изолирован и все порты на вход будут закрыты.
К слову база данных это служба AWS RDS так что доступ к ней всегда будет внутри VPC.
Вопросы
1. Я на правильном пути?
2. Какие есть инструменты или скажем пакеты npm что бы запускать небольшие циклические задача, и останавливать а так же следить за их состоянием. Просто не знаю какие ключевые слова тут использовать что бы начать поиск.
3. Проект может содержать 100 устройств а каждое устройство от 1 до 100 каналов опроса. Это значит до (а может и больше) 1000 маленьких процессов опроса типа как пример я привел. Правильно ли запускать контейнер на проект или лучше запустить контейнер на устройство? Я вижу преимущество в контейнере на устройство в том, что если будет проблема с опросом устройства это не отразиться на других устройствах. И будет просто включить выключить, просто запустить или остановить контейнер. Но вижу недостаток в том, что будет очень много контейнеров в кластере и переживаю, что много ресурсов будут съедать сами контейнеры.