Slide 1

Slide 1 text

広告配信システムにおけるリアーキテクティング Jun 25, 2021@Tech x Marketing #アドテク #リアーキテクテ ィング #データプライバシー #TechMar #

Slide 2

Slide 2 text

自己紹介 株式会社VOYAGE GROUP / 株式会社fluct プログラマ fluct ローンチ当初から10年近く携わっている開発者 バックエンドからUIまでなんでもやります 仕事はする、育児もする、「両方」やらなくちゃならない ってのが幹部のつらいところだな。覚悟はいいか?俺はで きてる @ajiyoshi

Slide 3

Slide 3 text

ITエンジニア本大賞2021 技術書部門大賞 受賞 Engieers in VOYAGEー事業をエンジニアリングする技術者たち #voyagebook

Slide 4

Slide 4 text

“私は、ソフトウェアを急いで世に出して学びを得たにもかかわらず、その学びをプログラムに反映しな い、つまり借金で言えば全く返済をしないケースが多々あると考えています。 長い間プログラムにただ機能を追加するのみで、それら機能に関して学んだ知識を反映する整理整頓を 怠っていたならば、次第にプログラムからは知識が失われ、作業にかかる時間はひたすら長くなってい きます。言い換えるなら、すべて利子で食い潰され、進捗はゼロに近づいていくでしょう。” ー Ward Cunningham 負債のメタファ

Slide 5

Slide 5 text

三つのアプローチとその実践 ● リファクタリング ■ ボトムアップにコードを綺麗にしていく ● リアーキテクティング ■ 大きなシステムをサブシステムに分解し、サブシステム単位で置き換えていく ● リプレイス/リライト ■ ゼロから書き直す

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

fluct 紹介 ਤ͸ʮ&OHJOFFSTJO70:"(&ʔࣄۀΛΤϯδχΞϦϯά͢Δٕज़ऀͨͪʯ͔ΒҾ༻ ˔ GMVDU͸޿ࠂ഑৴γεςϜશମͷ͏ͪ޿ࠂ͕ܝࡌ͞ΕΔϝσΟΞଆͰར༻͞ΕΔ࢓૊Έ Λఏڙɻ Ұൠతʹʮ441 4VQQMZ4JEF1MBUGPSN ʯͱݺ͹Ε͍ͯΔɻ ˔ ޿ࠂΛग़͢ଆͰར༻͞ΕΔʮ%41ʯɺ΋͘͠͸ʮΞυωοτϫʔΫʯͱ͍ͬͨผͷγ εςϜͱ࿈ܞͯ͠ʮ͍͍ײ͡ʯʹ޿ࠂΛग़͢͜ͱ͕ओͳ͓࢓ࣄɻ ˔ ݄ؒ޿ࠂ഑৴ԯJNQҎ্ສαΠτҎ্ʹར༻͞Ε͍ͯͯ೔ຊ࠷େڃͷ441ɻ

Slide 8

Slide 8 text

三つのアプローチとその実践 広告配信設定にprotobufスキーマを入れた話 ● なぜその手法を選択したのか ○ 元はスキーマがなかった ■ JSONライクなデータがMessagePackでエンコードされていた ○ 開発に関わる人数が増えてきてスキーマが欲しくなった ■ データを使うところのソースだけ見てもどういうデータが入っているか分か らない ○ サービスを止めることはできないので、新旧を並行稼働させてうつしていく ● どういう情報から事業的な意思決定をしたのか ○ サービスを止める選択肢はそもそもない ● どのように実践したか

Slide 9

Slide 9 text

リアーキテクティング ー Before 広告配信サーバ 配信設定作成 (ECS) 広告配信設定 <問題> ● データを使う配信サーバのソ ースを見てもデータの中身が 分かりづらい ● どんなデータが入っているか を一覧するなら作成している 方のソースを読ままいといけ ない ● どの枠に何の広告を出すかというよ うな設定情報ファイル(1GB程度) ● フォーマットはMessagePack (JSON様のバイナリシリアライズフ ォーマット)

Slide 10

Slide 10 text

リアーキテクティング ー After 広告配信サーバ 配信設定作成 (ECS) 旧広告配信設 定 <対処後> ● スキーマをみればどんなデー タが入っているのか分かる ● スキーマを前提とした単体テ ストも書ける 新広告配信設 定 リアーキテクティング ● ProtocolBuffersでスキーマを定義 ● 一部の新しいデータのみPB版を提供 ● 徐々に移し替えて移行していく