Heroku	
  Meetup	
  #11	
  New	
  Year	
  Party!!	
  
-­‐	
  新年会	
  -­‐	

Heroku	
  ×	
  SendGrid	
  
イベント管理について考えてみる	
	
 ...
佐藤 航について	
•  本業	
  
–  所属 株式会社 構造計画研究所	
  
–  担当 SendGrid	
  

•  個人的活動	
  
–  Androidアプリケーション開発者です	
  
–  @awwa500	
  

•...
構造計画研究所について	
•  SendGridの正規代理店	
  
–  日本語サポート、ドキュメント提供、請求書払い対
応とか	
  
–  HerokuアドオンとしてSendGridをご利用の場合も
サポートします	
  
–  hDps...
SendGridについて	
•  Mail	
  as	
  a	
  Service	
  
•  メール配信するHerokuアドオン	
  
•  ワールドワイドで月間100億通	
  
Some	
  App	

SendGridはメール...
今日のネタ	

	
  
	
  
Heroku × SendGrid	
  
イベント管理について	
  
	
  
	
  
早速、今日のネタです。�
メールサービス運用のあるある	
•  「メールが届かない!」 → 原因調査	
  
•  配信停止リクエスト → アドレスリストから削除	
  
•  バウンスされた → メールアドレスの特定	
  
•  スパム報告された → 顧客リストと連...
Email	
  AcPvity	
•  SendGrid標準機能	
  
•  各種イベントを過去7日間分検索できる	
  

こういう場合はSendGrid標準機能のEmail Activityを利用することで対応できます。�
たったの7日間	

でも検索可能な期間が短いのが残念です。�
解→Event	
  Webhook	
•  メール送信にまつわる各種イベントをPOST	
  
–  メール受付	
  
–  ドロップ	
  
–  メール配信	
  
–  遅延	
  
–  バウンス	
  
–  開封	
  
–  ...
POSTの受け口	

では、POSTの受け口はどうすればいいでしょうか。�
「Heroku	
  初心者 入門」でググる	
•  無数にヒットする	
  
POST	
  
(JSON)	

Postgres	

自分は初心者なので「Heroku 初心者 入門」でググると、だいたいこんな構成がヒットします。これはこれで...
「Heroku	
  JSON	
  Mongo」でググる	
•  直接ストアされるらしい	
  
POST	
  
(JSON)	

JSONといえばMongoDBなので検索キーワードにMongoを入れてみます。Mongolabというのがなん...
やってみた	
•  MongolabのURLを指定するだけ	
  

hDps://api.mongolab.com/api/
1/databases/<database-­‐
name>/collecPons/<collecPon-­‐
na...
できた	

いきなりストアされました。�
「Heroku	
  JSON ログ」でググる	
•  これだ 感	
  
POST	
  
(JSON)	

他にJSONでログ系をググってみると、fluentdがヒットします。めちゃくちゃ流行ってるらしいです。�

Treasure	
  ...
やってみた	
•  Heroku上にfluentdをインストールする	
  
–  hDp://docs.fluentd.org/ja/arPcles/install-­‐on-­‐
heroku	
  

とりあえず、fluentdの公式ドキュメ...
やってみた	
•  fluent-­‐plugin-­‐hDp-­‐exを使う	
  
–  Gemfile	
  

–  Procfile	
  

hDp-­‐exを入れる	

hDp-­‐exを使う	
インプット側はhttp-exプラグインを...
やってみた	
•  Treasure	
  data向け設定	
  

アウトプット側はTreasure Dataプラグインを使います。�
やってみた	
•  fluentd(hDp-­‐ex)のURLをSendGridに設定	
  

hDp://x.herokuapp.com/
js/td.tag.here	
「js」はJSONリストの意味	
最後にfluentdのURLをSen...
できた	

あっさりストアされました。Automatic schemaに感動しました。�
「fluentd	
  ログ 活用」でググる	
•  時間切れ	
  
Amazon	
  S3	
  
MySQL	
  
MongoDB	

fluentdを使うと他にもいろいろと展開が考えられそうですが、今日は時間がありません。�
POSTの受け口	
•  SendGrid	
  
–  1秒または1MB超どちらか早いタイミングでPOST	
  
