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

25
株式会社シャノン インフラストラクチャエンジニア 藤倉 和明 テスト環境まるごとAWSにのっけてみた 2011/07/21 2011/07/21 2011/07/21 2011/07/21 2011/07/21 2011/07/21 2011/07/21 2011/07/21 第3回 Backlog Backlog Backlog Backlogチャンネル

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

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

株式会社シャノン

インフラストラクチャエンジニア 藤倉 和明

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

2011/07/212011/07/212011/07/212011/07/212011/07/212011/07/212011/07/212011/07/21

第3回 BacklogBacklogBacklogBacklogチャンネル

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

2

自己紹介

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

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

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

3

技術部ブログの宣伝

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

最低週1で

更新され

ています

ブクマよろしくですブクマよろしくです

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

4

テスト環境をAWSに乗っけた経緯

自動テスト全部終わるのが24時間以上かかる自動テスト全部終わるのが24時間以上かかる

いま社内にいま社内に11台しかテストサーバが無い台しかテストサーバが無い

サーバ増やしたいけどオフィスに電力がないサーバ増やしたいけどオフィスに電力がない

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

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

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

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

5

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

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

「「HudsonHudson(今(今JenkinsJenkins)活用事例セミナー」で弊社西野が)活用事例セミナー」で弊社西野が

発表した内容見ていただけると詳細が分かります発表した内容見ていただけると詳細が分かります

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

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

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

テスト環境全体像

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

7

テストの流れ(全体図)

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

8

Jenkinsでテストの流れを管理

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

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

ジョブの塊1

ジョブの塊2222

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

9

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

all in one instanceall in one instanceall in one instanceall in one instanceall in one instanceall in one instanceall in one instanceall in one instance

OSOSOSOSOSOSOSOS - CentOS 5.x - CentOS 5.x - CentOS 5.x - CentOS 5.x - CentOS 5.x - CentOS 5.x - CentOS 5.x - CentOS 5.x

networknetworknetworknetworknetworknetworknetworknetwork - bridge interface + iptables - bridge interface + iptables - bridge interface + iptables - bridge interface + iptables - bridge interface + iptables - bridge interface + iptables - bridge interface + iptables - bridge interface + iptables

virtual servervirtual servervirtual servervirtual servervirtual servervirtual servervirtual servervirtual server - Loadbalancer - Loadbalancer - Loadbalancer - Loadbalancer - Loadbalancer - Loadbalancer - Loadbalancer - Loadbalancer - Application - Application - Application - Application - Application - Application - Application - Application - Database - Database - Database - Database - Database - Database - Database - Database - cache - cache - cache - cache - cache - cache - cache - cache

このネタは技術ブログにも書いてあるので是非ブクマをw

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

10

Why OpenVZ ?

元々元々OpenVZOpenVZでサーバのイメージ管理していたでサーバのイメージ管理していた

より安価にするため複数台立てるより1台に集約より安価にするため複数台立てるより1台に集約

AP/DBAP/DBの負荷ポイントが異なるので同居はの負荷ポイントが異なるので同居は◯◯

AP:CPU

DB:DiskIO

キャッシュサーバ:メモリ

仮想サーバ単位でのリソース管理ができるので、仮想サーバ単位でのリソース管理ができるので、

管理側面的に負荷のコントロールしやすくなる管理側面的に負荷のコントロールしやすくなる

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

11

起動時にインスタンス自身で初期設定

ElasticIPElasticIPの取得の取得

S3FSS3FSででS3S3のマウントのマウント

NFSNFSマウントマウント

アプリケーションソースはアプリケーションソースはNFSNFSサーバ上に配置サーバ上に配置

メール経路変更メール経路変更

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

経路は経路は2525番ポートではなく番ポートではなく587587番ポートを利用番ポートを利用

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

12

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

インスタンスのインスタンスの起動起動・・停止停止ははAPIAPI経由経由でで実行実行

JenkinsJenkinsがが実行出来実行出来るスクリプトをるスクリプトを作成作成

アプリケーションアプリケーション起動前起動前にソースのにソースの自動更新自動更新

自動更新自動更新のの仕組仕組みはみはQAQAエンジニアがプラットフォームをエンジニアがプラットフォームを構築構築

テストケースもテストケースも自動自動でで実行実行されるされる

汗汗とと涙涙とと何何かがかが凝縮凝縮されたされたSeleniumSeleniumによるによる自動自動テストテスト

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

13

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

テストやれよ!テストやれよ!

SSSS社 QA QA QA QAリーダー I I I I氏

はひぃぃぃぃ!!はひぃぃぃぃ!!

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

14

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

メンテナンス対象メンテナンス対象

JenkinsJenkins

インスタンスイメージインスタンスイメージ

自動更新の仕組み自動更新の仕組み

SeleniumSeleniumのテストケースのテストケース

QAの仕事は「テストを実施する」から

「テストプラットフォームを創る」によりシフトした

QAチームのレバレッジがきくようになった!

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

運用上の涙ぐましい努力

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

16

ごめんなさい!ごめんなさい!ごめんなさい!

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

・経理の人に使い過ぎ!って怒られた・経理の人に使い過ぎ!って怒られた・社長が接待でカード切れなかったwwww・社長が接待でカード切れなかったwwww

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

17

節電に貢献してます →→→→ 節約

停止の際にこんなメールを通知停止の際にこんなメールを通知6月は200通ぐらいのシャットダウン通知6月は200通ぐらいのシャットダウン通知

使うときだけ電気を付ける使うときだけ電気を付ける

電気の消し忘れ対策として、アクセスが一定時間電気の消し忘れ対策として、アクセスが一定時間

無かったら自動でシャットダウン無かったら自動でシャットダウン

これぞエコシステム(違これぞエコシステム(違

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

18

製造原価出したい

boto +boto +boto +boto +boto +boto +boto +boto +gdatagdatagdatagdatagdatagdatagdatagdata

①:botobotobotobotoで稼働中のInstanceInstanceInstanceInstanceの情報一覧を取得

google spreadsheetsgoogle spreadsheetsgoogle spreadsheetsgoogle spreadsheets

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

インスタンスに案件毎のタグを追加して集計

croncroncroncronで毎分実行

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

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

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

月初に経理に提出

EBS/EBS/EBS/EBS/EBS/EBS/EBS/EBS/トラフィックは従量割で後で加算トラフィックは従量割で後で加算

この辺りもそのうち集計できるようにしたいこの辺りもそのうち集計できるようにしたい

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

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

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

AWS使って良かった事・悪かった事

インフラ担当目線での

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

21

良かった事

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

始める前:20時間 始める前:20時間 →→ 現在:6時間 現在:6時間

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

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

会社のお金で会社のお金でAWSAWSAWSAWSAWSAWSAWSAWS遊べて楽しかったw遊べて楽しかったw

スイートを分割すればもう少し早くなるかも

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

22

悪かったこと

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

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

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

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

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

今後の展望

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

24

今後狙ってる所

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

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

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

AWSAWSAWSAWSAWSAWSAWSAWSを乗りこなしてレバレッジがきくを乗りこなしてレバレッジがきく

プラットフォームを構築する!!プラットフォームを構築する!!

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

25

ご清聴ありがとうございました!

AWSAWSAWSAWSAWSAWSAWSAWS上でテストされた高品質な上でテストされた高品質な

マーケティングプラットフォームもよろしくおねがいします!マーケティングプラットフォームもよろしくおねがいします!