SlideShare a Scribd company logo
1 of 29
成長フェーズと
選択した技術のお話
オレシカナイト Vol.7
2018/07/13@PP4F クリエイティブラウンジ
MDH アドテク局 いしばし げんき
自己紹介
● 石橋 弦樹(いしばし げんき)
○ @b0941015
● 2015年 4月 新卒としてCyberZ入社
● 2017年10月 MDHのDSPチームJOIN
● 最近ほったらかし温泉に行ってきた
2
技術選定で何を大事にしていますか
● 話題の最新技術 or 枯れていても実績のある技術
● フルマネージド or カスタマイズ可能
● チームの技術スタック or 達人に合わせた技術
● etc...
AmebaDSPの開発を通してプロダクトの成長とともに、
選択してよかった or よくなかった技術の紹介
3
今日のお話
● フェーズ1
○ とにかくリリース・AmebaDSPの立ち上げ
● フェーズ2
○ 事業継続の危機・技術的負債の返却
● フェーズ3
○ チーム再編成・これからの話
4
今日のお話
フェーズ1
とにかくリリース・AmebaDSPの立ち上げ
5
MDHの紹介とAmebaDSPが生まれた背景
● MDHとは
○ 自社メディアのマネタイズ組織
● AmebaDSPが生まれた背景
○ 配信量をもっと増やしたい
○ 外部在庫が伸びている
○ チャレンジングな領域
6
AmebaDSPとは
● AmebaDSPの誕生
○ 2016年12月より開発がスタートした後発DSP
○ ADNWの広告配信システムのノウハウを利用
○ アメブロなどのユーザーデータ・配信実績を元に外部メディアへ配信
7
立ち上げ時に求められること...
8
立ち上げ時に求められること...
とにかくリリースすること!!
9
AmebaDSPの開発
● DSPはとにかく関連コンポーネントが多い
○ 新規開発
■ 配信・計測・予測・ログの収集加工・集計
○ 既存コンポーネントとの接続
■ リアルタイム集計基盤・広告情報・DMP・ログ管理
10
リリースまでの実際のスケジュール
2016年 12月 仕様策定開始
2017年 2月 実装開始
2017年 6月 AmebaDSPリリース
11
リリースまでの実際のスケジュール
2016年 12月 仕様策定開始
2017年 2月 実装開始
2017年 6月 AmebaDSPリリース
12
実装期間わずか4ヶ月
4ヶ月の実装期間でDSPをリリースできた理由
● 少人数で独立したチーム構成
● 機能を実現することを最優先
● 削れるコストはとにかく削る
● とにかく頑張る!!!(ココ重要)
13
● Golangの採用
○ 学習コストの削減
● ElasticBeanstalk
○ インフラ管理コストの削減
● Datadog
○ システムの状態管理が容易!
4ヶ月の実装期間でDSPをリリースできた理由
14
4ヶ月の実装期間でDSPをリリースできた理由
15
今日のお話
フェーズ2
事業継続の危機・技術的負債の返却
16
溜まっていく技術的負債(2017年10月頃)
● 予測システムが整っていない
○ 予測をしないヒューリスティックなシステムも
○ 1日の売上数千円(粗利がマイナスな日も...)
● 新機能をリリースするたびにバグに怯える日々
○ スパゲッティが新しいスパゲッティを生む
○ スピード重視の開発だったので、もちろんテストはほとんどない
● 適当な閾値とオオカミ少年状態な監視
○ ちゃんと設計されてないのでアラート来ても誰も対処しない
● etc...
17
求められる事業成果と事業継続の危機
● 当時の局長のお言葉
2018年 4月までに
売上目標を達成しないと
AmebaDSPはクローズね
18
売上を伸ばすための基本方針
● 機能開発と実装サイクルを回すことが大事
● 技術的負債の返済と売上を伸ばすフェーズを定義
● 売上への影響度を前提としてタスクの優先度決め
● チームの合言葉は「日販!」
19
AmebaDSPの売上の推移
20
基盤整備フェーズ
AmebaDSPの売上の推移
21
● 日販みぎかた〜〜〜〜!!!で事業クローズを回避
基盤整備フェーズ 売上伸長フェーズ
売上目標を達成するために大事だったこと
● 基盤を整える
● PDCAをとにかく回す
● 周りの言葉に流されすぎない
● とにかく頑張る!!!(ココ重要)
22
基盤を整える上で大事だったこと
● 技術的負債を積極的に返却
○ 中長期に影響あるものは早めに対処
○ プロダクトコードのリプレース
● DDD(Domain Driven Design)
○ 何がどこにあるかを明確化, 拡張性のある設計
○ 詳細は「DDDを導入した話」で(オレシカナイト DDDで検索!)
● BDD(Behavior Driven Development)
○ リプレースに伴い導入、テストを書く文化へ
○ PRレビュー時に仕様とロジックが瞬時に理解可能
23
DSPの基盤を作る上で発生した新たな技術的負債
● ElasticBeanstalk
○ デフォルトの設定が中~大規模環境に対応していない
○ ブラックボックスが多い
○ DNSを切り替えてデプロイ運用
24
今日のお話
フェーズ3
チーム再編成とこれからの話
25
チーム再編成とこれからの話
● AmebaDSPの事業継続とともに部署の注力事業に
● 2018年5月にチーム再編成
○ 縦軸の組織から横軸の組織へ
26
MDH
DSPチーム ADNWチーム
MDH
ブランドチーム
ダイレクトチーム
データ分析チーム
課題は山積み
● スケールする仕組みづくり
● 分析基盤の整備
● 独自の武器づくり
● コスト
● どうやって頑張り続けるか
27
今思っていること
● でもやっぱり広告って楽しい
○ ビッグデータ
○ 機械学習
○ エンジニアリングが売上に直結
● 後発DSPだからこそできることがある
28
まとめ
● フェーズによって求められる事業目標が異なる
● 立ち上げフェーズではとにかくスピード重視
○ 削れるコストはとにかく削る
○ Golang, ElasticBeanstalk, Datadog
● 事業成果を求められるフェーズでは基盤が大事
○ 技術的負債の早期返却
○ リプレース, DDD, BDD
● とにかく頑張る!!!(無理はしない程度に)
29

