AWS クラウドデザインパターン -E コマース編 -
自己紹介 名前 北迫清訓 ( きたさこきよのり ) 所属 アマゾンデータサービスジャパン株式会社ソリューションアーキテクト ID Facebook: Kiyonori Kitasako 好きなAWSサービス Amazon Glacier 好きなCDP Web Storage Archiveパターン
AWS クラウドデザインパターンとは... AWS クラウドを使ったシステムアーキテクチャ設計を行う際に発生する 典型的な問題とそれに対する解決策 設計方法を 分かりやすく分類して ノウハウとして利用できるように整理したもの
例えば... (Web Storage Archive) 解決したい課題サーバで大量に発生するログを一元管理したい クラウドでの解決容量無制限ウェブストレージを利用し キャパシティを気にすることなく格納可能 実装 EC2 上でローテートされたログを API 等のツールを利用し S3 に転送 利点ディスクスペース管理が不要になり 堅牢性の高いストレージでログを管理 注意点 AutoScale 時には 停止前に該当ログの退避の仕組みを実装する必要がある 構造
Web でノウハウを共有 WIKI http://aws.clouddesignpattern.org/index.php FACEBOOK https://www.facebook.com/awscdp
書籍でノウハウを共有 Amazon Web Services クラウドデザインパターン設計ガイド http://www.amazon.co.jp/dp/4822211967/
CDP カテゴリ (2012.09.13 現在 ) 基本 Snapshot Stamp Scale Up Ondemand Disk 可用性を向上 Multi-Server Multi-Datacenter Floating IP Deep Health Check 動的コンテンツを処理 Scale Out Clone Server NFS Sharing NFS Replica State Sharing URL Rewriting Rewrite Proxy Cache Proxy Scheduled Scale Out 静的コンテンツを処理 Web Storage Direct Hosting Private Distribution Cache Distribution Rename Distribution データをアップロード Write Proxy Storage Index Direct Object Upload リレーショナルデータベース DB Replication Read Replica In-memory DB Cache Sharding Write バッチ処理 Queuing Chain Priority Queue Job Observer Scheduled Autoscaling 運用保守 Bootstrap Cloud DI Stack Deployment Server Swapping Monitoring Integration Web Storage Archive Weighted Transition Hybrid Backup ネットワーク On-Demand NAT Backnet Functional Firewall Operational Firewall Multi Load Balancer WAF Proxy Cloud Hub
シナリオ E コマースサイト編
今回のシナリオをご紹介する前に... CDP 画像 動画配信編 (Movable Type) 雲の写真を載せるブログサイト開始 はじめは個人的に開始 動画や過去画像集も公開し始める まさかの大人気 まさかの海外展開
デザイン推移 動画 人気 海外 最終
今回のシナリオ まさかの
本実装シナリオの狙い E コマースサイトをとりあげ を高めるパターンを中心に AWS を活用した実装方法を解説
利用環境 ソフトウェア EC-CUBE (2.12.2) Amazon Linux (64bit) Apache (2.2.22) MySQL (5.5.25) PHP (5.3.15)
ec.cloudesignpattern.org
初期のデザイン Amazon Route 53 ec.clouddesignpattern.org EIP 本番環境 EC2 インスタンス
問題発生 ( その 1) 問題 : インストール製品にセキュリティホールが発覚! ソフトウェアのバージョンアップ作業が急務に アクション : Floating IP テスト環境でバージョンアップ!! 検証後 本番環境の IP アドレスをテスト環境に付け替え
Floating IP パターンの適用 Amazon Route 53 ec.clouddesignpattern.org EIP 54.248.xxx.xxx EIP 本番環境 EC2 テスト環境 EC2 EC2 AMI
Floating IP パターンの適用 利点 検証環境を必要な時だけ準備できる 検証環境をそのまま本番環境として利用できるため 2 重の作業もなく 本番 / 検証環境差異が派生しない 切り戻しも簡単 注意点 EIP の切換に通常数秒程度かかる
問題発生 ( その 2) 問題 : サーバに障害発生! 速やかにサーバを復旧したい アクション : Server Swapping 以前取得したマシンイメージから別サーバを起動 ( 壊れた ) 本番環境の最新データを持つディスクを移行して 復旧実施
Server Swapping パターンの適用 サーバに障害発生 EIP 仮想サーバ 仮想サーバ サーバ起動 データ 仮想ディスク データ 仮想ディスク マシンイメージ
Server Swapping パターンの適用 利点 代替環境の準備が瞬時にできる Disk の付け替えでデータ移行も容易 注意点 EBS の障害も考慮し スナップショットなどのバックアップも行うことを推奨
問題発生 ( その 3) 問題 : Web サーバが落ちても システム全体で稼働し続けるようにしたい アクション : Multi-Server Web サーバを冗長化し 単一障害点を削減
Multi-Server パターンの適用 Amazon Route 53 ec.clouddesignpattern.org ロードバランサ オリジナル EC2 インスタンス 冗長構成 EC2 インスタンス MySQL DB インスタンス
Amazon RDS(MySQL) とは 2009 年に登場した設定と運用が容易なクラウド上でのマネージド RDBMS サービス RDS の特徴 Web コンソールから 設定済みでサイズ変更可能な DB インスタンスを 数分で起動可能 AWS が自動バックアップ パッチ更新を管理 スケールアップ レプリケーション リードレプリカの作成も可能 現時点で MySQL, Oracle, SQL Server をサポート Oracle や SQL Server の場合 時間単位の従量課金と 既存ライセンス持込みをサポート
Amazon RDS の作成 AWS Management Console
Multi-Server パターンの適用 DB のデータをダンプする $ mysqldump -u ユーザー名 -p パスワードデータベース名 > backups/backup.sql 作成した RDS の DB インスタンスにデータをインポート $ mysql -u eccube_db_user -peccube -- database=eccube_db -- host=eccubedbins.xxxxxxxxxx.apnortheast-1.rds.amazonaws.com < backups/backup.sql EC-CUBE のデータベースへの接続情報を書き換え config/config.php define ('DB_SERVER', 'eccubedbins.xxxxxxxxxx.ap-northeast- 1.rds.amazonaws.com');
Multi-Server パターンの適用 Amazon Route 53 ec.clouddesignpattern.org ロードバランサ オリジナル EC2 インスタンス 冗長構成 EC2 インスタンス MySQL DB インスタンス S3 ストレージ
Amazon RDS のスナップショット取得 AWS Management Console
Multi-Server パターンの適用 Amazon Route 53 ec.clouddesignpattern.org ロードバランサ オリジナル EC2 インスタンス 複製 冗長構成 EC2 インスタンス MySQL DB インスタンス
ロードバランサの起動 AWS Management Console
ロードバランサの起動 EC-CUBE では SSL をサポート ELB でも対処可能だが 今回は ELB では SSL の処理はしないことに AWS Management Console
ELB 配下に Web サーバを追加 負荷分散させる Web サーバを確認 ELB 配下に Web サーバを追加 AWS Management Console
Multi-Server パターンの適用 Amazon Route 53 ec.clouddesignpattern.org ロードバランサ オリジナル EC2 インスタンス 複製 冗長構成 EC2 インスタンス MySQL DB インスタンス
Multi-Server パターンの適用 利点 AMI によるシステムイメージの流用と Elastic Load Balancing により 簡単に Web サーバの冗長化が可能 Amazon RDS の採用により DB の運用負担を大幅に削減 注意点 Web サーバ上の画像ファイル等の同期処理が必要となる場合がある
問題発生 ( その 4) 問題 : Web サーバを冗長化したことで DB サーバの性能が低下し不安定に アクション : Scale Up DB サーバのインスタンスサイズを変更
Scale Up パターンの適用 Amazon Route 53 ec.clouddesignpattern.org ロードバランサ オリジナル EC2 インスタンス 冗長構成 EC2 インスタンス MySQL DB インスタンス MySQL DB インスタンス
Amazon RDS で Scale Up AWS Management Console
Scale Up パターンの適用 利点 管理画面での設定だけで インスタンスサイズ D B サイズの変更が可能 アクセス状況を見ながら適時 適切な DB サイジングを選択することが可能 注意点 DB の再起動が発生するため 実施時間の調整が必要
問題発生 ( その 5) 問題 : DB の SPOF( 単一障害点 ) を解消する必要あり! アクション : DB Replication DB をマルチ構成に変更し 耐障害性を強化!
マルチ AZ に変更 AWS Management Console
DB Replication パターンの適用 Amazon Route 53 ec.clouddesignpattern.org ロードバランサ オリジナル EC2 インスタンス 冗長構成 EC2 インスタンス MySQL DB インスタンス MySQL DB スタンバイ
DB Replication パターンの適用 利点 管理画面での設定だけで マルチ AZ( フォールトレラント ) 構成をとることが可能 スタンバイ側で DB のバックアップが行われるようになり サービスへの影響がより軽減 注意点 DB のインスタンスコストが 2 倍になる RDS のフェイルオーバーに多少時間がかかる
問題発生 ( その 6) 問題 : 災害対策の一環としてデータセンターレベルでの BCP の検討が必要に! アクション : Multi-Datacenter 物理的に別のデータセンターを利用し すべてのレイヤで冗長化
Multi-Datacenter パターンの適用 Amazon Route 53 ec.clouddesignpattern.org ロードバランサ ゾーン 1a オリジナル EC2 インスタンス 冗長構成 ゾーン 1b EC2 インスタンス MySQL DB インスタンス MySQL DB スタンバイ
Multi-Datacenter パターンの適用 利点 他の AZ を利用することへの追加コストが発生しない DC レベルでの耐障害性構成を簡単に実現可能 注意点 AZ(DC) 間を跨いだ Web サーバと DB サーバ間の通信に少額の課金が発生
様々な対策を経て BCP 対策までもが簡単かつ安価に実現!
デザインパターンの推移 開始 復旧対応 可用性対応 BCP 対応 保守対応 障害対策 SPOF 回避
その他適用可能なパターン Mutli-Region パターン グローバル展開を見据えた BCP 対策 Deep Health Check パターン 全レイヤー串刺しチェックによる可用性の向上 Monitoring Integration パターン 運用プロセス向上のための監視ソフト環境導入 WAF Proxy パターン セキュリティ向上のための WAF(Web Application Firewall) の導入
まとめ デザインパターンを活用し システム規模に合わせた可用性を持つシステムを構築が可能に 低コストで耐障害性の高いシステムを簡単に構築することが可能に システムが拡大しても 運用者の負担を削減する仕組みづくりが可能に
まとめ ( 改善 革新 ) 改善 今までできていたことを より早く 簡単に 安く実現できる 革新 今までできなかったことが実現できる
CDP で AWS をもっと楽しく
ご清聴ありがとうございました FACEBhttps://www.facebook.com/awscdp