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
5k
バグの分析から見えた巨大な技術的負債を生まないためにできること / 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
93
Wantedly が RubyKaigi で技術発信を大量にする理由 / Why Wantedly shares a lot of technical knowledge at RubyKaigi
t_osh
0
380
運用の負担を減らすログ送信システムの設計
t_osh
0
77
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
22
1.4k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
260
Building Adaptive Systems
keathley
40
2.4k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
Scaling GitHub
holman
459
140k
Speed Design
sergeychernyshev
28
820
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Done Done
chrislema
182
16k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
Code Review Best Practice
trishagee
67
18k
Building an army of robots
kneath
303
45k
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