Какая архитектура лучше всего подходит для создания службы без сервера aws? - PullRequest
0 голосов
/ 27 января 2020

Мне нужно реализовать службу AWS, используемую для хранения резервных данных с устройств. Устройства идентифицируются с помощью идентификаторов. Служба состоит из 3 конечных точек:

  1. Сохранить резервную копию устройства.
  2. Получить резервную копию устройства.
  3. Получить последнее время резервного копирования устройства.

Резервное копирование: двоичные данные, от 10 КБ до 1 МБ

Примеры загрузки

  1. 100к сохраненных резервных копий в день. 2k восстановленных резервных копий в день.
  2. Возьмите p1 и умножьте на 100

Я придумал 2 архитектуры.

  1. Какие архитектуру лучше выбрать или построить новую?
  2. Можно ли объединить API шлюза в один или мне нужен отдельный API для каждого запроса?
  3. Можно ли объединить лямбда в один или сделать Мне нужно отдельное действие для каждого действия?

1 Ответ

0 голосов
/ 28 января 2020

Резервная копия устройства будет состоять из двух элементов:

  • Резервная копия данные : лучше всего хранить в Amazon S3
  • Метаданные о резервная копия (пользователь, метка времени, указатель на данные резервной копии): лучше всего хранить в базе данных определенного типа, такой как DynamoDB

Тогда процессы будут:

  • Сохранение резервной копии: Отправка данных резервного копирования через API-шлюз в Lambda. Лямбда-функция сохранит данные в Amazon S3 и добавит запись в базу данных DynamoDB, возвращая ссылку на резервную копию в базе данных.
  • Получение резервной копии: Отправка запроса через API-шлюз в лямбду. Функция Lambda использует метаданные в DynamoDB, чтобы определить, какую резервную копию следует обслуживать, затем создает предварительно подписанный URL-адрес Amazon S3 и возвращает URL-адрес на устройство. Затем устройство получает резервную копию непосредственно из корзины S3 .
  • Список резервных копий: Отправка запроса через API-шлюз в Lambda. Функция Lambda использует метаданные в DynamoDB для получения списка резервных копий (или только самой последней резервной копии), а затем возвращает значения.

Было бы удобнее использовать отдельную функцию Lambda для каждого типа запрос (сохранить, получить, список). Они будут запускаться через разные пути в API Gateway.

...