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/

8434e5fcdb11033234455d4b2bfb6bb3?s=128

VOYAGE GROUP Tech

February 19, 2021
Tweet

Transcript

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

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

  3. おしらせ • 質問はチャットではなく Sli.do へ、イベントコード #76008 • 感想は Twitter などへ

    • スクショ OK、録画 NG • ツイート OK、Twitter のハッシュタグは #devsumiA 【追記】当日のツイートを togetterにまとめていただきました デブサミ2021【19-A-1】エンジニアリングで負債を返済するための勘所 ― 事業特性にあわせたリ ファクタリング/リアーキテクティング/リプレイス #devsumiA #devsumi
  4. “私は、ソフトウェアを急いで世に出して学びを得たにもかかわらず、その学びをプログラムに反映しない、つまり借 金で言えば全く返済をしないケースが多々あると考えています。 長い間プログラムにただ機能を追加するのみで、それら機能に関して学んだ知識を反映する整理整頓を怠ってい たならば、次第にプログラムからは知識が失われ、作業にかかる時間はひたすら長くなっていきます。言い換える なら、すべて利子で食い潰され、進捗はゼロに近づいていくでしょう。 ” ー Ward Cunningham 負債のメタファ

  5. 三つのアプローチとその実践 • リファクタリング ▪ ボトムアップにコードを綺麗にしていく • リアーキテクティング ▪ 大きなシステムをサブシステムに分解し、サブシステム単位で置き換えていく •

    リプレイス/リライト ▪ ゼロから書き直す
  6. 三つのサービス

  7. None
  8. fluct 紹介 図は「Engineers in VOYAGEー事業をエンジニアリングする技術者たち」から引用
 • fluctは広告配信システム全体のうち広告が掲載されるメディア側で利用される仕組みを提供。 一般的に「SSP (Supply-Side Platform)」と呼ばれている。


    • 広告を出す側で利用される「DSP」、もしくは「アドネットワーク」といった別のシステムと連携して 「いい感じ」に広告を出すことが主なお仕事。 
 • 月間広告配信330億imp以上/1万サイト以上に利用されていて日本最大級のSSP。
  9. fluct から 株式会社VOYAGE GROUP / 株式会社fluct プログラマ fluct ローンチ当初から10年近く携わっている開発者 バックエンドからUIまでなんでもやります

    仕事はする、育児もする、「両方」やらなくちゃならないってのが 幹部のつらいところだな。覚悟はいいか?俺はできてる @ajiyoshi
  10. リアーキテクティング ー Before 広告配信サーバ 配信設定作成 (ECS) 広告配信設定 <問題> • データを使う配信サーバのソー

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

    が入っているのか分かる • スキーマを前提とした単体テス トも書ける 新広告配信設定 リアーキテクティング • ProtocolBuffersでスキーマを定義 • 一部の新しいデータのみPB版を提供 • 徐々に移し替えて移行していく
  12. None
  13. ECナビ 紹介 ECナビ( https://ecnavi.jp )は、2004年スタート、会 員数700万人突破のポイントサイト。 成果報酬型広告、ネットリサーチなどを通じてお得に ポイントが貯められる。

  14. ECナビ から 株式会社VOYAGE GROUP / 株式会社VOYAGE MARKETING 
 ポイントメディア事業本部 開発本部長

    
 ウェブメディアの開発部門長として、プロダクト開発とレガシー改善とを推進 しています。
 デブサミ2019で登壇してからのその後について、話します。 
 福田 剛広
  15. ECナビ システム概要 • LAMP • Tables 450個 • LOC 214万行

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

    手 動 手 動 手 動 自 動 自 動 広告B 広告B 広告本体 3 掲載管理 42 広告枠 119
  17. リアーキテクティング ー After <対処後> • 重複を葬り or 集約 • インターフェース層を設けて、機

    能間依存性を管理 広告A 手 動 手 動 手 動 自 動 広告B 広告B 広告本体 3 → 2 掲載管理 42 → 13 広告枠 119 → 43 葬 り 葬 り 葬 り 葬 り 葬 り 葬 り 葬 り 葬 り 葬り リファクタリング リファクタリング リアーキテクティング
  18. None
  19. サポーターズ 紹介 • 就活生と企業のマッチングを創出するサービス 
 • 現在は新卒の就活支援に特化している 
 • システムは「人と企業とそれを結ぶサービスの集合体」と定義

  20. サポーターズ から 株式会社VOYAGE GROUP システム本部コーポレートエンジニアリ ンググループ(元株式会社サポーターズ ) 別の広告サービスの会社にいたところ、会社ごとお買い上げ頂いて 2015年VOYAGE GROUPに入社。

    2017年から当時はサポーターズと別組織だった HR Tech Studioの 親分に就任。チームが正式に組織としてサポーターズに編入された のはサービス入れ替え後。 昨年12月にサポーターズを離れて、現在は CARTA HOLDINGS全 体の人事周りをサポートする新規システムの開発を手掛ける。 技術は薄く広く、CSSの調整からラック設営(最近ないけど)まで。と りあえずWeb屋さんです。 @nekoya
  21. リプレイス ー システムの置き換え • 卒業年によって違うシステムを提供することで影響範囲を限定した

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

  23. ディスカッション

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