Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
大規模なアジャイル開発の現場と技術負債 / Technical Debt
Search
yoshitaka KOITABASHI
March 22, 2024
Technology
5.8k
23
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
大規模なアジャイル開発の現場と技術負債 / Technical Debt
yoshitaka KOITABASHI
March 22, 2024
More Decks by yoshitaka KOITABASHI
See All by yoshitaka KOITABASHI
変化と挑戦:NoSQLとNewSQL Serverless Databaseの技術革新とマルチテナンシーの秘密
yoshiitaka
23
6.5k
コードファーストの考え方。 Amplify Gen2から学ぶAWS次世代のWeb開発体験
yoshiitaka
3
2.1k
Re:cap container Services
yoshiitaka
2
610
The_Frugal_Architectの観点から眺めるServerless.pdf
yoshiitaka
1
180
re:Inventに行くと何を得られ、なぜ人はラスベガスに行くのか
yoshiitaka
0
160
コンテナ支部recapをrecapしよう_気になったコンテナの周りのアップデートを紹介.pdf
yoshiitaka
1
1.1k
AWS re:Invent 2023の期間中に出たコンテナアップデート集
yoshiitaka
4
820
stripeを組み合わせたサーバレスアーキテクチャとシードのスタートアップ ビジネスをグロースするためにやったこと
yoshiitaka
3
620
アジャイル開発と時代の流れに伴うサーバレスアーキテクチャの変化
yoshiitaka
8
5.7k
Other Decks in Technology
See All in Technology
Djangoユーザが知っ得なPostgreSQL機能 - 設計の選択肢を増やす / Djang-use-PostgreSQL
soudai
PRO
0
180
さきさん文庫の書籍ができるまで
sakiengineer
0
370
正解のないAIプロダクトをどう導くか?dodaが挑む、ユーザーの『本音』を構造化する評価設計と検証のリアル
techtekt
PRO
0
180
Sony_KMP_Journey_KotlinConf2026
sony
2
210
「嘘をつくテスト」の失敗例から学ぶ 良いテストコード #frontend_phpcon_do
asumikam
0
480
EventBridge Connection
_kensh
4
550
はじめてのDatadog
kairim0
0
280
AI と創る新たな世界 / A New World Created with AI
ks91
PRO
0
110
ChatworkとBPaaS 異なる特性で学んだAI機能開発の ベストプラクティス
kubell_hr
2
2.8k
Platform Engineering as a Product: Criteria for Improvement and Multi-Tenant Design
kumorn5s
0
510
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
3
500
PHP と TypeScript の型システム比較:AI 時代の「型」は誰のためにあるのか? #frontend_phpcon_do / frontend_phpcon_do_2026
shogogg
1
250
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
520
From π to Pie charts
rasagy
0
200
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
220
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
830
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Mind Mapping
helmedeiros
PRO
1
230
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
200
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
320
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
280
Discover your Explorer Soul
emna__ayadi
2
1.1k
Transcript
⼤規模なアジャイル開発の現場と 技術負債 KDDIアジャイル開発センター株式会社
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 KDDI Agile Development Center Corporation とある現場で⾒た技術負債となぜ技術負債が⽣まれ 改善できなかったのかを話します。
3 KDDI Agile Development Center Corporation アジェンダ • 技術負債とは︖ •
とある現場の話 • なぜこんなことになってしまったのか • 改善するためにやったこと • 懺悔タイム • 技術負債が解消されるということは︖ • 継続的な改善
4 KDDI Agile Development Center Corporation 認識が違う技術負債 リリース優先で雑なコードを書き、アーキテクチャの設計をすること あとでやろうとほったらかされているもの 古くなってしまった技術(⾔語やインフラ、フレームワーク)
https://t-wada.hatenablog.jp/entry/ward-explains-debt-metaphor
5 KDDI Agile Development Center Corporation 技術負債の柱 1.時間経過と共に変化した最適化 2.時間/予算/スコープそして犠牲になった品質 3.天からの⼀声
4.意図的/無⾃覚
6 KDDI Agile Development Center Corporation 時間経過と共に変化した最適化 ソフトウェア開発は変化する ◦ ⼈の⼊れ替わり
◦ ビジネスモデル, 業界, 顧客が求めるもの ◦ 技術 ◦ エンジニアの思想 https://speakerdeck.com/toricls/the-debt 結果、犠牲になったものは︖ 継続的な開発における⽣産性
7 KDDI Agile Development Center Corporation 時間/予算/スコープそして犠牲になった品質 時間/予算/スコープ/品質を考慮した時に 何に優先度をつけますか︖ ⾮機能要件、特に品質は犠牲になりがち
https://www.ipa.go.jp/publish/qv6pgp0000000wkj-att/000055008.pdf
8 KDDI Agile Development Center Corporation 神からの⼀声 今この技術、 流⾏ってるから使って︖ リリース⽇は厳守したいし、
もっと早く機能追加して︖ ⼈たらなさそうだから 増員しといたよ 技術負債︖ リファクタリング︖ 何それ美味しいの︖ DDD︖ 今僕らのフェーズでは 早いからできないよ
9 KDDI Agile Development Center Corporation
10 KDDI Agile Development Center Corporation 意識的/無⾃覚 • 意識的 ◦
ある時点で最適と判断し、機能を削ったり品質を落とすこと ◦ 設計に割く時間がなく、過去にやったことがある⼿法で対応 • 無⾃覚 ◦ 負債を負っている⾃覚がない ◦ 技術⼒/設計⼒がない ◦ 怠慢
11 KDDI Agile Development Center Corporation とある現場であった話 エンジニアキャリアの中で見た とある現場での話
12 KDDI Agile Development Center Corporation エンジニアキャリアの中で見たとある現場での話
13 KDDI Agile Development Center Corporation エンジニアキャリアの中で見たとある現場での話 • よくある3層(フロント, バックエンド,
DB)の構成のWebサービス • エンジニアの総勢50名以上 • AWSで構成。神からK8sを使って欲しいという要望でEKSを使⽤ • マイクロサービスは崩壊。複数サービスが動くが、それらが全て 単独のクラスターで運⽤ • インフラとアプリ開発は完全にチームが分断され、IAMにより ReadOnlyの権限のみアプリチームは持っている
14 KDDI Agile Development Center Corporation なぜこんなことになってしまったのか︖
15 KDDI Agile Development Center Corporation 技術負債の柱 1.時間経過と共に変化した最適化 2.時間/予算/スコープそして犠牲になった品質 3.天からの⼀声
4.意図的/無⾃覚
16 KDDI Agile Development Center Corporation なぜこんなことになってしまったのか︖ • 技術の選定、開発サイクルに関する ”意思決定権がチームにない”
• 神を騙す者によるパワーワードに引きづられ “無⾃覚”なまま開発が進んでしまっていること • 意思決定層を納得させることができなかった • チームが当たり前と思っていたことが実は、 当たり前ではなかったこと
17 KDDI Agile Development Center Corporation 理想は、どうあるべきだった︖
18 KDDI Agile Development Center Corporation マイクロサービスとは
19 KDDI Agile Development Center Corporation 理想のマイクロサービス
20 KDDI Agile Development Center Corporation マイクロサービスに伴う技術選定は︖
21 KDDI Agile Development Center Corporation チーム、サービス分割については︖
22 KDDI Agile Development Center Corporation 具体的なアクション
23 KDDI Agile Development Center Corporation 実際に改善するためにやったこと
24 KDDI Agile Development Center Corporation 改善するためにやったこと① • 本プロジェクト内における重要⼈物へのヒアリング ◦
インフラを守る⻑⽼ ◦ 意思決定権持つ⻑⽼ ◦ エンジニアチームのリーダ的⻑⽼、SM、PO) • AWSリソースの確認 • コードの読み込み • 開発サイクルの中で感じるツラミの解き明かし • etc
25 KDDI Agile Development Center Corporation 掘り下げてわかったこと 認識は⼀緒なのに、 要因の理解を互いができていない
26 KDDI Agile Development Center Corporation 改善するためにやったこと② • マイクロサービスとはどんなもので、今の体制の⽋点や アーキテクチャによる⽣産性低下についてを意思決定層へ説明
• イベントストーミングの実施を⼀緒にやろうと提案
27 KDDI Agile Development Center Corporation 改善するためにやったこと③ ⼤きな箇所からの改善ではなく、⼩さな改善をバックログ化 ◦ 例えば、ローカル開発環境の整備。
VS CodeにおけるDevcontainerの整備と展開 ◦ Mockサーバの再起動を⾃動化 https://qiita.com/yoshii0110/items/c480e98cfe981e36dd56
28 KDDI Agile Development Center Corporation 改善するためにやったこと④ • 社内のGitHubにコンテナ/K8sについてをまとめた資料をパブリックに公開 •
⼀回1時間くらいの勉強会を数回、社内向けに開催
29 KDDI Agile Development Center Corporation 懺悔タイム
30 KDDI Agile Development Center Corporation 懺悔タイム 懺悔1: 返済すべき負債を絞るべきだったこと 懺悔2:
改善後、効果があったのかなかったのかを 評価しなかったこと 懺悔3: 新規機能開発を⽌めると意思決定層へ判断させるだけの 説得ができなかったこと 懺悔4: 意思決定層全員が理解するまで繰り返し、 説明を続けられなかったこと 懺悔5: 我々が介⼊した時点で負債を返済するプロジェクト化が 必要だったことに気づいたのが遅すぎたこと
31 KDDI Agile Development Center Corporation 技術負債が解消されると 何が嬉しいのか︖
32 KDDI Agile Development Center Corporation 技術負債が解消されるとは ⾼い⽣産性を維持し続けることができること
33 KDDI Agile Development Center Corporation そもそも⽣産性とは︖ アウトプット量ではなく、質を含んだ価値 我々は、顧客が求めるもの、その結果として、 作ったソフトウェアを使う⼈間が便利になる/幸せになる
ものを作ることが本質 そのためのアジャイル開発であり、 スクラムなんじゃないのか︖
34 KDDI Agile Development Center Corporation 継続的な改善⽅法 Tips
35 KDDI Agile Development Center Corporation 継続的な改善のためのTips 1.DesignDocsの作成 / ADRの作成
2.イベントストーミングの⾒直し 3.開発サイクルの変更
36 KDDI Agile Development Center Corporation DesignDocsの作成 https://qiita.com/yoshii0110/items/32f93e0c8d24cb3207f7 開発者がコーディングに着⼿する前にソフトウェアシステム または、アプリケーションの開発する⼈が作成するドキュメント
37 KDDI Agile Development Center Corporation ADRの作成 ADR - Architecture
Decision Record アーキテクチャに関わる ドキュメントによる決定記録 https://qiita.com/e99h2121/items/f508ef4c9743b8fc9f5b
38 KDDI Agile Development Center Corporation DesignDocs/ADRを作成することの効果 ⼈が⼊れ替わったり、過去に下したアーキテクチャの 判断を思い出す/確認することを補助する =>
改善する際の助けとなる
39 KDDI Agile Development Center Corporation イベントストーミングの⾒直し ビジネスモデルは時間と共に常に変化するもの 何が変化し、システムをどう改善しないといけないのかを ⼿探りで⾏うのではなく・・・
常にドメインを意識し、改善することで最適化される
40 KDDI Agile Development Center Corporation 開発サイクルの変更 もし今の開発サイクルの中で継続的改善ができないのであれば、 いっそのこと開発サイクルごと変えてみるのもありかもしれない。
41 KDDI Agile Development Center Corporation フラクタルスプリント スクラムでやっていた場合、 フラクタルスプリントという1サイクルを切り分けた考え⽅もある。 これにより、より密にPOや意思決定層と会話ができ、ビジネスモデ
ルの変化や開発の⽅向転換が効きやすくなる https://kyon-mm.hatenablog.com/entry/2020/09/21/115958 https://qiita.com/viva_tweet_x/items/3b796be727ad3bd3dfc0
42 KDDI Agile Development Center Corporation 採⽤募集中︕ エンジニア・デザイナー
Be a Change Leader. アジャイルに⼒を与え 共に成⻑し続ける社会を創る