SlideShare a Scribd company logo
1 of 58
500+のサーバーで動く
LINE Ads PlatformをささえるSpring
Naoki Watanabe
About me
@hackmylife
● 通称「白米」
● 開発3センター
● 開発Aチーム
● Senior server side engineer
● Livedoor news, LINEギフト, LINE Blog
● 2017年よりLINE Ads Platformの開発
● Java, Perl, Python, Ruby
• About LINE Ads Platform
• Spring in LAP
• Technical topic
Agenda
Timeline LINE NEWS LINEマンガ LINE BLOG
LINE Ads Platform
LINEに広告配信できる唯一のPlatform
MAU 7800万
国内最大規模の運用型広告プラットフォーム
LINE Ads Platform
● リアルタイムに広告主が予算や配信ターゲットを変更できる
● Pay per click
● 表示する広告をオークションで選ぶ
運用型広告
SSP DSP
Auction process
リクエスト来てるけど
広告ある?
¥25で買うわ
¥5¥25¥10
Supply Side Platform Demand Side Platform
Only 50ms
Real Time Bidding
MediaAdvertiser Audience
三者三様のニーズ
利益ROI UX
何らかの指標が必要
CTR (Click Through Rate)
𝐶𝑇𝑅 𝑎𝑑 =
𝑐𝑙𝑖𝑐𝑘𝑠 𝑎𝑑
𝑖𝑚𝑝𝑟𝑒𝑠𝑠𝑖𝑜𝑛𝑠 𝑎𝑑
𝑝𝐶𝑇𝑅 𝑎𝑑 = 𝑃(𝐶𝑙𝑖𝑐𝑘|𝐴𝐷, 𝑅𝑒𝑞𝑢𝑒𝑠𝑡)
● 色々な特徴量から推定値を出す
● 難しい数式が沢山出てくる
● 話が長くなる
● この辺りの話はLINE DEVELOPER DAY 2018で話します
機械学習
やめておきましょう
今日はSpring festだし
広告をReal timeでオークションしてる
50msという強烈な制約
CTRを予測するのが大事でMLの活発な分野
覚えておいて欲しいこと
Spring in LAP
50msを維持する工夫
Analytics ClusterDataPipeline
SDK
Architecture
SSP
EventReceiver
DMP BI
DSP
● Real Time Bidding
● 複数のDSPにパラレルにrequest投げて結果をオークションする
● メディア側を管理するプラットフォーム
● Java + Spring boot2
● Tomcat
● Caffeine
● CMS側はKotlin + Nuxt.js
Supply Side Platform
SSP
● Real Time Bidding
● 50msでresponseを返す必要がある
● 広告主のROIを最大化するように最適な広告を選択する
● Go
● Redis
● Online Machine Learning
● CMS側はjava + spring boot + React.js
Demand Side Platform
DSP
● 50msでresponse返す必要がある
● G1GCでも数十ms使う時がある
● GoのGCは高速 -> GO採用
Why not use Java?
https://engineering.linecorp.com/ja/blog/detail/342
広告データの持ち方
DSP
広告を登録
MySQL
ファイル配信
● メモリに乗る量なら全部メモリにのせる
● 乗らないものはredisに
様々データの持ち方
Analytics ClusterDataPipeline
AppSDK
Architecture
SSP
EventReceiver
DMP BI
DSP
● 推定オーディエンス情報(性別、年齢、興味)
● LINE Tag
● Look-a-like
● 広告配信を最適化するために特徴となるデータを提供する
● Java + Spring boot 1.5 -> 2.0
● Kafka
● HBase
● Redis
Data Management Platform
DMP
● Armeria(非同期RPC/API)
● 50msでresponse返す必要がる
● G1GCでも数十ms使う時がある
● 99.9%tileでは問題ない
推定オーディエンス情報配信
https://engineering.linecorp.com/ja/blog/detail/70
一時停止時間目標: ガベージ・コレクションの評価やチューニングを行うときは、遅延時間とスループッ
トのトレードオフが常に生じます。 G1 GCは、均一な一時停止を伴うインクリメンタル・ガベージ・コ
レクタですが、アプリケーション・スレッドのオーバーヘッドも大きくなります。 G1 GCのスループッ
ト目標は、アプリケーション時間が90%、ガベージ・コレクション時間が10%です。これをJava
HotSpot VMのパラレル・コレクタと比較してみましょう。 パラレル・コレクタのスループット目標は、
アプリケーション時間が99%、ガベージ・コレクション時間が1%です。 したがって、G1 GCのスルー
プットを評価するときは、一時停止時間目標を緩くしてください。あまり積極的な目標を設定すると、
ガベージ・コレクションのオーバーヘッドが増加しても構わないという意味に解釈され、 スループット
に直接影響します。G1 GCの遅延時間を評価するときは、望ましい(ソフト)リアルタイム目標を設定す
ると、G1 GCはその目標を満たそうと努力します。 その影響として、スループットが犠牲になります。
詳細は、「ガベージファースト・ガベージ・コレクタ」の「一時停止時間目標」を参照してください。
maxGCPauseMillis
https://docs.oracle.com/javase/jp/8/docs/technotes/guides/vm/gctuning/g1_gc_tuning.html
良さそう!
Result
maxGCPauseMillis = 20
悪化してる!
Why?
一時停止時間目標: ガベージ・コレクションの評価やチュー
ニングを行うときは、遅延時間とスループットのトレードオ
フが常に生じます。(中略)
あまり積極的な目標を設定すると、ガベージ・コレクション
のオーバーヘッドが増加しても構わないという意味に解釈さ
れ、 スループットに直接影響します。
● Heapsize 4g -> 8g
● g1HeapRegionSize 2M -> 4M
● maxGCPauseMillis 30 -> 50
結局どうしたか?
Heapを増やそう
Java 11にはZGCが!
DMPの話に戻ります
LINE Tag Event
Nginx Kafka
fluent-plugin-kafka
https://github.com/fluent/fluent-plugin-kafka
Kafka Streams
Redis
HBase
Analytics ClusterDataPipeline
AppSDK
Architecture
SSP
EventReceiver
DMP BI
DSP
● 数万rpsなど
● Logは全て保存される
● 広告のimpやclickなどのイベントを集計する
● Java + Spring boot 1.5
● Kafka
Event Receiver
Analytics ClusterDataPipeline
AppSDK
Architecture
SSP
EventReceiver
DMP BI
DSP
● 各サービスのrequest/response logなど
● データ分析基盤
● 広告配信に関わるあらゆるデータを収集し格納するプラットフォーム
● Hadoop, Hive, Presto
● Kafka, Spark
● ES, Druid
● Airflow, Mesos, Aurora
● Filebeat, Logstash
Data Pipeline/Analytics Cluster
● それそれのArchitectureはDevelopment Leadが決定する
● 揃えられるとことは揃える
● トラフィックが膨大なので、高速であることが必須
● 突拍子もないものはダメ
各プロジェクトでバラバラ
Technical topic
● 高速で安定したStreaming Platform
● 各サービス間でのデータの受け渡し
● QueueやJob schedulerとしても利用
● Write at once, consume anywhere
Kafka
● Spring Bootと相性良い
● コードあまり書かなくても良い
● spring-kafkaもあるけど、公式のkafka_clientがおすすめ
● Kafka streamsはシンプルに使える
Kafka難しくない?
https://kafka.apache.org/documentation/streams/
We Love Kafka
● Spring boot 2
● Reactor
● Kafka
● actuator + micrometer
最近の開発について
● Reactive streams
● Non-blocking + Back pressure
● WebFlux, Lettuce5
● Flux, Mono
Reactor
● Reactive API
● RedisAdvancedClusterReactiveCommands
● 戻り値が Mono / Flux
● 個人的にはすごくスッキリする
Lettuce5
Mono / Flux
// before
public CompletableFuture<String> getItem(String key){}
public CompletableFuture<List<String>> getItemList(String[] keys){}
// after
public Mono<String> getItem(String key){}
public Flux<String> getItemList(String[] keys){}
● あまり使ってない
● なぜならkafkaがあるから
● 個人的には使いたくて予定はあるんだけどまだ使えてない
Back pressure?
● まだ使ってない
● 今やっているプロジェクトで使う予定だったか、もともと処理
が高速で使い所がなかった
● 使いたいところあるんだけど別プロジェクト
● PR送るは簡単だけどパフォーマンステストもしたい
How about WebFlux?
Development Team
開発体制
2 60 100
● MTGは通訳を挟んでTV会議
● 普段は翻訳botを入れたLINEで
● Face to Faceも大事なので気軽に出張行きます
コミュニケーション
● まだまだ開発することはたくさんある
● 機械学習とかARとか新しいことも頑張りたい
● エンジニアも企画もまだまだ足りません
これから
We Are Hiring!
https://linedevday.linecorp.com/jp/2018/