More Related Content

Similar to AmebaDSPの成長フェーズとアーキテクチャの話

社内社外で勉強会を続けていくための考え方
社内社外で勉強会を続けていくための考え方社内社外で勉強会を続けていくための考え方
社内社外で勉強会を続けていくための考え方KLab Inc. / Tech
 
【参観レポート】Lean startupnight real startup dialog
【参観レポート】Lean startupnight   real startup dialog【参観レポート】Lean startupnight   real startup dialog
【参観レポート】Lean startupnight real startup dialogTsutomu Chikuba
 
新卒採用を、まっとうに ー面接者への通信簿ー
新卒採用を、まっとうに ー面接者への通信簿ー新卒採用を、まっとうに ー面接者への通信簿ー
新卒採用を、まっとうに ー面接者への通信簿ー慧悟 岩本
 
プロトタイピングツール投入のケーススタディ
プロトタイピングツール投入のケーススタディプロトタイピングツール投入のケーススタディ
プロトタイピングツール投入のケーススタディ力也 伊原
 
チームをワークさせるために 最も大事なコミュニケーション 意識していますか? - XP祭り2017
チームをワークさせるために 最も大事なコミュニケーション 意識していますか? - XP祭り2017チームをワークさせるために 最も大事なコミュニケーション 意識していますか? - XP祭り2017
チームをワークさせるために 最も大事なコミュニケーション 意識していますか? - XP祭り2017Koichi Yoshida
 
Netadashi meetup #9 20190607
Netadashi meetup #9 20190607Netadashi meetup #9 20190607
Netadashi meetup #9 20190607Shigeki Morizane
 
