SlideShare a Scribd company logo
1 of 93
Download to read offline
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
塩野 貴義, 橋本 尚亮
ヤフーの広告
レポートシステムを
Spring Cloud Stream化
するまで
2017年5月20日
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.2
塩野 貴義
■家族構成
妻、息子2人(9歳♂双子)
■趣味
車、バイク
■経歴
2011/08 ヤフーに転職
2013/10 レポートシステム
2017/04 集計システム
自己紹介
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.3
橋本 尚亮
■家族構成
独身
■趣味
音楽鑑賞
■経歴
2016/04 ヤフーに新卒入社
2016/09 レポートシステム
自己紹介
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
概要
4
第一世代 第二世代 第三世代
2013 2015 2017
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
5
1. 広告レポートシステムについて
2. 第一世代~PHP&Perl~
3. 第二世代~Spring Batch&Hive~
4. 第三世代~Spring Cloud Stream~
5. まとめ
6. tips
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
6
1. 広告レポートシステムについて
2. 第一世代~PHP&Perl~
3. 第二世代~Spring Batch&Hive~
4. 第三世代~Spring Cloud Stream~
5. まとめ
6. tips
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
広告レポートについて
7
 お客様(広告主)が入稿した広告の配
信実績を確認するためのレポート
 レポート出力する項目や集計単位は
指定可能
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
広告レポートのユースケース
8
 通常レポート
• API経由で作成リクエストを受け取る
• 常時稼働
• レポート作成は非同期で行う
Request
Job
登録
Report job
Report
作成
Job取得
API
Batch
API Batch
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
広告レポートのユースケース
9
 定期レポート
• 定期レポートとして登録されているレ
ポートのJobを一括登録する
• 毎朝1回
• レポート作成方法は通常レポートと同じ
Report job
Report
作成
Job取得
定期
レポート
Job
登録
Batch
Batch
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
広告レポートのユースケース
10
 通常レポート
• 常時稼働、約25万レポート/日
 定期レポート
• 毎朝1回、約5万レポート/日
Request
Job
登録
Report job
Report
作成
Job取得
定期
レポート
Job
登録
API
Batch
Batch
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
レポートのリクエスト数
11
80,000
150,000
300,000
第一世代(2014) 第二世代(2016) 第三世代(2017)
インターネット広告市場の拡大に伴い
レポート作成の
リクエスト数は年々増加
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
広告レポートシステム全体
12
Request
Job
登録
Report job
Report
作成
Job取得
メール
送信
定期
レポート
Job
登録
Job取得
配信実績取得
配信ログ集計
API
Batch
Batch
Batch
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
13
1. 広告レポートシステムについて
2. 第一世代~PHP&Perl~
3. 第二世代~Spring Batch&Hive~
4. 第三世代~Spring Cloud Stream~
5. まとめ
6. tips
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第一世代
14
Request
Job
登録
Report job
Report
作成
メール
送信
定期
レポート
Job
登録
配信ログ集計 ストレージ2次集計
日次夜間集計
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第一世代
15
Request
Job
登録
Report job
Report
作成
メール
送信
定期
レポート
Job
登録
配信ログ集計 ストレージ2次集計
日次夜間集計
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第一世代
16
Request
Job
登録
Report job
Report
作成
メール
送信
定期
レポート
Job
登録
配信ログ集計 ストレージ2次集計
日次夜間集計
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Report
作成
第一世代
17
Request
Job
登録
Report job
Job取得
メール
送信
定期
レポート
Job
登録
配信実績取得
配信ログ集計 ストレージ2次集計
日次夜間集計
Job取得
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第一世代
18
Request
Job
登録
Report
作成
Job取得
メール
送信
定期
レポート
Job
登録
Job取得
配信実績取得
ストレージ2次集計
Report job
配信ログ集計
日次夜間集計
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第一世代
19
Request
Job
登録
Report job
Report
作成
Job取得
メール
送信
定期
レポート
Job
登録
Job取得
配信実績取得
配信ログ集計 ストレージ2次集計
日次夜間集計
二次集計
処理時間:4時間以上
集計結果容量:1TB以上/日
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第一世代の課題
20
 開発が複雑
• 全ての処理が依存しあっていて影響範囲が広い
• テストパターンが網羅しきれない
• 2000行以上の設定ファイルを共有
• Objectは全てArray
• 改修・拡張でコードが複雑化
• 動的型付けで想定外の挙動
• 開発サーバ上でVimによる開発
 運用コストが高い
• リカバリの再集計は複数人で半日以上
• ファイルの欠損等で月に数回リカバリ作業が発生
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第一世代の課題
21
 開発が複雑
• 全ての処理が依存しあっていて影響範囲が広い
• テストパターンが網羅しきれない
• 2000行以上の設定ファイルを共有
• Objectは全てArray
• 改修・拡張でコードが複雑化
• 動的型付けで想定外の挙動
• 開発サーバ上でVimによる開発
 運用コストが高い
• リカバリの再集計は複数人で半日以上
• ファイルの欠損等で月に数回リカバリ作業が発生
- 品質を担保できない
- 開発に時間がかかりすぎてログ量の
増加や機能拡張に追いつけない
- ぐっすり眠れない
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
なんとかしたい
22
 開発スピードを上げたい
 運用をもっと楽にして開発に集中
したい
 ぐっすり寝たい
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
23
1. 広告レポートシステムについて
2. 第一世代~PHP&Perl~
3. 第二世代~Spring Batch&Hive~
4. 第三世代~Spring Cloud Stream~
5. まとめ
6. tips
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第一世代(2014)
24
Request
Job
登録
Report job
レポート
作成
Job取得
メール
送信
定期
レポート
Job
登録
Job取得
配信実績取得
配信ログ集計 ストレージ2次集計
日次夜間集計
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第二世代(2016)
25
Request
Job
登録
Report job
レポート
作成
Job取得
メール
送信
定期
レポート
Job
登録
Job取得
配信実績取得
配信ログ集計 ストレージ2次集計
日次夜間集計
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第二世代(2016)
26
Request
Job
登録
Report job
レポート
作成
Job取得
メール
送信
定期
レポート
Job
登録
Job取得
配信実績取得
配信ログ集計
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第一世代から第二世代へ
27
 Java / Spring Batch
• DIコンテナによる疎結合とテストの充実
• 静的型付けで安心
• ライブラリが充実
• IDE
 Hive on Tez