More Related Content

What's hot

Cloud Foundry x Wagby
Cloud Foundry x WagbyCloud Foundry x Wagby
Cloud Foundry x WagbyYoshinori Nie
 
アメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpringアメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpringTakuya Hattori
 
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Yahoo!デベロッパーネットワーク
 
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajp
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajpKafka Summit NYCに見るストリーミングデータETLの話 #streamdatajp
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajpYahoo!デベロッパーネットワーク
 
20171109 Amazon EC2 GPUインスタンス最新動向 P3 instance
20171109 Amazon EC2 GPUインスタンス最新動向 P3 instance20171109 Amazon EC2 GPUインスタンス最新動向 P3 instance
20171109 Amazon EC2 GPUインスタンス最新動向 P3 instanceAmazon Web Services Japan
 
Datadog monitoring with HashiCorp
Datadog monitoring with HashiCorpDatadog monitoring with HashiCorp
Datadog monitoring with HashiCorpMasatomo Ito
 
GAE + Spannerで目指せ No (Uncomfortable) Ops
GAE + Spannerで目指せ No (Uncomfortable) OpsGAE + Spannerで目指せ No (Uncomfortable) Ops
GAE + Spannerで目指せ No (Uncomfortable) OpsMiniascape
 
AWS サービスアップデートまとめ re:Invent 2017 直前編
AWS サービスアップデートまとめ re:Invent 2017 直前編AWS サービスアップデートまとめ re:Invent 2017 直前編
AWS サービスアップデートまとめ re:Invent 2017 直前編Amazon Web Services Japan
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことKeisuke Nishitani
 