とある中堅ベンチャーの新人研修戦略 #efsta42
とある中堅ベンチャーの新人研修戦略 #efsta42とある中堅ベンチャーの新人研修戦略 #efsta42
とある中堅ベンチャーの新人研修戦略 #efsta42Mamiko Tsuda
 
アジャイル開発を始めてみませんか?(思い出編)
アジャイル開発を始めてみませんか?(思い出編)アジャイル開発を始めてみませんか?(思い出編)
アジャイル開発を始めてみませんか?(思い出編)Miho Nagase
 
エンタープライズでもできるアジャイル開発
エンタープライズでもできるアジャイル開発エンタープライズでもできるアジャイル開発
エンタープライズでもできるアジャイル開発Yoshiyuki Ueda
 
技術記事を書く&楽しむチームの作り方
技術記事を書く&楽しむチームの作り方技術記事を書く&楽しむチームの作り方
技術記事を書く&楽しむチームの作り方Takafumi ONAKA
 
enPiT修了生は、大学卒業後の一歩をどう選んだか
enPiT修了生は、大学卒業後の一歩をどう選んだかenPiT修了生は、大学卒業後の一歩をどう選んだか
enPiT修了生は、大学卒業後の一歩をどう選んだかShizuru Kosuge
 
事業創造人財育成と組織開発:コマツにおける勝てる人と組織の創り方
事業創造人財育成と組織開発:コマツにおける勝てる人と組織の創り方事業創造人財育成と組織開発:コマツにおける勝てる人と組織の創り方
事業創造人財育成と組織開発:コマツにおける勝てる人と組織の創り方Yuichiro KATO
 
20231019 Notion Labs Japan × エルボーズ コラボ勉強会
20231019 Notion Labs Japan × エルボーズ コラボ勉強会20231019 Notion Labs Japan × エルボーズ コラボ勉強会
20231019 Notion Labs Japan × エルボーズ コラボ勉強会makototsubakihara
 
Contextual package
Contextual packageContextual package
Contextual packageShota Yasui
 
GDC報告会2016 GDC PLAY出典顛末記
GDC報告会2016 GDC PLAY出典顛末記GDC報告会2016 GDC PLAY出典顛末記
GDC報告会2016 GDC PLAY出典顛末記IGDA JAPAN
 
20190512 subscription meetup kamata
20190512 subscription meetup kamata20190512 subscription meetup kamata
20190512 subscription meetup kamata真太郎 鎌田
 
ふりかえりワークショップ@オープンラボ備後
ふりかえりワークショップ@オープンラボ備後ふりかえりワークショップ@オープンラボ備後
ふりかえりワークショップ@オープンラボ備後Shinsuke Abe
 

Similar to AmebaDSPの成長フェーズとアーキテクチャの話 (20)

DDDを導入した話
DDDを導入した話DDDを導入した話
DDDを導入した話
 
社内社外で勉強会を続けていくための考え方
社内社外で勉強会を続けていくための考え方社内社外で勉強会を続けていくための考え方
社内社外で勉強会を続けていくための考え方
 
【参観レポート】Lean startupnight real startup dialog
【参観レポート】Lean startupnight   real startup dialog【参観レポート】Lean startupnight   real startup dialog
【参観レポート】Lean startupnight real startup dialog
 
新卒採用を、まっとうに ー面接者への通信簿ー
新卒採用を、まっとうに ー面接者への通信簿ー新卒採用を、まっとうに ー面接者への通信簿ー
新卒採用を、まっとうに ー面接者への通信簿ー
 
プロトタイピングツール投入のケーススタディ
プロトタイピングツール投入のケーススタディプロトタイピングツール投入のケーススタディ
プロトタイピングツール投入のケーススタディ
 
チームをワークさせるために 最も大事なコミュニケーション 意識していますか? - XP祭り2017
チームをワークさせるために 最も大事なコミュニケーション 意識していますか? - XP祭り2017チームをワークさせるために 最も大事なコミュニケーション 意識していますか? - XP祭り2017
チームをワークさせるために 最も大事なコミュニケーション 意識していますか? - XP祭り2017
 
