Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CircleCI ユーザーミートアップ

Avatar for Masayuki Mizuno Masayuki Mizuno
July 30, 2026
63

CircleCI ユーザーミートアップ

Avatar for Masayuki Mizuno

Masayuki Mizuno

July 30, 2026

More Decks by Masayuki Mizuno

Transcript

  1. CIコストの考え方 コストは長方形の面積の総和で表される 縦軸が resource class の時間単価で、横軸が実行時間 支払う面積 = マシン性能 ×

    実行時間 実際の CPU / メモリ使用量 マシン性能 (resource class) 3 xlarge medium 1 2 test-prepare rspec small asset-precompile 実行時間 → CI のコスト = ①+②+③ … 使用量の曲線を覆う長方形の “面積の総和” ©2026 Wantedly, Inc.
  2. コスト削減の二つの軸 中身の高速化と計算機性能削減の二軸 高速化(キャッシュ導入など) Before マシンスペックを下げる 横幅が縮む ↑ マシン性能 面積 100

    高さが下がる 面積 60 面積 50 実行時間 → 時間もコストも減る 縦と横は独立に効く。ただし高さを下げすぎると曲線を覆えず、横に伸びて面積が減らない ©2026 Wantedly, Inc. コストだけ減る
  3. 解決手段: ワークフロー分割 計算機性能を使っている部分を切り出す 計算機が遊んでいる時間を減らせる 支払う面積(長方形) 実際の使用量(曲線) 1 枚の長方形で覆う 切り直して覆う マシン性能

    / 使用量 マシン性能 / 使用量 無駄 = 面積 − 使用量 時間 ピークに合わせた高い長方形 → 面積(コスト)大 ©2026 Wantedly, Inc. 時間 同じ曲線を小さい面積で被覆 → コスト減
  4. ワークフロー分割の更なる効能: 所要時間の短縮 依存関係が無ければ並列に実行できる ワークフロー内の処理の依存関係に着目し、並列化できるなら分割のチャンス 支払う面積(マシン性能 × 実行時間) 実際の CPU 使用率

    Before: 1 ジョブ・直列 After: 2 ジョブに分けて並列実行 2 つが同時に走るので、縦に積み上がる 8分 短縮 所要時間 12分 重い処理(ピーク) medium × 8分 所要時間 20分 medium 1 ジョブに全部入り medium × 20分 small 軽い処理 small × 12分 0 5 10 15 20 0 5 10 (分) 面積(コスト) = 40 20 (分) 面積(コスト) = 12 + 16 = 28 並列化で右端が左に寄り(所要時間 −40%)、ピークを切り出した側は低い resource class で足りる(コスト −30%) ©2026 Wantedly, Inc. 15
  5. CIコストと所要時間のバランス 並列化による時間短縮効果はどこかで飽和する 開発者と相談してスイートスポットを探す事になる 実行時間 T(N)(アムダールの法則) コスト C(N) N = 1

    のときを 1 とした比 コスト C(N) = N×余白 + 仕事量 時間は飽和、コストだけ増える 2.5 2.0 1.5 1.0 0.5 実行時間 T(N) = 余白 + 仕事量/N 1 2 3 4 5 6 7 並列数 N ©2026 Wantedly, Inc. 8 9 10 11 12