• 二次集計が不要
• 保守するコード量が激減
• 自由度高く実績取得可能
 運用
• ぐっすり眠れるようになった
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第一世代から第二世代へ
28
詳しくはこちら
JJUG CCC 2016 Spring
広告システム刷新の舞台裏
PHPからJavaに変えてみました
https://www.slideshare.net/techblogyahoo/jjugccc-cccf1-phpjava
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第二世代(2016)
29
Request
Job
登録
Report job
レポート
作成
Job取得
メール
送信
定期
レポート
Job
登録
Job取得
配信実績取得
配信ログ集計
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
問題発生
30
Request
Job
登録
Report job
レポート
作成
Job取得
メール
送信
定期
レポート
Job
登録
Job取得
配信実績取得
配信ログ集計
二次集計をなくしたことで配信実績
取得にかかる時間が増加
全体のスループットの低下
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
解決策
31
Request
Job
登録
レポート
作成
Job取得
定期
レポート
Job
登録
配信実績取得
Report job
配信ログ集計
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
解決策
32
Request
Job
登録
レポート
作成
Job取得
定期
レポート
Job
登録
配信実績取得
Report job
配信ログ集計
レポート
作成
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
解決策
33
Request
Job
登録
レポート
作成
Job取得
定期
レポート
Job
登録
配信実績取得
Report job
配信ログ集計
レポート
作成
これで解決?
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
解決策
34
Request
Job
登録
レポート
作成
Job取得
定期
レポート
Job
登録
配信実績取得
Report job
配信ログ集計
レポート
作成
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
解決策
35
Request
Job
登録
レポート
作成
Job取得
定期
レポート
Job
登録
配信実績取得
Report job
配信ログ集計
レポート
作成
・・・
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
解決策
36
Request
Job
登録
レポート
作成
Job取得
定期
レポート
Job
登録
配信実績取得
Report job
配信ログ集計
レポート
作成
・・・
レポート
作成
レポート
作成
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
解決策
37
Request
Job
登録
レポート
作成
Job取得
定期
レポート
Job
登録
配信実績取得
Report job
配信ログ集計
レポート
作成
・・・
レポート
作成
レポート
作成
・・・
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
解決策
38
Request
Job
登録
レポート
作成
Job取得
定期
レポート
Job
登録
配信実績取得
Report job
配信ログ集計
レポート
作成
・・・
レポート
作成
レポート
作成
・・・
レポート
作成
レポート
作成
レポート
作成
レポート
作成
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
解決策
39
Request
Job
登録
レポート
作成
Job取得
定期
レポート
Job
登録
配信実績取得
Report job
配信ログ集計
レポート
作成
・・・
レポート
作成
レポート
作成
・・・
レポート
作成
レポート
作成
レポート
作成
レポート
作成
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
解決策
40
Request
Job
登録
レポート
作成
Job取得
定期
レポート
Job
登録
配信実績取得
Report job
配信ログ集計
レポート
作成
・・・
レポート
作成
レポート
作成
・・・
レポート
作成
レポート
作成
レポート
作成
レポート
作成
レポート
作成
レポート
作成
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
解決策
41
Request
Job
登録
レポート
作成
Job取得
定期
レポート
Job
登録
配信実績取得
Report job
配信ログ集計
レポート
作成
・・・
レポート
作成
レポート
作成
・・・
レポート
作成
レポート
作成
レポート
作成
レポート
作成
レポート
作成
レポート
作成
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第二世代の課題
レポート作成Batchをスケールアウト
RDBへのポーリングのアクセス数が増大
RDBが高負荷
他のシステムにも影響
42
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
43
1. 広告レポートシステムについて
2. 第一世代~PHP&Perl~
3. 第二世代~Spring Batch&Hive~
4. 第三世代~Spring Cloud Stream~
5. まとめ
6. tips
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第二世代(2016)
44
Request
Job
登録
レポート
作成
Job取得
定期
レポート
Job
登録
配信実績取得
Report job
配信ログ集計
レポート
作成
・・・
レポート
作成
レポート
作成
・・・
レポート
作成
レポート
作成
レポート
作成
レポート
作成
レポート
作成
レポート
作成
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第三世代(2017)
45
Request
Job
登録
レポート
作成
Job取得
定期
レポート
Job
登録
配信実績取得
配信ログ集計
レポート
作成
・・・
レポート
作成
レポート
作成
・・・
レポート
作成
レポート
作成
レポート
作成
レポート
作成
レポート
作成
レポート
作成
MQ?
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第三世代(2017)
46
Request
Job
登録
レポート
作成
Job取得
定期
レポート
Job
登録
配信実績取得
配信ログ集計
レポート
作成
・・・
レポート
作成
レポート
作成
・・・
レポート
作成
レポート
作成
レポート
作成
レポート
作成
レポート
作成
レポート
作成
MQ?
レポート作成を
イベントドリブンに行いたい
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Spring Cloud Stream
47
 message-driven microservices
 Spring Boot
 consumer groups
 binder abstraction
http://cloud.spring.io/spring-cloud-stream/
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Spring Cloud Stream
48
Source Sink
output
input
定期
レポート
API
レポート
作成
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第三世代(2017)
49
レポート
作成
Request Job登録
Job登録
定期
レポート
・・・
・・・
レポート
作成
レポート
作成
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
 共通のdestinationを設定するだけで簡単にアプ
リケーション間が接続される
第三世代(2017)
50
レポート
作成
Request Job登録
Job登録
定期
レポート
・・・
・・・
レポート
作成
spring.cloud.stream.
bindings.output.destination
=reporting
spring.cloud.stream.
bindings.input.destination
=reporting
reporting
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
レポート
作成
Request Job登録
Job登録
定期
レポート
・・・
・・・
レポート
作成
レポート
作成
reporting
第三世代(2017)
51
{jobId:1002}{jobId:1002}{jobId:1002} {jobId:1002}
{jobId:1002}
{jobId:1002}
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
 設定1つで簡単にconsumer groupが作れるためス
