テスト環境まるごとAWSにのっけてみた ~第三回 Backlogチャンネル~

このエントリーをはてなブックマークに追加
どうもfujya.sh(梨ガリ君 Love)です。

7月21日にシャノンのセミナールームでBacklogチャンネル・AWSセミナーが開催されました。
AWSに関する講師枠をもらえたので、「テスト環境まるごとAWSにのっけてみた」というタイトルで話をしたのですが、若干滑りつつも好評だった部分もあったので紹介したいと思います。


View more presentations from fujya .sh

■テスト環境はAWSに乗っけてるよ
電力が無いから社内にテスト用サーバ追加できない → じゃあAWSに乗せようって流れでAWSを使い始めました。本当はAWS使ってみたいなーと思っていた自分とかが、QAチームが困っていることをダシにして予算を獲得したという裏話もあったりなかったり・・・


■テスト全体の管理はJenkinsでやってるよ
元々テスト全体の流れはJenkinsでやっていたのですが、EC2のインスタンスの起動・停止も含めて管理するようになりました。テスト全体の紹介に関してはnishinoが以前Jenkinsの勉強会(その当時はHudsonでした)で発表したことがあるので、そちらを見ていただければ分かると思います。


■テスト用インスタンスはOpenVZで再仮想されてるよ
前にBlogにも書いたネタなんですがインスタンスはOpenVZで再仮想されてます。EC2インスタンス起動時にはElasticIPの取得をはじめ、色々なスクリプトが実行され初期化されて立ち上がります。初期化周りの調整がまぁ結構大変で、立ち上げて確認してダメだったらまた調整して・・・の繰り返しで良い感じに仕上げました。今はそのイメージをコピーして複数台のOpenVZ化されたEC2インスタンスを立ち上げてテストしてます。


■起動からテスト実行、終了まで全部自動化されてるよ
シャノンのQAはテストする人じゃなくて、テストプラットフォームを創る人なんです!!
実際にテストケースも書きつつ、プラットフォームに必要なアプリケーションも作ってます。シャノンのQAって凄い!と共感し興味がある人は、ブログ下部にある「人材募集」ボタンをクリックしてくれたら嬉しいですw


■節約してるよ
使ってない電気は消そう!という事で、自動シャットダウンの仕組み作りました。仕組みはmonitで作りました。コンフィグはこんな感じ
check file auto_shutdown with path /var/log/httpd/ssl-access_log
if timestamp > 30 minutes for 60 cycles then exec
"/root/bin/autoshutdown.sh"
Apacheのアクセスログのタイムスタンプを監視して、30分更新されていない状態を60回検知したら/root/bin/autoshutdown.shを実行する
というコンフィグになっています。(タイミングは1分に1回で設定で、90分アクセスが無ければ落ちる想定)autoshutdown.shにはアプリケーションを停止してから「落とすよ!」というアラートを飛ばした後、API経由でシャットダウンする内容が書いてあります。
この仕組みを導入してから全体で600~800時間分のインスタンス起動時間が削減できている見込みです。節電!節電!


■家計簿書いてるよ
案件でAWSを使いたいけど、内訳わかんないよね。でも、AWSには課金APIが無いので自前で課金情報を集計するスクリプトを作りました。
  • 帳簿:Google Spreadsheets
  • 言語:Python
  • モジュール:AWSの情報取得 boto
           Spreadsheetsの情報取得・書き込み gdata
処理の流れとしては
  1. botoを使いAWSのAPIを叩きインスタンスの情報一覧を取得
    Runnning中のインスタンスの instanceID / Tag:Name / instanceType / Tag:biz(用途) を取得
  2. gdataを使いSpreadsheetsの一覧を取得して1の情報とぶつける
    既にシートにinstanceIDが記述されていたら起動時間をインクリメント
    シートにinstanceIDが記述されてなかったら(新規で作成したインスタンス)行を追加
  3. このスクリプトをcronに設置して毎分実行
  4. 月をまたぐ瞬間にシートのコピーをとり、初期化する(当月の集計)
Spreadsheets内部でTag:biz(用途)別に金額を集計するようにしておき、他のシートにインスタンスの時間単価、為替レートを書いておきSpreadsheetsの関数を使い用途別の利用金額を出してます。
EBSとトラフィック周りの金額は・・・いい感じにマージしてます。
これ作ってみてよかった事は、何が使いすぎているのかという分析ができるようになります。AWSは使い始めると金額が膨れてくるので節約周りはインフラ屋の大きなミッションになります。情報を集めて分析するのにとても役立ってます。
(早く課金APIで無いかなぁ・・・)

■結論:AWS最高!
資料にも書いてますが当初の目的のテスト実行時間が短縮できました。たぶん社内にサーバ増強して同じ事をやっていても目標は達成できたかもしれませんが、テストケースはどんどん増えていきます。物理サーバを増やす運用だとテストケースが一定量を超えた時点で破綻する事が目に見えているので、AWS上にテスト環境移動している現在では心配事は予算のみとなりました(強敵ですが・・・)
インフラエンジニアが面倒だなーと思うところ(工数がかかる)をAWSが全部やってくれるので、本当に素晴らしいプラットフォームだと思います。

結論としてはAWS使うと色々と幸せになれるよって事ですね。



最後に、今回こういったすばらしい企画をしてくれたヌーラボの皆様、講師のアイレット:後藤様、AWS:大谷様本当にありがとうございました、凄く楽しいセミナーになりました。
また機会があればご一緒しましょう!
次の記事
« Prev Post
前の記事
Next Post »

1 コメント:

Write コメント
nishino
AUTHOR
2011年7月28日 11:29 delete

あー、Jenkins(Hudson)で環境つくったのは、kmtさんです!(これ大事!)
私は シャノン代表的にkmtさんの功績を資料にして発表しただけです。
他人のフンドシ(ry、、、で、ものごっつ恐縮です。

Reply
avatar
Related Posts Plugin for WordPress, Blogger...