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

急成長する大規模プロダクト開発のマネジメント課題とアプローチ / RAKUSTechCon20...

急成長する大規模プロダクト開発のマネジメント課題とアプローチ / RAKUSTechCon2024_Seisan

◆イベント名
RAKUS Tech Conference 2024
https://techcon.rakus.co.jp/2024/

◆発表タイトル
急成長する大規模プロダクト開発のマネジメント課題とアプローチ

◆登壇者
東京開発統括部 楽楽精算開発部 部長 髙橋康弘
楽楽精算開発部 開発1課 課長 小宮山和彦
楽楽精算開発部 開発1課 涌井友輔

Rakus_Dev

August 14, 2024
Tweet

More Decks by Rakus_Dev

Other Decks in Technology

Transcript

  1. 現在の課題 1. 組織課題 ・ マネジメント負荷の増大 ・ 開発効率の低下 2. 開発プロセス課題 ・

    サービス拡大とともに肥大化するコードと認知負荷 ・ 増える人員と分業化の進行 ・ 顧客視点の希薄化 3. 技術課題 ・ サービス成長によるインフラコストの増加 ・ 技術的負債(コード上の負債) 4
  2. ラクスの開発組織について 基本的にはプロダクトごとに分かれている → 楽楽精算 開発部 → 楽楽販売 開発部 → 楽楽明細

    開発部 → 楽楽請求 開発部 → 楽楽勤怠 開発部 プロダクトごとに開発組織が分かれている理由 それぞれのドメインにおける顧客の問題を素早く最適な方法で 解決することにフォーカスするため 最近の変化 ・ 楽楽クラウドシリーズ間の連携 ・ メインサービスから発展・派生したプロダクトの登場 5 楽楽明細から 楽楽勤怠か ら
  3. その他の横断的な開発組織 6 開発本部 東京開発統括部 楽楽精算開発部 フロントエンド 開発課 インフラ開発課 楽楽明細開発部 楽楽勤怠開発部

    製品管理課 (PDM) QA課 プロダクト デザイン課 開発推進部 インフラ開発部 徐々に役割を分離
  4. 次のトピック 1. 組織課題 ・ マネジメント負荷の増大 ・ 開発効率の低下 2. 開発プロセス課題 ・

    サービス拡大とともに肥大化するコードと認知負荷 ・ 増える人員と分業化の進行 ・ 顧客視点の希薄化 3. 技術課題 ・ サービス成長によるインフラコストの増加 ・ 技術的負債(コード上の負債) 8
  5. 開発プロセス課題:顧客視点の希薄化 希薄化の要因 役割分担が進んだ開発フローにより、開発効率は向上しました。 伴ってエンジニアの顧客視点が希薄化する問題が発生しています 20 要因 詳細 顧客課題の把握の分業化 エンジニアは設計や開発に専念し、顧客課題の把握は事業部門 やPdMが中心となった。

    問い合わせ対応のエスカレーション変更 以前はCSが1次受けし、エンジニアにエスカレーションしていた が、現在はQAがエスカレーション先となった。 仮説のモニタリングと検証の欠如 要求で立てた仮説が正しいかどうかをモニタリングし、リリース 後に検証するプロセスが不足している。
  6. 技術負債解消 ~ コード刷新 ~ リファクタリング方針 リファクタリング方針 • 厳密な三層アーキテクチャの適用 ◦ 処理をプレゼンテーション層、アプリケーション層、データ層に分離する

    • ドメインクラスの導入 ◦ データは適切な型と構造を持ったドメインクラスに入れる • ロジックの委譲 ◦ 共通ロジックはユースケースと独立したクラスに記述し、明示的に呼び出す 35
  7. 技術負債解消 ~ コード刷新 ~ リファクタリングの進め方 リファクタリングの進め方 • 対象のドメインの選定 ◦ ボリュームが極端に大きくない

    ◦ 変更頻度が高い • インテグレーションテストの実装 ◦ エンドポイント毎にテストコードを実装 • リファクタリングの実施 ◦ 品質はインテグレーションテストの結果で担保 36
  8. 技術負債解消 ~ インフラ刷新 ~ バッチ分離:採用技術 Apache Kafka × Debezium ×

    Spring によるメッセージキューイングシステム 41 Developer Experience Knowledge Base.「Apache Kafka」. https://developerexperience.io/articles/kafka,(参照2024-08-02)
  9. 技術負債解消 ~ インフラ刷新 ~ 42 メッセージキューイングシステム詳細 • Producer: Debezium ◦

    メッセージを送信する役割 ◦ DBのトランザクションのコミットログを監視 してKafkaにメッセージを送信する • Broker: Apache Kafka ◦ メッセージキューの管理 • Consumer: Spring ◦ メッセージを受信する役割 ◦ 受信したメッセージのバッチを実行する Developer Experience Knowledge Base.「Apache Kafka」. https://developerexperience.io/articles/kafka,(参照2024-08-02)