AWSクラウドデザインパターン(CDP) - Eコマース編 -

48
AWSクラウドデザインパターン -Eコマース編-

description

 

Transcript of AWSクラウドデザインパターン(CDP) - Eコマース編 -

Page 1: AWSクラウドデザインパターン(CDP) - Eコマース編 -

AWSクラウドデザインパターン -Eコマース編-

Page 2: AWSクラウドデザインパターン(CDP) - Eコマース編 -

自己紹介

名前 玉川憲

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

ID @KenTamagawa

好きなもの イカとミスチル

好きなAWSサービス AWS DynamoDB

Page 3: AWSクラウドデザインパターン(CDP) - Eコマース編 -

やりたいこと

AWSクラウドを

より伝わりやすくしたい

既存ノウハウを伝えたい

(暗黙知→形式知化)

Page 4: AWSクラウドデザインパターン(CDP) - Eコマース編 -

そこで

AWSクラウドデザインパターン[beta]

(略して、CDP)

Page 5: AWSクラウドデザインパターン(CDP) - Eコマース編 -

AWS クラウドデザインパターンとは

AWSクラウドを使ったシステムアーキテクチャ設計を行う際に発生する、典型的な問題とそれに対する解決策・設計方法を、分かりやすく分類して、ノウハウとして利用できるように整理したものである。

www.facebook.com/awscdp

Page 6: AWSクラウドデザインパターン(CDP) - Eコマース編 -

AWS クラウドデザインパターンとは

AWSクラウドを使ったシステムアーキテクチャ設計を行う際に発生する、典型的な問題とそれに対する解決策・設計方法を、分かりやすく分類して、ノウハウとして利用できるように整理したものである。

http://aws.clouddesignpattern.org

Page 7: AWSクラウドデザインパターン(CDP) - Eコマース編 -

Wikiでノウハウを共有

Page 8: AWSクラウドデザインパターン(CDP) - Eコマース編 -

例: Clone Serverパターン

仮想 サーバ

Web Web

ロードバランサ

マシン イメージ

Web

①サーバ起動

仮想 ディスク

マスタ

②ディスクを同期

Page 9: AWSクラウドデザインパターン(CDP) - Eコマース編 -

CDPカテゴリ (as of 2012/03/03)

基本パターン Snapshot Stamp Scale Up Ondemand Disk 可用性を高める Multi-Server Multi-Datacenter Floating IP Deep Health Check 動的コンテンツを処理 Scale Out Clone Server NFS Sharding NFS Replica State Sharing URL Rewriting Rewrite Proxy Cache Proxy

静的コンテンツを処理 Web Storage Direct Hosting Private Distribution Cache Distribution Rename Distribution クラウドへデータをアップロード Write Proxy Storage Index Direct Object Upload リレーショナル・データベース DB Replication Read Replica Inmemory DB Cache Sharding Write

バッチ処理 Queuing Chain Priority Queue Job Observer Scheduled Autoscaling 運用保守 Bootstrap Cloud DI Stack Deployment Server Swapping Monitoring Integration Web Storage Archive ネットワーキング OnDemand NAT Backnet Functional Firewall Operational Firewall Multi Load Balancer WAF Proxy CloudHub

Page 10: AWSクラウドデザインパターン(CDP) - Eコマース編 -

Ninja of Three

CDP、誰が作ったの?

Page 11: AWSクラウドデザインパターン(CDP) - Eコマース編 -

Ninja of Three

Page 12: AWSクラウドデザインパターン(CDP) - Eコマース編 -

このシナリオの前のシナリオ

雲の写真を載せるブログサイト開始

はじめは個人的に開始

動画や過去画像集も公開し始める

まさかの大人気

まさかの海外展開

Page 13: AWSクラウドデザインパターン(CDP) - Eコマース編 -

デザイン推移

動画 人気

海外 最終

Page 14: AWSクラウドデザインパターン(CDP) - Eコマース編 -

このシナリオの背景

まさかの 雲グッズ販売サイト開始

Page 15: AWSクラウドデザインパターン(CDP) - Eコマース編 -

この実装シナリオの狙い

Eコマースサイトをとりあげ、

可用性

耐障害性

を高めるパターンを中心にAWSを使用した実装方法を解説

Page 16: AWSクラウドデザインパターン(CDP) - Eコマース編 -

利用環境・ソフトウェア