KubernetesとSpannerで 進化し続けるコロプラのゲーム開発
KubernetesとSpannerで 進化し続けるコロプラのゲーム開発KubernetesとSpannerで 進化し続けるコロプラのゲーム開発
KubernetesとSpannerで 進化し続けるコロプラのゲーム開発Google Cloud Platform - Japan
 
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減gree_tech
 
KubernetesでPHPを動かした話
KubernetesでPHPを動かした話KubernetesでPHPを動かした話
KubernetesでPHPを動かした話gree_tech
 
Kubernetes on Alibaba Cloud
Kubernetes on Alibaba CloudKubernetes on Alibaba Cloud
Kubernetes on Alibaba Cloud真吾 吉田
 
CloudHubのログバックアップについて
CloudHubのログバックアップについてCloudHubのログバックアップについて
CloudHubのログバックアップについてMuleSoft Meetup Tokyo
 
Mule Runtime のアーキテクチャコンセプト紹介
Mule Runtime のアーキテクチャコンセプト紹介Mule Runtime のアーキテクチャコンセプト紹介
Mule Runtime のアーキテクチャコンセプト紹介MuleSoft Meetup Tokyo
 
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現gree_tech
 
RecoChoku tech night #09 -reinvent2018報告会- オープニング
RecoChoku tech night #09 -reinvent2018報告会-  オープニングRecoChoku tech night #09 -reinvent2018報告会-  オープニング
RecoChoku tech night #09 -reinvent2018報告会- オープニングrecotech
 
MuleアプリケーションのCI/CD
MuleアプリケーションのCI/CDMuleアプリケーションのCI/CD
MuleアプリケーションのCI/CDMuleSoft Meetup Tokyo
 
サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)Keisuke Kadoyama
 

What's hot (19)

Cloud Foundry x Wagby
Cloud Foundry x WagbyCloud Foundry x Wagby
Cloud Foundry x Wagby
 
アメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpringアメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpring
 
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
 
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajp
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajpKafka Summit NYCに見るストリーミングデータETLの話 #streamdatajp
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajp
 
20171109 Amazon EC2 GPUインスタンス最新動向 P3 instance
20171109 Amazon EC2 GPUインスタンス最新動向 P3 instance20171109 Amazon EC2 GPUインスタンス最新動向 P3 instance
20171109 Amazon EC2 GPUインスタンス最新動向 P3 instance
 
Datadog monitoring with HashiCorp
Datadog monitoring with HashiCorpDatadog monitoring with HashiCorp
Datadog monitoring with HashiCorp
 
GAE + Spannerで目指せ No (Uncomfortable) Ops
GAE + Spannerで目指せ No (Uncomfortable) OpsGAE + Spannerで目指せ No (Uncomfortable) Ops
GAE + Spannerで目指せ No (Uncomfortable) Ops
 
AWS サービスアップデートまとめ re:Invent 2017 直前編
AWS サービスアップデートまとめ re:Invent 2017 直前編AWS サービスアップデートまとめ re:Invent 2017 直前編
AWS サービスアップデートまとめ re:Invent 2017 直前編
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
KubernetesとSpannerで 進化し続けるコロプラのゲーム開発
KubernetesとSpannerで 進化し続けるコロプラのゲーム開発KubernetesとSpannerで 進化し続けるコロプラのゲーム開発
KubernetesとSpannerで 進化し続けるコロプラのゲーム開発
 
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
 
KubernetesでPHPを動かした話
KubernetesでPHPを動かした話KubernetesでPHPを動かした話
KubernetesでPHPを動かした話
 
Kubernetes on Alibaba Cloud
Kubernetes on Alibaba CloudKubernetes on Alibaba Cloud
Kubernetes on Alibaba Cloud
 
CloudHubのログバックアップについて
CloudHubのログバックアップについてCloudHubのログバックアップについて
CloudHubのログバックアップについて
 
