SendGrid
の
ない世界
@azumakuniyuki
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
自己紹介
@azumakuniyuki (東邦之)
株式会社Cubicroot (京都市)
2
- インフラエンジニア(ラック実装から構築・保守)
- *BSD, Linux, 古くはSolaris, SunOS
- ネットワークの設計・サーバの構築と保守
- インフラのコード化支援(Ansible,Serverspec)
- 数年前からプログラマー
- 主にPerl, Rubyも
- サイトの開発(バックエンド)
- メール関連の開発
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
取材をうけた
3
https://employment.en-japan.com/engineerhub/entry/2017/08/23/110000
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
ニャーン
4SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
電子メール
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
Email Address
6
- コミュニケーションツールの個人識別子としての役割は終わった
- 実は裏で使われてるけどメールアドレスを意識してないとか
- iMessage(iOSの)
- 電話番号よりも容易に複数持てる識別子
- だれでも容易に取得できる(個人情報が不要)
- 何個でも持てる(ローカルパートを統一したり(してる))
- 任意の文字列を設定できる(覚えやすい)
- いつでも捨てられる(変更・放置)
緩めの個人識別子(ID)
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
SendGridのない世界
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
8
Before 2009
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
9
- 2009年以前のメール配信サービス
- 全く無いわけではなかった
- ガラケー宛配信に特化した宣伝文句
- 60万通/時 (docomo, au)
- 8万(?通/時 (Vodafone, SoftBank)
- アプライアンスの形をした配信エンジン
- I/FはSMTPだけ
- SMTPで時速60万通リレーするには高性能マシンが要る
SendGridは2009年うまれ
Before 2009
167
通/秒
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
10
- 他一切の配信サービスが無い世界
- 自前で配信システムを作る必要がある
1. SMTPサーバ(配信量によって数台〜もっと)
2. IPアドレス(もちろん固定IPアドレス・たくさん)
3. レピュテーション(評判・日頃の行い)
4. メールアドレス管理(バウンスが発生しないように)
5. キューの管理・大規模遅延時のオペレーション
6. 配信速度の調整(低速配信ができるように)
もしSendGridが無かったら
No Email Delivery Services
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
11
GROUP BY
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
12
メールを重要度で分類
Precedence
1. 決済(有料会員・請求情報・領収情報)
2. 登録(新規登録・設定変更・登録抹消)
3. 通知(規約変更・ユーザ間のメッセージ)
4. 宣伝(キャンペーン・その他お知らせ)
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
13
1. SMTP SERVERS
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
14
最低2台
1. SMTP Servers
- (優先度・高) 決済・登録に関するメール
- なるべく遅延しないように
- 低優先度メール配信の遅延に巻き込まれることがある
- バウンス率も低く低く抑える(0.1%以下とか)
- 配信量が偏らない傾向にある
- (優先度・低) 通知・宣伝に関するメール
- 多少遅延が許される
- 短時間で大量に配信する傾向にある
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
SMTP SERVERS(1)
15
ニャーン
里親になる!
なまえ
メール
でんわ
@
新着ネコ
決済系
登録系
通知系
宣伝系
遅延の影響を受けないよう
に混ぜないで直接配送する
Destination
Host
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
SMTP SERVERS(2)
16
ニャーン
里親になる!
なまえ
メール
でんわ
@
新着ネコ
決済系
遅延の影響を受けないよう
に混ぜないで直接配送する
登録系
通知系
Destination
Host
宣伝系
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
Destination
Host
SMTP SERVERS(3)
17
ニャーン
里親になる!
なまえ
メール
でんわ
@
新着ネコ
決済系
登録系
通知系
宣伝系
遅延対策で多段構成
遅延したら
別サーバへ
リレー
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
Destination
Host
SMTP SERVERS(4)
18
ニャーン
里親になる!
なまえ
メール
でんわ
@
新着ネコ
決済系
登録系
通知系
宣伝系
更に多段構成(用心)
遅延したら
別サーバへ
リレー
遅延したら
別サーバへ
リレー
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
Destination
Host
SMTP SERVERS(5)
19
ニャーン
里親になる!
なまえ
メール
でんわ
@
新着ネコ
決済系
登録系
通知系
短時間で大量配信
遅延したら
別サーバへ
リレー
遅延したら
別サーバへ
リレー
たくさん用意する
遅延対策
でなるべ
く分散
全部別の
IPアドレス
を割当てる
宣伝系
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
Destination
Host
SMTP SERVERS(6)
20
ニャーン
里親になる!
なまえ
メール
でんわ
@
新着ネコ
決済系
登録系
通知系
短時間で大量配信
遅延したら
別サーバへ
リレー
遅延したら
別サーバへ
リレー
たくさん用意する
遅延対策
でなるべ
く分散
全部別の
IPアドレス
を割当てる
全部別の
IPアドレス
を割当てる
全部別の
IPアドレス
を割当てる
宣伝系
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
21
2. IP Addresses
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
22
たくさんのIPv4アドレスが要る
2. IPv4 Addresses
- IPv4アドレスはもう枯渇している(2011 IANA)
- /26とか/27でも確保が難しい?(クラウド使うとか)
- 割り当てられたIPアドレスが汚れている問題
- やたらと遅延する・接続が拒否される
- スパム配信で使われていたかも...
- 能動的(スパマー)か受動的(踏み台)か
- DNSBL(Spamhaus, Spamcopなど)に登録されてる
- メールアプライアンス独自のブラックリストに載ってるとか
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
23
IPv6でSMTP?
2. IPv6 Addresses
- 全然追いかけてない
- Gmailで強制されたら一般化するかな?
- まだまだIPv4のSMTP
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
24
3. Reputation
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
25
IPアドレスごとの配信実績
3. Reputation
- 評判(信用の世界・日頃の行い)
- 昔(200X年代)は無かった?
- 当時は知らなかった
- 配信実績の無いIPアドレスからはサラサラ送れた
- 今(201X年代)は重要な要素
- 突然大量に配信を始めても送れないらしい(伝聞)
- ちびちび送る暖機運転が必要
- 時間がかかる
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
26
4. Address Management
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
27
メールアドレスの管理
4. Address Management
- 届かない宛先には二度と送らない
- ハードバウンス(宛先不明・ドメインが無い)
- SendGridでは"event": "dropped"で破棄される
- SMTP接続が拒否されるようになる・遅延がひどくなる
- 送る量が少量でもアドレス管理はやるべき
- バウンスメールを解析するとか
- クラウドのバウンス系イベントをDBに反映させるとか
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
28
有効なメールアドレス数を把握
4. Address Management
- マーケティングの観点
- 100万ユーザのうち50%が送れないアドレス(という仮定)
- 見積もり段階で使う数値の根拠が信用できない
- クリック率とか
- ランディングページを置くホストのスペック選定とか
- 管理していても配信ごとに1%以下の割合でバウンスする
- バウンス率を1%以下で維持し続ける必要がある
- メールアドレスは水物・ナマモノ
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
29
Troublesome
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
30
面倒な要素がたくさんある
Troublesome...
1. SMTPサーバ
- たくさんいる・サーバ管理・キュー管理・死活監視・資産?
2. IPアドレス
- まとめて確保が難・ハズレIPアドレス
3. レピュテーション
- 割り当てられたIPアドレスの評判確認・DNSBL対応・暖機運転
4. アドレス管理
- 死んでるメアドに送らない・状態をアプリ側にも反映
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
31
自前システムでも利点はある
Advantages
1. コスト
- 膨大な配信を行う(クラウドでは予算が合わない場合)
- すでにハードウェアもIPアドレスも確保している
- SMTPに詳しいエンジニアがいて開発ができる
2. 柔軟性
- 細かな調整ができる
- サイトに合わせたカスタマイズ
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
32
そやけど
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
33
SendGrid便利・楽
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
Destination
Host
use SendGrid
34
ニャーン
里親になる!
なまえ
メール
でんわ
@
新着ネコ
決済系
登録系
通知系
短時間で大量配信
遅延したら
別サーバへ
リレー
遅延したら
別サーバへ
リレー
遅延対策
でなるべ
く分散
宣伝系
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
Destination
Host
use SendGrid
35
ニャーン
里親になる!
なまえ
メール
でんわ
@
新着ネコ
決済系
登録系
通知系
遅延したら
別サーバへ
リレー
遅延したら
別サーバへ
リレー
遅延対策
でなるべ
く分散
宣伝系
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
36
メールを送った後
Sisimai
http://libsisimai.org/
SendGrid Night in Osaka #2 | 2017/09/07(木) R3 instituteさん
SendGridのない世界 @azumakuniyuki
終

SendGridのない世界 | SendGrid Night in Osaka #2