Slide 1

Slide 1 text

20250212 taumu CI改善もDatadogとともに

Slide 2

Slide 2 text

SODA Inc. Backend Engineer taumu

Slide 3

Slide 3 text

鑑定付き 利用者数 No.1 スニーカー・トレカ フリマアプリ

Slide 4

Slide 4 text

󰳕 󰳕
 󰳕 󰳕 SRE SWE SODAの技術組織と Datadog 権限はほぼ全て解放されており誰でも利用できる Application Securityで 不正アクセスの自動ブロッ クをしたい APMで分散トレーシングし たい

Slide 5

Slide 5 text

SODA Inc. Backend Engineer Datadogの好きなところ: なんでも監視できる (複数種類の監視ツール使ったり チームごとにサイロ化したりしない) taumu

Slide 6

Slide 6 text

なんでも?

Slide 7

Slide 7 text

CI/CDも!

Slide 8

Slide 8 text

20250212 taumu CI改善もDatadogとともに

Slide 9

Slide 9 text

本発表について 背景:GitHub Actionsで実行されているCI/CDが遅い(ともに30分オーバー) CI = コミット毎に実行される自動テスト。マージには全件合格必須 CD: dev環境/本番環境へのデプロイ アクション:CI/CD実行時間短縮プロジェクトを立ち上げ様々な施策を実施 プロジェクトの詳細は以下の記事を参照ください エンジニアだけのスクラムチームでリファクタリングプロジェクトを回してみたらこうなった https://zenn.dev/team_soda/articles/65fe9ee39abb8b 結果:CI/CDともに15分前後にまで短縮できた 本発表は本プロジェクトへのDatadogによる貢献について話す

Slide 10

Slide 10 text

DatadogのCI Visibility機能 CI/CD実行状況の統計が見られる機能

Slide 11

Slide 11 text

DatadogのCI Visibility機能 CI/CD実行状況の統計が見られる機能

Slide 12

Slide 12 text

PDCAサイクル Plan: ボトルネックを見つける&施策を出す 1 Do: 施策を実行する 2 Check: 期待通り改善されたかをチェックする 3 Action: 採用する or 棄却する 4

Slide 13

Slide 13 text

Plan: ボトルネックを見つける&施策を出す 1

Slide 14

Slide 14 text

Plan: ボトルネックを見つける&施策を出す Toplistで ワークフローの ボトルネックを調べる ボトルネック (平均30分掛かっている) (1)ボトルネックのワークフローを見つける

Slide 15

Slide 15 text

Plan: ボトルネックを見つける&施策を出す ワークフローの詳細を開くとフ レームグラフが見られる クリティカルパスで 絞り込める (2)ボトルネックのジョブを見つける

Slide 16

Slide 16 text

Plan: ボトルネックを見つける&施策を出す クリティカルパスで 絞り込める ボトルネックになっているジョブに対して施策を考える (ジョブの実行順序の組み替えだけで10分以上短縮できた例もあり) (2)ボトルネックのジョブを見つける ワークフローの詳細を開くとフ レームグラフが見られる

Slide 17

Slide 17 text

PDCAサイクル Plan: ボトルネックを見つける&施策を出す 1 Do: 施策を実行する 2 Check: 期待通り改善されたかをチェックする 3 Action: 採用する or 棄却する 4

Slide 18

Slide 18 text

Do: 施策を実行する 2

Slide 19

Slide 19 text

Do: 施策を実行する GitHub Actionsのymlファイルを改修してリリースする

Slide 20

Slide 20 text

PDCAサイクル Plan: ボトルネックを見つける&施策を出す 1 Do: 施策を実行する 2 Check: 期待通り改善されたかをチェックする 3 Action: 採用する or 棄却する 4

Slide 21

Slide 21 text

Check: 期待通り改善されたかをチェックする 3

Slide 22

Slide 22 text

Check: 期待通り改善されたかをチェックする Timeseriesで時系列平均を表示 CI実行時間の削減を確認 リリース前後でCI実行時間が削減されているかチェック

Slide 23

Slide 23 text

PDCAサイクル Plan: ボトルネックを見つける&施策を出す 1 Do: 施策を実行する 2 Check: 期待通り改善されたかをチェックする 3 Action: 採用する or 棄却する 4

Slide 24

Slide 24 text

Action: 採用する or 棄却する 4

Slide 25

Slide 25 text

Action: 採用する or 棄却する 採用 棄却 実行時間削減を達成できたか Check Action 効果のあった施策だけを採用することは重要 (普段の機能開発もそうだが、特にCIワークフローファイルは表現力の限界から負債化しやすいため) →効果があるかないか正確に把握できることが重要 Datadogで施策に対する効果を正確に把握できるので ビジネス上の判断が正確に下せる

Slide 26

Slide 26 text

PDCAサイクル Plan: ボトルネックを見つける&施策を出す 1 Do: 施策を実行する 2 Check: 期待通り改善されたかをチェックする 3 Action: 採用する or 棄却する 4 1~4までやったら、また1に戻る→このループを繰り返す

Slide 27

Slide 27 text

結果 ボトルネックになっていた CIワークフロー(統合テスト) 2ヶ月掛けて26m→13.5m

Slide 28

Slide 28 text

● Runnerのスケールアップ ● ジョブ実行順序の組み替え ● ビルドをキャッシュさせる[1][2] ● ファイルの依存ツリーを作って編集したファイルに依存するテストだけ行う[1][3] 最後に:行った施策について 施策の検討に集中できるので、高難度な施策を実現するに至った [1] どうやるの?CICDの実行時間をグッと短縮した方法 https://zenn.dev/team_soda/articles/b10194a91dbd34 [2] Goのビルドキャッシュを使って CIを7分短縮した話 https://zenn.dev/team_soda/articles/b2ae7b683f3f15 [3] 部分的にGoのテスト速度向上 https://zenn.dev/team_soda/articles/3686c0162f27dc

Slide 29

Slide 29 text

まとめ DatadogのCI Visibilityを使うと ● CI実行に関する正確な統計情報が一目瞭然になる それにより ● CI実行時間のボトルネックを簡単に見つけることができる ● PDCAサイクルを回す形で継続的なCI改修ができる ● CIの改修に対する変化が明確になり、採用・棄却の正確な判断ができる ● それにより大胆なCI改修も入れやすくなる