EC-CUBEバージョン 2.11.4

Amazon Linux (64bit)

PHPバージョン PHP 5.3.8

DBバージョン MySQL 5.1.52

Page 17: AWSクラウドデザインパターン(CDP) - Eコマース編 -

ec.cloudesignpattern.org

EC-CUBEバージョン 2.11.4

Amazon Linux (64bit)

PHPバージョン PHP 5.3.8

DBバージョン MySQL 5.1.52

Page 18: AWSクラウドデザインパターン(CDP) - Eコマース編 -

初期のデザイン

EC-CUBE Apache MySQL

Page 19: AWSクラウドデザインパターン(CDP) - Eコマース編 -

課題

課題: 利用ソフトのバージョンアップが必要

テスト環境でバージョンアップ、検証して、本番環境との入れ替えにFloating IPを利用

Page 20: AWSクラウドデザインパターン(CDP) - Eコマース編 -

Floating IPパターンの適用後

EC2

テスト 環境

④EIPを付け替える

EC2

本番 環境

EIP

Amazon Route 53 ec.clouddesignpattern.org

EC2 AMI

①AMIを 取得する

②テスト環境用の EC2インスタンスを 立ち上げる

③ソフトウェアをアップデートしテストを行う

EIP「46.51.xxx.xxx」

Page 21: AWSクラウドデザインパターン(CDP) - Eコマース編 -

課題

課題: サーバに障害が発生して、 速やかに復旧したい

以前取得したマシンイメージを元に仮想サーバを立てる

(壊れた)本番環境の最新データを持つディスクを移行して、復旧する

Page 22: AWSクラウドデザインパターン(CDP) - Eコマース編 -

Server Swappingパターンの適用後

仮想 サーバ

仮想 サーバ

サーバに障害

マシン イメージ

サーバ起動

仮想ディスク

データ

仮想ディスク

データ

Page 23: AWSクラウドデザインパターン(CDP) - Eコマース編 -

Server Swappingパターンの適用

仮想 サーバ

仮想 サーバ

サーバに障害

マシン イメージ

サーバ起動

仮想ディスク

データ

仮想ディスク

データ

緊急対応サーバで、EBSボリュームをマウントする # sudo mkdir /ebs # sudo mount /dev/sdf /ebs

「html」で新しくアタッチしたEBSボリュームを参照するようにシンボリックリンク作成 # sudo mv /var/www/html /var/www/html-org # sudo ln -s /ebs/var/www/html /var/www/html

MySQLのデータのディレクトリを退避させておき、新しくアタッチしたEBSボリュームを参照するようにシンボリックリンクを作成する # sudo mv /var/lib/mysql /var/lib/mysql-org # sudo ln -s /ebs/var/lib/mysql /var/lib/mysql

Page 24: AWSクラウドデザインパターン(CDP) - Eコマース編 -

課題

課題: Webサーバが落ちても、システム全体で稼働し続けるようにしたい

Multi-Serverパターンを適用し、Webサーバを冗長化する

Page 25: AWSクラウドデザインパターン(CDP) - Eコマース編 -

Multi-Serverパターンの適用後

EC2 インスタンス

冗長 構成

EC2 インスタンス

オリジ ナル

MySQL DB インスタンス

ロードバランサ

Page 26: AWSクラウドデザインパターン(CDP) - Eコマース編 -

Amazon RDS(MySQL)とは

2009年に登場した設定と運用が容易なクラウド上でのRDBMSサービス

Webコンソールから、設定済みでサイズ変更可能なDBインスタンスを、ものの数分で起動

AWSが自動バックアップ、パッチ更新を管理

レプリケーション、リードレプリカも可能

現時点で、MySQLとOracle DBが選択可能

Oracleの場合、時間単位の従量課金 と、既存ライセンス持込みをサポート

Page 27: AWSクラウドデザインパターン(CDP) - Eコマース編 -

RDSの作成

27

Page 28: AWSクラウドデザインパターン(CDP) - Eコマース編 -

Multi-Serverパターンの適用

EC2 インスタンス

冗長 構成

EC2 インスタンス

オリジ ナル

MySQL DB インスタンス

ロードバランサ

DBのデータをダンプする

$ mysqldump -u ユーザー名 -pパスワード データベース名 > backups/backup.sql

