Upload
keisuke-nishitani
View
7.787
Download
11
Embed Size (px)
Citation preview
#devsumiA 19-A-5
プログラマに贈るクラウドとの上手な付き合い方
西谷圭介
アマゾンデータサービスジャパン株式会社
自己紹介
• 名前西谷 圭介
• 所属アマゾンデータサービスジャパンソリューションアーキテクト
• ソーシャル– @Keisuke69– https://www.facebook.com/keisuke69
• 主にウェブサービス、メディア、スタートアップのお客様担当の技術職です
• モバイルなどアプリケーション寄りなサービスを担当しています
初期投資が不要 実際の使用分のみ支払い
セルフサービスなインフラ
スケールアップ、ダウンが容易
ビジネススピードの改善
低額な利用価格
Deploy
今までできていたことを、より早く、簡単に、安く実現できる
今までできなかったことを実現できる
改善
革新
クラウドは
インフラエンジニア
のもの?
プログラマによるクラウドの活用
何が嬉しいの?
解放
今までできなかったことが可能
プログラマのコンテキストでコントロール
つまり全てを意のままに
Android iOS
Java NodeJS .NET
PHP Python Ruby
Javascriptin
Browser
クラウドならではのメリットを活かす
19
オンプレミス新しいインフラの構築は複雑かつ遅くなりがち
クラウドワンクリックで新しい
インフラを用意
新しいデプロイ環境を構築
新しいテスト環境を構築
新しい環境を海外に構築
1,000 サーバ追加
1,000 サーバ削除
必要 調査 評価
計画 設計 エンジニア
調達 契約 コミッション
デプロイ
• 指定時刻にCIサーバを増やし、必要なくなったら止める
21
負荷テスト
性能テスト
ユニットテスト
機能テスト
受け入れテスト
結合テスト
など…
ブルーグリーン
Webサーバー群(Amazon EC2)
データベースサーバ群(Amazon RDS)
ロードバランサー
v1.1 v1.1
v1.1 v1.1
v1.2
v1.2
v1.2
v1.2
モニタリング(CloudWatch)
Webサーバー群(Amazon EC2)
データベースサーバ群(Amazon RDS)
ロードバランサー
v1.1 v1.1
v1.1 v1.1
v1.2
v1.2
v1.2
v1.2
モニタリング(CloudWatch)
デプロイの後一定期間たって戻すことがないと判断できた時点で旧バージョン削除クラウドの特性を活かしたデプロイ
Amazon
Route
53
EC2
Instances
ELB
EC2
Instances
ELB
90% 10%
DynamoDB MySQL
RDS
Instance
ElastiCache
Cache
Node
一部のユーザだけに公開
全てAPIの組み合わせで可能
v1.1 v1.1
v1.1 v1.1
v1.1 v1.1
v1.1 v1.1
v1.2
v1.2
v1.2.1
v1.2.1
v1.2.2
v1.2.2
DNS(Amazon route 53)
Webサーバー群(Amazon EC2)
データベースサーバ群(Amazon RDS)
ロードバランサー
90% 5% 3% 2%
ブルーグリーンデプロイ
EC2
RDS
ELB
Availability Zone
Web
Availability Zone
RDS
EC2
WebWeb
1
1
ELB(Elastic Load Balancing)
・GUIで操作出来るL4のロードバランサ
・プラスアルファで便利な機能
1c
Amazon EC2
・一般的なLinux/Windowsサーバ
・プラスアルファで便利な機能
Amazon RDS
・一般的なMySQLまたはPostgreSQL
・プラスアルファで便利な機能
なぜコレがオススメか?
オススメ構成にしておけばELB + EC2 2台構成編
EC2
RDS
ELB
Availability Zone
Web
Availability Zone
RDS
EC2
WebWeb
EC2
RDS
ELB
Availability Zone
Web
Availability Zone
RDS
EC2
WebWeb
もう1台でサービスが継続できる!
EC2
RDS
ELB
Availability Zone
Web
Availability Zone
RDS
EC2
WebWeb
EC2
RDS
ELB
Availability Zone
Web
Availability Zone
RDS
Web
EC2
Web
EC2
Web
EC2
Web
EC2
RDS
ELB
Availability Zone
Web
Availability Zone
RDS
EC2
WebWeb
EC2
RDS
ELB
Availability Zone
Web
Availability Zone
RDS
Web
EC2
Web
EC2
Web
EC2
Web
WebサーバーのEC2を増せば大丈夫!
Web
AMI
Web
Web
AMI作成 AMIからEC2起動
Auto Scaling Group
EC2
Web
EC2
Web
ELB
Auto Scaling
CloudWatch
負荷状況を監視
Web Web
EC2 EC2
EC2を追加
ELBの振り分けに追加
EC2
RDS
ELB
Availability Zone
Web
Availability Zone
RDS
EC2
WebWeb
EC2
RDS
ELB
Availability Zone
Web
Availability Zone
RDS
Web
EC2
Web
EC2
Web
EC2
Web
複数台前提なアーキテクチャであれば、10台にするのも、50台にするのも、
やり方は同じ
オススメ構成にしておけばRDS 編
EC2
RDS
ELB
Availability Zone
Web
Availability ZoneRDS
EC2
WebWeb
EC2
RDS
ELB
Availability Zone
Web
Availability Zone
RDS
EC2
WebWeb
EC2
RDS
ELB
Availability Zone
Web
Availability ZoneRDS
EC2
WebWeb
EC2
RDS
ELB
Availability Zone
Web
Availability Zone
RDS
EC2
WebWeb
簡単にスペックを良いものにしたり、ストレージ容量を大きくしたりできる
SnapShot(自動/手動)
Availability Zone
Availability Zone
RDS RDS
同期レプリケーション
自動フェイルオーバー
ログ(5分間隔)
SnapShot(自動/手動)
Availability Zone
Availability Zone
RDS RDS
同期レプリケーション
自動フェイルオーバー
ログ(5分間隔)
データセンター間での冗長構成スナップショットとログからデータ復元
Availability Zone
Availability Zone
RDS RDS
非同期レプリケーション
Availability Zone
Availability Zone
RDS RDS
たくさんクエリ要求がきても大丈夫!
EC2
RDS
ELB
Availability Zone
Web
Availability Zone
RDS
EC2
WebWeb
イイのあります
AWS Elastic Beanstalk定番構成の構築/デプロイ
を自動化するサービス
AWS Elastic Beanstalk
• ELB + Web+(DB)の定番構成で利用
• Auto Scaling利用可能
• ログやアプリはS3に
AWS Elastic Beanstalk
• アプリケーションを簡単にデプロイ
• 複数環境を切り替え可能(ブルーグリーンデプロイ)
対応している構成と言語環境
Elastic Load
Balancing
Web Tier
deploy!WAR
Java Python PHP .NET Ruby nodeJS Docker
Amazon RDS
Auto scaling Group…
Auto scaling GroupQueue
AsyncTasks
Worker Tier
…
• ステート(状態)を持たない
スケールアウトが容易
疎結合
自動化
小さなリリースを高頻度で実行
11.6秒 1,079 10,000 30,000
AMAZON.COMにおけるデプロイ
11.6秒 1,079 10,000 30,000
AMAZON.COMにおけるデプロイ
1時間あたりの最高デプロイ回数
1回のデプロイで同時に変更をうける平均ホスト数
1回のデプロイで同時に変更をうける最高ホスト数
平日のデプロイ間隔
2-Tier Architecture
直接呼び出し
* EC2で同規模のサーバを立てる場合に比べ
3. 認証・認可・ FBアプリと連携
Cognito
DynamoDB
S3
1. HTTP(S)アクセス
2. HTMLとJSをレスポンス
JavaScriptSDK
4. データの読み書き
App with AWS Mobile
SDK
JavaScriptSDK
S3
1. HTTP(S)アクセス
2. HTMLとJSをレスポンス
Cognito Identity
3. 認証・認可・ FBやGoogleのIDでログイン
Cognito Sync
4. データの同期・ MobileSDK、ブラウザ間でデータ同期
5. データのPush/Pull
1. 認証・認可・ FBアプリと連携
Cognito
DynamoDBApp with AWS Mobile
SDK
2. 口コミの投稿・ 投稿内容とレーティング
4. 過去の全データを元に平均値の計算と結果のDynamoDBへの登録等
3. Lambda functionの起動
Lambda
Followers
4. メタデータをDynamoDBに登録- タイトル、コメント等
1. 認証・認可・ FBアプリと連携
6. Push通知- フレンドやフォロワーに通知
Cognito
Mobile Analytics
DynamoDB
S3
SNS7. 画像をポストしたことをAnalyticsに登録
3. 画像のリサイズ
2. S3への画像アップロード
5. 結果をSNSへ通知
App with AWS Mobile
SDK
Amazon Cognito
(AWS IAM / STS)
Java Python (boto)
PHP
.NET Ruby
iOS Android
JavaScript
Any SDK Authentication
JavaScript
Any Service
Amazon SNSCross-
platform Mobile Push
Internet
Apple APNS
Google GCM
Amazon ADM
Windows WNS and MPNS
Baidu CP
業界初!
Android Phones and Tablets
Apple iPhones and iPads
Kindle Fire Devices
Android Phones and Tablets in China
iOS
Windows Desktop and Windows Phone Devices
インフラの管理作業が不要
http://codezine.jp/article/detail/8446
Elastic Beanstalk OpsWorks CloudFormation
フレキシビリティ
導入の容易さ
モニタープロビジョン
デプロイ
テストビルドコーディング
Cloud
Watch
Cloud
Formati
on
モニタープロビジョン
デプロイ
テストビルドコーディング
Cloud
Watch
Cloud
Formati
on
Code
Deploy
Code
Commit
Code
Pipeline
• AWS Black Belt Tech Webinar 2015– 毎週水曜日18時から
– 申し込みサイトhttp://aws.amazon.com/jp/event_schedule/
• AWS クラウドサービス活用資料集– http://aws.amazon.com/jp/aws-jp-introduction/
• AWS SDK他– http://aws.amazon.com/jp/tools/
@awscloud_jp
検索
最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを日々更新しています!
もしくは
http://on.fb.me/1vR8yWm