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
バグの分析から見えた巨大な技術的負債を生まないためにできること / Bug Analysis ...
Search
Taichi Oshiumi
November 21, 2023
1
4.9k
バグの分析から見えた巨大な技術的負債を生まないためにできること / Bug Analysis tells how to avoid tech debt
2023/11/21 「技術的負債に向き合う Online Conference / LT 選手権」登壇資料
Taichi Oshiumi
November 21, 2023
Tweet
Share
More Decks by Taichi Oshiumi
See All by Taichi Oshiumi
Omotesando.rb #93 Wantedly Sponsor LT
t_osh
0
92
Wantedly が RubyKaigi で技術発信を大量にする理由 / Why Wantedly shares a lot of technical knowledge at RubyKaigi
t_osh
0
350
運用の負担を減らすログ送信システムの設計
t_osh
0
70
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
427
64k
Unsuck your backbone
ammeep
669
57k
Designing for humans not robots
tammielis
250
25k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
830
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
50k
GitHub's CSS Performance
jonrohan
1031
460k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Transcript
© 2023 Wantedly, Inc. PUBLIC バグの分析から見えた 巨大な技術的負債を 生まないためにできること 技術的負債に向き合う Online
Conference / LT 2023/11/21 - Taichi Oshiumi (@t_o_sh) / Wantedly, Inc.
© 2023 Wantedly, Inc. PUBLIC 今日話すこと 1年で直したバグを分析して どんな部分が負債化するかを調べたので知見を共有
© 2023 Wantedly, Inc. PUBLIC 前提: Wantedly の特徴 • バックエンドはだいたい
Ruby • モノリシックな Rails アプリから Ruby の gRPC サーバが主流に • サービス開始から10年以上が経過 詳しくは https://docs.wantedly.dev/introduction/technical-overview
© 2023 Wantedly, Inc. PUBLIC 前提: ウォンテッドリー vs 技術的負債 負債返済日
• 1ヶ月に1日全エンジニアで技術的負債の返済タスクを行う 技術領域の横断組織 • 最大 20% の時間を使って大きな負債を組織的に解決する
© 2023 Wantedly, Inc. PUBLIC 前提: ウォンテッドリー vs 技術的負債 負債返済日
• 1ヶ月に1日全エンジニアで技術的負債の返済タスクを行う 技術領域の横断組織 • 最大 20% の時間を使って大きな負債を組織的に解決する これだけでは足りなかった → プロダクトの品質のために専門チームを設立
© 2023 Wantedly, Inc. PUBLIC 前提: Quality Control Squad の役割
1. 老朽化したアーキテクチャを刷新する 2. 見つかったバグを優先度高い方から潰す 3. 品質を高める文化を作る
© 2023 Wantedly, Inc. PUBLIC 前提: Quality Control Squad の役割
1. 老朽化したアーキテクチャを刷新する 2. 見つかったバグを優先度高い方から潰す (今日の話) 3. 品質を高める文化を作る
© 2023 Wantedly, Inc. PUBLIC 本題: 対応したバグを分析して負債の発生箇所を特定する バグはどこから生まれる?
© 2023 Wantedly, Inc. PUBLIC 本題: 対応したバグを分析して負債の発生箇所を特定する • サンプル数: 86
◦ 優先度の高い Issue のみを集計対象にした • Issue が作成されてからクローズするまでのリードタイムを計測 • App/System/Data の 3つで分類 ◦ System: バックエンドのコード修正で直るもの ◦ App: フロントエンドのコード修正で直るもの ◦ Data: データ修正が必要なもの ▪ RDB のデータ修正、ログのデータ修正等
© 2023 Wantedly, Inc. PUBLIC 本題: 分析結果 days ヒゲの長さは (Q3-Q1)*1.5
を上限とし、その範囲外を外れ値とした。
© 2023 Wantedly, Inc. PUBLIC なぜデータ修正系のバグはリードタイムの分散が大きくなるのか • 参照の数によってかかる時間が大きく変わる ◦ 参照が多いデータは重要度が高いが、網羅的に調べるのが難しく時間がかか
る ◦ 逆に言うと参照が限定的なデータの修正だと一瞬で終わる • データが壊れていることに対してのモニタリングが十分でなく発見が 遅れる • ユーザーへのコミュニケーションのリードタイムがかかる
© 2023 Wantedly, Inc. PUBLIC 巨大な技術的負債を生まないためにできること • 早期に発見、対応すること ◦ 負債を得て一次的な速度を得ることも状況によってはあるが、
データの負債は高利子であることを忘れない ◦ モニタリングできる仕組みを作る • 無駄な負債を生まない ◦ 負債である認識を持って生んだ負債は悪化したときに気付きやすいが、負債 の認識がないもの、途中で負債化したものは気付きにくい ◦ データ設計、ログ設計の重要性
© 2023 Wantedly, Inc. PUBLIC Advent Calendar で今日の発表の詳細版を書くので興味のある人はぜひ! https://qiita.com/advent-calendar/2023/wantedly
© 2023 Wantedly, Inc. PUBLIC We are hiring! https://www.wantedly.com/projects/549179