2017-10-19 22 views
-1

週刊ニュースレターでは週に約200〜300kメールを送信する必要があります。この数値は時間とともに増加すると予想されます。そのため、ラムダが私たちのスケーリングを処理することを考えました。AWS lambda、ses、sqs、snsで大量メールを送信

従業員がこれらのメールの送信を開始するためのUIがあります。私の最初の考えは、SNSトピックに電子メールアドレスのリストを追加し、電子メールの実際の送信をトリガーするためにラムダ機能をサブスクライブしていたことです。私はこれが予期しない動作につながる可能性があり、バグを追跡するのに最適ではないことを読んだ。

現在の制限は1秒あたり90メールです。これはラムダ関数を実行する最大時間を5分にすることで、これをどのように分割するのかと思います。これらを複数のラムダコンテナが均等に回転させて作業できるように、これらを一括してSNSに送る必要がありますか?私はラムダがS3にファイルを追加するようなイベントのために拡大することができますが、送信する必要があるすべての電子メールを処理するためにラムダが複数回回転するように明示するにはどうすればよいのですか?これにはより良いデザインパターンがありますか?

私の他の考えは、電子メールをSQSキューに追加することで、電子メールはエラーが発生しても永続化することができますが、ラムダでうまくいくようにするための回避策が必要です。

+2

あなたはこれをあまりにも難しくしていると思います。私はちょうど[sendgrid.com](https://sendgrid.com/)にチェックし、月間1.2M電子メールは最高の層でもない。それは安くはない - 約$ 650 /月については、あなたはすでに他のどこかに存在する正確なものを構築する必要はありません。彼らには、スパム/サブスクリプション/オープンカウントの数々をカスタマイズして処理できるツールがあります。私は彼らに財政的関心がない(そして他のプロバイダーがいる)が、過去に成功した。 – stdunbar

+1

@Austin私はあなたが第三者とそれをすることができる良いお金を賭けて喜んでいるだろう。私はMailgunを使用しており、メールを送信してwebhooksをサポートするためのAPIを持っています。私はそれがSendgridやMailgunではできないことを真剣に疑っています。 –

+0

私はそれができないことを疑うことはありませんが、自宅に建てる必要がある他のビジネス要件があります。 – Austin

答えて

5

ラムダは良い解決策に見えるかもしれませんが、そうではありません。

独自のソフトウェアを開発するか、既存のソリューションを移植または移行する必要があります。電子メールリストを管理し、電子メールを送信することは、通常のEC2インスタンス(適切なサイズ)にRDSとともにうまく収まる作業です。単一の電子メールを送信するプロセスは遅いです(多くのSMTPサーバーでは電子メールごとに数秒かかるため)重複が重要です。 Lambdaを使用すると、LambdaがSMTPサーバーが各電子メールを受け入れるのを待つすべての秒間を支払うことになります。

大量(大量)のメールを送信する際には、多くの問題があります。これがサードパーティのサービスが人気を集めている理由です。これらのサービスは、アプリにプラグインして次のタスクに移動するだけのマネージドサービスを提供します。

あなたは、このベストプラクティスの文書を読んでみて、電子メールを送信するためにAWSを使用しようとしている場合は、次のラムダベースのソリューションを実装する際に留意すべき

Amazon Simple Email Service Email Sending Best Practices

+0

私たちは現在、私たちの古いインプリメンテーションを使って1秒あたり20枚を送信しています。 – Austin

0

一つは、各ラムダが保証されていることです実行する少なくとも1回です。場合によっては不具合が発生し、一部のユーザーは重複したメールを受信します。 Hereすべての呼び出しの約0.02%が複数回の実行になると推定されます。

関連する問題