1日40億超のメールをさばくTwilio SendGridのスケーラブルなインフラ

Twilio SendGridのスケーラブルなインフラ

この記事は Scaling Our Infrastructure for 4+ Billion Emails in a Single Day の抄訳です。

米国において、人々が一年で最も買い物をするブラックフライデーを重視しないマーケターや経営者はいません。Twilio SendGridでは、この日に何十億というメールを安全安心かつ迅速にお届けできるよう、インフラの拡充を続けています。その甲斐もあって、サービス開始から2019年3月までの10年間で計2兆通のメールがTwilio SendGridを通して送信されました。

2019年11月29日のブラックフライデーおよび翌週月曜日のサイバーマンデーでは、それぞれ41億通と42億通のメールが私たちのシステムで処理されました。送信数が前年比で46%増加し、1時間当たり最大で3.15億通のメールを全世界の受信箱に届けているということからも、私たちのインフラがいかにスケーラブルかおわかりいただけると思います。

しばしばTwilio SendGridをお使いの方から「送信したメールが宛先に届くまでにどれぐらいの時間がかかるのか」という質問をいただきます。簡潔に答えるならば数秒というのが答えですが、もう少し詳しくお話ししたいと思います。

メール受け渡しまでの時間を測る

メール配信サービスの事業者(ESP)はよくメール受信の速さを売りにしますが、それをどう測るかまで教えてくれることは稀でしょう。メールを受信するまでの時間には様々な要素が影響を与えます。私たちのようなESPが制御できるものもありますが、私たちがメールを処理した後などメールプロバイダが決めるものもあります。

混乱を避けるために、ここでTFA (Time to First Attempt) という用語を定義したいと思います。これは、私たちTwilio SendGridがメール送信APIのリクエストを受け取ってから、メールプロバイダのサーバに最初にメールの受け渡しを試みた時点までの時間を指します。

私たちのシステムでは、直近三ヶ月のTFAにおいて中央値1.9秒を達成しました。

この結果は、私たちが独自のメール転送エージェント (MTA) を日々改良し続けているからこそ達成できたものと言えるでしょう。他の多くのメール配信サービスがサードパーティーのMTAに頼っている一方で、私たちは独自のMTAを管理することで、何十億ものメールを迅速に処理できるだけの信頼性の高いスケーラブルなサービスを構築しています。

旅の始まり

ここで、Twilio SendGridで送られるメールがAPIやSMTPの指示から宛先の受信箱に届くまでにたどる道のりを詳しく見てみましょう。この間わずか数秒足らずですが、たくさんのステップを踏んでメールは宛先に届けられます。

最初のステップは、メールの処理を始められるよう可能な限り迅速に送信者のリクエストを受け取ることです。信じられないかもしれませんが、これには送信者がどこにいるかが影響します。ネットワーク網の拡充により全世界との距離が短くなってきているとはいえ、私たちはミリ秒の遅れも許したくないのです。

旅の始まり

そこで私たちは、地球上のどこで送信リクエストがあってもいいように、世界の様々な場所にエンドポイントを設置しています。以下の図に示したように、アメリカ、イギリス、日本、インドに分散したエンドポイントで全世界をカバーしています。

エンドポイント

Twilio SendGridの速さの秘訣

次のステップは、メールの認証と処理、そしてメールプロバイダへの受け渡しです。ここにTwilio SendGridのメール送信の速さの秘訣があります。送信リクエストを行ったのが確かに正当なユーザであることをチェックした後、メールは私たちのMTAで運ばれ、Gmail、Outlook、iCloudといった宛先のメールプロバイダに届けられます。

それぞれのメールプロバイダは、一定時間内に自身のサーバで受信可能なメールの通数に制限を設けています(スロットリング)。実はこの設定は公表されていないのですが、メールクライアントの挙動を見るに、受信できる基準量を定めているのは間違いありません。

Twilio SendGridは絶えずこの設定を監視することで、メールの最適な配送ができるよう調整を行っています。ただ、それでも送信者のレピュテーションを元に送信量制限をかけることはあります。

Twilio SendGridでは、メールプロバイダのスロットリングによって到達性が落ちたり、送信者のレピュテーションが下がったりしないよう、メールプロバイダへの配送タイミングを内部的に調整することがあります。これはTwilio SendGridがメール配送を独自に行い、かつメールプロバイダの挙動を監視しているからこそなせる技です。

ただし、私たちがどんなに効率的にメールの処理や配送、送信量の調節を行っても、その後の処理はメールプロバイダ次第です。メールアドレスが間違っていたり、宛先の受信箱がいっぱいだったり、送信したメールがスパムであると報告されたりすると、メールプロバイダが受け取りを保留/拒否してしまい、宛先へ届くまでに時間がかかることがあります。Twilio SendGridではBounce、Defer、Blockといったイベントとしてこのような状況を把握できます。

メールプロバイダによるフィルタリング

メールプロバイダは迷惑メールを排除してユーザの受信箱を守り、望まないメールをフィルタリングしてユーザの好みに合わせようとします。ただメールプロバイダも万能ではないので、時として正当なメールもフィルタリングしてしまうことがあります。

これに対し送信者ができることは、以下のようにして自身のレピュテーションを最大限まで高めることです。

  1. SPF、DKIM、DMARCを設定して送信者としての正当性を確立する
  2. 定期的に宛先リストのクリーニングを行い、無効なアドレスや反応がない宛先を削除する
  3. ベストプラクティスにならってふさわしい内容のメールを送る
  4. 2つ以上の固定IPアドレスを用いる時は、トランザクションメールとマーケティングメールでIPアドレスを分ける

メール送信事業者として私たちは、99.999%のシステム稼働率、世界規模の処理基盤と最適化された大規模MTAを提供し、さらに、フィードバックループなどメールに関する基本的なプロトコルに全て対応することで、効率的で遅延のないメール送信を実現しています。

メールを送信する皆さんがすることは、ベストプラクティスにしたがってメールクライアントから良いレピュテーションを獲得することだけです。きちんとメールを届けることは思った以上に大変で、誰もが簡単にできることではありません。そんな時、私たちTwilio SendGridがきっと皆さんのお役に立つでしょう。

メールを成功の原動力に

開発者にもマーケターにも信頼されているメールサービスを利用して、
時間の節約、スケーラビリティ、メール配信に関する専門知識を手に入れましょう。