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
1.1k
広告配信システムにおけるリアーキテクティング
技術的負債の返済するアプローチの一つとしてのリアーキテクティングについて、VOYAGE GROUP/fluctでの事例をご紹介します。
CARTA Engineering
June 28, 2021
Tweet
Share
More Decks by CARTA Engineering
See All by CARTA Engineering
AIは脅威でなくチャンス。 AIと共に進化するエンジニアの成長戦略 / spz-colab-conf-2025
carta_engineering
0
160
鳴り止まないアラート対応の中で学んだ 監視改善の進め方 / team-based-monitoring-improvement-from-alert
carta_engineering
0
390
撤退危機からのピボット : 4年目エンジニアがリードする TypeScript で挑む事業復活 / crisis-to-pivot-4th-year-engineer-ts-relaunch
carta_engineering
2
1.4k
4社統合におけるマスタデータ管理に立ち向かう / Towards master data management in the four-company integration
carta_engineering
0
1k
正解のない未知(インボイス制度対応)をフルサイクル開発で乗り越える方法 / How to overcome the unknown invoice system with full cycle development
carta_engineering
0
390
CARTA HOLDINGS エンジニア向け 採用ピッチ資料 / CARTA-GUIDE-for-Engineers
carta_engineering
0
36k
新卒から4年間、20年もののWebサービスと向き合って学んだソフトウェア考古学 / phper-kaigi-2025-guri
carta_engineering
0
360
PHPでお金を扱う時、終わりのない 謎の1円調査の旅にでなくて済む方法 / phper-kaigi-2025-nakka-
carta_engineering
0
130
移行できそうでやりきれなかった 10年超えのシステムを葬るための戦略 / phper-kaigi-2025-ryu
carta_engineering
0
780
Other Decks in Technology
See All in Technology
"複雑なデータ処理 × 静的サイト" を両立させる、楽をするRails運用 / A low-effort Rails workflow that combines “Complex Data Processing × Static Sites”
hogelog
3
1.8k
後進育成のしくじり〜任せるスキルとリーダーシップの両立〜
matsu0228
6
2.1k
KMP の Swift export
kokihirokawa
0
330
10年の共創が示す、これからの開発者と企業の関係 ~ Crossroad
soracom
PRO
1
150
OpenAI gpt-oss ファインチューニング入門
kmotohas
2
910
実装で解き明かす並行処理の歴史
zozotech
PRO
1
310
extension 現場で使えるXcodeショートカット一覧
ktombow
0
200
OCI Network Firewall 概要
oracle4engineer
PRO
1
7.8k
GopherCon Tour 概略
logica0419
2
170
AI Agentと MCP Serverで実現する iOSアプリの 自動テスト作成の効率化
spiderplus_cb
0
470
ユニットテストに対する考え方の変遷 / Everyone should watch his live coding
mdstoy
0
120
職種別ミートアップで社内から盛り上げる アウトプット文化の醸成と関係強化/ #DevRelKaigi
nishiuma
2
130
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
For a Future-Friendly Web
brad_frost
180
9.9k
The Invisible Side of Design
smashingmag
301
51k
Faster Mobile Websites
deanohume
310
31k
The Cost Of JavaScript in 2023
addyosmani
53
9k
Practical Orchestrator
shlominoach
190
11k
Side Projects
sachag
455
43k
Automating Front-end Workflow
addyosmani
1371
200k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
The Language of Interfaces
destraynor
162
25k
Bash Introduction
62gerente
615
210k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
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版を提供 • 徐々に移し替えて移行していく