Netadashi meetup #9 20190607
Netadashi meetup #9 20190607Netadashi meetup #9 20190607
Netadashi meetup #9 20190607
 
とある中堅ベンチャーの新人研修戦略 #efsta42
とある中堅ベンチャーの新人研修戦略 #efsta42とある中堅ベンチャーの新人研修戦略 #efsta42
とある中堅ベンチャーの新人研修戦略 #efsta42
 
アジャイル開発を始めてみませんか?(思い出編)
アジャイル開発を始めてみませんか?(思い出編)アジャイル開発を始めてみませんか?(思い出編)
アジャイル開発を始めてみませんか?(思い出編)
 
パーフェクト販促講座(売上アップ大学)
パーフェクト販促講座(売上アップ大学)パーフェクト販促講座(売上アップ大学)
パーフェクト販促講座(売上アップ大学)
 
SQiP2016 SIG8
SQiP2016 SIG8SQiP2016 SIG8
SQiP2016 SIG8
 
エンタープライズでもできるアジャイル開発
エンタープライズでもできるアジャイル開発エンタープライズでもできるアジャイル開発
エンタープライズでもできるアジャイル開発
 
技術記事を書く&楽しむチームの作り方
技術記事を書く&楽しむチームの作り方技術記事を書く&楽しむチームの作り方
技術記事を書く&楽しむチームの作り方
 
enPiT修了生は、大学卒業後の一歩をどう選んだか
enPiT修了生は、大学卒業後の一歩をどう選んだかenPiT修了生は、大学卒業後の一歩をどう選んだか
enPiT修了生は、大学卒業後の一歩をどう選んだか
 
事業創造人財育成と組織開発:コマツにおける勝てる人と組織の創り方
事業創造人財育成と組織開発:コマツにおける勝てる人と組織の創り方事業創造人財育成と組織開発:コマツにおける勝てる人と組織の創り方
事業創造人財育成と組織開発:コマツにおける勝てる人と組織の創り方
 
20231019 Notion Labs Japan × エルボーズ コラボ勉強会
20231019 Notion Labs Japan × エルボーズ コラボ勉強会20231019 Notion Labs Japan × エルボーズ コラボ勉強会
20231019 Notion Labs Japan × エルボーズ コラボ勉強会
 
Contextual package
Contextual packageContextual package
Contextual package
 
GDC報告会2016 GDC PLAY出典顛末記
GDC報告会2016 GDC PLAY出典顛末記GDC報告会2016 GDC PLAY出典顛末記
GDC報告会2016 GDC PLAY出典顛末記
 
20190512 subscription meetup kamata
20190512 subscription meetup kamata20190512 subscription meetup kamata
20190512 subscription meetup kamata
 
ふりかえりワークショップ@オープンラボ備後
ふりかえりワークショップ@オープンラボ備後ふりかえりワークショップ@オープンラボ備後
ふりかえりワークショップ@オープンラボ備後
 

More from Genki Ishibashi

音声合成の今昔と深層学習を用いた音声合成
音声合成の今昔と深層学習を用いた音声合成音声合成の今昔と深層学習を用いた音声合成
音声合成の今昔と深層学習を用いた音声合成Genki Ishibashi
 
Twilio flex導入までの背景と苦労した話
Twilio flex導入までの背景と苦労した話Twilio flex導入までの背景と苦労した話
Twilio flex導入までの背景と苦労した話Genki Ishibashi
 
新卒の頃に意識したかった プロダクト開発の7つのポイント
新卒の頃に意識したかった プロダクト開発の7つのポイント新卒の頃に意識したかった プロダクト開発の7つのポイント
新卒の頃に意識したかった プロダクト開発の7つのポイントGenki Ishibashi
 
仕組みから理解する人力音声認識
仕組みから理解する人力音声認識仕組みから理解する人力音声認識
仕組みから理解する人力音声認識Genki Ishibashi
 
