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

20190706 BCU30 事業を変えるシステムリプレース

20190706 BCU30 事業を変えるシステムリプレース

s2terminal

July 15, 2019
Tweet

More Decks by s2terminal

Other Decks in Technology

Transcript

  1. © 2018 Ateam Inc. 今回お話する対象サービス ◧ ⾦融メディア事業の中のいちWebメディア ◧ 2013年12⽉(約 5

    年半前)ローンチ ◧ グループ最⼤規模の売上に成⻑ 図: エイチームグループ ライフスタイルサポート事業の売上規模推移
  2. © 2018 Ateam Inc. 9 様々な問題を抱えた 古い技術のシステム • 管理画⾯上で何が管理されていて、 何が管理されていないのか分からない。

    • 前任者がおらず、どうやって動いているか 把握されていない機能の存在。 • 使われている技術が古いため、 仕様を把握している⼈や 保守・改善できる⼈材が少ない。 このまま保守し続けるべきかどうか? 画像の出展: https://unsplash.com/photos/1K9T5YiZ2WU
  3. © 2018 Ateam Inc. 14 どうやってリプレースしたか ◧ ⾃分1⼈から始まった開発チーム作り ◧ 既存の事業運⽤と並⾏で進めるリプレースの新規開発

    ◧ 社内共通システムを利⽤した、低リスクな移⾏ ◧ 新旧システムの両⽴を実現するデータ同期技術 ここで話さない内容については、Ask the Speaker コーナーや 懇親会等でお話できればと思います。
  4. © 2018 Ateam Inc. 17 リプレースのカギを握る共通システム ◧ 今回担当となるサービスを⽴ち上げた後、同⼀ビジネスモデルの さまざまなWebサービスがローンチ ◧

    異なる事業・異なるシステムでも、類似ビジネスロジックが多い ◧ 次々⽴ち上がる事業展開の中で 共通する処理をどう扱うか、様々な試⾏錯誤があった
  5. © 2018 Ateam Inc. 19 社内ライブラリ群の開発と運⽤ 複数事業間で共通する処理を社内 Ruby gem ライブラリとして開発

    各事業の Ruby on Rails システムにインストールして利⽤ 画像の出展: https://pixabay.com/images/id-2596809/
  6. © 2018 Ateam Inc. 21 社内ライブラリ群の開発と運⽤ 各事業のシステム (Ruby on Rails)

    社内ライブラリ (Ruby gem) Ruby on Railsにリプレースして ライブラリを使いたい
  7. © 2018 Ateam Inc. 22 社内 Ruby gem ライブラリ Ruby

    on Rails プロジェクトと Ruby gem ライブラリの棲み分け プロジェクト リポジトリ Ruby gem ライブラリ側 事業間で共通化できる機能 例: 社内向け管理画⾯ プロジェクト側 事業ドメイン特化機能 例: ユーザー向け画⾯
  8. © 2018 Ateam Inc. 社内ライブラリ群の開発 成功の秘訣は「みんなで作る」 Ruby gem ライブラリ群の開発は、専属のチームはおらず 各事業組織の担当エンジニアが権限を持っており

    必要な機能を適宜開発 社内ライブラリ群の開発 成功のカギ「みんなで作る」 Ruby gem ライブラリ群専属のチームはおらず 各事業組織の開発担当エンジニアが、必要な機能を適宜開発 画像の出展: https://pixabay.com/images/id-593296/
  9. © 2018 Ateam Inc. 26 事業A 開発チーム 社内ライブラリをみんなで開発: コードレビュー 事業B

    開発チーム 事業組織の枠を超えて、ライブラリ利⽤者にコードレビューを依頼 ライブラリの仕様が「みんな」に知れ渡っていき、属⼈性を低減 XX機能を作りました レビューお願いします
  10. © 2018 Ateam Inc. 29 社内ライブラリをみんなで開発: 機能追加 社内 Ruby gem

    ライブラリ プロジェクト リポジトリ XX機能の追加が必要だが ライブラリ側に含めるべきか それとも プロジェクト側に実装するか
  11. © 2018 Ateam Inc. 30 社内ライブラリをみんなで開発: 機能追加 社内 Ruby gem

    ライブラリ プロジェクト リポジトリ プロジェクト側に実装した場合 実装のコストが低く、早くリリースできる 他の事業では、機能を利⽤できない ライブラリ側に実装した場合 他の事業でも機能を利⽤できる 実装のコストは上がる ライブラリ側に実装するかどうかは「みんな」の判断に任されている どちらに実装しても、間違いではない
  12. © 2018 Ateam Inc. 35 既存/新規システム間の、プロジェクト側モデルクラス実装コード⾏数⽐較 1,081 11,339 新規システム (Ruby)

    既存システム (PHP) ⾔語・フレームワークの違いはあれど 実装コード⾏数が約 10 分の 1 に 社内ライブラリがあった事によって 多くの処理を再実装する事なくリプレースが実現
  13. © 2018 Ateam Inc. 36 みんなで: リプレース 売上規模の⼤きいシステムのリプレース 社内ライブラリとして実績ある”枯れた”機能を利⽤し 失敗のリスクを低減できた

    かけられる⼈員・期間には限りがある 社内ライブラリを「みんな」で開発していたので リプレースに伴う新規開発が必要な処理を削減できた
  14. © 2018 Ateam Inc. 40 コードが⾃分たちの⼿に • 今までは、システム内に誰も知らない 仕様などが存在していた •

    システムをリプレースすることで リプレースしたメンバーはもちろん 他事業組織のメンバーも、ある程度は 管理画⾯の動作等が分かる状態に • 仕様技術も、他の新規事業と同等の 新しい世代に刷新した メンテできる⼈員が増えた 画像の出展: https://www.pexels.com/photo/man-in-grey-sweater-holding-yellow-sticky-note-879109/
  15. © 2018 Ateam Inc. 41 エンジニアの問題は、エンジニアが変えないと変わらない 問題解決のために使いたい技術があるならば、今から動き出すべき エンジニアの問題を変えると、事業や組織も変わるかもしれない 使いたい技術を使えていないなら、どうすれば使えるか考える いま古い技術を使っているならば、新しい技術が使えるよう

    リプレースする事はできないか、⽅法を考える 共通システムは、使う⼈「みんな」で作る事が成功のカギ 社内ライブラリは誰かが作るのではない。みんなで作る。あなたが作る まとめ 画像の出展: https://isorepublic.com/photo/laptop-park-grass/
  16. © 2018 Ateam Inc. 43 参考⽂献 ◧ 広告配信管理システムを⽀えるPHP - レガシーシステムからの段階的移⾏戦略

    / phpcon2017 VOYAGE GROUP https://speakerdeck.com/suzuken/phpcon2017 ◧ エンジニア歴17年の俺が、事業系の開発タスクをバンバン投げてくる⾮エンジニアに、保守の必要性を死 ぬほど分かりやすく説明する https://note.mu/gonjyu/n/nd7bf3efa0728 ◧ 画像の出典 ■ https://pixabay.com/images/id-2254769/ ■ https://unsplash.com/photos/1K9T5YiZ2WU ■ https://pixabay.com/images/id-1582347/ ■ https://pixabay.com/images/id-2596809/ ■ https://pixabay.com/images/id-593296/ ■ https://isorepublic.com/photo/laptop-park-grass/ ■ https://www.pexels.com/photo/man-in-grey-sweater-holding-yellow-sticky-note-879109/ ■ https://unsplash.com/photos/O2MdroNurVw