Upgrade to Pro — share decks privately, control downloads, hide ads and more …

エンジニアリングで負債を返済するための勘所 ― 事業特性にあわせたリファクタリング/リアーキテクティング/リプレイス

エンジニアリングで負債を返済するための勘所 ― 事業特性にあわせたリファクタリング/リアーキテクティング/リプレイス

2012/02/19(金)
Developers Summit 2021 「エンジニアリングで負債を返済するための勘所 ― 事業特性にあわせたリファクタリング/リアーキテクティング/リプレイス

"書籍「Engineers in VOYAGEー事業をエンジニアリングする技術者たち」に出てきた事業の特性や背景を踏まえたリファクタリング/リアーキテクティング/リプレイスについて、なぜその手法を選択したのか、どのように実践したかを、実体験や具体例を交えて深掘っていきます。

書籍でインタビュアーを務めた和田(@t_wada) さんをモデレータに迎え、VOYAGE GROUPからはそれぞれの事業会社で事業をエンジニアリングしてきたインタビュイーたちが出演します。広告プラットフォームを10年支えてきたあじよし(@ajiyoshi) 、20年もののシステムを改善してきた福田 、外注したシステムをリプレイスしたねこや(@nekoya) が赤裸々に語ります。"
https://event.shoeisha.jp/devsumi/20210218/session/3052/

CARTA Engineering

February 19, 2021
Tweet

More Decks by CARTA Engineering

Other Decks in Programming

Transcript

  1. エンジニアリングで負債を返済するための勘所
    事業特性にあわせたリファクタリング/リアーキテクティング/リプレイス
    Feb 19, 2021@Developers Summit 2021 
    #devsumiA

    19-A-1

    #76008 


    View Slide

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

    View Slide

  3. おしらせ
    ● 質問はチャットではなく Sli.do へ、イベントコード #76008
    ● 感想は Twitter などへ
    ● スクショ OK、録画 NG
    ● ツイート OK、Twitter のハッシュタグは #devsumiA
    【追記】当日のツイートを togetterにまとめていただきました
    デブサミ2021【19-A-1】エンジニアリングで負債を返済するための勘所 ― 事業特性にあわせたリ
    ファクタリング/リアーキテクティング/リプレイス #devsumiA #devsumi

    View Slide

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

    ー Ward Cunningham
    負債のメタファ

    View Slide

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

    View Slide

  6. 三つのサービス

    View Slide

  7. View Slide

  8. fluct 紹介
    図は「Engineers in VOYAGEー事業をエンジニアリングする技術者たち」から引用

    ● fluctは広告配信システム全体のうち広告が掲載されるメディア側で利用される仕組みを提供。
    一般的に「SSP (Supply-Side Platform)」と呼ばれている。

    ● 広告を出す側で利用される「DSP」、もしくは「アドネットワーク」といった別のシステムと連携して
    「いい感じ」に広告を出すことが主なお仕事。

    ● 月間広告配信330億imp以上/1万サイト以上に利用されていて日本最大級のSSP。

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. View Slide

  13. ECナビ 紹介
    ECナビ( https://ecnavi.jp )は、2004年スタート、会
    員数700万人突破のポイントサイト。
    成果報酬型広告、ネットリサーチなどを通じてお得に
    ポイントが貯められる。

    View Slide

  14. ECナビ から
    株式会社VOYAGE GROUP / 株式会社VOYAGE MARKETING 

    ポイントメディア事業本部 開発本部長

    ウェブメディアの開発部門長として、プロダクト開発とレガシー改善とを推進
    しています。

    デブサミ2019で登壇してからのその後について、話します。

    福田 剛広

    View Slide

  15. ECナビ システム概要 ● LAMP
    ● Tables 450個
    ● LOC 214万行

    View Slide

  16. リアーキテクティング ー Before
    <問題>
    ● 広告枠と掲載管理と広告本体
    と、重複機能が多数ある

    動 広告A










    広告B
    広告B
    広告本体
    3
    掲載管理
    42
    広告枠
    119

    View Slide

  17. リアーキテクティング ー After
    <対処後>
    ● 重複を葬り or 集約
    ● インターフェース層を設けて、機
    能間依存性を管理
    広告A








    広告B
    広告B
    広告本体
    3 → 2
    掲載管理
    42 → 13
    広告枠
    119 → 43
















    葬り
    リファクタリング
    リファクタリング
    リアーキテクティング

    View Slide

  18. View Slide

  19. サポーターズ 紹介
    ● 就活生と企業のマッチングを創出するサービス

    ● 現在は新卒の就活支援に特化している

    ● システムは「人と企業とそれを結ぶサービスの集合体」と定義

    View Slide

  20. サポーターズ から
    株式会社VOYAGE GROUP システム本部コーポレートエンジニアリ
    ンググループ(元株式会社サポーターズ )
    別の広告サービスの会社にいたところ、会社ごとお買い上げ頂いて
    2015年VOYAGE GROUPに入社。
    2017年から当時はサポーターズと別組織だった HR Tech Studioの
    親分に就任。チームが正式に組織としてサポーターズに編入された
    のはサービス入れ替え後。
    昨年12月にサポーターズを離れて、現在は CARTA HOLDINGS全
    体の人事周りをサポートする新規システムの開発を手掛ける。
    技術は薄く広く、CSSの調整からラック設営(最近ないけど)まで。と
    りあえずWeb屋さんです。
    @nekoya

    View Slide

  21. リプレイス ー システムの置き換え
    ● 卒業年によって違うシステムを提供することで影響範囲を限定した

    View Slide

  22. アーキテクチャ ー Before → After
    ● API層を挟むことで複数のクライアント実装に対応しやすくした
    ● iOS版は書籍出版後の2020年11月にリリース

    View Slide

  23. ディスカッション

    View Slide

  24. https://twitter.com/golden_lucky/status/1362568600603660292?s=20
    【追記】当日の様子と舞台裏

    View Slide