Mule Runtime のアーキテクチャコンセプト紹介
Mule Runtime のアーキテクチャコンセプト紹介Mule Runtime のアーキテクチャコンセプト紹介
Mule Runtime のアーキテクチャコンセプト紹介
 
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
 
RecoChoku tech night #09 -reinvent2018報告会- オープニング
RecoChoku tech night #09 -reinvent2018報告会-  オープニングRecoChoku tech night #09 -reinvent2018報告会-  オープニング
RecoChoku tech night #09 -reinvent2018報告会- オープニング
 
MuleアプリケーションのCI/CD
MuleアプリケーションのCI/CDMuleアプリケーションのCI/CD
MuleアプリケーションのCI/CD
 
サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)
 

Similar to 500+のサーバーで動く LINE Ads PlatformをささえるSpring

Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)Kazuya Sugimoto
 
パーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPAN
パーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPANパーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPAN
パーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPANYahoo!デベロッパーネットワーク
 
APIに関するセッション資料
APIに関するセッション資料APIに関するセッション資料
APIに関するセッション資料CData Software Japan
 
マーケティング向け大規模ログ解析事例紹介
マーケティング向け大規模ログ解析事例紹介マーケティング向け大規模ログ解析事例紹介
マーケティング向け大規模ログ解析事例紹介Kenji Hara
 
Cedec2015_「消滅都市」運用の一年
Cedec2015_「消滅都市」運用の一年Cedec2015_「消滅都市」運用の一年
Cedec2015_「消滅都市」運用の一年gree_tech
 
【Ngi adplatform】基本機能説明資料
【Ngi adplatform】基本機能説明資料【Ngi adplatform】基本機能説明資料
【Ngi adplatform】基本機能説明資料ngiAdPlatform
 
【ngi adplatform】基本機能説明資料ver4.0
【ngi adplatform】基本機能説明資料ver4.0【ngi adplatform】基本機能説明資料ver4.0
【ngi adplatform】基本機能説明資料ver4.0ngiAdPlatform
 
【ngi Ad Platform】基本機能説明資料ver3.0
【ngi Ad Platform】基本機能説明資料ver3.0【ngi Ad Platform】基本機能説明資料ver3.0
【ngi Ad Platform】基本機能説明資料ver3.0ngiAdPlatform
 
SmartNews TechNight vol5 SmartNews Ads大図解
SmartNews TechNight vol5 SmartNews Ads大図解SmartNews TechNight vol5 SmartNews Ads大図解
SmartNews TechNight vol5 SmartNews Ads大図解SmartNews, Inc.
 
スマホSSP事業者が見る業界トレンド~AdGeneration
スマホSSP事業者が見る業界トレンド~AdGenerationスマホSSP事業者が見る業界トレンド~AdGeneration
スマホSSP事業者が見る業界トレンド~AdGenerationSatoshi Noda
 
イマドキの改善!データ分析SDK導入のポイントとAI活用最新事例 / GTMF2019
イマドキの改善!データ分析SDK導入のポイントとAI活用最新事例 / GTMF2019イマドキの改善!データ分析SDK導入のポイントとAI活用最新事例 / GTMF2019
イマドキの改善!データ分析SDK導入のポイントとAI活用最新事例 / GTMF2019Game Tools & Middleware Forum
 
今なぜサーバーレスなのか
今なぜサーバーレスなのか今なぜサーバーレスなのか
今なぜサーバーレスなのか真吾 吉田
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops裕貴 荒井
 
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform拓将 平林
 
グローバルマネタイズ戦略【Metaps(メタップス) pte ltd.】 「グロバール×スマホゲーム」の勝ち方セミナー資料
グローバルマネタイズ戦略【Metaps(メタップス) pte ltd.】   「グロバール×スマホゲーム」の勝ち方セミナー資料グローバルマネタイズ戦略【Metaps(メタップス) pte ltd.】   「グロバール×スマホゲーム」の勝ち方セミナー資料
グローバルマネタイズ戦略【Metaps(メタップス) pte ltd.】 「グロバール×スマホゲーム」の勝ち方セミナー資料Katsuaki Sato
 
Aws summits2014 サイバーエージェント_ユーザーの趣味嗜好に適した広告配信システムdynalystができるまでad_techstudioでの...
Aws summits2014 サイバーエージェント_ユーザーの趣味嗜好に適した広告配信システムdynalystができるまでad_techstudioでの...Aws summits2014 サイバーエージェント_ユーザーの趣味嗜好に適した広告配信システムdynalystができるまでad_techstudioでの...
Aws summits2014 サイバーエージェント_ユーザーの趣味嗜好に適した広告配信システムdynalystができるまでad_techstudioでの...Boss4434
 
