Я очень новичок в облачной архитектуре, но имею приличный опыт разработки приложений. Прямо сейчас я делаю большой вычислительный конвейер более доступным для 5-10 пользователей через веб-приложение и настраиваю все это в AWS.
Моя текущая реализация — это облегченное веб-приложение React, которое использует два API и серверную часть MySQL, что позволяет пользователям ставить в очередь задания с параметрами и получать доступ к конечным результатам через веб-приложение или из электронных писем, отправляемых пользователям после выполнения прогона.
В середине этого конвейера находится зависимость от проприетарного программного обеспечения, которому требуется очень здоровенная машина для вычисления этих шагов (64 ГБ ОЗУ, 16 ядер, 1 ТБ жесткий диск), и которое может работать до 1,5 дней только для этого одного шага. Это мое самое большое узкое место во всем трубопроводе.
Чтобы максимально сэкономить на затратах, я пытаюсь сделать узкое место/сервисную часть масштабируемой/рентабельной, имея несколько «агентов» экземпляра EC2, доступных для включения, выполнения шагов, отправки электронной почты, записи в Интернет. app, а затем остановите экземпляр с помощью лямбда-функций AWS, которые будут запускаться действием из веб-приложения.
Я планирую разместить один экземпляр EC2 для веб-приложения, 2 API и сервер MySQL, поскольку параллелизм/масштабируемость в этой части очень малы. У меня также будет еще 1-3 экземпляра для узких мест, чтобы совместно использовать одновременные запуски от 5-10 пользователей, что может позволить одновременно выполнять до 3 запусков тяжелого шага.
Поскольку узким местам сервисов требуются аналогичные файлы для запуска программ, а входные данные для этих шагов иногда могут иметь размер файла 150 ГБ, я думаю об использовании хранилища EFS или S3 для хранения входных данных, так что мне нужно беспокоиться только о передаче входных данных. файлы в одно место, которое можно было бы совместно использовать между инстансами EC2, и мне не нужно было бы гарантировать, что они запущены для выполнения шага передачи. Это одна ручная часть, которую я также не нашел, как сделать ее более автоматизированной, поскольку размеры файлов очень велики.
Мои вопросы: звучит ли моя установка разумно, и видите ли вы какие-либо пробелы в моих идеях реализации? В настоящее время я использую хранилище EBS для экземпляров службы, но я хочу свести к минимуму места ввода для передачи/обслуживания 150 ГБ. Я также не уверен в разнице между S3 и EFS, поскольку они оба кажутся монтируемыми в несколько экземпляров, но какой из них мне следует использовать? И имеет ли смысл хранить веб-приложение, API и базу данных в одном экземпляре EC2, если мне нужны служебные, способные записывать в базу данных после их завершения? Этот экземпляр будет включен все время.
Спасибо за вашу помощь и простите меня, если я сказал что-то наивное.