89
#devsumiA 19-A-5 プログラマに贈る クラウドとの上手な付き合い方 西谷圭介 アマゾンデータサービスジャパン株式会社

プログラマに贈るクラウドとの上手な付き合い方

Embed Size (px)

Citation preview

Page 1: プログラマに贈るクラウドとの上手な付き合い方

#devsumiA 19-A-5

プログラマに贈るクラウドとの上手な付き合い方

西谷圭介

アマゾンデータサービスジャパン株式会社

Page 2: プログラマに贈るクラウドとの上手な付き合い方

自己紹介

• 名前西谷 圭介

• 所属アマゾンデータサービスジャパンソリューションアーキテクト

• ソーシャル– @Keisuke69– https://www.facebook.com/keisuke69

• 主にウェブサービス、メディア、スタートアップのお客様担当の技術職です

• モバイルなどアプリケーション寄りなサービスを担当しています

Page 3: プログラマに贈るクラウドとの上手な付き合い方

初期投資が不要 実際の使用分のみ支払い

セルフサービスなインフラ

スケールアップ、ダウンが容易

ビジネススピードの改善

低額な利用価格

Deploy

Page 4: プログラマに贈るクラウドとの上手な付き合い方

今までできていたことを、より早く、簡単に、安く実現できる

今までできなかったことを実現できる

改善

革新

Page 5: プログラマに贈るクラウドとの上手な付き合い方

クラウドは

インフラエンジニア

のもの?

Page 6: プログラマに贈るクラウドとの上手な付き合い方
Page 7: プログラマに贈るクラウドとの上手な付き合い方

プログラマによるクラウドの活用

Page 8: プログラマに贈るクラウドとの上手な付き合い方

何が嬉しいの?

Page 9: プログラマに贈るクラウドとの上手な付き合い方
Page 10: プログラマに贈るクラウドとの上手な付き合い方

解放

Page 11: プログラマに贈るクラウドとの上手な付き合い方
Page 12: プログラマに贈るクラウドとの上手な付き合い方

今までできなかったことが可能

Page 13: プログラマに贈るクラウドとの上手な付き合い方

プログラマのコンテキストでコントロール

Page 14: プログラマに贈るクラウドとの上手な付き合い方

つまり全てを意のままに

Page 15: プログラマに贈るクラウドとの上手な付き合い方

Android iOS

Java NodeJS .NET

PHP Python Ruby

Javascriptin

Browser

Page 16: プログラマに贈るクラウドとの上手な付き合い方
Page 17: プログラマに贈るクラウドとの上手な付き合い方
Page 18: プログラマに贈るクラウドとの上手な付き合い方

クラウドならではのメリットを活かす

Page 19: プログラマに贈るクラウドとの上手な付き合い方

19

オンプレミス新しいインフラの構築は複雑かつ遅くなりがち

クラウドワンクリックで新しい

インフラを用意

新しいデプロイ環境を構築

新しいテスト環境を構築

新しい環境を海外に構築

1,000 サーバ追加

1,000 サーバ削除

必要 調査 評価

計画 設計 エンジニア

調達 契約 コミッション

デプロイ

Page 20: プログラマに贈るクラウドとの上手な付き合い方
Page 21: プログラマに贈るクラウドとの上手な付き合い方

• 指定時刻にCIサーバを増やし、必要なくなったら止める

21

負荷テスト

性能テスト

ユニットテスト

機能テスト

受け入れテスト

結合テスト

など…

Page 22: プログラマに贈るクラウドとの上手な付き合い方

ブルーグリーン

Page 23: プログラマに贈るクラウドとの上手な付き合い方

Webサーバー群(Amazon EC2)

データベースサーバ群(Amazon RDS)

ロードバランサー

v1.1 v1.1

v1.1 v1.1

v1.2

v1.2

v1.2

v1.2

モニタリング(CloudWatch)

Page 24: プログラマに贈るクラウドとの上手な付き合い方

Webサーバー群(Amazon EC2)

データベースサーバ群(Amazon RDS)

ロードバランサー

v1.1 v1.1

v1.1 v1.1

v1.2

v1.2

v1.2

v1.2

モニタリング(CloudWatch)

デプロイの後一定期間たって戻すことがないと判断できた時点で旧バージョン削除クラウドの特性を活かしたデプロイ

Page 25: プログラマに贈るクラウドとの上手な付き合い方

Amazon

Route

53

EC2

Instances

ELB

EC2

Instances

ELB

90% 10%

DynamoDB MySQL

RDS

Instance

ElastiCache

Cache

Node

一部のユーザだけに公開

全てAPIの組み合わせで可能

Page 26: プログラマに贈るクラウドとの上手な付き合い方

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%

ブルーグリーンデプロイ