Redash・SQL勉強会 ~目指せクエリ女子~
Redash・SQL勉強会 ~目指せクエリ女子~ Redash・SQL勉強会 ~目指せクエリ女子~
Redash・SQL勉強会 ~目指せクエリ女子~ Genki Ishibashi
 
CNNで作る ダメ絶対音感
CNNで作る ダメ絶対音感CNNで作る ダメ絶対音感
CNNで作る ダメ絶対音感Genki Ishibashi
 
Paper Collection of Real-Time Bidding論文読み会~第一回~
Paper Collection of Real-Time Bidding論文読み会~第一回~Paper Collection of Real-Time Bidding論文読み会~第一回~
Paper Collection of Real-Time Bidding論文読み会~第一回~Genki Ishibashi
 
A/Bテストのための検定
A/Bテストのための検定A/Bテストのための検定
A/Bテストのための検定Genki Ishibashi
 
テックゼミ輪読会(深層学習1~2章)
テックゼミ輪読会(深層学習1~2章)テックゼミ輪読会(深層学習1~2章)
テックゼミ輪読会(深層学習1~2章)Genki Ishibashi
 
スマホ広告効果測定ツール入門
スマホ広告効果測定ツール入門スマホ広告効果測定ツール入門
スマホ広告効果測定ツール入門Genki Ishibashi
 
楽しいビッグデータ分析入門~Presto編~
楽しいビッグデータ分析入門~Presto編~楽しいビッグデータ分析入門~Presto編~
楽しいビッグデータ分析入門~Presto編~Genki Ishibashi
 
ゼロから作るダメ絶対音感
ゼロから作るダメ絶対音感ゼロから作るダメ絶対音感
ゼロから作るダメ絶対音感Genki Ishibashi
 
F.O.Xデータ抽出基盤をクラウド移行した話
F.O.Xデータ抽出基盤をクラウド移行した話F.O.Xデータ抽出基盤をクラウド移行した話
F.O.Xデータ抽出基盤をクラウド移行した話Genki Ishibashi
 
ゼロから始めるAngular2生活
ゼロから始めるAngular2生活ゼロから始めるAngular2生活
ゼロから始めるAngular2生活Genki Ishibashi
 
Dynamo dbとはとは続き
Dynamo dbとはとは続きDynamo dbとはとは続き
Dynamo dbとはとは続きGenki Ishibashi
 

More from Genki Ishibashi (18)

音声合成の今昔と深層学習を用いた音声合成
音声合成の今昔と深層学習を用いた音声合成音声合成の今昔と深層学習を用いた音声合成
音声合成の今昔と深層学習を用いた音声合成
 
Twilio flex導入までの背景と苦労した話
Twilio flex導入までの背景と苦労した話Twilio flex導入までの背景と苦労した話
Twilio flex導入までの背景と苦労した話
 
新卒の頃に意識したかった プロダクト開発の7つのポイント
新卒の頃に意識したかった プロダクト開発の7つのポイント新卒の頃に意識したかった プロダクト開発の7つのポイント
新卒の頃に意識したかった プロダクト開発の7つのポイント
 
Fuzz testingとgo
Fuzz testingとgoFuzz testingとgo
Fuzz testingとgo
 
仕組みから理解する人力音声認識
仕組みから理解する人力音声認識仕組みから理解する人力音声認識
仕組みから理解する人力音声認識
 
Redash・SQL勉強会 ~目指せクエリ女子~
Redash・SQL勉強会 ~目指せクエリ女子~ Redash・SQL勉強会 ~目指せクエリ女子~
Redash・SQL勉強会 ~目指せクエリ女子~
 
re:invent2019体験記
re:invent2019体験記re:invent2019体験記
re:invent2019体験記
 
CNNで作る ダメ絶対音感
CNNで作る ダメ絶対音感CNNで作る ダメ絶対音感
CNNで作る ダメ絶対音感
 
