awsを利用してdevとopsの間を考える

91
AWSを利用して Dev Ops の間を考える 2013/12/07 開発BAKUFU!!「アジャイル、RubyAWS三つ巴戦」 面白法人カヤック 2Fスペース Junichiro Ueno / @jun116

Upload: junichiro-ueno

Post on 22-May-2015

562 views

Category:

Technology


0 download

DESCRIPTION

開発BAKUFU!!「アジャイル、Ruby、AWS三つ巴戦」発表資料

TRANSCRIPT

Page 1: AWSを利用してDevとOpsの間を考える

AWSを利用してDevとOps

の間を考える2013/12/07

開発BAKUFU!!「アジャイル、Ruby、AWS三つ巴戦」

面白法人カヤック 2FスペースJunichiro Ueno / @jun116

Page 2: AWSを利用してDevとOpsの間を考える

http://devlove-kamakura.doorkeeper.jp/events/7226

Page 3: AWSを利用してDevとOpsの間を考える

Junichiro Ueno

上野 潤一郎 Community :  DevLOVE !

 Company :  クラスメソッド株式会社 AWSソリューション部 !

twitter : @jun116 facebook : junichiro.ueno

Page 4: AWSを利用してDevとOpsの間を考える
Page 5: AWSを利用してDevとOpsの間を考える

技術ブログ Developers.IO

!

http://dev.classmethod.jp/ !

AWSの情報も豊富

Page 6: AWSを利用してDevとOpsの間を考える

Devとして 開発時に考えること

Page 7: AWSを利用してDevとOpsの間を考える

計画 設計

技術 インフラ

Page 8: AWSを利用してDevとOpsの間を考える

計画 設計

技術 インフラ

Page 9: AWSを利用してDevとOpsの間を考える

AWS利用以前 インフラ = 箱

Page 10: AWSを利用してDevとOpsの間を考える

用意されたものを利用 場合によっては リリース環境不明

Page 11: AWSを利用してDevとOpsの間を考える

本番環境相当ではないステージング環境

• テスト • パフォーマンス調整

Page 12: AWSを利用してDevとOpsの間を考える

AWS利用 インフラ ≠ 箱

Page 13: AWSを利用してDevとOpsの間を考える

• EC2 • RDS • S3 • DynamoDB

• SQS • SES • SNS

Page 14: AWSを利用してDevとOpsの間を考える

サーバだけではない

Page 15: AWSを利用してDevとOpsの間を考える

Devとして AWSを利用して どんな環境を構築 するのかを考える

Page 16: AWSを利用してDevとOpsの間を考える

最初の視点は 開発工数を減らす

Page 17: AWSを利用してDevとOpsの間を考える

例えば • S3データの堅牢性と信頼性

• SES安価、高い信頼性

• SQSシンプル、拡張性、信頼性

Page 18: AWSを利用してDevとOpsの間を考える

信頼できるサービスに機能をまかせる (余分な開発を削減)

Page 19: AWSを利用してDevとOpsの間を考える

次の視点は 開発時の

コストを減らす

Page 20: AWSを利用してDevとOpsの間を考える

本番はRDSを想定 開発時は

ローカルDB

Page 21: AWSを利用してDevとOpsの間を考える

EC2 帰宅時にインスタン

スを落とす (出勤時に起動)

Page 22: AWSを利用してDevとOpsの間を考える

コストと逆だが 開発者1人毎に

• 専用インスタンス • 専用バケット

Page 23: AWSを利用してDevとOpsの間を考える

開発時に 運用環境を想定する

Page 24: AWSを利用してDevとOpsの間を考える
Page 25: AWSを利用してDevとOpsの間を考える

開発を意識 ↓

環境を意識 ↓

コストを意識 ↓

環境を修正

Page 26: AWSを利用してDevとOpsの間を考える

開発するものを どう公開するか

Page 27: AWSを利用してDevとOpsの間を考える

静的なサイト

Page 28: AWSを利用してDevとOpsの間を考える

Amazon EC2

• Apache • HTML • JS • CSS

Page 29: AWSを利用してDevとOpsの間を考える

構成 EC2  m1.small 使用量  100%/月

月額 $ 64.42

Page 30: AWSを利用してDevとOpsの間を考える

構成 EC2  t1.micro 使用量  100%/月

月額 $ 19.77 無料枠利用 $ 0.00

Page 31: AWSを利用してDevとOpsの間を考える

• HTML • JS • CSSAmazon S3

Page 32: AWSを利用してDevとOpsの間を考える

構成 S3  ストレージ 1GB !

月額 $ 0.10 無料枠利用 $ 0.00

Page 33: AWSを利用してDevとOpsの間を考える

開発したものは同じ デプロイ先は異なる

Page 34: AWSを利用してDevとOpsの間を考える

何が違う? • AWS利用料

Page 35: AWSを利用してDevとOpsの間を考える

EC2の場合 • 運用監視 • トラブル対応

Page 36: AWSを利用してDevとOpsの間を考える

S3の場合 • 特になし

※ 細かい考慮はせず

Page 37: AWSを利用してDevとOpsの間を考える

何が違う? • AWS利用料 • Ops側の運用費

Page 38: AWSを利用してDevとOpsの間を考える

サービスサイト • 大量アクセス数を意識

Page 39: AWSを利用してDevとOpsの間を考える

単純に構築

Page 40: AWSを利用してDevとOpsの間を考える

Amazon EC2 RDS DB Instance

Page 41: AWSを利用してDevとOpsの間を考える

大量アクセスゆえに • RDSの負荷 • リードレプリカを並べる

!

コスト増大

Page 42: AWSを利用してDevとOpsの間を考える

構成を変えてみる

Page 43: AWSを利用してDevとOpsの間を考える

Amazon EC2 DynamoDB