Page 27: プログラマに贈るクラウドとの上手な付き合い方
Page 28: プログラマに贈るクラウドとの上手な付き合い方

EC2

RDS

ELB

Availability Zone

Web

Availability Zone

RDS

EC2

WebWeb

Page 29: プログラマに贈るクラウドとの上手な付き合い方

1

1

ELB(Elastic Load Balancing)

・GUIで操作出来るL4のロードバランサ

・プラスアルファで便利な機能

1c

Amazon EC2

・一般的なLinux/Windowsサーバ

・プラスアルファで便利な機能

Amazon RDS

・一般的なMySQLまたはPostgreSQL

・プラスアルファで便利な機能

Page 30: プログラマに贈るクラウドとの上手な付き合い方

なぜコレがオススメか?

Page 31: プログラマに贈るクラウドとの上手な付き合い方

オススメ構成にしておけばELB + EC2 2台構成編

Page 32: プログラマに贈るクラウドとの上手な付き合い方

EC2

RDS

ELB

Availability Zone

Web

Availability Zone

RDS

EC2

WebWeb

Page 33: プログラマに贈るクラウドとの上手な付き合い方

EC2

RDS

ELB

Availability Zone

Web

Availability Zone

RDS

EC2

WebWeb

もう1台でサービスが継続できる!

Page 34: プログラマに贈るクラウドとの上手な付き合い方

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

Page 35: プログラマに贈るクラウドとの上手な付き合い方

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を増せば大丈夫!

Page 36: プログラマに贈るクラウドとの上手な付き合い方

Web

AMI

Web

Web

AMI作成 AMIからEC2起動

Page 37: プログラマに贈るクラウドとの上手な付き合い方

Auto Scaling Group

EC2

Web

EC2

Web

ELB

Auto Scaling

CloudWatch

負荷状況を監視

Web Web

EC2 EC2

EC2を追加

ELBの振り分けに追加

Page 38: プログラマに贈るクラウドとの上手な付き合い方

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台にするのも、

やり方は同じ

Page 39: プログラマに贈るクラウドとの上手な付き合い方

オススメ構成にしておけばRDS 編

Page 40: プログラマに贈るクラウドとの上手な付き合い方

EC2

RDS

ELB

Availability Zone

Web

Availability ZoneRDS

EC2

WebWeb

EC2

RDS

ELB

Availability Zone

Web

Availability Zone

RDS

EC2

WebWeb

Page 41: プログラマに贈るクラウドとの上手な付き合い方

EC2

RDS

ELB

Availability Zone

Web

Availability ZoneRDS

EC2

WebWeb

EC2

RDS

ELB

Availability Zone

Web

Availability Zone

RDS

EC2

WebWeb

簡単にスペックを良いものにしたり、ストレージ容量を大きくしたりできる

Page 42: プログラマに贈るクラウドとの上手な付き合い方

SnapShot(自動/手動)

Availability Zone

Availability Zone

RDS RDS

同期レプリケーション

自動フェイルオーバー

ログ(5分間隔)

Page 43: プログラマに贈るクラウドとの上手な付き合い方

SnapShot(自動/手動)

Availability Zone

Availability Zone

RDS RDS

同期レプリケーション

自動フェイルオーバー

ログ(5分間隔)

データセンター間での冗長構成スナップショットとログからデータ復元

Page 44: プログラマに贈るクラウドとの上手な付き合い方

Availability Zone

Availability Zone

RDS RDS

非同期レプリケーション

Page 45: プログラマに贈るクラウドとの上手な付き合い方

Availability Zone

Availability Zone

RDS RDS

たくさんクエリ要求がきても大丈夫!

Page 46: プログラマに贈るクラウドとの上手な付き合い方

EC2

RDS

ELB

Availability Zone

Web

Availability Zone

RDS

EC2

WebWeb

Page 47: プログラマに贈るクラウドとの上手な付き合い方
Page 48: プログラマに贈るクラウドとの上手な付き合い方

イイのあります

Page 49: プログラマに贈るクラウドとの上手な付き合い方
Page 50: プログラマに贈るクラウドとの上手な付き合い方

AWS Elastic Beanstalk定番構成の構築/デプロイ

を自動化するサービス

Page 51: プログラマに贈るクラウドとの上手な付き合い方

AWS Elastic Beanstalk

• ELB + Web+(DB)の定番構成で利用

• Auto Scaling利用可能

• ログやアプリはS3に

Page 52: プログラマに贈るクラウドとの上手な付き合い方

AWS Elastic Beanstalk

• アプリケーションを簡単にデプロイ

• 複数環境を切り替え可能(ブルーグリーンデプロイ)

Page 53: プログラマに贈るクラウドとの上手な付き合い方

対応している構成と言語環境

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

