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

スクラムで進めるシステムマイグレーション / Migration-by-Scrum

t4i_n5i
June 18, 2022
98

スクラムで進めるシステムマイグレーション / Migration-by-Scrum

スクラムで進めるシステムマイグレーション

t4i_n5i

June 18, 2022
Tweet

Transcript

  1. 自己紹介 2 Chatwork 株式会社 都志 典晃(つし のりあき) @louvre2489 • 元SIerからScalaエンジニアとして入社

    • 2021/10からはマイグレーション開発のPOをやってます • PO初心者です
  2. 組織とプロダクトの課題 8 現在、Chatworkでは組織とプロダクトの両面で課題を抱えています 組織 • プロジェクトベースの開発体制のため、チームビルディングが毎回必要となる • プロジェクトベースの開発体制による知識の属人化(この部分は〇〇さんが詳しいよ) • 結果として、網羅的に仕様を把握している人が超貴重人材となる

    プロダクト • 積み上がった技術負債 • 負債を返そうにも、網羅的に仕様を把握している人が少数で手を出すのが困難 • そして、負債を返せずに負債の上に機能を積み上げる... 組織と、そこから生まれるプロダクト には密接な関係がある
  3. 逆コンウェイの法則を利用して理想的なプロダクト構成へ 10 組織とプロダクトの課題 ① 理想的なシステムのカタチに合わせた機能別チームを構築し、 ② それらのチームが自チームの機能に手を加える 認証チーム 認証サービス 機能を独立したサービスに

    分割/連携させてChatworkを構成する コンウェイの法則:システムを設計する組織は、そのコミュニケーション構造をそっくりまねた構造の設計を生み出してしまう チャットチーム チャットサービス 決済チーム 決済サービス チームは自分たちのサービスを 責任を持って開発する 逆コンウェイの法則:コンウェイの法則を逆手に取って、最終的に実現したいシステムの形に合わせて組織を構築する
  4. コンウェイの法則:システムを設計する組織は、そのコミュニケーション構造をそっくりまねた構造の設計を生み出してしまう 逆コンウェイの法則:コンウェイの法則を逆手に取って、最終的に実現したいシステムの形に合わせて組織を構築する 『機能』にフォーカスしたチーム ≒ フィーチャーチームを目指す 参考URL:https://featureteams.org/jp/ 逆コンウェイの法則を利用して理想的なプロダクト構成へ 11 組織とプロダクトの課題 ①

    理想的なシステムのカタチに合わせた機能別チームを構築し、 ② それらのチームが自チームの機能に手を加える 認証チーム 認証サービス チャットチーム チャットサービス 決済チーム 決済サービス チームは自分たちのサービスを 責任を持って開発する 機能を独立したサービスに 分割/連携させてChatworkを構成する
  5. 現在行っている組織の変革 12 網羅的に仕様把握 している人の不足 プロジェクトごとの 関係性構築 フィーチャー チーム 【前提】 チームは解散しない

    ① 『人』ではなく『チーム』で 詳細な仕様を把握している 知識の属人化 ② チームメンバーの 関係性が継続される 現在感じている課題 理想の状態 有識者不足の解消 組織とプロダクトの課題 チームビルディング の必要性を最小化
  6. 現在行っているプロダクトの変革 13 網羅的に仕様把握 している人の不足 積み上がった 技術負債 システムの再構築 ① 自チームの扱うサービスの 詳細な仕様を把握している

    ② 技術負債の返却 現在感じている課題 理想の状態 チーム結成序盤はチームに知識が無いので、 業務仕様に精通した人にもチームに加入してもらう 現在、対象機能のマイグレーション中 現在行っている開発は、ビッグバンリリースせざるを得ない事情があるため、 以降の話は、それを前提としてお聞きください。 フィーチャーチームごとに サービスを構築 組織とプロダクトの課題
  7. マイグレーション開発において生じる不確実性 20 マイグレーション開発の難しさ ※ ケースバイケースなので一概には言えません 現行仕様を踏襲したいのに、 踏襲したい仕様がインフラの制約で実現できない... 想定していたよりも開発の進行が良くない! これじゃあリリース予定に間に合わない!!! •

    新しい環境で現行仕様を可能な限り維持するための試行錯誤 ◦ 『現行仕様を維持しなければならない』という縛りが発生することも • いかなる開発でも切り離すことのできないスケジュール不安 →開発では常に方法不確実性が発生する
  8. 21 • マイグレーション開発でも不確実なことは色々ある • 不確実のことが多い = 難しい • つまり、マイグレーション開発も難しい •

    難しいことを行うのは不安なので、工夫を持って立ち向かいたい マイグレーション開発の難しさ マイグレーション以外の開発ももちろん難しいので、そもそもシステム開発というモノ自体がむずかしい...
  9. 22 マイグレーション開発において生じる不確実性 これらの不確実性に起因する不安に向き合うためのフレームワークとしてスクラム • 方法不確実性に対する思考錯誤のサイクルを細かく回す ◦ 不安を細分化して、スプリントごとにプランニングする ◦ デイリースクラムで日々の軌道修正を行う •

    振る舞いが変わる場合は、細かいサイクルで会話を行い通信不確実性を解消する ◦ スプリントレビューの活用 • チーム内のコミュニケーションミス(=通信不確実性)を小さくして、開発体験を向上する ◦ スプリントレトロスペクティブの実施 • これらを通して、開発完了時期に対する不安(=方法不確実性)を小さくしていく ◦ 参考:アジャイル開発におけるスケジュールを継続的に見直す マイグレーション開発の難しさ ※ 互換性が担保されている場合など、不確実性が小さい場合はもう少し異なるアプローチもあるかもしれません
  10. 23 マイグレーション開発において生じる不確実性 これらの不確実性に起因する不安に向き合うためのフレームワークとしてスクラム • 方法不確実性に対する思考錯誤のサイクルを細かく回す ◦ 不安を細分化して、スプリントごとにプランニングする ◦ デイリースクラムで日々の軌道修正を行う •

    振る舞いが変わる場合は、細かいサイクルで会話を行い通信不確実性を解消する ◦ スプリントレビューの活用 • チーム内のコミュニケーションミス(=通信不確実性)を小さくして、開発体験を向上する ◦ スプリントレトロスペクティブの実施 • これらを通して、開発完了時期に対する不安(=方法不確実性)を小さくしていく ◦ 参考:アジャイル開発におけるスケジュールを継続的に見直す マイグレーション開発の難しさ ※ 互換性が担保されている場合など、不確実性が小さい場合はもう少し異なるアプローチもあるかもしれません
  11. 24 マイグレーション開発において生じる不確実性 これらの不確実性に起因する不安に向き合うためのフレームワークとしてスクラム • 方法不確実性に対する思考錯誤のサイクルを細かく回す ◦ 不安を細分化して、スプリントごとにプランニングする ◦ デイリースクラムで日々の軌道修正を行う •

    振る舞いが変わる場合は、細かいサイクルで会話を行い通信不確実性を解消する ◦ スプリントレビューの活用 • チーム内のコミュニケーションミス(=通信不確実性)を小さくして、開発体験を向上する ◦ スプリントレトロスペクティブの実施 • これらを通して、開発完了時期に対する不安(=方法不確実性)を小さくしていく ◦ 参考:アジャイル開発におけるスケジュールを継続的に見直す マイグレーション開発の難しさ ※ 互換性が担保されている場合など、不確実性が小さい場合はもう少し異なるアプローチもあるかもしれません
  12. 25 マイグレーション開発において生じる不確実性 これらの不確実性に起因する不安に向き合うためのフレームワークとしてスクラム • 方法不確実性に対する思考錯誤のサイクルを細かく回す ◦ 不安を細分化して、スプリントごとにプランニングする ◦ デイリースクラムで日々の軌道修正を行う •

    振る舞いが変わる場合は、細かいサイクルで会話を行い通信不確実性を解消する ◦ スプリントレビューの活用 • チーム内のコミュニケーションミス(=通信不確実性)を小さくして、開発体験を向上する ◦ スプリントレトロスペクティブの実施 • これらを通して、開発完了時期に対する不安(=方法不確実性)を小さくしていく ◦ 弊社ブログ:アジャイル開発におけるスケジュールを継続的に見直す マイグレーション開発の難しさ ※ 互換性が担保されている場合など、不確実性が小さい場合はもう少し異なるアプローチもあるかもしれません
  13. 逆コンウェイの法則を利用して理想的なプロダクト構成へ 27 組織変革期におけるコミュニケーション ① 理想的なシステムのカタチに合わせた機能別チームを構築し、 ② それらのチームが自チームの機能に手を加える 認証チーム 認証サービス チャットチーム

    チャットサービス 決済チーム 決済サービス チームは自分たちのサービスを 責任を持って開発する 再掲 現在は変革の過渡期にある 機能を独立したサービスに 分割/連携させてChatworkを構成する
  14. 現在の私たちを取り巻く人たち... 28 私たちのチーム (フィーチャーチーム) プロジェクトチーム PO 職能別チーム (Scala部、PHP部、モバイル部、などなど) Devメンバー PdM

    現行システムのことは職能別チームが詳しい マイグレーションによる機能変更が発生する場合はPdM判断が必要 変革の過渡期にあるので、フィーチャーチーム以外にも色々な人物/チームが存在 プロジェクトメンバーは 職能別チームから招集される PjM プロジェクト内で、 マイグレーション中の機能に 手が入る 組織変革期におけるコミュニケーション
  15. 現在の私たちを取り巻く人たち... 29 私たちのチーム (フィーチャーチーム) プロジェクトチーム PO 職能別チーム (Scala部、PHP部、モバイル部、などなど) Devメンバー PdM

    そこの仕様のことなら 聞いてくれたらすぐ答えれたのに... え? そんな機能変更が発生するの?その変更内容はマズいよ... コミュニケーションを疎かにすると... PjM フィーチャーチームの 成果物をリリースする時に 盛大に発生するデグレード 組織変革期におけるコミュニケーション
  16. PdM(プロダクトマネージャー)の担う責務: • プロダクトビジョンの明確化 • プロダクト課題の整理とソリューションの深堀り • プロダクト戦略に対する意思決定 • などなど PO(プロダクトオーナー)の担う責務:

    • プロダクトビジョンの実現 • 関係者(Devチーム、PdMなど)とのコラボレーション ◦ スクラムイベント等 • などなど 37 ビッグバンリリースが前提でなければ 責務を果たす余地はありそうなんだけど。。。 マイグレーションでは要求/仕様は原則変化しない。 そのため、この責務を果たせる要素が少ない。 組織変革期におけるコミュニケーション
  17. PdM(プロダクトマネージャー)の担う責務: • プロダクトビジョンの明確化 • プロダクト課題の整理とソリューションの深堀り • プロダクト戦略に対する意思決定 • などなど PO(プロダクトオーナー)の担う責務:

    • プロダクトビジョンの実現 • 関係者(Devチーム、PdMなど)とのコラボレーション ◦ スクラムイベント等 • などなど 38 こちらはマイグレーション時にも発生する。 組織変革期におけるコミュニケーション