More Related Content
Similar to 開発環境としてのAwsを真面目に考える jawsug2013三都物語公開用
Similar to 開発環境としてのAwsを真面目に考える jawsug2013三都物語公開用 (20)
More from Takuro Sasaki (20)
開発環境としてのAwsを真面目に考える jawsug2013三都物語公開用
- 2. はじめに
✦ 本日のアジェンダ #jaws
ug3to
‣ 自己紹介(5分)
‣ AWSで開発環境(20分)
‣ DevOps × AWS + デモ(20分)
13年3月9日土曜日
- 3. #jaws
ug3to
自己紹介: 佐々木拓郎
✦ プロフィール
‣ NRIネットコム株式会社 インターネット事業部 @katotaku
‣ Twitter: @katotaku(実名)@dkfj(匿名)/ Facebook: takuro.sasaki
‣ blog: http://d.hatena.ne.jp/dkfj/ (匿名)
‣ 好きなAWSサービス: S3
★ 備考
‣ 認定スクラム・マスター
‣ 何かありましたら、Facebook・Twitterの方でお気軽にご連絡ください
13年3月9日土曜日
- 4. #jaws
ug3to
NRIネットコム
✦ NRIグループで唯一関西を本社とする会社
‣ Webシステムを得意としているシステム会社
‣ 設計開発から運用まで全て行う為、
アプリケーション・インフラエンジニアが一杯いる
‣ Web系の仕事が多いため、ディレクター・デザイナーも一杯!!
‣ 大阪本社だけど、東京の方が人が多い。でも関西Love
13年3月9日土曜日
- 5. #jaws
ug3to
NRIネットコムとAWSと私
• 2006年 米国の会社に出向中に、Amazon S3と出会うもEC2はスルー
• 2007年 EC2が仮想サーバということを知って使いはじめる
• 2008年 匿名ブログでAWSのことを書き始めると、そこそこ人気に
✦ 2009年 会社の一部システムで、EC2を利用し始める
✦ 2010年 iPadを使った「モバイル会議」システムのインフラにAWSを採用
✦ 2011年 既存のお客様にも、徐々に勧め始める
✦ 2012年 AWSソリューションとして本格的に営業開始
✦ 2013年 趣味で使っていたものが本職になる。 ← イマココ
13年3月9日土曜日
- 6. #jaws
ug3to
NRIネットコムのWebサイト
調査結果も随時掲載中
http://www.nri-net.com/products/cloud/aws.html
13年3月9日土曜日
- 7. #jaws
ug3to
本日のテーマ
開発環境としてのAWSを
真面目に考える
13年3月9日土曜日
- 8. #jaws
ug3to
参加者している皆様への質問
• アプリケーション/インフラエンジニア?
• 自社で開発用のPC/サーバの管理をしている?
• 突然、開発機が壊れて困ったことがある?
• プロジェクト毎に環境が増殖して管理出来ない?
13年3月9日土曜日
- 9. #jaws
ug3to
先ほどの質問は、
弊社で実際にあった問題でした。
13年3月9日土曜日
- 10. #jaws
ug3to
開発環境の故障
☓
• 代替機なし
• 開発ストップ
• 復旧に多大な工数
障害発生
開発機 • 迫る納期
13年3月9日土曜日
- 11. #jaws
ug3to
増殖するサーバー
プロジェクトA プロジェクトB プロジェクトC プロジェクトX
• プロジェクトごとに多様な開発機
• 稼働していないプロジェクトの開発機も無くせない
• 増え続ける開発機
13年3月9日土曜日
- 12. #jaws
ug3to
貧弱なサーバー
予算上の都合で、開発環境に潤沢な投資を出来る企業は少ない。
一方で、貧弱な開発環境の為に、貴重なリソースである開発者の時間がムダに
なっているケースも。
必要なリソース 現実に割り当てられたリソース
http://www.flickr.com/photos/jiteshjagadish/5178417174/ http://www.flickr.com/photos/gvtbc/188328021/
13年3月9日土曜日
- 13. #jaws
ug3to
本日のテーマ
開発環境としてのAWSを
真面目に考える
それって、AWSで解決出来ない?
13年3月9日土曜日
- 14. #jaws
ug3to
ハードウェアトラブルからの開放
物理サーバを仮想イメージ(AMI)として、テンプレート化
例え使用中のAWSで障害が起きたとしても、別の場所で簡単に起動出来る
物理サーバ 仮想化イメージ(AMI) インスタンス
13年3月9日土曜日
- 15. #jaws
ug3to
必要な時に、必要なだけ
一度仮想化すれば、サーバーは必要な時にだけ起動
使っていない古い環境の維持コストは、ストレージ利用料だけ
ソースやデータなど可変部分は、S3やEBSで永続化
13年3月9日土曜日
- 16. #jaws
ug3to
必要に応じて、リソース増強
スケールアップもスケールアウトも、1クリックで実現可能
使った分だけなので、最小限のコストで実現可能
Large
Small
Small Small Small
13年3月9日土曜日
- 17. #jaws
ug3to
AWSの罠
• AWSは安くて便利
• 気がつくと至る所で利用されだす
• 積もり積もると、トータルではかなりの金額に
工夫次第で、費用の大幅な削減も可能
13年3月9日土曜日
- 18. #jaws
ug3to
対策 使う時だけ手動で立ち上げる
• 必要なインスタンスを、手動で立ちあげましょう
• 帰宅する前に、インスタンスを停止してね
必ず失敗します
• 他の人が、まだ使うと思って停止しなかった
• そもそも面倒くさい
13年3月9日土曜日
- 19. #jaws
ug3to
インスタンスは自動で起動・停止する
• 構成管理サーバから、決まった時間に起動・停止
• 停止時間が決まっているので、調整の必要なし
平日日中だけの稼働で、コスト1/3
13年3月9日土曜日
- 20. #jaws
ug3to
リザーブド・インスタンスの購入
結構ややこしいです。
前払金の計上の仕方等、
経理の方と密に話し合ってください。
13年3月9日土曜日
- 21. #jaws
ug3to
セキュリティは?
13年3月9日土曜日
- 22. #jaws
ug3to
VPCによるプライベート・ネットワークの構築
VPC機能により、サブネットの一部として利用可能
13年3月9日土曜日
- 23. #jaws
ug3to
管理部門の壁
• それでも、導入に難色を示す管理部門も多い
• 従量課金の恐怖
• 前例がないものを導入することへの恐怖
• そもそもよく解らない
地道に話し合い、説得しましょう
13年3月9日土曜日
- 24. #jaws
ug3to
具体的なチップス
13年3月9日土曜日
- 25. #jaws
ug3to
アカウントの管理
新規プロジェクト開始時に3つのAWSアカウントの作成。
開発用・検証用・本番用を分けて、同じ環境を作る。
プロジェクトの段階ごとに、サポートを切り替える。
開発用アカウント 検証用アカウント 本番用アカウント
開発者 開発者 ビジネ
サポー サポー スサポ
ト ト ー ト
13年3月9日土曜日
- 26. #jaws
ug3to
IAMの利用
マスターアカウントは、基本的に使わない。
個人事にIAMアカウントを作成し、細かく権限設定。
システムで使うアカウントは、それぞれで作成。
マスターアカウントを使って良いのは、
ハンズオンだけ!!
13年3月9日土曜日
- 27. #jaws
ug3to
一括決済(Consolidated Billing) によるアカウント紐付け
支払い用アカウント
プロジェクトA プロジェクトA プロジェクトA プロジェクトB プロジェクトB プロジェクトB
開発用アカウント 検証用アカウント 本番用アカウント 開発用アカウント 検証用アカウント 本番用アカウント
メリット: デメリット:
・ 請求が一括で出来る ・ リザーブドインスタンスの問題
・ ボリュームディスカウントの恩恵
・ 請求書決済等に切り替え易い
13年3月9日土曜日
- 28. #jaws
ug3to
ネットワークの管理
複数プロジェクトで共通のVPC。 or プロジェクトごとのVPC?
VPN Gatewayの接続元IPアドレスの問題もあるので、
利用方法に応じて選択
プロジ
ェクト
A
プロジェクトA プロジェクトB
プロジ
ェクト
B
プロジェクトC
プロジ
ェクト
C
13年3月9日土曜日
- 29. #jaws
ug3to
これで、ひと通り使えます。でも、
AWSで出来ることは、これだけ?
13年3月9日土曜日
- 30. #jaws
ug3to
本日のテーマ
開発環境としてのAWSを
真面目に考える
俺のAWSは、もっと出来るはず
13年3月9日土曜日
- 31. #jaws
ug3to
まずは、
米国での事例紹介
13年3月9日土曜日
- 32. #jaws
ug3to
Pinterest
• 1,000万人以上の利用者
• 数百台のサーバー
• たった12名で開発運用
13年3月9日土曜日
- 33. #jaws
ug3to
Amazon
• 平均11秒に1回のリリ
ース
• 最大で1時間に1,079回
リリース
• 平均で10,000台のサーバ
にデプロイ
13年3月9日土曜日
- 34. #jaws
ug3to
業態は違うものの、我々が知っている
システムの開発運用と違いすぎる!!
何が違うのか?
13年3月9日土曜日
- 35. #jaws
ug3to
答えの一つは
自動化
13年3月9日土曜日
- 36. #jaws
ug3to
継続的デリバリー
いつまで手動でデプロイしているのですか?
13年3月9日土曜日
- 37. #jaws
ug3to
アジャイルのレフトウィングとライトウィング
ヒント?
※株式会社チャンジビジョン 平鍋さんの許可を得ての使用。
http://blogs.itmedia.co.jp/.shared/image.html?/photos/uncategorized/2012/09/09/whereisyouragile.png
13年3月9日土曜日
- 38. #jaws
ug3to
継続的デリバリーの5つの原則
• リリースは、繰り返し可能で信頼性が高い仕組み
• 全ての工程で自動化されている
• 全てをバージョン管理システムで管理されている
• 工程内に品質をつくり込む仕組みを内包している
• 継続的に改善する
13年3月9日土曜日
- 39. #jaws
ug3to
全ての工程における、自動化がキーワード
この仕組を作りあげるには、
アプリチームだけでは無理!
基盤チームだけでも無理!
もちろん品質管理部門でも無理!
両者の協調が必要
13年3月9日土曜日
- 40. #jaws
ug3to
DevOpsとは?
DevOpsとは、開発部門、運用部門、品質管理部門のあいだの、統
合、コミュニケーション、コラボレーションを行うための一連のメ
ソッドとシステムである。これはまた、適切なソフトウェアとサー
ビスによってビジネスゴールを実現するためのミーティングにおい
て、開発と運用の相互依存として理解されつつある。
13年3月9日土曜日
- 41. #jaws
ug3to
DevOps
http://www.slideshare.net/jallspaw/10-deploys-per-day-dev-and-ops-cooperation-at-flickr
もちろん、デザイナー・営業など
関係する全ての人々への愛が大切
13年3月9日土曜日
- 42. #jaws
ug3to
DevOpsに大切なこと
• お互いの尊敬と信頼(企業文化)
• ツールとプロセス(ノウハウ)
13年3月9日土曜日
- 43. #jaws
ug3to
それぞれの役割
13年3月9日土曜日
- 44. #jaws
ug3to
アプリ開発者の責務
• バージョン管理は当たり前
⇒出来ればGit等の分散型で
• ユニットテストは、もはや必須
⇒最低でも分岐網羅(C1)まで
• 1ビルドで、どこの環境でも動くアーキテクチャ
⇒環境(開発、検証、本番)の依存性を外出し
13年3月9日土曜日
- 45. #jaws
ug3to
基盤開発者の責務
• 構成管理・バージョン管理でサーバ管理
⇒構成情報をバージョン管理
• 運用に関わる全て作業の手作業廃止
⇒構築・リリース・メトリックス収集
• 環境の再現性の確保
⇒いつでも、同じ環境を再現出来るようにする
13年3月9日土曜日
- 46. #jaws
ug3to
両者の責務
システムを継続的にカイゼンする
13年3月9日土曜日
- 47. #jaws
ug3to
AWSにピッタリじゃないですか?
再現性のある環境
自動化の為のAPI
13年3月9日土曜日
- 48. #jaws
ug3to
構成&フロー例
13年3月9日土曜日
- 49. #jaws
ug3to
13年3月9日土曜日
- 50. #jaws
ug3to
デモ
13年3月9日土曜日
- 51. #jaws
ug3to
デプロイ
SNS通知
SQS登録 Jenkins
& App Server
Selenium
テスト指示 テスト
SQSポーリング
Windows Server
Selenium Client
13年3月9日土曜日
- 52. #jaws
ug3to
本日のテーマ
開発環境としてのAWSを
た
真面目に考える
ありがとうございました。
後日の質問は、@dkfjまで
13年3月9日土曜日