Realize tokyo2019 yrglm
Realize tokyo2019 yrglmRealize tokyo2019 yrglm
Realize tokyo2019 yrglmKatsuya Uehara
 
Motion beat fruitsbear二戸_1030
Motion beat fruitsbear二戸_1030 Motion beat fruitsbear二戸_1030
Motion beat fruitsbear二戸_1030 motionBEAT
 

Similar to 500+のサーバーで動く LINE Ads PlatformをささえるSpring (20)

Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
 
パーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPAN
パーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPANパーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPAN
パーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPAN
 
APIに関するセッション資料
APIに関するセッション資料APIに関するセッション資料
APIに関するセッション資料
 
マーケティング向け大規模ログ解析事例紹介
マーケティング向け大規模ログ解析事例紹介マーケティング向け大規模ログ解析事例紹介
マーケティング向け大規模ログ解析事例紹介
 
Cedec2015_「消滅都市」運用の一年
Cedec2015_「消滅都市」運用の一年Cedec2015_「消滅都市」運用の一年
Cedec2015_「消滅都市」運用の一年
 
【Ngi adplatform】基本機能説明資料
【Ngi adplatform】基本機能説明資料【Ngi adplatform】基本機能説明資料
【Ngi adplatform】基本機能説明資料
 
【ngi adplatform】基本機能説明資料ver4.0
【ngi adplatform】基本機能説明資料ver4.0【ngi adplatform】基本機能説明資料ver4.0
【ngi adplatform】基本機能説明資料ver4.0
 
GraphQL入門 (AWS AppSync)
GraphQL入門 (AWS AppSync)GraphQL入門 (AWS AppSync)
GraphQL入門 (AWS AppSync)
 
【ngi Ad Platform】基本機能説明資料ver3.0
【ngi Ad Platform】基本機能説明資料ver3.0【ngi Ad Platform】基本機能説明資料ver3.0
【ngi Ad Platform】基本機能説明資料ver3.0
 
SmartNews TechNight vol5 SmartNews Ads大図解
SmartNews TechNight vol5 SmartNews Ads大図解SmartNews TechNight vol5 SmartNews Ads大図解
SmartNews TechNight vol5 SmartNews Ads大図解
 
スマホSSP事業者が見る業界トレンド~AdGeneration
スマホSSP事業者が見る業界トレンド~AdGenerationスマホSSP事業者が見る業界トレンド~AdGeneration
スマホSSP事業者が見る業界トレンド~AdGeneration
 
イマドキの改善!データ分析SDK導入のポイントとAI活用最新事例 / GTMF2019
イマドキの改善!データ分析SDK導入のポイントとAI活用最新事例 / GTMF2019イマドキの改善!データ分析SDK導入のポイントとAI活用最新事例 / GTMF2019
イマドキの改善!データ分析SDK導入のポイントとAI活用最新事例 / GTMF2019
 
今なぜサーバーレスなのか
今なぜサーバーレスなのか今なぜサーバーレスなのか
今なぜサーバーレスなのか
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops
 
20170705 apiをつくろう
20170705 apiをつくろう20170705 apiをつくろう
20170705 apiをつくろう
 
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
 
グローバルマネタイズ戦略【Metaps(メタップス) pte ltd.】 「グロバール×スマホゲーム」の勝ち方セミナー資料
グローバルマネタイズ戦略【Metaps(メタップス) pte ltd.】   「グロバール×スマホゲーム」の勝ち方セミナー資料グローバルマネタイズ戦略【Metaps(メタップス) pte ltd.】   「グロバール×スマホゲーム」の勝ち方セミナー資料
グローバルマネタイズ戦略【Metaps(メタップス) pte ltd.】 「グロバール×スマホゲーム」の勝ち方セミナー資料
 
Aws summits2014 サイバーエージェント_ユーザーの趣味嗜好に適した広告配信システムdynalystができるまでad_techstudioでの...
Aws summits2014 サイバーエージェント_ユーザーの趣味嗜好に適した広告配信システムdynalystができるまでad_techstudioでの...Aws summits2014 サイバーエージェント_ユーザーの趣味嗜好に適した広告配信システムdynalystができるまでad_techstudioでの...
Aws summits2014 サイバーエージェント_ユーザーの趣味嗜好に適した広告配信システムdynalystができるまでad_techstudioでの...
 
Realize tokyo2019 yrglm
Realize tokyo2019 yrglmRealize tokyo2019 yrglm
Realize tokyo2019 yrglm
 
Motion beat fruitsbear二戸_1030
Motion beat fruitsbear二戸_1030 Motion beat fruitsbear二戸_1030
Motion beat fruitsbear二戸_1030
 

More from LINE Corporation

JJUG CCC 2018 Fall 懇親会LT
JJUG CCC 2018 Fall 懇親会LTJJUG CCC 2018 Fall 懇親会LT
JJUG CCC 2018 Fall 懇親会LTLINE Corporation
 
