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

大規模なアジャイル開発の現場と技術負債 / Technical Debt

大規模なアジャイル開発の現場と技術負債 / Technical Debt

yoshitaka KOITABASHI

March 22, 2024
Tweet

More Decks by yoshitaka KOITABASHI

Other Decks in Technology

Transcript

  1. 1 KDDI Agile Development Center Corporation ⾃⼰紹介 経歴 ・⼤規模アジャイルチームの技術コンサル /

    開発⽀援 ・社内新規事業⽴ち上げ ・コミュニティ活動の推進や OSS 活動の推進 ・海外スタートアップ: MomentoにてCommunity Advocateとして活動 資格・ポートフォリオ・参加コミュニティ YOSHITAKA KOITABASHI ⼩板橋 由誉 [資格・ポートフォリオ] aws solution architect professional 電⼦情報通信学会情報ネットワーク研究会 第5回情報ネットワーク若⼿研究奨励賞受賞 [コミュニティ] Jaws-ug コンテナ⽀部 X(Twitter) / Qiita/ Zenn: Yoshii0110 GitHub: Yoshiitaka
  2. 3 KDDI Agile Development Center Corporation アジェンダ • 技術負債とは︖ •

    とある現場の話 • なぜこんなことになってしまったのか • 改善するためにやったこと • 懺悔タイム • 技術負債が解消されるということは︖ • 継続的な改善
  3. 6 KDDI Agile Development Center Corporation 時間経過と共に変化した最適化 ソフトウェア開発は変化する ◦ ⼈の⼊れ替わり

    ◦ ビジネスモデル, 業界, 顧客が求めるもの ◦ 技術 ◦ エンジニアの思想 https://speakerdeck.com/toricls/the-debt 結果、犠牲になったものは︖ 継続的な開発における⽣産性
  4. 8 KDDI Agile Development Center Corporation 神からの⼀声 今この技術、 流⾏ってるから使って︖ リリース⽇は厳守したいし、

    もっと早く機能追加して︖ ⼈たらなさそうだから 増員しといたよ 技術負債︖ リファクタリング︖ 何それ美味しいの︖ DDD︖ 今僕らのフェーズでは 早いからできないよ
  5. 10 KDDI Agile Development Center Corporation 意識的/無⾃覚 • 意識的 ◦

    ある時点で最適と判断し、機能を削ったり品質を落とすこと ◦ 設計に割く時間がなく、過去にやったことがある⼿法で対応 • 無⾃覚 ◦ 負債を負っている⾃覚がない ◦ 技術⼒/設計⼒がない ◦ 怠慢
  6. 13 KDDI Agile Development Center Corporation エンジニアキャリアの中で見たとある現場での話 • よくある3層(フロント, バックエンド,

    DB)の構成のWebサービス • エンジニアの総勢50名以上 • AWSで構成。神からK8sを使って欲しいという要望でEKSを使⽤ • マイクロサービスは崩壊。複数サービスが動くが、それらが全て 単独のクラスターで運⽤ • インフラとアプリ開発は完全にチームが分断され、IAMにより ReadOnlyの権限のみアプリチームは持っている
  7. 16 KDDI Agile Development Center Corporation なぜこんなことになってしまったのか︖ • 技術の選定、開発サイクルに関する ”意思決定権がチームにない”

    • 神を騙す者によるパワーワードに引きづられ “無⾃覚”なまま開発が進んでしまっていること • 意思決定層を納得させることができなかった • チームが当たり前と思っていたことが実は、 当たり前ではなかったこと
  8. 24 KDDI Agile Development Center Corporation 改善するためにやったこと① • 本プロジェクト内における重要⼈物へのヒアリング ◦

    インフラを守る⻑⽼ ◦ 意思決定権持つ⻑⽼ ◦ エンジニアチームのリーダ的⻑⽼、SM、PO) • AWSリソースの確認 • コードの読み込み • 開発サイクルの中で感じるツラミの解き明かし • etc
  9. 27 KDDI Agile Development Center Corporation 改善するためにやったこと③ ⼤きな箇所からの改善ではなく、⼩さな改善をバックログ化 ◦ 例えば、ローカル開発環境の整備。

    VS CodeにおけるDevcontainerの整備と展開 ◦ Mockサーバの再起動を⾃動化 https://qiita.com/yoshii0110/items/c480e98cfe981e36dd56
  10. 30 KDDI Agile Development Center Corporation 懺悔タイム 懺悔1: 返済すべき負債を絞るべきだったこと 懺悔2:

    改善後、効果があったのかなかったのかを 評価しなかったこと 懺悔3: 新規機能開発を⽌めると意思決定層へ判断させるだけの 説得ができなかったこと 懺悔4: 意思決定層全員が理解するまで繰り返し、 説明を続けられなかったこと 懺悔5: 我々が介⼊した時点で負債を返済するプロジェクト化が 必要だったことに気づいたのが遅すぎたこと
  11. 37 KDDI Agile Development Center Corporation ADRの作成 ADR - Architecture

    Decision Record アーキテクチャに関わる ドキュメントによる決定記録 https://qiita.com/e99h2121/items/f508ef4c9743b8fc9f5b