OSS に切り出した汎用ロジックのパフォーマンス改善/劣化防止に利用
株式会社hacomono / mewton
テックリード / テックリード / 従業員規模: 101名〜300名 / エンジニア組織: 51名〜100名
利用プラン | 利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|---|
Free | パフォーマンスリグレッションテスト | 10名以下 | 2024年1月 | B to B B to C |
利用プラン | Free |
---|---|
利用機能 | パフォーマンスリグレッションテスト |
ツールの利用規模 | 10名以下 |
ツールの利用開始時期 | 2024年1月 |
事業形態 | B to B B to C |
導入の背景・解決したかった問題
導入背景
背景
もともと、hacomono 製品のプロダクトコードの中で、汎用的に処理できる部分で特にふくざつなものを汎用化し、public repository として GitHub, NPM に公開していました。
そのライブラリの機能修正時に、パフォーマンスの大幅な劣化がアップデートに含まれてしまい、切り戻し対応をすることになりました。
後に、その恒久的対処をライブラリ側に行いましたが、その際のパフォーマンス計測と、今後の劣化防止として、導入に至りました。
ツールの紹介や導入時の詳細についてはテックブログを参照ください。
(https://techblog.hacomono.jp/entry/2024/02/08/1100)
比較検討したサービス
- vitest (テスティングライブラリ) の標準機能
比較した軸
- 直感的であること
- 導入容易であること
- 通常のテストコードと分けて考慮可能であること
選定理由
"重視していた点"すべてで問題ないと判断しました。
また、テストコードではフレームワークとして vitest を使っており、これが利用可能であることも決め手となりました
導入の成果
どのような成果が得られたか
背景説明にあるようなロジックのパフォーマンス改善では、実行時間を半分以下に抑えることはできたが、その状況を今後悪化させない体制としてかなりワークしています。
また、スタックトレースの細かい単位での実行時間が出力されるため、現状でのパフォーマンスが悪い箇所の把握にも一役買っています。
導入時の苦労・悩み
GitHub Actions との連携や、その動作が遅めです。
導入に向けた社内への説明
上長・チームへの説明
そもそも汎用ロジックを public repository として切り出していたこともあり、無料プランでpublic repository のみで利用することにしたため、上長へは簡単なツールの紹介と説明だけで済みました。 また、将来的には「プロダクトコードに対して今後導入する余地もある。」という説明を含めるなどもしていますが、現在まだそこまでの導入に至っていないです。
活用方法
よく使う機能
- パフォーマンスリグレッションテスト
- GitHub で PullRequest 作成時に、パフォーマンス計測用のテストコードを使って、パフォーマンス計測後、一定以上の悪化があればCIを通過させない設定にしています。
- スタックトレースごとのパフォーマンス計測
- パフォーマンス計測中に通過した関数のスタックトレースごとの所要時間の計測結果が codspeed サイト上に表示される。これをみて、今後のパフォーマンス改善すべき箇所の洗い出しを行っています。
ツールの良い点
- public repository では無料である
- パフォーマンス劣化を防止できる
ツールの課題点
- CI が重め
株式会社hacomono / mewton
テックリード / テックリード / 従業員規模: 101名〜300名 / エンジニア組織: 51名〜100名
株式会社hacomono / mewton
テックリード / テックリード / 従業員規模: 101名〜300名 / エンジニア組織: 51名〜100名
レビューしているツール
目次
- 導入の背景・解決したかった問題
- 活用方法