Reduce dependency on Rx with Kotlin Coroutines
Reduce dependency on Rx with Kotlin CoroutinesReduce dependency on Rx with Kotlin Coroutines
Reduce dependency on Rx with Kotlin CoroutinesLINE Corporation
 
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
Kotlin/NativeでAndroidのNativeメソッドを実装してみたKotlin/NativeでAndroidのNativeメソッドを実装してみた
Kotlin/NativeでAndroidのNativeメソッドを実装してみたLINE Corporation
 
Use Kotlin scripts and Clova SDK to build your Clova extension
Use Kotlin scripts and Clova SDK to build your Clova extensionUse Kotlin scripts and Clova SDK to build your Clova extension
Use Kotlin scripts and Clova SDK to build your Clova extensionLINE Corporation
 
The Magic of LINE 購物 Testing
The Magic of LINE 購物 TestingThe Magic of LINE 購物 Testing
The Magic of LINE 購物 TestingLINE Corporation
 
UI Automation Test with JUnit5
UI Automation Test with JUnit5UI Automation Test with JUnit5
UI Automation Test with JUnit5LINE Corporation
 
Feature Detection for UI Testing
Feature Detection for UI TestingFeature Detection for UI Testing
Feature Detection for UI TestingLINE Corporation
 
LINE 新星計劃介紹與新創團隊分享
LINE 新星計劃介紹與新創團隊分享LINE 新星計劃介紹與新創團隊分享
LINE 新星計劃介紹與新創團隊分享LINE Corporation
 
​LINE 技術合作夥伴與應用分享
​LINE 技術合作夥伴與應用分享​LINE 技術合作夥伴與應用分享
​LINE 技術合作夥伴與應用分享LINE Corporation
 
LINE 開發者社群經營與技術推廣
LINE 開發者社群經營與技術推廣LINE 開發者社群經營與技術推廣
LINE 開發者社群經營與技術推廣LINE Corporation
 
日本開發者大會短講分享
日本開發者大會短講分享日本開發者大會短講分享
日本開發者大會短講分享LINE Corporation
 
LINE Chatbot - 活動報名報到設計分享
LINE Chatbot - 活動報名報到設計分享LINE Chatbot - 活動報名報到設計分享
LINE Chatbot - 活動報名報到設計分享LINE Corporation
 
在 LINE 私有雲中使用 Managed Kubernetes
在 LINE 私有雲中使用 Managed Kubernetes在 LINE 私有雲中使用 Managed Kubernetes
在 LINE 私有雲中使用 Managed KubernetesLINE Corporation
 
LINE TODAY高效率的敏捷測試開發技巧
LINE TODAY高效率的敏捷測試開發技巧LINE TODAY高效率的敏捷測試開發技巧
LINE TODAY高效率的敏捷測試開發技巧LINE Corporation
 
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹LINE Corporation
 
LINE Things - LINE IoT平台新技術分享
LINE Things - LINE IoT平台新技術分享LINE Things - LINE IoT平台新技術分享
LINE Things - LINE IoT平台新技術分享LINE Corporation
 
LINE Pay - 一卡通支付新體驗
LINE Pay - 一卡通支付新體驗LINE Pay - 一卡通支付新體驗
LINE Pay - 一卡通支付新體驗LINE Corporation
 
LINE Platform API Update - 打造一個更好的Chatbot服務
LINE Platform API Update - 打造一個更好的Chatbot服務LINE Platform API Update - 打造一個更好的Chatbot服務
LINE Platform API Update - 打造一個更好的Chatbot服務LINE Corporation
 
Keynote - ​LINE 的技術策略佈局與跨國產品開發
Keynote - ​LINE 的技術策略佈局與跨國產品開發Keynote - ​LINE 的技術策略佈局與跨國產品開發
Keynote - ​LINE 的技術策略佈局與跨國產品開發LINE Corporation
 

More from LINE Corporation (20)

JJUG CCC 2018 Fall 懇親会LT
JJUG CCC 2018 Fall 懇親会LTJJUG CCC 2018 Fall 懇親会LT
JJUG CCC 2018 Fall 懇親会LT
 
Reduce dependency on Rx with Kotlin Coroutines
Reduce dependency on Rx with Kotlin CoroutinesReduce dependency on Rx with Kotlin Coroutines
Reduce dependency on Rx with Kotlin Coroutines
 
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
Kotlin/NativeでAndroidのNativeメソッドを実装してみたKotlin/NativeでAndroidのNativeメソッドを実装してみた
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
 
Use Kotlin scripts and Clova SDK to build your Clova extension
Use Kotlin scripts and Clova SDK to build your Clova extensionUse Kotlin scripts and Clova SDK to build your Clova extension
Use Kotlin scripts and Clova SDK to build your Clova extension
 