–  200以外を返すと24時間リトライを続ける	
  

•  性能	
  
–  負荷テストしましょう	
  
•  Lo...
まとめというか、感想というか	
•  HerokuもTreasure	
  Dataも公式ドキュメントがと
てもわかりやすい	
  

•  SendGridをご利用の際はぜひ弊社経由で!	
  
–  hDps://sendgrid.kke....
参考	
i. 

「Heroku上にFluentd	
  (td-­‐agent)をインストールする」hDp://docs.fluentd.org/ja/arPcles/install-­‐on-­‐heroku	
  (2013-­‐05-­‐...
ありがとうございました
Upcoming SlideShare
Loading in …5
×

Heroku × SendGridイベント管理

2,784 views

Published on

SendGridのイベントをMongoDB、Treasure Dataを使ってストアする方法をご紹介します

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,784
On SlideShare
0
From Embeds
0
Number of Embeds
1,324
Actions
Shares
0
Downloads
6
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Heroku × SendGridイベント管理

  1. 1. Heroku  Meetup  #11  New  Year  Party!!   -­‐  新年会  -­‐ Heroku  ×  SendGrid   イベント管理について考えてみる   2014/1/16   佐藤 航 今回はHerokuとSendGridでのイベント管理について考えてみます。�
  2. 2. 佐藤 航について •  本業   –  所属 株式会社 構造計画研究所   –  担当 SendGrid   •  個人的活動   –  Androidアプリケーション開発者です   –  @awwa500   •  Heroku歴   –  21日!   Heroku歴21日です。すみません。�
  3. 3. 構造計画研究所について •  SendGridの正規代理店   –  日本語サポート、ドキュメント提供、請求書払い対 応とか   –  HerokuアドオンとしてSendGridをご利用の場合も サポートします   –  hDps://sendgrid.kke.co.jp   •  その他   –  hDp://www.kke.co.jp   日本でSendGridをいい感じで使えるようにします。�
  4. 4. SendGridについて •  Mail  as  a  Service   •  メール配信するHerokuアドオン   •  ワールドワイドで月間100億通   Some  App SendGridはメールサービスの運用を楽にしてくれます。�
  5. 5. 今日のネタ     Heroku × SendGrid   イベント管理について       早速、今日のネタです。�
  6. 6. メールサービス運用のあるある •  「メールが届かない!」 → 原因調査   •  配信停止リクエスト → アドレスリストから削除   •  バウンスされた → メールアドレスの特定   •  スパム報告された → 顧客リストと連携して対策   メールサービスを運用していてよくある問題です。この場合、まずは原因調査が必要です。�
  7. 7. Email  AcPvity •  SendGrid標準機能   •  各種イベントを過去7日間分検索できる   こういう場合はSendGrid標準機能のEmail Activityを利用することで対応できます。�
  8. 8. たったの7日間 でも検索可能な期間が短いのが残念です。�
  9. 9. 解→Event  Webhook •  メール送信にまつわる各種イベントをPOST   –  メール受付   –  ドロップ   –  メール配信   –  遅延   –  バウンス   –  開封   –  クリック   –  スパム報告   –  配信停止リクエスト   POST   (JSON) Some     Web  App そういう場合、Event Webhookが解決します。Event Webhookはメール送信にまつわる各種イベントを指定したURLにPOSTする機能です。�
  10. 10. POSTの受け口 では、POSTの受け口はどうすればいいでしょうか。�
  11. 11. 「Heroku  初心者 入門」でググる •  無数にヒットする   POST   (JSON) Postgres 自分は初心者なので「Heroku 初心者 入門」でググると、だいたいこんな構成がヒットします。これはこれで良いと思います。�
  12. 12. 「Heroku  JSON  Mongo」でググる •  直接ストアされるらしい   POST   (JSON) JSONといえばMongoDBなので検索キーワードにMongoを入れてみます。Mongolabというのがなんとかしてくれそうです。�
  13. 13. やってみた •  MongolabのURLを指定するだけ   hDps://api.mongolab.com/api/ 1/databases/<database-­‐ name>/collecPons/<collecPon-­‐ name>?apiKey=<api-­‐key> 設定は簡単です。�
  14. 14. できた いきなりストアされました。�
  15. 15. 「Heroku  JSON ログ」でググる •  これだ 感   POST   (JSON) 他にJSONでログ系をググってみると、fluentdがヒットします。めちゃくちゃ流行ってるらしいです。� Treasure   Data   Hadoop   :   その他   いろいろ    
  16. 16. やってみた •  Heroku上にfluentdをインストールする   –  hDp://docs.fluentd.org/ja/arPcles/install-­‐on-­‐ heroku   とりあえず、fluentdの公式ドキュメントに沿ってHeroku上にfluentdをセットアップします。�
  17. 17. やってみた •  fluent-­‐plugin-­‐hDp-­‐exを使う   –  Gemfile   –  Procfile   hDp-­‐exを入れる hDp-­‐exを使う インプット側はhttp-exプラグインを使います。POSTフォーマットの関係上、in_httpプラグインは使えません。�
  18. 18. やってみた •  Treasure  data向け設定   アウトプット側はTreasure Dataプラグインを使います。�
  19. 19. やってみた •  fluentd(hDp-­‐ex)のURLをSendGridに設定   hDp://x.herokuapp.com/ js/td.tag.here 「js」はJSONリストの意味 最後にfluentdのURLをSendGrid側に設定します。�
  20. 20. できた あっさりストアされました。Automatic schemaに感動しました。�
  21. 21. 「fluentd  ログ 活用」でググる •  時間切れ   Amazon  S3   MySQL   MongoDB fluentdを使うと他にもいろいろと展開が考えられそうですが、今日は時間がありません。�
  22. 22. POSTの受け口 •  SendGrid   –  1秒または1MB超どちらか早いタイミングでPOST   –  200以外を返すと24時間リトライを続ける   •  性能   –  負荷テストしましょう   •  Loader.io   ちなみにSendGridは状況によってわりと激しくPOSTするので、一応、受け口の負荷試験をやっておきましょう。�
  23. 23. まとめというか、感想というか •  HerokuもTreasure  Dataも公式ドキュメントがと てもわかりやすい   •  SendGridをご利用の際はぜひ弊社経由で!   –  hDps://sendgrid.kke.co.jp   使い方が浅いので「簡単に設定できて楽でした」的な感想しかないですが、それってとても大切なことだと思います。�
  24. 24. 参考 i.  「Heroku上にFluentd  (td-­‐agent)をインストールする」hDp://docs.fluentd.org/ja/arPcles/install-­‐on-­‐heroku  (2013-­‐05-­‐15)   ii.  「fluent-­‐plugin-­‐hDp-­‐ex  をリリースしました!」 hDp://nuke.hateblo.jp/entry/2013/08/07/195657  (2013-­‐08-­‐07)   iii.  「fluentd  Log  Everything  in  JSON」hDp://www.slideshare.net/treasure-­‐data/fluentd-­‐meetup-­‐2  (2012-­‐8-­‐23)   iv.  「Big  Data入門に見せかけたFluentd入門」hDp://www.slideshare.net/keithseahus/big-­‐datafluentd  (2013-­‐1-­‐20)   v.  「柔軟なログ収集を可能にする「fluentd」入門」 hDp://knowledge.sakura.ad.jp/tech/1336/  (2013-­‐12-­‐9)   vi.  「Fluentdで始めるリアルタイムでのログ有効活用」 hDp://codezine.jp/arPcle/detail/6958#note01  (2013-­‐02-­‐14)   vii.  「アクセスログをTreasure  Dataに送ってみよう」 hDp://sstd-­‐bigdata.blogspot.jp/2013/05/treasure-­‐data.html  (2013-­‐5)   viii.  「Treasure  Data  Plalorm  で始めるデータ分析入門 〜1.  イントロダクション〜」 hDp://doryokujin.hatenablog.jp/entry/2014/01/10/165221  (2014-­‐01-­‐10)   ix.  「Use  a  Mongo  REST  Interface  to  Store  SendGrid  Event  Data」 hDp://sendgrid.com/blog/mongo-­‐rest-­‐event-­‐data/   (2014-­‐01-­‐07)   x.  素材 「ヒバナ」 hDp://hibana.rgr.jp/  
  25. 25. ありがとうございました

×