Это мой лучший ответ, основанный на ограниченной информации в вашем вопросе.
Первым шагом является документирование / описание типа данных, которые вы обрабатываете.Это структурированные данные (SQL) или неструктурированные (NoSQL)?Какие типы запросов вам нужно сделать?Как долго вам нужно хранить данные и каков ожидаемый общий объем данных.Это определит выбор серверной части, выполняющей обработку запросов и аналитику.
Далее вам нужно посмотреть на скорость передачи данных.При скорости 200 Кбит (или 200 КБ), умноженной на 500 устройств, это составляет 100 Мбит (или 800 Мбит) в секунду.Насколько ценны данные и насколько терпим ваш дизайн к потере данных?Какова скорость передачи данных для каждого устройства (сотовая, беспроводная и т. Д.) И надежность соединения?.
Чтобы поместить данные в облако, я бы использовал Pub / Sub.Затем обработайте данные для слияния, объединения, сжатия, очистки и т. Д. И отправьте их в Google Cloud Storage или BigQuery (но могут быть и другие варианты, такие как Cloud SQL или Cloud Datastore / BigTable).Ответ для промежуточного процессора зависит от предыдущих вопросов, но вам потребуется некоторая мощность для обработки такой скорости потока данных.Возможные варианты: Google Cloud Dataproc, на котором запущен Spark, или Google Cloud Dataflow.
Существует множество вариантов для этого типа дизайна.Мой ответ создал кучу вопросов, надеюсь, это поможет вам разработать подходящее решение.