Câu hỏi Kiến trúc MoonMail Lambda với Serverless


Tôi đã xem xét dự án này vì ý tưởng có toàn bộ hệ thống là một tập hợp các hàm Lambda có vẻ rất hấp dẫn. Như một vấn đề của thực tế, một vài năm trước, tôi đã viết một số phần mềm mà không khá nhiều giống như MoonMail hiện và nó là do cho một bản cập nhật như một số thông số kỹ thuật đã thay đổi. Tôi đang đánh giá việc chuyển phần mềm của mình sang Lambda hoặc chỉ thích nghi với việc sử dụng MoonMail.

Tôi có các câu hỏi sau:

Trong các thử nghiệm của tôi sử dụng Serverless, tôi nhận thấy rằng khi tôi thay đổi tên tài nguyên (như tên của bảng DynamoDb) và triển khai lại, không có cảnh báo và bảng cũ và nội dung của nó bị phá hủy. Tôi nghĩ rằng một sai lầm đơn giản như một nhân vật phụ trong tập tin cấu hình dẫn đến việc xóa tất cả dữ liệu trên cơ sở dữ liệu là khá nguy hiểm. Làm thế nào để bạn xử lý loại vấn đề này?

Về việc gửi email thông qua SES. Làm thế nào để bạn xử lý điều chỉnh khi bạn đạt đến giới hạn gửi cho một tài khoản cụ thể? Bạn có làm ngược dòng mũ không? Tôi dường như không thể tìm thấy điều này trong cơ sở mã. Tôi sẽ rất biết ơn nếu bạn có thể chỉ cho tôi trong khu vực chung trong repo nơi điều này xảy ra.


8
2018-01-25 20:14


gốc




Các câu trả lời:


  1. MoonMail có tên bảng được lưu trữ trong s-templates.json. Tập tin này hiếm khi được chạm vào và do đó nhóm chưa gặp phải vấn đề này, nhưng đúng là nguy hiểm vẫn còn đó, và tôi sẽ tiếp cận nhóm AWS với câu hỏi làm thế nào để tránh bỏ bảng bằng cách đổi tên nó thành CF.
  2. Nó sẽ thử lại khi gửi trường hợp giới hạn Cuộc gọi trên Cloud Watch (Đội MM sửa tôi nếu tôi sai, nhưng chắc chắn là 99%).

5
2018-01-26 14:54



@julian liên quan đến câu hỏi điều chỉnh, khi nó vượt quá tốc độ gửi, chúng tôi chỉ giữ email trên hàng đợi và nó sẽ tự động được thử lại cho đến khi hàng đợi trống (xem thêm đây). Nếu chúng tôi đạt đến giới hạn hàng ngày, chúng tôi sẽ ngừng quá trình gửi vì hạn ngạch không được khôi phục cho đến ngày hôm sau, nhưng chúng tôi thực hiện một số kiểm tra trước khi gửi chiến dịch để tránh tiếp cận. - davids


Bạn có thể đặt DeletionPolicy: Retain khi tạo các bảng DynamoDB của bạn để ngăn chúng vô tình bị xóa bởi Cloud Formation.

Nếu Lambda của bạn được gọi bởi SNS thì bạn có thể đơn giản thất bại khi vượt quá giới hạn SES. SNS sau đó sẽ kiểm tra lại giao hàng bằng cách sử dụng back-off.


5
2018-01-27 02:36





Cách tiếp cận của tôi vào lúc này là tạo ra dynamodb trong một tiến trình riêng biệt. Vì vậy, thiết lập không máy chủ của tôi là chỉ đọc, không tạo ra db. Bởi vì tôi không nghĩ rằng tôi sẽ tái tạo db của tôi thường xuyên :)


3
2018-02-21 03:00