awsを利用してdevとopsの間を考える
DESCRIPTION
開発BAKUFU!!「アジャイル、Ruby、AWS三つ巴戦」発表資料TRANSCRIPT
AWSを利用してDevとOps
の間を考える2013/12/07
開発BAKUFU!!「アジャイル、Ruby、AWS三つ巴戦」
面白法人カヤック 2FスペースJunichiro Ueno / @jun116
http://devlove-kamakura.doorkeeper.jp/events/7226
Junichiro Ueno
上野 潤一郎 Community : DevLOVE !
Company : クラスメソッド株式会社 AWSソリューション部 !
twitter : @jun116 facebook : junichiro.ueno
Devとして 開発時に考えること
計画 設計
技術 インフラ
計画 設計
技術 インフラ
AWS利用以前 インフラ = 箱
用意されたものを利用 場合によっては リリース環境不明
本番環境相当ではないステージング環境
• テスト • パフォーマンス調整
AWS利用 インフラ ≠ 箱
• EC2 • RDS • S3 • DynamoDB
• SQS • SES • SNS
サーバだけではない
Devとして AWSを利用して どんな環境を構築 するのかを考える
最初の視点は 開発工数を減らす
例えば • S3データの堅牢性と信頼性
• SES安価、高い信頼性
• SQSシンプル、拡張性、信頼性
信頼できるサービスに機能をまかせる (余分な開発を削減)
次の視点は 開発時の
コストを減らす
本番はRDSを想定 開発時は
ローカルDB
EC2 帰宅時にインスタン
スを落とす (出勤時に起動)
コストと逆だが 開発者1人毎に
• 専用インスタンス • 専用バケット
開発時に 運用環境を想定する
開発を意識 ↓
環境を意識 ↓
コストを意識 ↓
環境を修正
開発するものを どう公開するか
静的なサイト
Amazon EC2
• Apache • HTML • JS • CSS
構成 EC2 m1.small 使用量 100%/月
月額 $ 64.42
構成 EC2 t1.micro 使用量 100%/月
月額 $ 19.77 無料枠利用 $ 0.00
• HTML • JS • CSSAmazon S3
構成 S3 ストレージ 1GB !
月額 $ 0.10 無料枠利用 $ 0.00
開発したものは同じ デプロイ先は異なる
何が違う? • AWS利用料
EC2の場合 • 運用監視 • トラブル対応
S3の場合 • 特になし
※ 細かい考慮はせず
何が違う? • AWS利用料 • Ops側の運用費
サービスサイト • 大量アクセス数を意識
単純に構築
Amazon EC2 RDS DB Instance
大量アクセスゆえに • RDSの負荷 • リードレプリカを並べる
!
コスト増大
構成を変えてみる
Amazon EC2 DynamoDB
DynamoDB 設定したIOPSを超えた瞬間から 急激にパフォーマンスが落ちる → 書込IOPSは値段も高い 大量アクセスの書込に利用は 必ずしも向いているわけではない
Amazon EC2 DynamoDB
Amazon SQS
Amazon EC2
SQS キューの追加に制限がなく、 データロストがない(冗長構成) 低コストで利用可能 → 急激な負荷に耐えつつ ある程度パフォーマンス保証 !
※ メッセージは重複します
Worker SQSからデータを取得し、 DynamoDBとRDSを更新 → データ取得量を調整が可能 瞬間ピークにも焦らなくて済む
RDSじゃないの?
DynamoDB 更新が速いのはメリットだが、 読込パフォーマンスの速さも抜群! → 読込IOPSは比較的安価
DynamoDBを データ読込に活用
参照系として利用 • RDSのリードレプリカを並べるより安価→ リードレプリカは起動も遅い
• パフォーマンスの調整も簡単→ IOPSを調整すれば良い
• なにより圧倒的な信頼性→ 分散型で強い整合性を持つ
RDSも併用可能 • 永続化させたいデータ • 検索させたいデータ
環境構築
Chef?
AWSなら CloudFormation
Stack単位で テンプレート管理
すべてテンプレートで管理 • 開発環境 • ステージング環境 • 本番環境
何度でも 環境構築可能
環境変更(update)も CloudFormation で行うのが良い!
なぜ !
今の環境を テンプレートから
読み取ることもできる
あくまで一例
AWSを利用 し始めた結果
開発の役割が 増えた!?
Dev • コスト意識 • 運用意識
開発時から 公開に向けて考える
それって 開発が運用も行う?
それでは開発は 回らなくなる!
だから 運用は運用に
だから 運用に必要なもの はなんだろう?
Dev から
Ops
SPOFはないよ
運用に必要なツール とかある?
トラブル時の対応方法
Ops から
Dev
どんな構成?
EC2が落ちると どうなる?
復旧方法は?
実際は 開発スケジュール
が・・・
だから
Dev !
← ここ !
Ops
環境構築をサポート • コストを意識した構築→ 環境改善
• 運用とのやりとり→ 開発の思い込みを解消
こういうポジションの存在が必要になるのではないか!
いままで !
開発したもの を提供する
これから !
運用環境を含め 開発・提供する
まとめ
インフラ = 箱 からの脱却
AWS アプリケーションサービス • SQS、SES、SNS を活用することで
信頼性、堅牢性を担保
最初の視点は 開発工数を減らす
次の視点は 開発時の
コストを減らす
さらに 開発時に
運用環境を想定する
運用時の コストも減らす
結果 Devは変わる
Opsも変わる(はず)
そんな組織 をサポートしていく
DevとOps の間から
(本当は間じゃないけど)
Thank you for listening! Lets us make new cloud modeling together!