The Magic of LINE 購物 Testing
The Magic of LINE 購物 TestingThe Magic of LINE 購物 Testing
The Magic of LINE 購物 Testing
 
GA Test Automation
GA Test AutomationGA Test Automation
GA Test Automation
 
UI Automation Test with JUnit5
UI Automation Test with JUnit5UI Automation Test with JUnit5
UI Automation Test with JUnit5
 
Feature Detection for UI Testing
Feature Detection for UI TestingFeature Detection for UI Testing
Feature Detection for UI Testing
 
LINE 新星計劃介紹與新創團隊分享
LINE 新星計劃介紹與新創團隊分享LINE 新星計劃介紹與新創團隊分享
LINE 新星計劃介紹與新創團隊分享
 
​LINE 技術合作夥伴與應用分享
​LINE 技術合作夥伴與應用分享​LINE 技術合作夥伴與應用分享
​LINE 技術合作夥伴與應用分享
 
LINE 開發者社群經營與技術推廣
LINE 開發者社群經營與技術推廣LINE 開發者社群經營與技術推廣
LINE 開發者社群經營與技術推廣
 
日本開發者大會短講分享
日本開發者大會短講分享日本開發者大會短講分享
日本開發者大會短講分享
 
LINE Chatbot - 活動報名報到設計分享
LINE Chatbot - 活動報名報到設計分享LINE Chatbot - 活動報名報到設計分享
LINE Chatbot - 活動報名報到設計分享
 
在 LINE 私有雲中使用 Managed Kubernetes
在 LINE 私有雲中使用 Managed Kubernetes在 LINE 私有雲中使用 Managed Kubernetes
在 LINE 私有雲中使用 Managed Kubernetes
 
LINE TODAY高效率的敏捷測試開發技巧
LINE TODAY高效率的敏捷測試開發技巧LINE TODAY高效率的敏捷測試開發技巧
LINE TODAY高效率的敏捷測試開發技巧
 
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
 
LINE Things - LINE IoT平台新技術分享
LINE Things - LINE IoT平台新技術分享LINE Things - LINE IoT平台新技術分享
LINE Things - LINE IoT平台新技術分享
 
LINE Pay - 一卡通支付新體驗
LINE Pay - 一卡通支付新體驗LINE Pay - 一卡通支付新體驗
LINE Pay - 一卡通支付新體驗
 
LINE Platform API Update - 打造一個更好的Chatbot服務
LINE Platform API Update - 打造一個更好的Chatbot服務LINE Platform API Update - 打造一個更好的Chatbot服務
LINE Platform API Update - 打造一個更好的Chatbot服務
 
Keynote - ​LINE 的技術策略佈局與跨國產品開發
Keynote - ​LINE 的技術策略佈局與跨國產品開發Keynote - ​LINE 的技術策略佈局與跨國產品開發
Keynote - ​LINE 的技術策略佈局與跨國產品開發
 

Recently uploaded

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 

500+のサーバーで動く LINE Ads PlatformをささえるSpring

