CDP:Scheduled Autoscalingパターン

提供:AWS-CloudDesignPattern
移動: 案内, 検索
寄贈したアーキテクト

バッチサーバーの自動オンオフ

目次

解決したい課題

 定時実行のバッチ処理は多くのシステムで実施されており、その方法として、常時起動しているサーバー上のスケジューラー(例えばUNIXのcron)を使うケースが多い。しかし実際にバッチ処理を行なっている時間は短く、その他の時間のサーバーリソースは無駄になりコスト効率が悪い。このような用途のバッチサーバーのリソースを、いかに効率的に利用するかが常に課題となっている。

クラウドでの解決/パターンの説明

 従来は定時実行のバッチサーバーでも、当然のこととして常時起動しているサーバーを1台割り当てる必要があった。そして他の機能(処理)も持たせ、サーバーリソースの利用効率を上げる工夫をしてきた。クラウドでは必要なときのみ仮想サーバーを利用できるので、バッチ処理を行なっているときのみ仮想サーバーを起動することが現実的になった。

 定時実行のバッチ処理は、仮想サーバーを定時で起動する仕組みが必要となる。これはクラウドのスケジューリングの仕組みを使うと実現できる。

実装

 AWSには「Auto Scaling」と呼ぶEC2インスタンスを自動的に増減できる仕組みがある。Auto Scalingは定時にEC2インスタンスを増減させる機能も持っており、定時実行のバッチ処理に利用することが可能である。

  • 起動時に該当処理を実行するAMI(マシンイメージ)を用意する。
  • Auto Scalingにて、指定時刻にAMIからEC2が起動されるように設定する。
  • 処理終了後、EC2がターミネートするようにEC2自体およびAuto Scalingを設定する。

構造

6wNg0ISJczU5Pz1m-47DC8.png

利点

  • 定時のバッチを処理するEC2インスタンスは常時起動していない。処理実行時のみしかEC2インスタンスは起動しないため大幅なコスト削減が期待できる。

注意点

  • バッチ処理の終了時刻を決めるのが難しい場合、EC2インスタンス上のバッチ処理が終了してから、EC2インスタンス自身が自分を終了させる方法もよく用いられる。[関連ブログ 1]
  • EC2インスタンスは時間単位で課金され、短時間であっても一度起動して終了すると、1時間分の課金がかかる。起動、終了のタイミングには注意が必要である。

その他

関連ブログ

  1. suz-lab - blog の「定時にEC2を起動 & バッチが終了したらターミネート」( http://blog.suz-lab.com/2012/04/ec2.html )
個人用ツール
名前空間
変種
操作
CDPメニュー
ツールボックス