GitHub Actionsで負荷試験の自動化を実現
株式会社COMPASS / 5st7
メンバー / SRE / 従業員規模: 101名〜300名 / エンジニア組織: 51名〜100名
利用機能 |
---|
CI/CD |
利用機能 | CI/CD |
---|
アーキテクチャ
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
COMPASSが提供するデジタル教材「キュビナ」は、100万人を超えるユーザーに利用されており、特に学校の授業時間帯にトラフィックが集中します。このため、システムの安定性を確保するためには、ピーク時の負荷に耐えられるかどうかを確認することが非常に重要なため、定期的に負荷試験を実施しておりました。 しかし、GitHub Actionsによる自動化前の負荷試験では以下の課題がありました。
- 負荷試験の手動実施 : 負荷試験は手動で実施しており、手順が複雑で多くのステップを踏む必要がありました。これにより、実行のたびに作業が煩雑になっていました。
- リリース前の実施 : 負荷試験はリリース前に行っていましたが、この時点でパフォーマンスに問題が見つかることがあり、リリースに影響がでることが度々ありました。
どのような状態を目指していたか
COMPASSでは、負荷試験の効率化と安定化を目指して以下の目標を立てました。
- 手順の自動化 : 手動での負荷試験実施では手順にばらつきが生じるため、これを自動化し、一貫した負荷試験の実行を実現する。
- 日常的な負荷試験の実施 : 負荷試験を日常的に行うことで、リリース直前ではなく、開発段階でパフォーマンスの問題を早期に発見・解決できる体制を整える。
導入の成果
改善したかった課題はどれくらい解決されたか
手順の自動化 : 大変だった準備作業も自動化し、CloudSQLや対象アプリケーションのPod準備などをGitHub Actionsによって自動で行えるようにしました。この自動化によって負荷試験の準備にかかる時間が大幅に削減されました。
日常的な負荷試験の実施 : 負荷試験の実行が自動化されたことにより、手動実行時代よりも高い頻度で負荷試験を行えるようになりました。現在では、開発環境では1日1回、ステージング環境では更新のタイミングに合わせて1回の負荷試験が自動で行われるようになり、リリース直前になってから大慌てでパフォーマンスの問題を修正するといったことが少なくなりました。
導入に向けた社内への説明
上長・チームへの説明
GitHub Actionsの導入に際しては、COMPASS内の他プロジェクトですでに導入・運用実績があったため、導入に関する大きな障壁はありませんでした。 特にチーム内では以下の点が評価され、スムーズに導入が進みました。
ユーザーからの入力を受け付ける柔軟性 : GitHub ActionsのWorkflow dispatch機能を使って、ユーザーが手動で負荷試験パラメータを入力し、その内容に基づいて負荷試験を実施できる点が大きな利点とされました。これにより、負荷試験のカスタマイズが容易になりました。
PRマージやスケジュールによる自動実行 : GitHub Actionsは、GitHubとシームレスに連携し、PRのマージを契機として自動で負荷試験を実行できる点や、Cronスケジュールのように特定の時間に自動実行できる機能が非常に有用でした。この機能により、リリースフローに負荷試験を組み込むことができ、定期的なテストの実施も可能になりました。
活用方法
よく使う機能
GitHub Actionsを活用している中で、COMPASSが負荷試験基盤で直接利用しているわけではないものの、日常の運用で便利に活用している機能をいくつか紹介します:
Composite Actions : 複数のアクションを一つにまとめることで、再利用可能なユニットとして扱うことができ、複雑なワークフローの整理やコードの再利用に役立っています。
Reusable Workflows : ワークフローの再利用が可能になり、複数のリポジトリ間で同じワークフローを使用できる機能です。これにより、異なるプロジェクトでも統一されたCI/CDパイプラインを実現しています。
GitHub Marketplace : GitHub Marketplaceでは、多くのユーザーが提供しているアクションやワークフローが公開されており、それらを簡単にプロジェクトに取り入れることができます。個人的に最近気に入っているのは複雑なバージョン管理を含む環境構築をmiseを使ってできるjdx/mise-actionです。
Self-hosted Runner : 自分たちでホスティングしたランナーを利用することで、より柔軟な実行環境を整えることができます。COMPASSでは、特に個人情報など、GitHubが提供する共有サーバーでは扱いたくないデータや環境について、Self-hosted Runnerを活用して安全に運用しています。
ツールの良い点
- GitHubリポジトリとの連携が簡単 : GitHub Actionsは、GitHubリポジトリとのシームレスな統合が可能で、特にGitHubを使用しているプロジェクトでは、レポジトリにYAMLファイルを配置するだけで簡単に使い始めることができます。
- ワークフローをトリガーするイベントが豊富 : GitHub Actionsには多様なトリガーイベントが用意されており、柔軟にワークフローを実行できます。たとえば、Pushを契機にトリガーすることや、PRにラベルが付いた際に実行するなど、細かい条件でのトリガー設定が可能です。また、workflow dispatchイベントを使えば、手動でワークフローをトリガーすることもでき、幅広いシチュエーションに対応できます。
- ワークフローを実装しやすい: GitHub Actionsでは、ジョブを並列に実行したり、実行条件を柔軟に設定することができ、排他制御も簡単に実装可能です。さらに、ワークフローが可視化されるため、現在のステータスや実行中のプロセスを簡単に追跡でき、何が起こっているかを把握しやすい点が非常に便利です。
ツールの課題点
- デバッグが少々面倒 : ワークフローでエラーや問題が発生した際、コミットを積み重ねて動作確認を繰り返したり、デバッグ用のコードを追加して確認する必要があり、少し大変です。
株式会社COMPASS / 5st7
メンバー / SRE / 従業員規模: 101名〜300名 / エンジニア組織: 51名〜100名
よく見られているレビュー
株式会社COMPASS / 5st7
メンバー / SRE / 従業員規模: 101名〜300名 / エンジニア組織: 51名〜100名