В настоящее время мы стремимся перенести нашу архитектуру AWS во что-то, что поддерживает большие объемы данных и может масштабироваться по мере увеличения количества клиентов. Когда этот проект начался, мы придерживались того, что знали, - приложения Ruby на EC2, выполняющего вызовы API RESTful, сохраняющего результаты в S3, а также сохраняющего все в RDS. У нас есть интерфейс SPA, написанный на VueJS для поддержки хранимых данных.
По мере роста нашего списка клиентов исходящие вызовы API и данные подпоследовательности, которые мы храним, также растут. В настоящее время передо мной стоит задача найти лучшее решение, и я хотел получить представление о том, что я думал до сих пор. В настоящее время у нас есть около 5 миллионов строк реляционных данных, которые будут увеличиваться только по мере увеличения нашего списка клиентов. Я мог видеть через год или два, мы были бы в низких миллиардах или рядах.
Приложение Ruby отлично справляется с обработкой очередей исходящих вызовов API, повторных попыток и всего, что между ними. По этой причине мы думали о том, чтобы сохранить приложение и вместо того, чтобы вставлять его непосредственно в RDS, оно просто выгрузит результаты в S3 как CSV.
Триггер в S3 теперь может преобразовывать необработанные данные CSV в формат паркета с помощью функции Lambda (я смотрел на что-то вроде PyArrow). Отсюда мы можем перейти от традиционного RDS к чему-то вроде Athena, который поддерживает паркет и позволит нам повторно использовать большинство существующих SQL-запросов.
Чтобы дополнительно оптимизировать производительность для пользователя, мы подумали о кешировании часто используемых запросов в таблицу Dynamo. Поскольку данные основаны на запланированных внешних вызовах API, мы могли бы контролировать, когда следует уничтожить кэш запросов.
Бэкэнды с большими данными на самом деле не моя вещь, поэтому любая обратная связь с благодарностью. Я знаю, что у меня есть гораздо больше исследований, чтобы сделать паркет, так как это ново для меня. В конце концов мы хотели бы сделать некоторые ML на этих данных, поэтому я считаю, что паркет также поддержит спасибо.