Jobのお話
どんなプロダクト?
Google とか Yahoo とかの広告の配信結果を収集して
各プロダクトの売上を広告の配信結果を紐付けて
効果計測するため
サマリーデータ作ったり
レポート生成したり
プロダクトを支える
重要な技術
JOB
どんな課題だったか
課題
数値は随時更新されるので最新のものにしたい
入稿データにミスがあって集計できないので修正したのですぐ再集計したい
それってつまり 🤔
すぐリトライしたい ☺️
JOBの重要な機能
リトライ
冪等性
JOBの適切な粒度
冪等性とは
大雑把に言って、ある操作を1回行っても複数回行っても結果が同じであることをいう概念
現状すぐ簡単に
できない 😡
なぜか 🤔
理由
Jobが1回しか実行できない
1回しか実行できないようにしている
Treasure Dataに入れているので重複カウントになってしまうから同じ結果が出てこない
インポートや集計に時間がかかる
特に集計したとき広告1つ1つのインスタンスを生成してElasticsearchに入れているのが無駄
インポートが全部終わってないと集計できない仕様
集計要求はプロダクト毎に来る
プロダクト毎に集計できるのが望ましい
Treasure Dataにデータを入れて,集計して,集計結果をElasticsearchにいれて...なんだかリトライが煩わしい
Jobが1回しか実行できない
対策
Treasure Dataの今日インポートした分を削除する
削除投げてみてもなんかうまく消えたり消えなかったりする現象あるで...
毎回 create -> drop
Treasure Dataのデータがバックアップ的な意味合いがあったので消しづらい
実は古いデータにアクセスすると全スキャン走ってるっぽくてめっちゃselect遅い
実はバックアップになっていなかった可能性
Treasure Data使わない
Treasure Dataを使わなくてもいけるの?
こっそりKibana入れてみていた
データ確認にも使える
誰か分析とかで使いたいとか言い出さないかな...
Treasure Dataを使っていたのは広告から広告グループやキャンペーンなど広告をまとめたもののデータを集計するために使っていたのだが...
Kibanaから試しに広告のindexにaggregation投げたら普通にリアルタイムな時間で返ってきてしまった(多少filterしてるけど)
もうTreasure Dataいらないんじゃね?
👋
インポートや集計に時間がかかる
直接ESに入れるので広告1つ1つを入れる部分がなくなった
インポートが全部終わってないと集計できない仕様
キーとしてプロダクト毎に分かれる機能がなかったのでつけた
省略
💪
Treasure Dataにデータを入れて,集計して,集計結果をElasticsearchにいれて...
もう Elasticsearch だけ
WorkFlow いれたらいいと思う
DigDag
Treasure Data 古橋さん謹製 WorkFlow Engine
間違いなし
import 周りは job いっぱいだし前後関係あるので DigDag入れる予定
🙏
結局これで何ができる?
すぐ簡単に
リトライできる 🙌
副産物
TD分のお金浮く
ローカル完結できる
Made with Slides.com