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
テストを並列実行して よかった話 2023/12/03 平尾一斗
Slide 2
Slide 2 text
【名前】 平尾一斗 【所属】 株式会社ラクーンホールディングス 【主に触っている技術】 【担当サービス】 【趣味】 旅行、お酒、特産品を食べること 自己紹介 at サッポロビール博物館
Slide 3
Slide 3 text
【名前】 平尾一斗 【所属】 株式会社ラクーンホールディングス 【主に触っている技術】 【担当サービス】 【趣味】 旅行、お酒、特産品を食べること 自己紹介 at サッポロビール博物館 このあたりを話します
Slide 4
Slide 4 text
もくじ ● なぜ並列化したか ● なにをしたか ● 今、どうなっているか ● 残る課題 ● Techブログ書いた
Slide 5
Slide 5 text
なぜ並列化したか 技術戦略部には「おかしくない」というアイデンティティがあります。 働いていると「それ、おかしくない?」と思うこと、ありますよね? ラクーンのエンジニアは日々「おかしくない?」をフラットに議論し 「おかしくない」 に変えています。 テストが終わるまでの待ち時間が長いの、「おかしくない?」
Slide 6
Slide 6 text
なにをしたか PJもあるし、サクッと時間短縮できる術はないだろうか… Circle CIとかJenkinsで並列実行する基盤作るのは大変だしなぁ おや?Gemfileにtest-queueで並列化しようとした痕跡があるな おや?parallel_testsって良さげなGemがあるではないか!
Slide 7
Slide 7 text
parallel_tests is 何 parallel_tests 通常は1プロセスで実行するRSpecをマルチプロセスで動かしてくれます。 ➔ 複数のプロセッサーに最小で1ファイルのテストを割り振る ➔ プロセス数を指定できる ➔ 各プロセスにDBが割り当てられる
Slide 8
Slide 8 text
今、どうなっているか ➔ デプロイ時間を短縮 ➔ 開発体験の向上 ➔ 小さい工数で大きな時間節約 ➔ ユニットメンバーから良い反応をもらえてモチベアップ(うおおぉぉ!)
Slide 9
Slide 9 text
残る課題 ● カバレッジ計測がおかしい ○ →最後のRSpec実行でカバレッジが上書きされ、マージされない
Slide 10
Slide 10 text
残る課題 ● 単純にプロセッサーを増やしても早くならなくなった ○ →別のボトルネックがある ○ →重いテストファイル、プロセス起動のオーバーヘッド、I/O、… ○ →数十秒~数百秒(最大で257秒)かかるspecがある(他は数秒~十数秒) ○ →地道に直す
Slide 11
Slide 11 text
Techブログ書いた 並列処理でRails5アプリURIHOのRSpecの時間を短縮する
Slide 12
Slide 12 text
所感 開発環境のパフォーマンス改善楽しいなぁ