ケールアウトが容易
spring.cloud.stream.bindings
.input.group=ydnrep
レポート
作成
Request Job登録
Job登録
定期
レポート
・・・
・・・
レポート
作成
レポート
作成
第三世代(2017)
52
reporting
.ydnrep
{jobId:1002}
ydnrep
{jobId:1002}
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
リリース
53
第二世代から第三世代へのリリースを
ダウンタイム0で行いたい
0. 旧システム稼働中
1. 新システムデプロイ
2. 新シスステムサービスイン
3. 旧シスステムAPIサービスアウト
4. 旧シスステムBatchサービスアウト
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
・・・
リリース
54
0.旧システム稼働中
Request
Job
登録
Report job
レポート作成
・・・
Job取得
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
・・・
リリース
55
1.新システムデプロイ
Request
Job
登録
Report job
レポート作成
・・・
Job取得
reporting
.ydnrep
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
・・・
リリース
56
2.新システムサービスイン
Request
Job
登録
Report job
レポート作成
・・・
Request
Job
登録
Job取得
レポート作成
reporting
.ydnrep
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
・・・
リリース
57
3.旧システムAPIサービスアウト
Report job
レポート作成
・・・
Request
Job
登録
Job取得
レポート作成
reporting
.ydnrep
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
・・・
リリース
58
4.旧システムBatchサービスアウト
Report job
・・・
Request
Job
登録 レポート作成
reporting
.ydnrep
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
・・・
リリース
59
4.旧システムBatchサービスアウト
Report job
・・・
Request
Job
登録 レポート作成
ダウンタイム0でリリース完了!
reporting
.ydnrep
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
性能比較
60
 リリースして動作確認
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
性能比較
61
 RabbitMQの管理画面
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
性能比較
62
 RabbitMQの管理画面
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
性能比較
63
 RabbitMQの管理画面
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
性能評価
 レポート作成プロセス数:558
 ポーリング時のSQL発行数/h
• 第二世代: 16,928
• 第三世代: 0
 レポート作成数/h
• 第二世代: 44,121
• 第三世代: 63,934
64
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第三世代(2017)
 イベントドリブンにレポート作成
Jobを取得できるようになりRDB
の負荷が減った
 1時間あたりの処理数も増えた
65
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第三世代(2017)
 イベントドリブンにレポート作成
Jobを取得できるようになりRDB
の負荷が減った
 1時間あたりの処理数も増えた
めでたしめでたし、、、
66
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
問題発生
 イベントドリブンにレポート作成
Jobを取得できるようになりRDB
の負荷が減った
 1時間あたりの処理数も増えた
めでたしめでたし、、、
67
SQL [INSERT into
BATCH_JOB_EXECUTION_PARAMS(JOB_EXECUTION_ID, KEY_NAME,
TYPE_CD, STRING_VAL, DATE_VAL, LONG_VAL, DOUBLE_VAL,
IDENTIFYING) values (?, ?, ?, ?, ?, ?, ?, ?)];
ORA-08177: can't serialize access for this transaction
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
原因
68
レポート
作成
定期
レポート
・・・
・・・
{jobId:1002,
・・・
jobId:51002}
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
原因
69
レポート
作成
定期
レポート
・・・
・・・
{jobId:1002,
・・・
jobId:51002}
{jobId:1002}
{jobId:1003}
{jobId:1503}
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
原因
70
レポート
作成
定期
レポート
・・・
・・・
Spring Batchの
Job管理テーブルに
同時に大量のINSERT
・・・
{jobId:1002,
・・・
jobId:51002}
{jobId:1002}
{jobId:1003}
{jobId:1503}
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
原因
71
レポート
作成
定期
レポート
・・・
・・・
Spring Batchの
Job管理テーブルに
同時に大量のINSERT
・・・
{jobId:1002,
・・・
jobId:51002}
{jobId:1003}
{jobId:1503}
3回失敗すると
メッセージは消失
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
対策(1/2)
72
レポート
作成
reporting
.ydnrep
・・・
・・・
ydnrep
レポート
作成
定期
レポート
 maxAttemptの上限を上げる
spring.cloud.stream.bindings.
input.consumer.maxAttempts=5
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
対策(2/2)
73
レポート
作成
reporting
.ydnrep
・・・
・・・
ydnrep
レポート
作成
reporting
.ydnrep.dlq
定期
レポート
 Dead Letter Queue を用意
spring.cloud.stream.rabbit.bind
ings.input.consumer.autoBindDlq
=true
{jobId:1002}
エラー処理
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
対策(2/2)
74
レポート
作成
reporting
.ydnrep
・・・
・・・
ydnrep
レポート
作成
reporting
.ydnrep.dlq
定期
レポート
 Dead Letter Queue を用意
{jobId:1002}
メッセージを
送信し直す
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
対策(2/2)
75
レポート
作成
reporting
.ydnrep
・・・
・・・
ydnrep
レポート
作成
reporting
.ydnrep.dlq
定期
レポート
 Dead Letter Queue を用意
{jobId:1002}
メッセージを
送信し直す
根本的な解決になっていない
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
対策(2/2)
76
レポート
作成
reporting
.ydnrep
・・・
・・・
ydnrep
レポート
作成
reporting
.ydnrep.dlq
定期
レポート
 Dead Letter Queue を用意
{jobId:1002}
メッセージを
送信し直す
Job RepositoryがDBアクセスしない方法を調査中
*常駐バッチのためJob Repositoryを
インメモリ化できない
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
77
1. 広告レポートシステムについて
2. 第一世代~PHP&Perl~
3. 第二世代~Spring Batch&Hive~
4. 第三世代~Spring Cloud Stream~
5. まとめ
6. tips
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第一世代(2014) 第二世代(2016) 第三世代(2017)
まとめ
78
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
第一世代(2014) 第二世代(2016) 第三世代(2017)
まとめ
79
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
まとめ
80
 刷新をする度に課題がバックエンドに移動
 ポーリング型からイベントドリブンに変更するこ
とでスループット向上
 大規模システムはリリースしてからが勝負
 Spring歴1年未満の私でもmicroservicesが簡単
に作れました
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
これから
・・・レポート
作成
API
メール
送信
定期
レポート
 他サービスのSpring Cloud Stream化
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
これから
・・・レポート
作成
API
メール
送信
定期
レポート
 ミドルウェアの比較・検討
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
これから
・・・レポート
作成
API
メール
送信
定期
レポート
 Cloud Foundryへの移行
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
これから
・・・レポート
作成
API
メール
送信
定期
レポート
 興味がある方は是非!
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
これから
 他サービスのSpring Cloud Stream化
 ミドルウェアの比較・検討
 Cloud Foundryへの移行
 興味がある方は是非!
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
86
1. 広告レポートシステムについて
2. 第一世代~PHP&Perl~
3. 第二世代~Spring Batch&Hive~
4. 第三世代~Spring Cloud Stream~
5. まとめ
6. tips
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Spring Cloud Streamの実装
87
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Spring Cloud Streamの実装
88
 API, BatchのSpring Boot化
 Source/Sinkの追加
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Spring Boot
89
 Application起動クラスの追加
 application.properties で設定を