Page 44: AWSを利用してDevとOpsの間を考える

DynamoDB 設定したIOPSを超えた瞬間から 急激にパフォーマンスが落ちる → 書込IOPSは値段も高い 大量アクセスの書込に利用は 必ずしも向いているわけではない

Page 45: AWSを利用してDevとOpsの間を考える

Amazon EC2 DynamoDB

Amazon SQS

Amazon EC2

Page 46: AWSを利用してDevとOpsの間を考える

SQS キューの追加に制限がなく、 データロストがない(冗長構成) 低コストで利用可能 → 急激な負荷に耐えつつ   ある程度パフォーマンス保証 !

※ メッセージは重複します

Page 47: AWSを利用してDevとOpsの間を考える

Worker SQSからデータを取得し、 DynamoDBとRDSを更新 → データ取得量を調整が可能   瞬間ピークにも焦らなくて済む

Page 48: AWSを利用してDevとOpsの間を考える

RDSじゃないの?

Page 49: AWSを利用してDevとOpsの間を考える

DynamoDB 更新が速いのはメリットだが、 読込パフォーマンスの速さも抜群! → 読込IOPSは比較的安価

Page 50: AWSを利用してDevとOpsの間を考える

DynamoDBを データ読込に活用

Page 51: AWSを利用してDevとOpsの間を考える

参照系として利用 • RDSのリードレプリカを並べるより安価→ リードレプリカは起動も遅い

• パフォーマンスの調整も簡単→ IOPSを調整すれば良い

• なにより圧倒的な信頼性→ 分散型で強い整合性を持つ

Page 52: AWSを利用してDevとOpsの間を考える

RDSも併用可能 • 永続化させたいデータ • 検索させたいデータ

Page 53: AWSを利用してDevとOpsの間を考える

環境構築

Page 54: AWSを利用してDevとOpsの間を考える

Chef?

Page 55: AWSを利用してDevとOpsの間を考える

AWSなら CloudFormation

Page 56: AWSを利用してDevとOpsの間を考える

Stack単位で テンプレート管理

Page 57: AWSを利用してDevとOpsの間を考える

すべてテンプレートで管理 • 開発環境 • ステージング環境 • 本番環境

Page 58: AWSを利用してDevとOpsの間を考える

何度でも 環境構築可能

Page 59: AWSを利用してDevとOpsの間を考える

環境変更(update)も CloudFormation で行うのが良い!

Page 60: AWSを利用してDevとOpsの間を考える

なぜ !

今の環境を テンプレートから

読み取ることもできる

Page 61: AWSを利用してDevとOpsの間を考える

あくまで一例

Page 62: AWSを利用してDevとOpsの間を考える

AWSを利用 し始めた結果

Page 63: AWSを利用してDevとOpsの間を考える

開発の役割が 増えた!?

Page 64: AWSを利用してDevとOpsの間を考える

Dev • コスト意識 • 運用意識

Page 65: AWSを利用してDevとOpsの間を考える

開発時から 公開に向けて考える

Page 66: AWSを利用してDevとOpsの間を考える

それって 開発が運用も行う?

Page 67: AWSを利用してDevとOpsの間を考える

それでは開発は 回らなくなる!

Page 68: AWSを利用してDevとOpsの間を考える

だから 運用は運用に

Page 69: AWSを利用してDevとOpsの間を考える

だから 運用に必要なもの はなんだろう?

Page 70: AWSを利用してDevとOpsの間を考える

Dev から

Ops

Page 71: AWSを利用してDevとOpsの間を考える

SPOFはないよ

運用に必要なツール とかある?

トラブル時の対応方法

Page 72: AWSを利用してDevとOpsの間を考える

Ops から

Dev

Page 73: AWSを利用してDevとOpsの間を考える

どんな構成?

EC2が落ちると どうなる?

復旧方法は?

Page 74: AWSを利用してDevとOpsの間を考える

実際は 開発スケジュール

が・・・

Page 75: AWSを利用してDevとOpsの間を考える

だから

Page 76: AWSを利用してDevとOpsの間を考える

Dev !

     ← ここ !

Ops

Page 77: AWSを利用してDevとOpsの間を考える

環境構築をサポート • コストを意識した構築→ 環境改善

• 運用とのやりとり→ 開発の思い込みを解消

Page 78: AWSを利用してDevとOpsの間を考える

こういうポジションの存在が必要になるのではないか!

Page 79: AWSを利用してDevとOpsの間を考える

いままで !

開発したもの を提供する

Page 80: AWSを利用してDevとOpsの間を考える

これから !

運用環境を含め 開発・提供する

Page 81: AWSを利用してDevとOpsの間を考える

まとめ

Page 82: AWSを利用してDevとOpsの間を考える

インフラ = 箱 からの脱却

Page 83: AWSを利用してDevとOpsの間を考える

AWS アプリケーションサービス • SQS、SES、SNS を活用することで

信頼性、堅牢性を担保

Page 84: AWSを利用してDevとOpsの間を考える

最初の視点は 開発工数を減らす

Page 85: AWSを利用してDevとOpsの間を考える

次の視点は 開発時の

コストを減らす

Page 86: AWSを利用してDevとOpsの間を考える

さらに 開発時に

運用環境を想定する

Page 87: AWSを利用してDevとOpsの間を考える

運用時の コストも減らす

Page 88: AWSを利用してDevとOpsの間を考える

結果 Devは変わる

Opsも変わる(はず)

Page 89: AWSを利用してDevとOpsの間を考える

そんな組織 をサポートしていく

Page 90: AWSを利用してDevとOpsの間を考える

DevとOps の間から

(本当は間じゃないけど)

Page 91: AWSを利用してDevとOpsの間を考える

Thank you for listening! Lets us make new cloud modeling together!