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

DDD導入にどう立ち向かう? 開発現場への適用方法あれこれ①

DDD導入にどう立ち向かう? 開発現場への適用方法あれこれ①

20220720 3社合同DDD勉強会

natacon

July 20, 2022
Tweet

More Decks by natacon

Other Decks in Programming

Transcript

  1. DDD導入にどう立ち向かう? 開発現場への適用方あれこれ① 2022/07/20 株式会社Voicy 灘脇裕一 (@natacoon)

  2. 自己紹介 灘脇 裕一 Backend Engineer 機能開発チームリーダー スクラムマスター 2012.04 - HRTech

    2020.07 - Voicy 本日はよろしくお願いします! @natacoon 好きなモノ: 服、ワイン、スプラトゥーン 株式会社Voicy
  3. 本日のアジェンダ モデル・方針を各現場へどう伝播する? 1 2 DDDを始められる開発組織なんだっけ?

  4. Voicy

  5. Voicy 声で人の視界を広げ、ワクワクする社会へ。 たのしい声。せつない声。くやしい声。うれしい声。
 ここに来れば、パーソナリティは本音を語ることができ、リス ナーは本音を聞くことができる。
 
 そんな、声のプラットフォームを築くことで、人の視界は広が り、ワクワクする社会が生まれていく。2016年の創業以来、私 たちのこの想いは変わることはありません。
 


    そのために、これからもVoicyは進化し続けます。
  6. Voicy プロダクト

  7. 前段 - もともとDDDは全くやっておらず、手続き的なコードが増えてきた - 以前はプロダクトに備えている機能はシンプルだったので、問題はなかった - が、徐々にプロダクト・開発組織も大きくなり始めたことにより、システムが実現しようと していることがコードから読み取りづらくなってきていた - 会社全体で概念レベルの理解がズレはじめていた

  8. 前段 これらの部分をなんとかするのに DDDのエッセンスはめっちゃ使えるのでは?となった システムが実現しようとしていることがコードから読み取りづらくなってきていた 会社全体で概念レベルの理解がズレはじめていた

  9. DDDを始められる開発組織なんだっけ?

  10. DDDを始められる開発組織なんだっけ? - 事業・ミッションへの理解・・・ - 開発チーム編成、人数・・・ - モノレポ、マイクロサービス・・・ DDDを一部からでもはじめるためには、 少なくとも開発者間でのモデル認識・アーキテクチャの共通理解が大事。 だが、開発者間だけでもそれらの認識を取るのは骨が折れる・・・

  11. DDDを始められる開発組織なんだっけ? まずは自分たちを取り巻く開発体制を理解しよう!!!

  12. DDDを始められる開発組織なんだっけ? Voicyの開発組織 Feature Team A Feature Team B QA Team

    Data Team SRE/PF Team Feature Team ユーザに向き合い、特定ミッションにつ いて開発をしていくチーム Crossing Team Feature Teamが高速で開発を回すため専 門性の高いタスクをするチーム Task Force Team Task Force Team Feature Teamのミッション達成を妨げる 特定のミッションを掲げて解決するチーム
  13. DDDを始められる開発組織なんだっけ? Voicyの開発組織 Feature Team A Feature Team B QA Team

    Data Team SRE/PF Team - チームがたくさんある - 普段の活動はチーム内に閉じてい る - ただし、この組織に合ったマイク ロサービス化はされていない - そのため、各々が扱うAPI・リポジ トリは一部重複している Task Force Team どうやって各チームで認識を合 わせるんだ・・・?
  14. モデル・方針を各現場へどう伝播する?

  15. モデル・方針を各現場へどう伝播する? Feature Team A Feature Team B QA Team Data

    Team SRE/PF Team Feature Team ユーザに向き合い、特定ミッションにつ いて開発をしていくチーム Crossing Team Feature Teamが高速で開発を回すため専 門性の高いタスクをするチーム Task Force Team Task Force Team Feature Teamのミッション達成を妨げる 特定のミッションを掲げて解決するチーム
  16. Feature Team B モデル・方針を各現場へどう伝播する? Feature Team A QA Team Data

    Team SRE/PF Team - 私が所属するのはココ - 機能開発チームの片翼 Task Force Team - チームは小さいのでこの中であれ ば推進できそう - でももう片方のチームは・・・? - Feature Team以外が触るときは ・・・?
  17. Feature Team B モデル・方針を各現場へどう伝播する? Feature Team A QA Team Data

    Team SRE/PF Team Cross Functional Team Task Force Team - ココにリファクタリングを主ミッ ションにした兼務チームを組織 - Feature Team、Task Force Team など、異なるチームから数人で編 成
  18. Feature Team B モデル・方針を各現場へどう伝播する? Feature Team A QA Team Data

    Team SRE/PF Team Cross Functional Team Task Force Team - リファクタリングチームでドメイ ンモデリングを実施し、共通の理 解を作る - ここでの活動を各チームに持って いき、モデル、リファクタリング 方針の伝播をリードする
  19. モデル・方針を各現場へどう伝播する? - 具体的に - リファクタリングチームでこれらを作っている - ユースケース図 - (オブジェクトモデル図) -

    ドメインモデル図 - 直近の開発に関連する部分をリファクタリングチームから、所属チームへ説明し理解を醸 成していく - 実装に適用する際はペア・モブプログラミングで相互理解を深めながら - (開発体制として、フロー効率重視であることが前提)
  20. まとめ - モデル・方針を考える前に、考えたものをどう展開できるのかを考えてみよ う! - チームが複数に分かれているけど触るコードを分けられていないなら、横断 チームでやろう! - 横断チームのメンバーに各所への伝播を任せよう!

  21. お知らせ Meetyでカジュアル面談をやってます! 転職関係ない話もウェルカムなのでお話しましょう URL: https://meety.net/matches/KjRwJrKGDbKO Voicy ダウンロードリンク