Paper Collection of Real-Time Bidding論文読み会~第一回~
Paper Collection of Real-Time Bidding論文読み会~第一回~Paper Collection of Real-Time Bidding論文読み会~第一回~
Paper Collection of Real-Time Bidding論文読み会~第一回~
 
A/Bテストのための検定
A/Bテストのための検定A/Bテストのための検定
A/Bテストのための検定
 
テックゼミ輪読会(深層学習1~2章)
テックゼミ輪読会(深層学習1~2章)テックゼミ輪読会(深層学習1~2章)
テックゼミ輪読会(深層学習1~2章)
 
スマホ広告効果測定ツール入門
スマホ広告効果測定ツール入門スマホ広告効果測定ツール入門
スマホ広告効果測定ツール入門
 
楽しいビッグデータ分析入門~Presto編~
楽しいビッグデータ分析入門~Presto編~楽しいビッグデータ分析入門~Presto編~
楽しいビッグデータ分析入門~Presto編~
 
ゼロから作るダメ絶対音感
ゼロから作るダメ絶対音感ゼロから作るダメ絶対音感
ゼロから作るダメ絶対音感
 
F.O.Xデータ抽出基盤をクラウド移行した話
F.O.Xデータ抽出基盤をクラウド移行した話F.O.Xデータ抽出基盤をクラウド移行した話
F.O.Xデータ抽出基盤をクラウド移行した話
 
ゼロから始めるAngular2生活
ゼロから始めるAngular2生活ゼロから始めるAngular2生活
ゼロから始めるAngular2生活
 
Dynamo dbとはとは続き
Dynamo dbとはとは続きDynamo dbとはとは続き
Dynamo dbとはとは続き
 
DynamoDBとはとは
DynamoDBとはとはDynamoDBとはとは
DynamoDBとはとは
 

AmebaDSPの成長フェーズとアーキテクチャの話

Editor's Notes

  1. ・温泉いじり
  2. 予算を消化が目的 →広告主がもっと配信したい
  3. 縦線がコンポーネント
  4. 予算を消化が目的 →広告主がもっと配信したい
  5. 予算を消化が目的 →広告主がもっと配信したい
  6. 開発・権限はチームに移譲 作り込むことはしない インフラ構築
  7. Golang ・MDHではScalaをメインに使っていた ・Scalaに苦手意識のあるメンバー ElasticBenastalk ELB・EC2・Route53・Autoscaling Groupを一発で作成 Datadog モニタリング・監視ツール
  8. ・予測をしないヒューリスティック
  9. ・周りからなんやかんや言われる ・基盤を整える
  10. 開発・権限はチームに移譲 作り込むことはしない インフラ構築
  11. 開発・権限はチームに移譲 作り込むことはしない インフラ構築 繋ぎ込みSSP数の拡大 買い付け枠の拡大 予測システムの正常稼働 etc...
  12. 開発・権限はチームに移譲 作り込むことはしない インフラ構築
  13. 技術的負債を積極的に返却 中長期に影響あるものは早めに対処(監視, 障害振り返り, 応札率, 勝率を上げるのに影響のある施策) プロダクトコードのリプレース 立ち上げ期直後のコードリプレースは有効 実装する側もレビューする側も既存の仕様理解が進む DDD(Domain Driven Design) 何がどこにあるかを明確化, 拡張性のある設計 DDDを導入した話(オレシカナイト DDDで検索) BDD(Behavior Driven Development) コードの振る舞いに焦点を当てたテスト駆動開発手法 リプレースに伴い導入、テストを書く文化へ 実装する前にロジックの整理 PRレビュー時に仕様の理解とロジックが瞬時に判定できる
  14. ディスク容量8GB ASGの最大値が100台 → DSPみたいなヘビーな用途に向いていない 証明書などの更新で既存設定がデフォルト値に書き換わる → 変更の影響範囲がわからない SSPのリクエストが切り替わらない SSPによってはドメインではなくIPアドレスでキャッシュ
  15. 全部の要約をまとめに(技術もふくめ) フェーズで割り切る・こだわったところ・フェーズ3ではこれからはこだわりたいこと