計測による継続的なCI/CDの改善
by
SansanTech
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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. 請求書受領から、⽉次決算を加速する インボイス管理サービス