第3回 Backlog
    Backlog
    Backlogチャンネル

テスト環境まるごとAWSにのっけてみた


株式会社シャノン
インフラストラクチャエンジニア 藤倉 和明



2011/07/21
自己紹介


藤倉和明について
シャノンのインフラを守るお仕事
 サーバ/ネットワークざっくりだいたい全部見てる
 Twitter: @fujya
 Facebook:http://ja-jp.facebook.com/people/Kazuaki-Fujikura/100001844796436




好きなAWSサービス
 EBS(snapshotカワイイよsnapshot♪)

                                                                              2
技術部ブログの宣伝

            http://shanon-tech.blogspot.com/
            私はfujya.shで書いてます

                                     最
                                       低
                                          週
                                               1で
                                                 更
                                                  新
                                                   され
                                                     て
                                                      い
                                                       ま
                                                        す




ブクマよろしくです
                                                      3
テスト環境をAWSに乗っけた経緯


QA
QAチームがなにやら困ってるらしい



 自動テスト全部終わるのが24時間以上かかる
    いま社内に1台しかテストサーバが無い
  サーバ増やしたいけどオフィスに電力がない

          とりあえずAWS触ってみたいからチャンス!!


 「AWSにテスト環境作るから予算プリーズ!僕にあそb・・・いや、やらせてください!」


                                        4
どうやってテストしているのか



  「Hudson(今Jenkins)活用事例セミナー」で弊社西野が
  発表した内容見ていただけると詳細が分かります

   https://docs.google.com/present/view?id=0AbDvtUF_P-4uZDl0cGo4aF8zMWdmNXhnZ3M2&hl=en


   今日はAWSの上にテスト環境が
   乗っているよっていう紹介です




「Hudson
 Hudson
 Hudson活用事例セミナー 西野」で検索すれば出てきます

                                                                                   5
テスト環境全体像
テストの流れ(全体図)




              7
Jenkinsでテストの流れを管理

複数のジョブを連鎖させ、インスタンス起動・テスト実行・インスタンス停止など実施
テスト対象の量が増えたらジョブも合わせて増えていく
一定量のジョブが増えたらインスタンスを追加(コピー)する

(予算があれば)何百時間分のジョブも数時間で完了できる設計




   ジョブの                      ジョブの
   塊1                        塊2
                              2




                                     8
自動テスト用インスタンスはOpenVZで再仮想されている


all in one instance

OS
- CentOS 5.x


network
- bridge interface + iptables


virtual server
- Loadbalancer
- Application
- Database
- cache                         このネタは技術ブログにも書いてあ
                                るので是非ブクマをw
                                               9
Why OpenVZ ?



元々OpenVZでサーバのイメージ管理していた
より安価にするため複数台立てるより1台に集約
AP/DBの負荷ポイントが異なるので同居は◯
  AP:CPU
  DB:DiskIO
  キャッシュサーバ:メモリ

仮想サーバ単位でのリソース管理ができるので、
管理側面的に負荷のコントロールしやすくなる
                      10
起動時にインスタンス自身で初期設定



ElasticIPの取得
S3FSでS3のマウント
NFSマウント
  アプリケーションソースはNFSサーバ上に配置

メール経路変更
  送信メールサーバは固定で1台(規制緩和申請済みサーバ)

  経路は25番ポートではなく587番ポートを利用

                            11
APIで起動・停止 ソースは自動更新 テストも自動


インスタンスの起動・停止はAPI経由で実行
  Jenkinsが実行出来るスクリプトを作成


アプリケーション起動前にソースの自動更新
  自動更新の仕組みはQAエンジニアがプラットフォームを構築
         みはQA




テストケースも自動で実行される
  汗と涙と何かが凝縮されたSeleniumによる自動テスト
           されたSelenium



                                 12
テストが一貫して自動化されたので人間様のお仕事は

  S社 QA
     QAリーダー I
            I氏


                   テストやれよ!




                 はひぃぃぃぃ!!




                             13
だけではなく・・・自動テストプラットフォームのメンテナンスが必要


メンテナンス対象
 Jenkins
 インスタンスイメージ
 自動更新の仕組み
 Seleniumのテストケース

     QAの仕事は「テストを実施する」から
「テストプラットフォームを創る」によりシフトした
 QAチームのレバレッジがきくようになった!
                              14
運用上の涙ぐましい努力
ごめんなさい!ごめんなさい!ごめんなさい!


社内で申請した予算は低めに見積もっていた
 AWSを本格的に使うようになったら・・・




・経理の人に使い過ぎ!って怒られた
・社長が接待でカード切れなかったwwww
                        16
節電に貢献してます → 節約
          →


使うときだけ電気を付ける
電気の消し忘れ対策として、アクセスが一定時間
無かったら自動でシャットダウン




これぞエコシステム(違
                 停止の際にこんなメールを通知
                 6月は200通ぐらいのシャットダウン通知
                                  17
製造原価出したい

 案件で使いたいけど内訳わかんないよね
                                  google spreadsheets

 Instanceの起動時間を計測するツールを作成
 Instanceの起動時間を計測するツールを作成




                                      ②:spreadsheets
                                       :spreadsheets
                                       :spreadsheetsの一覧を取得
①:boto
  boto     Instance
  botoで稼働中のInstance
           Instanceの                  ①で取得した情報とぶつけて、起
情報一覧を取得                               動時間ををインクリメントしていく

                                      インスタンスに案件毎のタグを追
                       boto +
                                      加して集計
                       gdata
                                cron
                                cronで毎分実行
                                                        18
月初に経理に提出




                    為替は経理が後でシートを編集して調整

 製造原価と製品開発費の金額が出る




                    EBS/トラフィックは従量割で後で加算
                    EBS/トラフィックは従量割で後で加算
                    この辺りもそのうち集計できるようにしたい
インフラ担当目線での
   AWS使って良かった事・悪かった事
良かった事



当初の目的である自動テストの時間が短くなった

 始める前:20時間 → 現在:6時間
 スイートを分割すればもう少し早くなるかも



APIが充実しているのでどんな要件にもマッチ

プラットフォームとしての方向性が参考になった

会社のお金でAWS遊べて楽しかったw
                        21
悪かったこと



使ってみると結構お金が掛かる(怒られたw)

原因不明の突然死の調査が困難

Tokyo RegioにVPCが無い (早くこないかな)

QAからAWS関連でインフラへの要望も増えた


                          22
今後の展望
今後狙ってる所




社内・本番インフラの乗せ変え

オフショア(予定有?)時に開発・QA環境構築

AWS上のインフラでToBアプリの成功事例を作る


AWSを乗りこなしてレバレッジがきく
プラットフォームを構築する!!
                     24
ご清聴ありがとうございました!




       AWS上でテストされた高品質な
       AWS上でテストされた高品質な
 マーケティングプラットフォームもよろしくおねがいします!
                            25

テスト環境まるごとAwsにのっけてみた