Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

自己紹介 灘脇 裕一 Backend Engineer 機能開発チームリーダー スクラムマスター 2012.04 - HRTech 2020.07 - Voicy 本日はよろしくお願いします! @natacoon 好きなモノ: 服、ワイン、スプラトゥーン 株式会社Voicy

Slide 3

Slide 3 text

本日のアジェンダ モデル・方針を各現場へどう伝播する? 1 2 DDDを始められる開発組織なんだっけ?

Slide 4

Slide 4 text

Voicy

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

Voicy プロダクト

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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のミッション達成を妨げる 特定のミッションを掲げて解決するチーム

Slide 13

Slide 13 text

DDDを始められる開発組織なんだっけ? Voicyの開発組織 Feature Team A Feature Team B QA Team Data Team SRE/PF Team - チームがたくさんある - 普段の活動はチーム内に閉じてい る - ただし、この組織に合ったマイク ロサービス化はされていない - そのため、各々が扱うAPI・リポジ トリは一部重複している Task Force Team どうやって各チームで認識を合 わせるんだ・・・?

Slide 14

Slide 14 text

モデル・方針を各現場へどう伝播する?

Slide 15

Slide 15 text

モデル・方針を各現場へどう伝播する? 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のミッション達成を妨げる 特定のミッションを掲げて解決するチーム

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

Feature Team B モデル・方針を各現場へどう伝播する? Feature Team A QA Team Data Team SRE/PF Team Cross Functional Team Task Force Team - リファクタリングチームでドメイ ンモデリングを実施し、共通の理 解を作る - ここでの活動を各チームに持って いき、モデル、リファクタリング 方針の伝播をリードする

Slide 19

Slide 19 text

モデル・方針を各現場へどう伝播する? - 具体的に - リファクタリングチームでこれらを作っている - ユースケース図 - (オブジェクトモデル図) - ドメインモデル図 - 直近の開発に関連する部分をリファクタリングチームから、所属チームへ説明し理解を醸 成していく - 実装に適用する際はペア・モブプログラミングで相互理解を深めながら - (開発体制として、フロー効率重視であることが前提)

Slide 20

Slide 20 text

まとめ - モデル・方針を考える前に、考えたものをどう展開できるのかを考えてみよ う! - チームが複数に分かれているけど触るコードを分けられていないなら、横断 チームでやろう! - 横断チームのメンバーに各所への伝播を任せよう!

Slide 21

Slide 21 text

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