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

大規模で複雑!巨大レガシーシステムをリプレイスするためにスクラムチームを立ち上げた話

 大規模で複雑!巨大レガシーシステムをリプレイスするためにスクラムチームを立ち上げた話

大規模な課金系プラットフォームのリプレイスするためのスクラムチームを立ち上げる際にぶつかった課題と、それを解決するためにとった行動について紹介します。

KitazawaYoshitaka

June 14, 2022
Tweet

More Decks by KitazawaYoshitaka

Other Decks in Business

Transcript

  1. © DMM.com 北澤 由貴 / Kitazawa Yoshitaka
 
 2 自己紹介


    DMM.com プラットフォーム事業本部
 第2開発部 ポイントグループ Team Leader
 
 2016年中途入社。
 DMMポイント関連システムの保守/運用/開発に従事。
 ポイントシステムのリプレイス、課金系マスタ管理サービスを構築する。 その他、開発チームの立ち上げを複数行い、現在はスクラムマスター 兼テックリードとして新しい課金系サービスの開発に従事している。
 Twitter: @ystk_ktzw GitHub: kitazawa-yoshitaka 
 

  2. © DMM.com DMMを支える課金プラットフォーム
 • 月間決済額 約150億円
 • DMMポイントだけで約100億円規模
 • 50を超えるサービスに課金機能を提供


    • 主にAPIを各サービスに提供
 • 1,000 request / second 以上
 • エンドユーザー向けのフロントエンドも提供
 6
  3. © DMM.com プロジェクト紹介
 Project-Rabbit 
 • DMMのプラットフォームの大部分をリプレイスする
 • コードネーム:Rabbit
 • なぜリプレイスするのか


    • プラットフォームの開発速度がDMMの事業展開についていけない
 • 複数システムの複雑な絡み合い
 • 継ぎ足し使ってきた秘伝のタレ
 7 業務とシステムを整理し、DMMのスケールアップに対応させる

  4. © DMM.com 課題に向き合う
 Project-Rabbit の課題
 • 大規模である
 • 複数のプロダクトが複雑に絡み合っている
 •

    一つひとつのプロダクトの複雑性が高い
 • 全てを知るドメインエキスパートがいない
 以上の課題を踏まえて、スクラムチームを立ち上げるまでに実施してきたこ とを紹介します。
 10
  5. © DMM.com ② 複数スクラムチーム組成計画
 Spotifyモデルを参考に複数チームの組成を計画
 • Spotifyモデル
 • 「ユニコーン企業のひみつ」で紹介されているコラボレーションパターン
 •

    スクワッド
 • プロダクトに責任を持つメンバーが揃ったチーム
 • 作ったものを自分たちでメンテナンスする
 • 自分たちで自分たちの仕事を生み出す
 • トライブ
 • 類似、関連したミッションを持つスクワッドのまとまり
 • チャプター
 • トライブ内の同じ線も線を持つメンバーのグループ
 • ギルド
 • 組織を横断して生成される、専門分野についてのグループ
 
 12
  6. © DMM.com ② 複数スクラムチーム組成計画
 Spotify モデルを Rabbit に落とし込む
 • スクワッド


    • プロダクトに責任をもつスクラムチームを組成
 • トライブ
 • 分割なし(課金プラットフォームのリプレイスという共通の目的)
 • チャプター
 • チームリーダー、テックリードのチャプターを組成
 • ギルド
 • 既存プロダクトの運用保守チームとの協業グループを組成
 
 14
  7. © DMM.com ③ パイロットチームの始動
 • 1つのプロダクト(API)をリプレイスするチームを組成
 • パイロットチームとして、今後のチーム組成のベースにする
 • チーム組成に必要なドキュメンテーション


    • インセプションデッキ
 • 目的、背景、優先順位、方向性を端的に伝えるドキュメント
 • Product Requirements Document(PRD)
 • インセプションデッキより詳細化された要求仕様
 • Rabbit では各プロダクトチームごとに作成
 • Design Doc(DD)
 • What, How, Why を記載するドキュメント
 • 技術的な観点を含めた概要設計を記載
 16
  8. © DMM.com ③ パイロットチームの始動
 • プロダクト内部の複雑性に対処するため、
 段階的リプレイスを行うためのフェーズ分割を実施
 (目安としては3ヶ月くらいで終わるイメージで分割)
 • Ph.1:

    データベースのクラウド移設(負債脱却)
 • Ph.2: アプリケーションのリライト(負債脱却)
 • Ph.3: アプリケーションのリプレイス(良いプロダクトへの進化)
 • Ph.4: データベースのマイグレーション(良いプロダクトへの進化)
 • Ph.5: 継続的に進化、改善し続けるプロダクトへ...
 
 17
  9. © DMM.com ④ パイロットチームの拡大
 • チーム組成時は4人チーム
 • 業務委託契約で5名増員し、9人体制でスプリント開始
 • 改善のサイクルを早めるため1週間スプリントを採用


    • 慣れてきてから2週間スプリントへ移行
 • ZenHub を使用したかんばんボード形式でバックログを管理
 • ペアプログラミング/スウォーミングを推奨
 • スプリントの繰り返しで自走できるプロダクトチームへ...
 18
  10. © DMM.com 成功したこと
 • 現状と理想のプロダクトのマップを可視化
 • チーム分割した際の役割範囲の明確化ができた
 • 自分のチームがプロジェクト全体のどこをやっているのか説明しやすい
 •

    ドキュメンテーション
 • インセプションデッキ、Product Requirements Document(PRD)、Design Doc(DD) を作成することで、オンボーディングが容易
 • 4名→9名にスケールした際もスムーズにいけた
 • チーム文化の形成
 • ペアプロやスウォーミングをすることで、温度感や方向性のすり合わせ、スキルや 知見の共有がいい感じになった
 • 開発チームが自走できる状態になってきた
 20
  11. © DMM.com 失敗したこと
 • スクラムマスター不在の状況
 • 私がプロダクトオーナーを引き受けたタイミングでスクラムマスター不在に
 • 当時は開発チームを減らしたくないという思いが強かった
 •

    役割を明確にしないことで、
 スクラムを機能させることの責任の所在が不明確に…
 • 経験のあるメンバーのフォローに感謝…!
 22