計測による継続的なCI/CDの改善
by
SansanTech
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
計測による継続的なCI/CDの改善 〜GitHub Actions OpenTelemetryを活⽤した効果測定〜 Sansan株式会社 上司陽平(じょーし)
Slide 2
Slide 2 text
2 © Sansan, Inc. ⾃⼰紹介 じょーし Sansan株式会社 @paper2parasol - 請求書管理サービス「Bill One」のソフトウェア エンジニア兼SRE - 負荷試験による性能改善、IaC化と⽂化醸成、 機能開発などを担当 - 有志メンバによるCI/CD改善チームを運営し、 ⽇々の開発者体験の向上に取り組む - GitHub Actionsの実⾏時間を可視化するOSS 「GitHub Actions OpenTelemetry」を個⼈開発 - 好きなものはラーメンとCloud Run
Slide 3
Slide 3 text
3 © Sansan, Inc. © Sansan, Inc.
Slide 4
Slide 4 text
本⽇のテーマ CI/CDを計測し、 継続的な改善や効果測定に活⽤しよう
Slide 5
Slide 5 text
5 © Sansan, Inc. アジェンダ CI/CDのオブザーバビリティ CI/CD改善の取り組み GitHub Actions OpenTelemetry 活⽤事例
Slide 6
Slide 6 text
CI/CDのオブザーバビリティ
Slide 7
Slide 7 text
CI/CDの改善していますか??
Slide 8
Slide 8 text
CI/CDの実⾏時間、 計測していますか??
Slide 9
Slide 9 text
改善と効果測定はセット
Slide 10
Slide 10 text
継続的な測定と改善のループが重要
Slide 11
Slide 11 text
CI/CDもオブザーバビリティが重要 システムがある程度複雑になると、CI/CDパイプライン で何が起こっているかを理解するために、オブザーバ ビリティが不可⽋な、時には必須のデバッグツールに なりえます。 引⽤:オブザーバビリティ・エンジニアリング Charity Majors, Liz Fong-Jones, and George Miranda
Slide 12
Slide 12 text
CI/CD改善の取り組み
Slide 13
Slide 13 text
13 © Sansan, Inc. ギルド - 社内の特定分野の課題を解決する有志メ ンバの集まりをギルドとよんでいる - その分野の知⾒を深めることや、横のつ ながり、学びの⽂化醸成が⽬的 - 定期的にアウトプットを実施 (成果発表 会、ギルドLT会など)
Slide 14
Slide 14 text
14 © Sansan, Inc. 取り組み例 - Gradleリモートキャッシュ活⽤によるリリース時間短縮 - Migrationに伴う不要なダウンロード削減によるリリース時間短縮 - CIプラットフォームの移⾏(Google Cloud Build → GitHub Actions) - Slackでマージした開発者にメンションでデプロイ通知 - 放置プルリクエストを⾃動でクローズする...etc CI/CDギルドで 様々なCI/CDの改善に取り組んでいる
Slide 15
Slide 15 text
15 © Sansan, Inc. - GitHub ActionsとCloud Buildを 併⽤ - Monorepo構成 - Reusable Workflowでマイクロサ ービスごとに同様のジョブを実⾏ Bill OneのCI/CD Cloud Build Bill One CI/CDフローのサマリ
Slide 16
Slide 16 text
16 © Sansan, Inc. GitHub Actionsの⽤語説明 name: workflow-name on: [push] jobs: job-name: runs-on: ubuntu-latest steps: - run: command Workflow Job Step GitHub Actionsのコード例
Slide 17
Slide 17 text
17 © Sansan, Inc. ワークフローの変更による影響を分析しづらい GitHub Actionsにおける課題 ① Actions Performance Metrics - 各ワークフローとジョブの失敗率 や平均実⾏時間を参照可能 - 改善による変化を確認しづらい (表⽰される⽇付範囲を変更し、 平均値で⽐較することは可能) - パーセンタイル値などの統計指標 は利⽤できない
Slide 18
Slide 18 text
18 © Sansan, Inc. CIの実⾏情報が網羅的に収集されるので分析⽤途では最強 解決策:CIAnalyzer - 実⾏結果をBigQueryに保存し、 Looker Studioで可視化 - セットアップにGoogle Cloudの 基礎知識が必要 ダッシュボードサンプル https://github.com/Kesin11/CIAnalyzer より引⽤
Slide 19
Slide 19 text
19 © Sansan, Inc. 各ステップの実⾏時間を可視化する⽅法が提供されていない GitHub Actionsにおける課題 ② GitHub Actions Summary - ジョブの実⾏時間や依存関係など の概要はSummaryで確認可能 - ジョブ内の各ステップの実⾏時間 やエラー発⽣箇所などはログの確 認が必要
Slide 20
Slide 20 text
20 © Sansan, Inc. ステップを含めた実⾏時間を可視化し、サマリーページに追加 解決策:Actions Timeline - トレースでステップを含めた実⾏ 結果を可視化 - 簡単に追加できて、GitHubで完結 するので最強 - トレースだけみたいならこれだけ でよい トレースのサンプル https://github.com/Kesin11/actions-timeline より引⽤
Slide 21
Slide 21 text
全部解決 🎉
Slide 22
Slide 22 text
22 © Sansan, Inc. - CIAnalyzerは分析⽤途で最強 だけどセットアップが⼤変... - BigQueryやLooker Studio初めて 使うので勉強は必要だった... - 使い慣れたオブザーバビリティ バックエンドで⼀緒に⾒たい... GitHub Actions OpenTelemetry開発の動機 OpenTelemetryを活⽤ できそう!! 利⽤する上で感じたペインを解決してみたくなった
Slide 23
Slide 23 text
GitHub Actions OpenTelemetry
Slide 24
Slide 24 text
24 © Sansan, Inc. 1. GitHub Actionsのワークフロー・ジョブ実⾏時間のメトリクスを収集 2. ワークフロー・ジョブ・ステップのトレースを収集 3. OpenTelemetry Protocol(OTLP)互換のバックエンドにデータを送信 4. 既存のワークフローに⼿を加えることなくテレメトリを収集 GitHub Actions OpenTelemetryの主な機能
Slide 25
Slide 25 text
25 © Sansan, Inc. ワークフローの変更による影響を分析しづらい (再掲) GitHub Actionsにおける課題 ① Actions Performance Metrics - 各ワークフローとジョブの失敗率 や平均実⾏時間を参照可能 - 改善による変化を確認しづらい (表⽰される⽇付範囲を変更し、 平均値で⽐較することは可能) - パーセンタイル値などの統計指標 は利⽤できない
Slide 26
Slide 26 text
26 © Sansan, Inc. ワークフロー・ジョブの実⾏時間メトリクスをOTLPで送信可能 解決策:GitHub Actions OpenTelemetry - OpenTelemetry Protocol(OTLP)対応の任 意のオブザーバビリティバックエンドに 送信可能 - 改善による変化をグラフで容易に確認可 能 - オブザーバビリティバックエンドが対応 する平均以外の統計値も利⽤可能 - ワークフロー名やジョブ名などの属性に よるグルーピングが可能 ダッシュボードサンプル(Cloud Monitoring)
Slide 27
Slide 27 text
27 © Sansan, Inc. 各ステップの実⾏時間を可視化する⽅法が提供されていない (再掲) GitHub Actionsにおける課題 ② GitHub Actions Summary - ジョブの実⾏時間や依存関係など の概要はSummaryで確認可能 - ジョブ内の各ステップの実⾏時間 やエラー発⽣箇所などはログの確 認が必要
Slide 28
Slide 28 text
28 © Sansan, Inc. 各ステップの実⾏時間やエラーが発⽣したステップを視覚的に確認できる 解決策:GitHub Actions OpenTelemetry - OpenTelemetry Protocol(OTLP) 対応の任意のオブザーバビリティ バックエンドに送信可能 ダッシュボードサンプル(Cloud Trace)
Slide 29
Slide 29 text
GitHub Actions OpenTelemetryの活⽤
Slide 30
Slide 30 text
30 © Sansan, Inc. - キャッシュが効かない場合があるため、実環境で効果があったことを 確認したい - 例えばキャッシュの有効期限を1週間としているため、キャッシュが ない場合もある - 各マイクロサービスごとでテスト時間が異なるため、マイクロサービス ごとに効果を測定したい Gradleリモートキャッシュ活⽤の効果測定
Slide 31
Slide 31 text
31 © Sansan, Inc. リリース時の平均テスト時間を約70%削減(17.5m → 5m) GitHub Actions OpenTelemetryによる計測結果 - 効果が⼤きいマイクロサービスでは開発 者が実感できるレベルで短縮できた - テスト時間が短いサービスでも約10%の 削減効果は得られた(4.2m -> 3.8m) 効果が⼤きかったマイクロサービスの リリース時のテスト時間推移
Slide 32
Slide 32 text
32 © Sansan, Inc. 本⽇のテーマ CI/CDを計測し、継続的な改善や効果測定に活⽤しよう - GitHub Actionsの提供する機能では改善効果を計測しづらい - 効果測定にGitHub Actions OpenTelemetryを活⽤した - 有志メンバでBill OneのCI/CDを改善し、リリース時の平均テスト時間を 最⼤約70%削減できた まとめ
Slide 33
Slide 33 text
ご清聴ありがとうございました
Slide 34
Slide 34 text
34 © Sansan, Inc. © Sansan, Inc. 請求書受領から、⽉次決算を加速する インボイス管理サービス