管理
 API : war->jar (embedded jetty)
 Batch:苦戦
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Spring Boot
90
 第二世代Batch :
• 1つのjarに複数の機能
• 実行時にjobIdを指定
 第三世代Batch :
• 1application/jar
• 単発batch(定期レポート)
• 常駐batch(レポート作成, メール送信)
spring.batch.job.enabled=true
spring.batch.job.enabled=false
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Spring Boot
91
 1サーバに複数プロセス
• Web appとして起動するさせてしまうと
portの管理が必要
•
*Spring Boot 2.0では非推奨.代わりにWebApplicationType
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Release-
Notes
spring.main.web-environment=false
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Spring Boot
92
 Datasourceを2つ指定するときは
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
</bean>
<bean id="dataSourceHive" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="org.apache.hive.jdbc.HiveDriver"/>
</bean>
<bean class="org.springframework.batch.core
.configuration.annotation.DefaultBatchConfigurer">
<constructor-arg ref="dataSource" />
</bean>
java.lang.IllegalStateException: To use the default BatchConfigurer the context
must contain no more thanone DataSource, found 2
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Source/Sinkの追加
93
API
定期レポート
@EnableBinding(Source.class)
public class ReportJobSender {
@Autowired
Source source;
public void send(ReportJobMessage reportJobMessage) throws
MessageHandlingException{
Message<ReportJobMessage> message =
MessageBuilder.withPayload(reportJobMessage).build();
source.output().send(message);
}
}
@EnableBinding(Sink.class)
public class JobRequestListener {
//..
@StreamListener(Sink.INPUT)
public void handleRequest(ReportJobQueueMessage reportJobQueueMessage) {
Long reportJobId = reportJobQueueMessage.getBody().getJobId();
JobParameters jobParameters = new JobParametersBuilder()
.addLong("reportJobId", reportJobId)
.addDate("currentDate", currentDate).toJobParameters();
JobExecution jobExecution = jobLauncher.run(job, jobParameters);
}
}
レポート作成

More Related Content

What's hot

Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のことSpring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと心 谷本
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本kazuki kumagai
 
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜LINE Corporation
 
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDayマイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay都元ダイスケ Miyamoto
 
MQ入門
MQ入門MQ入門
MQ入門HIRA
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門Takashi Takizawa
 
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authleteいまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authleteTatsuo Kudo
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化dcubeio
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版貴志 上坂
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説Masahiko Sawada
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 
CloudNativeな決済サービスの開発と2年間の歩み #sf_A4
CloudNativeな決済サービスの開発と2年間の歩み #sf_A4CloudNativeな決済サービスの開発と2年間の歩み #sf_A4
CloudNativeな決済サービスの開発と2年間の歩み #sf_A4Junya Suzuki
 
App013 ここはあえて紙と
App013 ここはあえて紙とApp013 ここはあえて紙と
App013 ここはあえて紙とTech Summit 2016
 

What's hot (20)

[GKE & Spanner 勉強会] GKE 入門
[GKE & Spanner 勉強会] GKE 入門[GKE & Spanner 勉強会] GKE 入門
[GKE & Spanner 勉強会] GKE 入門
 
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のことSpring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
 
nginx入門
nginx入門nginx入門
nginx入門
 
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
ソフトウェアでのパケット処理あれこれ〜何故我々はロードバランサを自作するに至ったのか〜
 
ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介
 
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDayマイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
 
MQ入門
MQ入門MQ入門
MQ入門
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門
 
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authleteいまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
 
HTTP/2 入門
HTTP/2 入門HTTP/2 入門
HTTP/2 入門
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
CloudNativeな決済サービスの開発と2年間の歩み #sf_A4
CloudNativeな決済サービスの開発と2年間の歩み #sf_A4CloudNativeな決済サービスの開発と2年間の歩み #sf_A4
CloudNativeな決済サービスの開発と2年間の歩み #sf_A4
 
App013 ここはあえて紙と
App013 ここはあえて紙とApp013 ここはあえて紙と
App013 ここはあえて紙と
 

Viewers also liked

Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Logico
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたKoichi Sakata
 
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Kosuke Kida
 
Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.JustSystems Corporation
 
VMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VMVMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VMyy yank
 
Java libraries you can't afford to miss
Java libraries you can't afford to missJava libraries you can't afford to miss
Java libraries you can't afford to missAndres Almiray
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)Ikuru Kanuma
 
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求hajime funaki
 
2017spring jjug ccc_f2
2017spring jjug ccc_f22017spring jjug ccc_f2
2017spring jjug ccc_f2Kazuhiro Wada
 
Introduction of Project Jigsaw
Introduction of Project JigsawIntroduction of Project Jigsaw
Introduction of Project JigsawYuichi Sakuraba
 
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善Works Applications
 
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~Yoshio Kajikuri
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜JustSystems Corporation
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 Hiroshi Ito
 
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Hiroyuki Ohnaka
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門Masaya Dake
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8y_taka_23
 

Viewers also liked (20)

Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
 
Jjug ccc
Jjug cccJjug ccc
Jjug ccc
 
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1
 
Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.
 
VMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VMVMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VM
 
Java libraries you can't afford to miss
Java libraries you can't afford to missJava libraries you can't afford to miss
Java libraries you can't afford to miss
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)
 
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
 
2017spring jjug ccc_f2
2017spring jjug ccc_f22017spring jjug ccc_f2
2017spring jjug ccc_f2
 
Introduction of Project Jigsaw
Introduction of Project JigsawIntroduction of Project Jigsaw
Introduction of Project Jigsaw
 
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
日本Javaグループ2017年定期総会 #jjug
日本Javaグループ2017年定期総会 #jjug 日本Javaグループ2017年定期総会 #jjug
日本Javaグループ2017年定期総会 #jjug
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
 
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
 

Similar to ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4

行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋Yahoo!デベロッパーネットワーク
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo!デベロッパーネットワーク
 
大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来Masayuki Ueda
 
