2017-01-25 5 views
7

Я изучал этот проект, потому что идея о том, что вся система представляет собой набор функций лямбда, кажется очень привлекательной. На самом деле, несколько лет назад я написал некоторое программное обеспечение, которое делает почти то же самое, что и MoonMail, и оно должно быть обновлено по мере изменения некоторых спецификаций. Я оцениваю перенос своего программного обеспечения на Лямбду или просто адаптирую вещь для использования MoonMail.MoonMail Lambda architecture with Serverless

У меня есть следующие вопросы:

В моих тестах с использованием бессерверного, я заметил, что, когда я изменил имя ресурса (например, имя таблицы DynamoDb) и перераспределен, не было никакого предупреждения, и старый стол и его содержимое было уничтожено. Я думаю, что простая ошибка, как дополнительный символ в файле конфигурации, приводящая к удалению всех данных в базе данных, довольно рискованна. Как вы справляетесь с такой проблемой?

Что касается отправки электронной почты через SES. Как вы обрабатываете дросселирование, когда вы достигаете лимита отправки для определенной учетной записи? Вы выполняете экспоненциальные отсрочки? Я не могу найти это в базе кода. Я буду очень благодарен, если вы можете указать мне в общей области репо, где это происходит.

ответ

5
  1. У MoonMail есть свои имена таблиц, хранящиеся в s-templates.json. Этот файл редко затрагивается, и, следовательно, команда еще не испытала эту проблему, но это правда, что опасность все еще существует, и я хотел бы обратиться к команде AWS с вопросом о том, как избежать падения таблицы, просто переименовав ее в CF.
  2. Он повторяет попытку отправки лимита с Cloud Watch invocation (команда MM исправила меня, если я ошибаюсь, но на 99% я не уверен).
+1

@julian в отношении вопроса о регулировании, когда он превышает скорость отправки, мы просто сохраняем электронную почту в очереди, и это будет автоматически повторяется до тех пор, пока очередь не будет пуста (см. подробнее [здесь] (https://github.com/microapps/MoonMail/blob/master/events/lib/send_email_service.js#L134)). Если мы нажмем дневной лимит, мы просто прекратим процесс отправки, так как квота не будет восстановлена ​​до следующего дня, но мы проверим некоторые проверки перед отправкой кампании, чтобы избежать ее. – davids

5

Вы можете установить DeletionPolicy: Retain при создании таблиц DynamoDB, чтобы предотвратить их случайное удаление при создании облаков.

Если ваша Лямбда вызывается SNS, вы можете просто выйти из строя, когда предел SES превышен. SNS затем повторно запускает доставку с использованием отступлений.

3

Мой подход на данный момент заключается в создании dynamodb в отдельном процессе. Таким образом, моя безсерверная настройка доступна только для чтения, а не для создания db. Потому что я не думаю, что я бы повторно воссоздал свой db, что часто :)

Смежные вопросы