Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
広告配信システムにおけるリアーキテクティング
Search
CARTA Engineering
June 28, 2021
Technology
0
980
広告配信システムにおけるリアーキテクティング
技術的負債の返済するアプローチの一つとしてのリアーキテクティングについて、VOYAGE GROUP/fluctでの事例をご紹介します。
CARTA Engineering
June 28, 2021
Tweet
Share
More Decks by CARTA Engineering
See All by CARTA Engineering
データサイエンスのフルサイクル開発を実現する機械学習パイプライン / Machine-learning-pipeline-realize-full-cycle-development-in-data-science
carta_engineering
2
1.8k
UU数 160%成長を支えたエンジニアと共創するテックブログ醸成術 / cocreating tech blog cultivation with engineers
carta_engineering
3
1.1k
dbt test + Elementaryによって Data Observabilityを高める / Data Observability with dbt test elementary
carta_engineering
1
130
テレシー 10分でわかる プロダクト開発チーム説明 / TELECY-Guide-for-Engineers
carta_engineering
0
1k
サポーターズ 会社説明資料(エンジニア向け)/ Supporterz-Guide-for-Engineers
carta_engineering
0
1k
伝説のインターンTreasure生に聞くこの夏に進化する方法 / geekfes 2024 spring
carta_engineering
0
150
今すぐできるコントリビュート!?VS Code編 / how-to-contribute-to-vs-code-right-now
carta_engineering
1
1.4k
スペシャリスト?フルスタック?whichではないフルサイクル開発者という生き方 / 42TOKYO-SPECIAL-LECTURE-231106
carta_engineering
3
1.6k
内製ハイブリッドイベントの創り方 / how to make hybrid event in carta
carta_engineering
0
1.2k
Other Decks in Technology
See All in Technology
利用終了したドメイン名の最強終活〜観測環境を育てて、分析・供養している件〜 / The Ultimate End-of-Life Preparation for Discontinued Domain Names
nttcom
2
360
NFV基盤のOpenStack更新 ~9世代バージョンアップへの挑戦~
vtj
0
330
Cracking the Coding Interview 6th Edition
gdplabs
14
28k
Reading Code Is Harder Than Writing It
trishagee
2
120
分解して理解する Aspire
nenonaninu
2
780
AI Agent時代なのでAWSのLLMs.txtが欲しい!
watany
2
180
1行のコードから社会課題の解決へ: EMの探究、事業・技術・組織を紡ぐ実践知 / EM Conf 2025
9ma3r
8
2.8k
データマネジメントのトレードオフに立ち向かう
ikkimiyazaki
6
1.2k
Goで作って学ぶWebSocket
ryuichi1208
3
2.5k
サイト信頼性エンジニアリングとAmazon Web Services / SRE and AWS
ymotongpoo
2
720
エンジニアが加速させるプロダクトディスカバリー 〜最速で価値ある機能を見つける方法〜 / product discovery accelerated by engineers
rince
4
550
Oracle Database Technology Night #87-1 : Exadata Database Service on Exascale Infrastructure(ExaDB-XS)サービス詳細
oracle4engineer
PRO
1
110
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
It's Worth the Effort
3n
184
28k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
980
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
570
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
The Invisible Side of Design
smashingmag
299
50k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
How to train your dragon (web standard)
notwaldorf
91
5.9k
The Cost Of JavaScript in 2023
addyosmani
47
7.4k
Transcript
広告配信システムにおけるリアーキテクティング Jun 25, 2021@Tech x Marketing #アドテク #リアーキテクテ ィング #データプライバシー
#TechMar #
自己紹介 株式会社VOYAGE GROUP / 株式会社fluct プログラマ fluct ローンチ当初から10年近く携わっている開発者 バックエンドからUIまでなんでもやります 仕事はする、育児もする、「両方」やらなくちゃならない
ってのが幹部のつらいところだな。覚悟はいいか?俺はで きてる @ajiyoshi
ITエンジニア本大賞2021 技術書部門大賞 受賞 Engieers in VOYAGEー事業をエンジニアリングする技術者たち #voyagebook
“私は、ソフトウェアを急いで世に出して学びを得たにもかかわらず、その学びをプログラムに反映しな い、つまり借金で言えば全く返済をしないケースが多々あると考えています。 長い間プログラムにただ機能を追加するのみで、それら機能に関して学んだ知識を反映する整理整頓を 怠っていたならば、次第にプログラムからは知識が失われ、作業にかかる時間はひたすら長くなってい きます。言い換えるなら、すべて利子で食い潰され、進捗はゼロに近づいていくでしょう。” ー Ward Cunningham 負債のメタファ
三つのアプローチとその実践 • リファクタリング ▪ ボトムアップにコードを綺麗にしていく • リアーキテクティング ▪ 大きなシステムをサブシステムに分解し、サブシステム単位で置き換えていく •
リプレイス/リライト ▪ ゼロから書き直す
None
fluct 紹介 ਤʮ&OHJOFFSTJO70:"(&ʔࣄۀΛΤϯδχΞϦϯά͢Δٕज़ऀͨͪʯ͔ΒҾ༻ ˔ GMVDUࠂ৴γεςϜશମͷ͏ͪࠂ͕ܝࡌ͞ΕΔϝσΟΞଆͰར༻͞ΕΔΈ Λఏڙɻ Ұൠతʹʮ441 4VQQMZ4JEF1MBUGPSN ʯͱݺΕ͍ͯΔɻ ˔
ࠂΛग़͢ଆͰར༻͞ΕΔʮ%41ʯɺ͘͠ʮΞυωοτϫʔΫʯͱ͍ͬͨผͷγ εςϜͱ࿈ܞͯ͠ʮ͍͍ײ͡ʯʹࠂΛग़͢͜ͱ͕ओͳ͓ࣄɻ ˔ ݄ؒࠂ৴ԯJNQҎ্ສαΠτҎ্ʹར༻͞Ε͍ͯͯຊ࠷େڃͷ441ɻ
三つのアプローチとその実践 広告配信設定にprotobufスキーマを入れた話 • なぜその手法を選択したのか ◦ 元はスキーマがなかった ▪ JSONライクなデータがMessagePackでエンコードされていた ◦ 開発に関わる人数が増えてきてスキーマが欲しくなった
▪ データを使うところのソースだけ見てもどういうデータが入っているか分か らない ◦ サービスを止めることはできないので、新旧を並行稼働させてうつしていく • どういう情報から事業的な意思決定をしたのか ◦ サービスを止める選択肢はそもそもない • どのように実践したか
リアーキテクティング ー Before 広告配信サーバ 配信設定作成 (ECS) 広告配信設定 <問題> • データを使う配信サーバのソ
ースを見てもデータの中身が 分かりづらい • どんなデータが入っているか を一覧するなら作成している 方のソースを読ままいといけ ない • どの枠に何の広告を出すかというよ うな設定情報ファイル(1GB程度) • フォーマットはMessagePack (JSON様のバイナリシリアライズフ ォーマット)
リアーキテクティング ー After 広告配信サーバ 配信設定作成 (ECS) 旧広告配信設 定 <対処後> •
スキーマをみればどんなデー タが入っているのか分かる • スキーマを前提とした単体テ ストも書ける 新広告配信設 定 リアーキテクティング • ProtocolBuffersでスキーマを定義 • 一部の新しいデータのみPB版を提供 • 徐々に移し替えて移行していく