ディップ株式会社_kintonehive
ディップ株式会社_kintonehiveディップ株式会社_kintonehive
ディップ株式会社_kintonehiveCybozucommunity
 
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介Daisuke Ikeda
 
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfesYahoo!デベロッパーネットワーク
 
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望Yahoo!デベロッパーネットワーク
 
最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと
最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと
最若手メンバーこそチャンス!チーム改善に取り組んでわかったことMasayuki Ueda
 
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnightヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnightYahoo!デベロッパーネットワーク
 
Netadashi Meetup #6 20170629
Netadashi Meetup #6 20170629Netadashi Meetup #6 20170629
Netadashi Meetup #6 20170629Shigeki Morizane
 

Similar to ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4 (20)

行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
 
市場で勝ち続けるための品質とテストの技術①
市場で勝ち続けるための品質とテストの技術①市場で勝ち続けるための品質とテストの技術①
市場で勝ち続けるための品質とテストの技術①
 
Prestoクエリログの保存/分析機能の構築 #yjdsnight
Prestoクエリログの保存/分析機能の構築 #yjdsnightPrestoクエリログの保存/分析機能の構築 #yjdsnight
Prestoクエリログの保存/分析機能の構築 #yjdsnight
 
Yahoo!ニュースにおける開発手法の取り組み
Yahoo!ニュースにおける開発手法の取り組みYahoo!ニュースにおける開発手法の取り組み
Yahoo!ニュースにおける開発手法の取り組み
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
 
大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来大規模インフラで考える インフラチームの未来
大規模インフラで考える インフラチームの未来
 
ディップ株式会社_kintonehive
ディップ株式会社_kintonehiveディップ株式会社_kintonehive
ディップ株式会社_kintonehive
 
Design pattern in presto source code
Design pattern in presto source codeDesign pattern in presto source code
Design pattern in presto source code
 
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
 
Storm の新機能について @HSCR #hadoopreading
Storm の新機能について @HSCR #hadoopreadingStorm の新機能について @HSCR #hadoopreading
Storm の新機能について @HSCR #hadoopreading
 
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
 
Hive on Tezのベストプラクティス
Hive on TezのベストプラクティスHive on Tezのベストプラクティス
Hive on Tezのベストプラクティス
 
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
 
最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと
最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと
最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと
 
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnightヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
 
Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化
 
Presto in Yahoo! JAPAN #yjdsnight
Presto in Yahoo! JAPAN #yjdsnightPresto in Yahoo! JAPAN #yjdsnight
Presto in Yahoo! JAPAN #yjdsnight
 
全社デザインシステムとサービスの付き合い方
 全社デザインシステムとサービスの付き合い方 全社デザインシステムとサービスの付き合い方
全社デザインシステムとサービスの付き合い方
 
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
 
Netadashi Meetup #6 20170629
Netadashi Meetup #6 20170629Netadashi Meetup #6 20170629
Netadashi Meetup #6 20170629
 

More from Yahoo!デベロッパーネットワーク

ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかYahoo!デベロッパーネットワーク
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2Yahoo!デベロッパーネットワーク
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcYahoo!デベロッパーネットワーク
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo!デベロッパーネットワーク
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcYahoo!デベロッパーネットワーク
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtcYahoo!デベロッパーネットワーク
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcYahoo!デベロッパーネットワーク
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcYahoo!デベロッパーネットワーク
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcYahoo!デベロッパーネットワーク
 

More from Yahoo!デベロッパーネットワーク (20)

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
 

Recently uploaded

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 