作成したRDSのDBインスタンスにデータをインポート $ mysql -u eccube_db_user -peccube --database=eccube_db --host=eccubedbins.xxxxxxxxxx.ap-northeast-1.rds.amazonaws.com < backups/backup.sql

EC-CUBEのデータベースへの接続情報を書き換え “config/config.php” define ('DB_SERVER', 'eccubedbins.xxxxxxxxxx.ap-northeast-1.rds.amazonaws.com');

Page 29: AWSクラウドデザインパターン(CDP) - Eコマース編 -

RDSのスナップショット取得

Page 30: AWSクラウドデザインパターン(CDP) - Eコマース編 -

RDSでScale Upパターン

Page 31: AWSクラウドデザインパターン(CDP) - Eコマース編 -

Multi-Serverパターンの適用後

EC2 インスタンス

冗長 構成

EC2 インスタンス

オリジ ナル

MySQL DB インスタンス

ロードバランサ

Page 32: AWSクラウドデザインパターン(CDP) - Eコマース編 -

ロードバランサの起動

Page 33: AWSクラウドデザインパターン(CDP) - Eコマース編 -

ロードバランサの起動

EC-CUBEでは、SSLをサポート。 ELBでも対処可能だが、今回はELBではSSLの処理はしないことに。

Page 34: AWSクラウドデザインパターン(CDP) - Eコマース編 -

ヘルスチェックの設定

Page 35: AWSクラウドデザインパターン(CDP) - Eコマース編 -

ELB配下にEC2を追加

AMIからEC2起動

ELB配下に追加

Page 36: AWSクラウドデザインパターン(CDP) - Eコマース編 -

Multi-Serverパターンの適用後

EC2 インスタン

冗長 構成

EC2 インスタン

オリジ ナル

MySQL DB インスタン

ロードバランサ サーバーわざと 停止させても動く??

Page 37: AWSクラウドデザインパターン(CDP) - Eコマース編 -

課題

課題: DB部分のSPOFを解消したい

DB Replicationパターンを適用し、 DBをマルチ構成に切り替える

Page 38: AWSクラウドデザインパターン(CDP) - Eコマース編 -

DB Replicationパターンの適用後

ゾーン1a

EC2 インスタンス

冗長 構成

EC2 インスタンス

オリジ ナル

ゾーン1b

同期

ロードバランサ

MySQL DB インスタンス

MySQL DB スタンバイ

Page 39: AWSクラウドデザインパターン(CDP) - Eコマース編 -

マルチAZに変更

Page 40: AWSクラウドデザインパターン(CDP) - Eコマース編 -

課題

課題: サーバレベルだけでなく、データセンタレベルの障害にも対応できるようにする

Multi-Datacenterパターンを適用し、 すべてのレイヤで冗長化を行う

Page 41: AWSクラウドデザインパターン(CDP) - Eコマース編 -

Multi-Datacenterパターンの適用後

EC2

インスタンス

冗長

構成

EC2

インスタンス

オリジ

ナル

ロードバランサ

同期

ゾーン1a ゾーン1b

MySQL DB インスタンス

MySQL DB スタンバイ

Page 42: AWSクラウドデザインパターン(CDP) - Eコマース編 -

デザイン推移

障害対応 障害対策

SPOF回避

最終

Page 43: AWSクラウドデザインパターン(CDP) - Eコマース編 -

クラウドアーキテクティング原則

• できるだけサービスを利用

• 机上実験よりも実証実験

• スモールスタートからスケールアウト

• 変化に対し全レイヤで対処

• 故障のための設計(Design For Failure)

• 最初だけでなく周期的なカイゼン

Page 44: AWSクラウドデザインパターン(CDP) - Eコマース編 -

その他 適用可能なパターン

Mutli-Regionパターン

Deep Health Checkパターン

Monitoring Integrationパターン

Stack Deploymentパターン

Page 45: AWSクラウドデザインパターン(CDP) - Eコマース編 -

Wikiで編集できます!

Page 46: AWSクラウドデザインパターン(CDP) - Eコマース編 -

今日のセッション

Page 47: AWSクラウドデザインパターン(CDP) - Eコマース編 -

ミッション:

新しいCDPを

追加してみよう

目標: Ninja of “Thousand”

Next Step

Page 48: AWSクラウドデザインパターン(CDP) - Eコマース編 -

ご清聴ありがとうございました @KenTamagawa

表千家