Page 54: プログラマに贈るクラウドとの上手な付き合い方
Page 55: プログラマに贈るクラウドとの上手な付き合い方
Page 56: プログラマに贈るクラウドとの上手な付き合い方

• ステート(状態)を持たない

スケールアウトが容易

Page 57: プログラマに贈るクラウドとの上手な付き合い方
Page 58: プログラマに贈るクラウドとの上手な付き合い方

疎結合

Page 59: プログラマに贈るクラウドとの上手な付き合い方

自動化

小さなリリースを高頻度で実行

Page 60: プログラマに贈るクラウドとの上手な付き合い方

11.6秒 1,079 10,000 30,000

AMAZON.COMにおけるデプロイ

Page 61: プログラマに贈るクラウドとの上手な付き合い方

11.6秒 1,079 10,000 30,000

AMAZON.COMにおけるデプロイ

1時間あたりの最高デプロイ回数

1回のデプロイで同時に変更をうける平均ホスト数

1回のデプロイで同時に変更をうける最高ホスト数

平日のデプロイ間隔

Page 62: プログラマに贈るクラウドとの上手な付き合い方
Page 63: プログラマに贈るクラウドとの上手な付き合い方
Page 64: プログラマに贈るクラウドとの上手な付き合い方
Page 65: プログラマに贈るクラウドとの上手な付き合い方
Page 66: プログラマに贈るクラウドとの上手な付き合い方

2-Tier Architecture

Page 67: プログラマに贈るクラウドとの上手な付き合い方

直接呼び出し

Page 68: プログラマに贈るクラウドとの上手な付き合い方

* EC2で同規模のサーバを立てる場合に比べ

Page 69: プログラマに贈るクラウドとの上手な付き合い方
Page 70: プログラマに贈るクラウドとの上手な付き合い方

3. 認証・認可・ FBアプリと連携

Cognito

DynamoDB

S3

1. HTTP(S)アクセス

2. HTMLとJSをレスポンス

JavaScriptSDK

4. データの読み書き

Page 71: プログラマに贈るクラウドとの上手な付き合い方
Page 72: プログラマに贈るクラウドとの上手な付き合い方

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

Page 73: プログラマに贈るクラウドとの上手な付き合い方
Page 74: プログラマに贈るクラウドとの上手な付き合い方

1. 認証・認可・ FBアプリと連携

Cognito

DynamoDBApp with AWS Mobile

SDK

2. 口コミの投稿・ 投稿内容とレーティング

4. 過去の全データを元に平均値の計算と結果のDynamoDBへの登録等

3. Lambda functionの起動

Lambda

Page 75: プログラマに贈るクラウドとの上手な付き合い方
Page 76: プログラマに贈るクラウドとの上手な付き合い方

Followers

4. メタデータをDynamoDBに登録- タイトル、コメント等

1. 認証・認可・ FBアプリと連携

6. Push通知- フレンドやフォロワーに通知

Cognito

Mobile Analytics

DynamoDB

S3

SNS7. 画像をポストしたことをAnalyticsに登録

3. 画像のリサイズ

2. S3への画像アップロード

5. 結果をSNSへ通知

App with AWS Mobile

SDK

Page 77: プログラマに贈るクラウドとの上手な付き合い方
Page 78: プログラマに贈るクラウドとの上手な付き合い方

Amazon Cognito

(AWS IAM / STS)

Java Python (boto)

PHP

.NET Ruby

iOS Android

JavaScript

Any SDK Authentication

JavaScript

Any Service

Page 79: プログラマに贈るクラウドとの上手な付き合い方

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

Page 80: プログラマに贈るクラウドとの上手な付き合い方
Page 81: プログラマに贈るクラウドとの上手な付き合い方

インフラの管理作業が不要

Page 82: プログラマに贈るクラウドとの上手な付き合い方

http://codezine.jp/article/detail/8446

Page 83: プログラマに贈るクラウドとの上手な付き合い方
Page 84: プログラマに贈るクラウドとの上手な付き合い方

Elastic Beanstalk OpsWorks CloudFormation

フレキシビリティ

導入の容易さ

Page 85: プログラマに贈るクラウドとの上手な付き合い方
Page 86: プログラマに贈るクラウドとの上手な付き合い方

モニタープロビジョン

デプロイ

テストビルドコーディング

Cloud

Watch

Cloud

Formati

on

Page 87: プログラマに贈るクラウドとの上手な付き合い方

モニタープロビジョン

デプロイ

テストビルドコーディング

Cloud

Watch

Cloud

Formati

on

Code

Deploy

Code

Commit

Code

Pipeline

Page 88: プログラマに贈るクラウドとの上手な付き合い方

• 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/

Page 89: プログラマに贈るクラウドとの上手な付き合い方

@awscloud_jp

検索

最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを日々更新しています!

もしくは

http://on.fb.me/1vR8yWm