Recently uploaded (9)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 

ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4

  • 1. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 塩野 貴義, 橋本 尚亮 ヤフーの広告 レポートシステムを Spring Cloud Stream化 するまで 2017年5月20日
  • 2. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.2 塩野 貴義 ■家族構成 妻、息子2人(9歳♂双子) ■趣味 車、バイク ■経歴 2011/08 ヤフーに転職 2013/10 レポートシステム 2017/04 集計システム 自己紹介
  • 3. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.3 橋本 尚亮 ■家族構成 独身 ■趣味 音楽鑑賞 ■経歴 2016/04 ヤフーに新卒入社 2016/09 レポートシステム 自己紹介
  • 4. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 概要 4 第一世代 第二世代 第三世代 2013 2015 2017
  • 5. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ 5 1. 広告レポートシステムについて 2. 第一世代~PHP&Perl~ 3. 第二世代~Spring Batch&Hive~ 4. 第三世代~Spring Cloud Stream~ 5. まとめ 6. tips
  • 6. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ 6 1. 広告レポートシステムについて 2. 第一世代~PHP&Perl~ 3. 第二世代~Spring Batch&Hive~ 4. 第三世代~Spring Cloud Stream~ 5. まとめ 6. tips
  • 7. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 広告レポートについて 7  お客様(広告主)が入稿した広告の配 信実績を確認するためのレポート  レポート出力する項目や集計単位は 指定可能
  • 8. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 広告レポートのユースケース 8  通常レポート • API経由で作成リクエストを受け取る • 常時稼働 • レポート作成は非同期で行う Request Job 登録 Report job Report 作成 Job取得 API Batch API Batch
  • 9. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 広告レポートのユースケース 9  定期レポート • 定期レポートとして登録されているレ ポートのJobを一括登録する • 毎朝1回 • レポート作成方法は通常レポートと同じ Report job Report 作成 Job取得 定期 レポート Job 登録 Batch Batch
  • 10. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 広告レポートのユースケース 10  通常レポート • 常時稼働、約25万レポート/日  定期レポート • 毎朝1回、約5万レポート/日 Request Job 登録 Report job Report 作成 Job取得 定期 レポート Job 登録 API Batch Batch
  • 11. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. レポートのリクエスト数 11 80,000 150,000 300,000 第一世代(2014) 第二世代(2016) 第三世代(2017) インターネット広告市場の拡大に伴い レポート作成の リクエスト数は年々増加
  • 12. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 広告レポートシステム全体 12 Request Job 登録 Report job Report 作成 Job取得 メール 送信 定期 レポート Job 登録 Job取得 配信実績取得 配信ログ集計 API Batch Batch Batch
  • 13. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ 13 1. 広告レポートシステムについて 2. 第一世代~PHP&Perl~ 3. 第二世代~Spring Batch&Hive~ 4. 第三世代~Spring Cloud Stream~ 5. まとめ 6. tips
  • 14. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第一世代 14 Request Job 登録 Report job Report 作成 メール 送信 定期 レポート Job 登録 配信ログ集計 ストレージ2次集計 日次夜間集計
  • 15. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第一世代 15 Request Job 登録 Report job Report 作成 メール 送信 定期 レポート Job 登録 配信ログ集計 ストレージ2次集計 日次夜間集計
  • 16. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第一世代 16 Request Job 登録 Report job Report 作成 メール 送信 定期 レポート Job 登録 配信ログ集計 ストレージ2次集計 日次夜間集計
  • 17. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Report 作成 第一世代 17 Request Job 登録 Report job Job取得 メール 送信 定期 レポート Job 登録 配信実績取得 配信ログ集計 ストレージ2次集計 日次夜間集計 Job取得
  • 18. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第一世代 18 Request Job 登録 Report 作成 Job取得 メール 送信 定期 レポート Job 登録 Job取得 配信実績取得 ストレージ2次集計 Report job 配信ログ集計 日次夜間集計
  • 19. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第一世代 19 Request Job 登録 Report job Report 作成 Job取得 メール 送信 定期 レポート Job 登録 Job取得 配信実績取得 配信ログ集計 ストレージ2次集計 日次夜間集計 二次集計 処理時間:4時間以上 集計結果容量:1TB以上/日
  • 20. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第一世代の課題 20  開発が複雑 • 全ての処理が依存しあっていて影響範囲が広い • テストパターンが網羅しきれない • 2000行以上の設定ファイルを共有 • Objectは全てArray • 改修・拡張でコードが複雑化 • 動的型付けで想定外の挙動 • 開発サーバ上でVimによる開発  運用コストが高い • リカバリの再集計は複数人で半日以上 • ファイルの欠損等で月に数回リカバリ作業が発生
  • 21. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第一世代の課題 21  開発が複雑 • 全ての処理が依存しあっていて影響範囲が広い • テストパターンが網羅しきれない • 2000行以上の設定ファイルを共有 • Objectは全てArray • 改修・拡張でコードが複雑化 • 動的型付けで想定外の挙動 • 開発サーバ上でVimによる開発  運用コストが高い • リカバリの再集計は複数人で半日以上 • ファイルの欠損等で月に数回リカバリ作業が発生 - 品質を担保できない - 開発に時間がかかりすぎてログ量の 増加や機能拡張に追いつけない - ぐっすり眠れない
  • 22. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. なんとかしたい 22  開発スピードを上げたい  運用をもっと楽にして開発に集中 したい  ぐっすり寝たい
  • 23. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ 23 1. 広告レポートシステムについて 2. 第一世代~PHP&Perl~ 3. 第二世代~Spring Batch&Hive~ 4. 第三世代~Spring Cloud Stream~ 5. まとめ 6. tips
  • 24. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第一世代(2014) 24 Request Job 登録 Report job レポート 作成 Job取得 メール 送信 定期 レポート Job 登録 Job取得 配信実績取得 配信ログ集計 ストレージ2次集計 日次夜間集計
  • 25. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第二世代(2016) 25 Request Job 登録 Report job レポート 作成 Job取得 メール 送信 定期 レポート Job 登録 Job取得 配信実績取得 配信ログ集計 ストレージ2次集計 日次夜間集計
  • 26. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第二世代(2016) 26 Request Job 登録 Report job レポート 作成 Job取得 メール 送信 定期 レポート Job 登録 Job取得 配信実績取得 配信ログ集計
  • 27. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第一世代から第二世代へ 27  Java / Spring Batch • DIコンテナによる疎結合とテストの充実 • 静的型付けで安心 • ライブラリが充実 • IDE  Hive on Tez • 二次集計が不要 • 保守するコード量が激減 • 自由度高く実績取得可能  運用 • ぐっすり眠れるようになった
  • 28. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第一世代から第二世代へ 28 詳しくはこちら JJUG CCC 2016 Spring 広告システム刷新の舞台裏 PHPからJavaに変えてみました https://www.slideshare.net/techblogyahoo/jjugccc-cccf1-phpjava
  • 29. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第二世代(2016) 29 Request Job 登録 Report job レポート 作成 Job取得 メール 送信 定期 レポート Job 登録 Job取得 配信実績取得 配信ログ集計
  • 30. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 問題発生 30 Request Job 登録 Report job レポート 作成 Job取得 メール 送信 定期 レポート Job 登録 Job取得 配信実績取得 配信ログ集計 二次集計をなくしたことで配信実績 取得にかかる時間が増加 全体のスループットの低下
  • 31. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 解決策 31 Request Job 登録 レポート 作成 Job取得 定期 レポート Job 登録 配信実績取得 Report job 配信ログ集計
  • 32. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 解決策 32 Request Job 登録 レポート 作成 Job取得 定期 レポート Job 登録 配信実績取得 Report job 配信ログ集計 レポート 作成
  • 33. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 解決策 33 Request Job 登録 レポート 作成 Job取得 定期 レポート Job 登録 配信実績取得 Report job 配信ログ集計 レポート 作成 これで解決?
  • 34. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 解決策 34 Request Job 登録 レポート 作成 Job取得 定期 レポート Job 登録 配信実績取得 Report job 配信ログ集計 レポート 作成
  • 35. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 解決策 35 Request Job 登録 レポート 作成 Job取得 定期 レポート Job 登録 配信実績取得 Report job 配信ログ集計 レポート 作成 ・・・
  • 36. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 解決策 36 Request Job 登録 レポート 作成 Job取得 定期 レポート Job 登録 配信実績取得 Report job 配信ログ集計 レポート 作成 ・・・ レポート 作成 レポート 作成
  • 37. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 解決策 37 Request Job 登録 レポート 作成 Job取得 定期 レポート Job 登録 配信実績取得 Report job 配信ログ集計 レポート 作成 ・・・ レポート 作成 レポート 作成 ・・・
  • 38. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 解決策 38 Request Job 登録 レポート 作成 Job取得 定期 レポート Job 登録 配信実績取得 Report job 配信ログ集計 レポート 作成 ・・・ レポート 作成 レポート 作成 ・・・ レポート 作成 レポート 作成 レポート 作成 レポート 作成
  • 39. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 解決策 39 Request Job 登録 レポート 作成 Job取得 定期 レポート Job 登録 配信実績取得 Report job 配信ログ集計 レポート 作成 ・・・ レポート 作成 レポート 作成 ・・・ レポート 作成 レポート 作成 レポート 作成 レポート 作成
  • 40. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 解決策 40 Request Job 登録 レポート 作成 Job取得 定期 レポート Job 登録 配信実績取得 Report job 配信ログ集計 レポート 作成 ・・・ レポート 作成 レポート 作成 ・・・ レポート 作成 レポート 作成 レポート 作成 レポート 作成 レポート 作成 レポート 作成
  • 41. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 解決策 41 Request Job 登録 レポート 作成 Job取得 定期 レポート Job 登録 配信実績取得 Report job 配信ログ集計 レポート 作成 ・・・ レポート 作成 レポート 作成 ・・・ レポート 作成 レポート 作成 レポート 作成 レポート 作成 レポート 作成 レポート 作成
  • 42. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第二世代の課題 レポート作成Batchをスケールアウト RDBへのポーリングのアクセス数が増大 RDBが高負荷 他のシステムにも影響 42
  • 43. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ 43 1. 広告レポートシステムについて 2. 第一世代~PHP&Perl~ 3. 第二世代~Spring Batch&Hive~ 4. 第三世代~Spring Cloud Stream~ 5. まとめ 6. tips
  • 44. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第二世代(2016) 44 Request Job 登録 レポート 作成 Job取得 定期 レポート Job 登録 配信実績取得 Report job 配信ログ集計 レポート 作成 ・・・ レポート 作成 レポート 作成 ・・・ レポート 作成 レポート 作成 レポート 作成 レポート 作成 レポート 作成 レポート 作成
  • 45. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第三世代(2017) 45 Request Job 登録 レポート 作成 Job取得 定期 レポート Job 登録 配信実績取得 配信ログ集計 レポート 作成 ・・・ レポート 作成 レポート 作成 ・・・ レポート 作成 レポート 作成 レポート 作成 レポート 作成 レポート 作成 レポート 作成 MQ?
  • 46. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第三世代(2017) 46 Request Job 登録 レポート 作成 Job取得 定期 レポート Job 登録 配信実績取得 配信ログ集計 レポート 作成 ・・・ レポート 作成 レポート 作成 ・・・ レポート 作成 レポート 作成 レポート 作成 レポート 作成 レポート 作成 レポート 作成 MQ? レポート作成を イベントドリブンに行いたい
  • 47. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Spring Cloud Stream 47  message-driven microservices  Spring Boot  consumer groups  binder abstraction http://cloud.spring.io/spring-cloud-stream/
  • 48. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Spring Cloud Stream 48 Source Sink output input 定期 レポート API レポート 作成
  • 49. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第三世代(2017) 49 レポート 作成 Request Job登録 Job登録 定期 レポート ・・・ ・・・ レポート 作成 レポート 作成
  • 50. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.  共通のdestinationを設定するだけで簡単にアプ リケーション間が接続される 第三世代(2017) 50 レポート 作成 Request Job登録 Job登録 定期 レポート ・・・ ・・・ レポート 作成 spring.cloud.stream. bindings.output.destination =reporting spring.cloud.stream. bindings.input.destination =reporting reporting
  • 51. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. レポート 作成 Request Job登録 Job登録 定期 レポート ・・・ ・・・ レポート 作成 レポート 作成 reporting 第三世代(2017) 51 {jobId:1002}{jobId:1002}{jobId:1002} {jobId:1002} {jobId:1002} {jobId:1002}
  • 52. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.  設定1つで簡単にconsumer groupが作れるためス ケールアウトが容易 spring.cloud.stream.bindings .input.group=ydnrep レポート 作成 Request Job登録 Job登録 定期 レポート ・・・ ・・・ レポート 作成 レポート 作成 第三世代(2017) 52 reporting .ydnrep {jobId:1002} ydnrep {jobId:1002}
  • 53. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. リリース 53 第二世代から第三世代へのリリースを ダウンタイム0で行いたい 0. 旧システム稼働中 1. 新システムデプロイ 2. 新シスステムサービスイン 3. 旧シスステムAPIサービスアウト 4. 旧シスステムBatchサービスアウト
  • 54. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. ・・・ リリース 54 0.旧システム稼働中 Request Job 登録 Report job レポート作成 ・・・ Job取得
  • 55. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. ・・・ リリース 55 1.新システムデプロイ Request Job 登録 Report job レポート作成 ・・・ Job取得 reporting .ydnrep
  • 56. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. ・・・ リリース 56 2.新システムサービスイン Request Job 登録 Report job レポート作成 ・・・ Request Job 登録 Job取得 レポート作成 reporting .ydnrep
  • 57. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. ・・・ リリース 57 3.旧システムAPIサービスアウト Report job レポート作成 ・・・ Request Job 登録 Job取得 レポート作成 reporting .ydnrep
  • 58. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. ・・・ リリース 58 4.旧システムBatchサービスアウト Report job ・・・ Request Job 登録 レポート作成 reporting .ydnrep
  • 59. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. ・・・ リリース 59 4.旧システムBatchサービスアウト Report job ・・・ Request Job 登録 レポート作成 ダウンタイム0でリリース完了! reporting .ydnrep
  • 60. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 性能比較 60  リリースして動作確認
  • 61. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 性能比較 61  RabbitMQの管理画面
  • 62. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 性能比較 62  RabbitMQの管理画面
  • 63. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 性能比較 63  RabbitMQの管理画面
  • 64. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 性能評価  レポート作成プロセス数:558  ポーリング時のSQL発行数/h • 第二世代: 16,928 • 第三世代: 0  レポート作成数/h • 第二世代: 44,121 • 第三世代: 63,934 64
  • 65. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第三世代(2017)  イベントドリブンにレポート作成 Jobを取得できるようになりRDB の負荷が減った  1時間あたりの処理数も増えた 65
  • 66. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第三世代(2017)  イベントドリブンにレポート作成 Jobを取得できるようになりRDB の負荷が減った  1時間あたりの処理数も増えた めでたしめでたし、、、 66
  • 67. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 問題発生  イベントドリブンにレポート作成 Jobを取得できるようになりRDB の負荷が減った  1時間あたりの処理数も増えた めでたしめでたし、、、 67 SQL [INSERT into BATCH_JOB_EXECUTION_PARAMS(JOB_EXECUTION_ID, KEY_NAME, TYPE_CD, STRING_VAL, DATE_VAL, LONG_VAL, DOUBLE_VAL, IDENTIFYING) values (?, ?, ?, ?, ?, ?, ?, ?)]; ORA-08177: can't serialize access for this transaction
  • 68. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 原因 68 レポート 作成 定期 レポート ・・・ ・・・ {jobId:1002, ・・・ jobId:51002}
  • 69. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 原因 69 レポート 作成 定期 レポート ・・・ ・・・ {jobId:1002, ・・・ jobId:51002} {jobId:1002} {jobId:1003} {jobId:1503}
  • 70. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 原因 70 レポート 作成 定期 レポート ・・・ ・・・ Spring Batchの Job管理テーブルに 同時に大量のINSERT ・・・ {jobId:1002, ・・・ jobId:51002} {jobId:1002} {jobId:1003} {jobId:1503}
  • 71. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 原因 71 レポート 作成 定期 レポート ・・・ ・・・ Spring Batchの Job管理テーブルに 同時に大量のINSERT ・・・ {jobId:1002, ・・・ jobId:51002} {jobId:1003} {jobId:1503} 3回失敗すると メッセージは消失
  • 72. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 対策(1/2) 72 レポート 作成 reporting .ydnrep ・・・ ・・・ ydnrep レポート 作成 定期 レポート  maxAttemptの上限を上げる spring.cloud.stream.bindings. input.consumer.maxAttempts=5
  • 73. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 対策(2/2) 73 レポート 作成 reporting .ydnrep ・・・ ・・・ ydnrep レポート 作成 reporting .ydnrep.dlq 定期 レポート  Dead Letter Queue を用意 spring.cloud.stream.rabbit.bind ings.input.consumer.autoBindDlq =true {jobId:1002} エラー処理
  • 74. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 対策(2/2) 74 レポート 作成 reporting .ydnrep ・・・ ・・・ ydnrep レポート 作成 reporting .ydnrep.dlq 定期 レポート  Dead Letter Queue を用意 {jobId:1002} メッセージを 送信し直す
  • 75. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 対策(2/2) 75 レポート 作成 reporting .ydnrep ・・・ ・・・ ydnrep レポート 作成 reporting .ydnrep.dlq 定期 レポート  Dead Letter Queue を用意 {jobId:1002} メッセージを 送信し直す 根本的な解決になっていない
  • 76. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 対策(2/2) 76 レポート 作成 reporting .ydnrep ・・・ ・・・ ydnrep レポート 作成 reporting .ydnrep.dlq 定期 レポート  Dead Letter Queue を用意 {jobId:1002} メッセージを 送信し直す Job RepositoryがDBアクセスしない方法を調査中 *常駐バッチのためJob Repositoryを インメモリ化できない
  • 77. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ 77 1. 広告レポートシステムについて 2. 第一世代~PHP&Perl~ 3. 第二世代~Spring Batch&Hive~ 4. 第三世代~Spring Cloud Stream~ 5. まとめ 6. tips
  • 78. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第一世代(2014) 第二世代(2016) 第三世代(2017) まとめ 78
  • 79. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 第一世代(2014) 第二世代(2016) 第三世代(2017) まとめ 79
  • 80. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. まとめ 80  刷新をする度に課題がバックエンドに移動  ポーリング型からイベントドリブンに変更するこ とでスループット向上  大規模システムはリリースしてからが勝負  Spring歴1年未満の私でもmicroservicesが簡単 に作れました
  • 81. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. これから ・・・レポート 作成 API メール 送信 定期 レポート  他サービスのSpring Cloud Stream化
  • 82. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. これから ・・・レポート 作成 API メール 送信 定期 レポート  ミドルウェアの比較・検討
  • 83. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. これから ・・・レポート 作成 API メール 送信 定期 レポート  Cloud Foundryへの移行
  • 84. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. これから ・・・レポート 作成 API メール 送信 定期 レポート  興味がある方は是非!
  • 85. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. これから  他サービスのSpring Cloud Stream化  ミドルウェアの比較・検討  Cloud Foundryへの移行  興味がある方は是非!
  • 86. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ 86 1. 広告レポートシステムについて 2. 第一世代~PHP&Perl~ 3. 第二世代~Spring Batch&Hive~ 4. 第三世代~Spring Cloud Stream~ 5. まとめ 6. tips
  • 87. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Spring Cloud Streamの実装 87
  • 88. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Spring Cloud Streamの実装 88  API, BatchのSpring Boot化  Source/Sinkの追加
  • 89. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Spring Boot 89  Application起動クラスの追加  application.properties で設定を 管理  API : war->jar (embedded jetty)  Batch:苦戦
  • 90. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Spring Boot 90  第二世代Batch : • 1つのjarに複数の機能 • 実行時にjobIdを指定  第三世代Batch : • 1application/jar • 単発batch(定期レポート) • 常駐batch(レポート作成, メール送信) spring.batch.job.enabled=true spring.batch.job.enabled=false
  • 91. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Spring Boot 91  1サーバに複数プロセス • Web appとして起動するさせてしまうと portの管理が必要 • *Spring Boot 2.0では非推奨.代わりにWebApplicationType https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Release- Notes spring.main.web-environment=false
  • 92. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Spring Boot 92  Datasourceを2つ指定するときは <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> </bean> <bean id="dataSourceHive" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="org.apache.hive.jdbc.HiveDriver"/> </bean> <bean class="org.springframework.batch.core .configuration.annotation.DefaultBatchConfigurer"> <constructor-arg ref="dataSource" /> </bean> java.lang.IllegalStateException: To use the default BatchConfigurer the context must contain no more thanone DataSource, found 2
  • 93. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Source/Sinkの追加 93 API 定期レポート @EnableBinding(Source.class) public class ReportJobSender { @Autowired Source source; public void send(ReportJobMessage reportJobMessage) throws MessageHandlingException{ Message<ReportJobMessage> message = MessageBuilder.withPayload(reportJobMessage).build(); source.output().send(message); } } @EnableBinding(Sink.class) public class JobRequestListener { //.. @StreamListener(Sink.INPUT) public void handleRequest(ReportJobQueueMessage reportJobQueueMessage) { Long reportJobId = reportJobQueueMessage.getBody().getJobId(); JobParameters jobParameters = new JobParametersBuilder() .addLong("reportJobId", reportJobId) .addDate("currentDate", currentDate).toJobParameters(); JobExecution jobExecution = jobLauncher.run(job, jobParameters); } } レポート作成