Editor's Notes

  1. LINEの渡邉直樹が「500+のサーバーで動くLINE Ads PlatformをささえるSpring」というタイトルでお話させていただきます。よろしくお願いします。
  2. twtterは hackmylife というIDで活動していますが、社内の人はめんどくさがって省略して白米と読んでます。 割と気に入っています。 Linvedoorni入社したら、会社のほうがコロコロ変わって気がついたらLINEいました。 ずっと広告やっていたわけではなくて、B2Cの開発を主にやっていたんですが、2017年からLINE Ads Platformの開発をしています。
  3. まずは広告プラットフォームとはなんぞや?という話を軽くして、 LAP、あ、これLINE Ads Platformの略です。弊社サービス名を三文字に略すのがとても好きです。 社内でも賛否両論あるんですが・・・。 LINE Ads Platfromの中でspringどう使われているか解説して、 最後にLINE全般的な技術的な話題を少しする予定です。
  4. LINE Ads Platformではこのような形で広告を表示しています。 LINEアプリのタイムライン、newsタブをはじめ、LINEマンガなどのファミリーアプリ、一番右側のLINE BlogはWeb pageなんですが、こういった場所に広告が表示されています。
  5. LINE Ads Platformの特徴は、LINEに広告を出稿できる唯一のプラットフォームで、月間で7000万人もののオーディエンスにリーチできる、国内最大規模のプラットフォームになっています。プラットフォームの特徴としてはProgrammatic Advertising をサポートしていることです。
  6. というのは日本では運用型広告と言った言い方が主流だからです。 この方式には、いくつか特徴があります。 1つ目の特徴は、リアルタイムに広告主が予算や配信対象を変更することができることです。運用型という名前がしっくりきますね。 2つ目の特徴は、成果型報酬です。つまりclickや動画の視聴など、成果が上がって初めて課金される形式です。 3つ目が一番特徴的なところで、リクエストを受けるたびに、内部でオークションを開催し、広告を選ぶことです。 まず、このオークションの部分を簡単にですが、ご説明したいと思います。
  7. オークションプロセスには2つのプラットフォームが登場します。SSPとDSPです。 SSPはsupply side platformの略で、広告が表示されるメディア側の管理をしています。みなさんが広告枠があるページにアクセスしたときに、一番初めにメディアから、SSPにリクエストが飛びます。SSPはリクエストを受けると、表示できる広告の形式の条件と一緒に、DSPに広告リクエストを送ります。 DSPはdemand side platformの略で、広告を管理しています。 SSPからリクエストを受けると、DSPは内部的にオークションを行い、オークションに勝った広告を返します。 このオークションに勝利した広告、この場合25円の広告がみなさんに表示されるわけです。
  8. 広告プラットフォームでは3タイプのプレイヤーが存在して、それぞれ違ったニーズを持っています。 1つ目は広告主です。広告主は費用に対する効果を最大化したいと考えいます。 2つ目はメディア。メディアは表示した広告の売り上げを最大化したいと考えています。ちなみにここに書いてあるeCPMというのは、広告を1000回表示した時に利益を表します。 最後にオーディエンスつまり、ユーザーです。オーディエンスはサイトの使い勝手を損なわないことや、広告が出るならば、自分にとって興味があるような広告が出たほうが良いと考えるのではないでしょうか? このようなニーズを最大限に満たす必要があります。
  9. こう言った三者三様のニーズを満たしているか判断するための、なんらかの指標が必要です。
  10. そこで指標の一つとして使うのがCTRです。CTRはとある広告がクリックされた回数を、表示した回数で割ったものです。 広告主にとっては、目的を達成を図る数値してコンバージョン率(CVR)がありますが、コンバージョンの為には、まずは広告をクリックしてもらうことが目標となります。 メディアにとっては、先ほど申し上げたように、最近はクリックなどの成果報酬型が主流ですから、クリックが売り上げに繋がります。 最後にオーディエンスにとっては、興味を持ったかどうかのバロメータとして使えます。 他にも様々な指標を使っていいるのですが、一番横断的に使えるものとして今日はCTRが特に重要で、かつこれを事前に予測する必要があります 10min
  11. CTRを予測するには、色々な特徴量から推定値を出して行きます が、このあたりの話はしだすときりがないのと、11/21のdeveloper dayで話す予定なので、
  12. 今日は別の話をします
  13. せっかくのSpring festなのでSpringの話をしましょう
  14. Real timeでオークションしてるってことと、それを50ms以内に行う必要があるということ、3つ目は今日はあまり関係ないのですが、広告プラットフォームとって大事なのはCTRを予測することで、MLがたくさん使われています
  15. 12分
  16. 50msを維持する工夫なんかも入れて話して行きましょう
  17. 全体のざっくりしたarchitectureです。 まずはさっき見ていたSSPとDSPのあたりから構成を見て行きましょう。
  18. CMSで設定された情報は、数分おきにsync apiというのが実行されて、データをjsonでもらってcaffeineでメモリに持っている。 Auction -> AsyncTaskExecutor -> 帰ってきたのを待ってまたオークション Waterfall -> 順次投げて帰ってきたところで終了 15分
  19. 広告主が登録した広告は一旦MySQLへ。これ読むと遅いので、ファイルとして配信して、全部メモリにロードしている。
  20. 18分
  21. 20min
  22. LINEがOSSと試打しているArmeria。netty baseの非同期RPC/API。早い。
  23. 他はデフォでも基本的にはいい感じに動く maxGCPauseMillisは200デフォルトだったと思うのでそこだけ調整
  24. 10ms以内に治るって聞いた! 24min
  25. 24min
  26. LINE tagはjsタグ。色々なサイトに貼れる。appのイベントは別の経路だけどくる。 めっちゃくる。なので、Nginxで受けてログに落とし、Fluentdでkafkaへ。 反対側ではkafka consumer(strems)が受け取って、即使えるようにredisに、永続化するのにHbaseに書いてる。 26min
  27. 27min
  28. リクエストを受け取ったらkafkaに書く。大量のトラフィックあってもkafkaは高速で安定しているので心理的に安心。
  29. 色々ありすぎて把握できないw 250台以上は実はここが持っている。 Hadoopが実は100台ぐらいある prestoは最近使ってなさそう Sparkはよく使ってるっぽい。 ES -> kibanaにアクセスログ流れるのがとても便利 担当のdev leadと先日チャットで話たら、 MesosとAuroraで監視とauto-scalingしてる!って猛プッシュされたので一応書きました。
  30. 30min
  31. 35min
  32. 38min
  33. 40min