JenkinsでEC2コストを節約する方法
· 4分の読み時間
特定の時間や条件で実行する必要があるバッチアプリケーションのリソースコストを最適化するための非常にシンプルな方法を共有したいと思います。
問題
- バッチは特定の時間にのみ実行されます。例えば、日次、月次、年次などの定期的な計算タスク。
- 応答速度は重要ではなく、バッチが実行されることが優先されます。
- 特定の時間に必要なリソースのために24時間EC2インスタンスを維持するのは非効率です。
- クラウドサーバーのリソースが必要なときだけEC2インスタンスを準備することは可能でしょうか?
もちろん可能です。AWS ECSやAWS EKSなどの自動化ソリューションもありますが、ここではJenkinsを使ってバッチとEC2サーバーを直接管理し、環境を設定する方法を考えます。
アーキテクチャ
このインフラストラクチャ設計により、バッチ実行のためにリソースが必要なときだけコストが発生するようにできます。
Jenkins
Jenkinsノード管理ポリシー
キューにリクエストが待機しているときのみノードをアクティブにし、不要なエラーログを最小限に抑えます。また、1分間アクティビティがない場合はアイドル状態に移行します。