Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
【初心者向けWebinar】
スケーラブルWebアプリケーションの構築
2015/02/24
アマゾン データ サービス ジャパン株式会社
ソリューションアーキテクト 舟崎健治
初心者向けWebinar へようこそ!
• 参加者は、自動的にミュートになっています
• 質問を投げることができます!
– 最後のQ&Aの時間で、できるだけ回答させて頂きます
– 書き込んだ質問は、主催者にしか見えません
• Twitterのハ...
初心者向けWebinarのご紹介
• AWSについてこれから学ぶ方向けのソリューション
カットの技術Webinarです。
• 過去のWebinar資料
– AWSクラウドサービス活用資料集ページにて公開
http://aws.amazon.co...
Introduction
• 今回のAWS初心者向けWebinarでは、WordPressをサ
ンプルとして、どのようにスケーラブルWebアプリケー
ションをAWS上で構築するか?をご紹介します。
• WordPress以外のWebアプリケーシ...
なぜスケーラブルなWebアプリケーションを構築する
と良いのか?
• サイト立ち上げ当初はスモールスタートが可能
• ユーザー数の増加、ビジネスの成長に応じて柔軟にリ
ソース追加が可能
立ち上げ当初
Web Web Web Web Web We...
WordPress
• オープンソースのブログツールであり、CMS(コンテン
ツ管理システム)
• WordPressの初期バージョンは2003年にリリースされ
ている。
• 当初は、現在の伸縮自在でスケーラブルなクラウドイン
フラストラクチャ...
アジェンダ
• AWS関連サービスのご紹介
• WordPress 1台構成
• WordPress 複数台構成
• まとめ
アジェンダ
• AWS関連サービスのご紹介
• WordPress 1台構成
• WordPress 複数台構成
• まとめ
AWSアカウント登録について
• Webフォーム上で数分程度の登録作業をするだけで、すぐさまAWS
を利用可能
• AWSアカウント作成の流れ
http://aws.amazon.com/jp/register-flow/
• AWSアカウント...
AWSマネージメントコンソールにログイン
• アカウント登録後にAWSのTopページへアクセス
http://aws.amazon.com/jp/
• 登録したメールアドレス、パスワードでログインする
ログインが成功すると以下のサービスの一覧画面が表示
される
今回紹介する
サービス
Amazon EC2(Elastic Compute Cloud)
1任意のゾーンに
分散配置可能
リージョン
アベイラビリティ
ゾーン A
EC2
アベイラビリティ
ゾーン B
EC2
EC2
• 数分で起動可能な仮想サーバ
• 1時間ごとの...
Amazon Machine Image(AMI)
• ソフトウェア構成(オペレーティングシステム、アプリ
ケーションサーバ、アプリケーションなど)を記録した
テンプレート
• AMIから、EC2インスタンス(仮想サーバ)を起動
AMI
ins...
Amazon EBS(Elastic Block Store)ボリューム
EC2インスタンスに仮想外付けされた
ブロックレベルのストレージ
サイズは1GB単位で~1TBまで
(近い将来16TBまで利用可能になる予定)
サイズ/期間/IOで課金さ...
Amazon EBS スナップショット
Amazon S3に保存された EBSボリュームの
ポイントインタイムバックアップコピー
EBSスナップショットは増分バックアップ
(最後に作成されてから、変更のあるブ
ロックのみ保存される)
EBSスナ...
Amazon S3(Simple Storage Service)
 低コスト
 アップロード無料
 格納料金 1GB/月3.3円 (100円換算、2014/11/04時点)
 耐久性
 99.999999999%の耐久性
 3か所...
~ AWSクラウド上のロードバランシングサービス ~
ELBで実現できるシステム
 スケーラブル : 複数のEC2インスタンスに負荷分散
 高い可用性 : 複数のアベイラビリティゾーンにある複数のEC2インスタンス
の中から正常なEC2イン...
Auto Scaling
• トリガーを受けてEC2インスタンス数を自動的に増減させる仕組み
– パフォーマンス維持やキャパシティ増強、コスト削減のために利用可能
Auto scaling GroupCloudWatch
Alarm
Auto ...
Amazon RDS(Relational Database Service)
• マネージドRDBMSサービス
• バックアップやフェイルオーバーに対応したDBを数クリッ
クで利用可能
• サポートRDBMS
Amazon ElastiCache
• 構築
– キャッシュクラスタを数クリックで起動
– EC2、RDSと同様、初期費用無し、時間単位の従量
課金
• 移行
– 2種類のエンジン(memcached, redis)をサポート
– 既存アプリ...
Amazon DynamoDB
• NoSQL as a Service
• 超高速・予測可能な一貫したパフォーマンス
• シームレスなスケーラビリティ、そして低コスト
運用管理必要なし
低レイテンシ、SSD
プロビジョンスループット
無限に使...
Amazon CloudFront
• ユーザからのアクセスを、最も近いエッジサーバに誘導するこ
とで、ユーザへの配信を高速化
• エッジサーバでは、コンテンツのキャッシングを行い、オリジ
ンに負荷をかけず効率的に配信
レスポンス向上 負荷軽減...
Amazon Route 53
• 拡張性と可用性に優れたDNS権威サービス
• ヘルスチェック機能を持つ
Users DNS
Resolver
Route 53
www.example.com
はどこ?
知らないので権威
サーバに尋ねます
1...
AWS SDK/CLI
EC2
起動、停止
S3
アップロード
ダウンロード
Management
Console (Web)
ユーザ名・
パスワード
AWS管理者・
オペレータ
各言語ごとの
SDK アクセスキー・
シークレットキー
AWS ...
アジェンダ
• AWS関連サービスのご紹介
• WordPress 1台構成
• WordPress 複数台構成
• まとめ
WordPress 1台構成
• 以下の要件においては、WordPress 1台構成が最適な場
合がある
– 高可用性が不要
– トラフィックの量が少ない(サイト立ち上げ当初など)
– 低コストで構築したい
Internet
WordPress...
WordPress 1台構成の構築手順
• WordPress用EC2インスタンスの起動
– AMIの選択
– インスタンスタイプの選択
– セキュリティグループの選択
※仮想サーバを起動する方法の動画(日本語字幕)
https://www.y...
AMIの選択
←Amazon Linux, CentOS, Redhat
Enterprise Linux, SUSE Linuxなどの
さまざまなAMIを選択可能
AWS MarketplaceからWordPressがプ
リインストール済みの...
インスタンスタイプとは
• CPU、メモリ、ストレージ、ネットワークキャパシティ
の組み合わせ
• さまざまなインスタンスタイプから選択することが可能
WordPressに最適なインスタンスタイプの選択
• 初期のインスタンスタイプ
– T2インスタンス
• 新規プロジェクトにて、最適なインスタンスタイプを見積もる必要がある場合、
コスト効率の良い選択肢
• トラフィックの量が少ないWebサイ...
セキュリティグループの選択
• インスタンスへのトラフィック
を制限するSemi-statefulな
ファイアーウォール機能
• デフォルトでは全トラフィック
が閉じており、外からアクセス
できない
• 必要な受信アクセスに対してア
クセスルー...
EC2インスタンスの起動およびSSHログイン
• EC2インスタンスを起動して、SSHでログインすると、
root権限を使って、さまざまなソフトウェアコンポーネ
ントをインストール可能
• Elastic IPをEC2インスタンスに割り当てると...
WordPressのインストール方法の例
• SSHログイン後、以下を実行
sudo yum install httpd24 php55 php55-mysqlnd mysql-server
wget http://ja.wordpress.o...
WordPressの設定
• WordPress用のEC2インスタンスへWebブラウザでア
クセス
障害からの復旧
• 従来のオンプレミス環境よりも早くインスタンス障害の復旧
が可能
– 再配置用のインスタンスをすぐさま起動可能
• WordPressインスタンス復旧時に考慮すべきコンポーネント
– OSやサービスのインストール・構成(Apa...
WordPress 1台構成の場合
• Amazon EBSボリュームのデータは複数のサー
バにレプリケーションされており、通常のハー
ドディスクに比べてAFR(年間故障率)が低い。
• が、常にバックアップを取得することを推奨
– オペレーシ...
バックアップについて
• EBSスナップショット
– EBSボリュームのポイントインタイムのバック
アップコピーをS3内に保存する機能
– 変更のあったブロックのみの差分を保存。その
分のみ課金される
– コスト効率の高いバックアップ方法
• ...
IPアドレスとDNS
• Elastic IPを使うことで、EC2インスタンスのPublic IPを固定するこ
とが可能
• EC2インスタンスの障害時には、Elastic IPを置き換え用の新規EC2
インスタンスに割り当てることで、同じPu...
パフォーマンスとコスト効率の改善
• 1台構成においても、垂直方向のスケーリング(スケー
ルアップ)により、ある程度まではパフォーマンスを向
上させることが可能
• スケールアップ以外の方法でも、アプリケーション側の
修正をいくつか行うことで簡...
WordPressのW3 Total Cacheプラグインを使ったパ
フォーマンスとコスト効率の改善方法の例
• 静的コンテンツをAmazon S3から配信
• Amazon CloudFrontでコンテンツキャッシング
• データベースキャッ...
静的コンテンツをAmazon S3から配信
• WordPressウェブサイトは、静的および動的コンテンツ
を配信する必要がある。
– 静的コンテンツ
• 画像、JavaScript、スタイルシートなど
– 動的コンテンツ
• サーバサイドでW...
Amazon S3からの静的コンテンツ配信について
• S3にファイルをアップロードすると、ファイルごとにURIが割り当て
られる。
– https://s3-ap-northeast-1.amazonaws.com/<バケット名>/<ファイル...
静的コンテンツをS3から配信する形に変更するには?
• 変更前 • 変更後
Users
Web
サーバ
<img src=“/img/product.png” /> <img src=
“http://static.example.com/im...
Amazon CloudFrontのマルチオリジン機能
• 単一のCloudFrontディストリビューションから、複数
のオリジン(コンテンツのソース)を参照可能
– CloudFrontのCache Behaviorの設定にて、パスごとに参照...
データベースキャッシング
• WordPressのような参照が多いアプリケーションの場合、
データベースキャッシングにより遅延を減らし、スルー
プットを増加させることが可能
• 頻繁にアクセスされるデータはメモリの中に保持して、
メモリからデー...
Web+DBアプリとメモリキャッシュ
• データ参照時の操作
キャッシュ
App RDBMS
■キーを検索軸に属性データがキャッシュにあるか?
取得して完了
②なければDBへクエリ
クエリ結果を取得
DBにクエリを実行した場合、
クエリ結果をキ...
Web+DBアプリとメモリキャッシュ
• 更新時の操作
App
常にDBにInsert / Update
繰り返し
その結果をオブジェクト書き込み
キャッシュ
RDBMS
⇒(Point)キャッシュには最新結果が反映される
■キーを検索軸に属性...
WordPressとMemcachedの連携
• W3 Total Cacheプラグインを使うことで、
Memcachedと連携が可能
• 以下2パターン
– WordPress Webサーバ上にMemcachedをインストール
(別のEC2イ...
アジェンダ
• AWS関連サービスのご紹介
• WordPress 1台構成
• WordPress 複数台構成
• まとめ
複数台による構成について
• 1台構成で要件を満たせる場合はある。が、より高い可
用性やパフォーマンスを実現するには、以下のように変
更できると良い。
– Webとデータベースのサーバを分ける
– Web・データベースサーバそれぞれの可用性とス...
Web層とデータベース層を隔離する
• 隔離するメリット
– 各層でのキャパシティの増加が容易
– 各層の構成の特性に応じた調整が可能
• WebサーバとDBサーバのCPU,メモリ,ストレージ,ネッ
トワークキャパシティの要件は異なる
用途 最...
データベースの移行
• MySQL DB移行先の例
– EC2インスタンス上に構築したMySQL DB
– Amazon RDS MySQL (推奨)
• WordPress Webサーバの設定変更
– wp-config.phpにて、ローカル...
Amazon RDSを使うメリット
• DBの管理負荷の低減
– 自動パッチ適用
– 自動バックアップ
– ポイントインタイムリカバリ
– Multi-AZ構成による自動フェイルオーバー(後述)
– 1 APIコールでDBのコンピュートリソース...
RDSおよびElastiCacheへ接続する構成
データベース層の可用性
• RDS Multi-AZ
– DBインスタンスの可用性・冗長性を実現可能
– RDS Multi-AZを有効にすると、プライマリDBインスタンスに加えて、自動的
にスタンバイDBインスタンスを異なるAZに作成する
–...
RDSおよびElastiCacheが複数AZにまたがった構成
Web層の高可用性
• 異なるAZに複数のWebサーバを配置可能
• 複数のWebサーバに対して、Amazon ELBで負荷分散させる
• ELBはリージョン内の異なるAZに対して負荷分散が可能
• ELBのヘルスチェック機能により、インスタン...
Web層のスケーラビリティ
• AWSプラットフォームでは、Webサーバを起動させた分だけの
支払いのみ。必要なときに起動可能
– 多めに起動しておく必要がない。
• Auto Scalingにより、EC2インスタンスの自動増減が可能
– Au...
アクセス急増に向けたELBの対策
• ELB自体は負荷に応じて自動的にスケールするが、TV紹
介などで瞬間的にアクセスが急増する場合、ELBの内部
的なスケーリングが間に合わず、HTTP 503レスポンス
を返すことがある。
• 対策として、事...
ステートレスなアーキテクチャ
• 複数台のWebサーバによるAuto Scaling構成を活用す
るには、Web層がステートレスでなければならない
• Auto Scalingにより自動で既存のWebサーバが
terminateされることがある...
Webアプリケーションでよく使われるデータの種類と
その格納先
• ユーザーセッション
– WordPress CoreはセッションをCookieで管理
– PHPセッションを活用するWordPressプラグインをインストールしている場合は、
...
WebサーバがAuto Scalingする構成
データベース層のスケーリング
• より大きなインスタンスタイプへ変更可能
• Provisioned IOPSによりDisk IOパフォーマンスを向上可能
• WordPressは参照が非常に多いため、MySQLレプリケー
ションあるいはRDS...
RDSリードレプリカに読み込みアクセスをする構成
アジェンダ
• AWS関連サービスのご紹介
• WordPress 1台構成
• WordPress 複数台構成
• まとめ
まとめ
• AWSではスケーラブルな構成を実現するために、さま
ざまなオプションが提供されている
• 1台構成ででも利用開始可能
• より高い可用性とスケーラビリティが求められる場合は
複数台構成を推奨
• WordPressのように、アプリケ...
Q&A
参照リンク
• AWSアカウント作成の流れ
– http://aws.amazon.com/jp/register-flow/
• WordPress: Best Practice on AWS
– http://d0.awsstatic.co...
AWSをより深く理解したい方向けに
クラスルームトレーニングを提供しています。
詳細: aws.amazon.com/training 認定資格試験
公式Twitter/Facebook
AWSの最新情報をお届けします
@awscloud_jp
検索
最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを
日々更新しています!
もしくは
http://on.fb.me/1vR...
AWS初心者向けWebinar 2015
• AWSをこれからご使用になる技術者向け、ソリューションカット
• 今後の配信予定
– 3/5(木) Windows Server 2003 マイグレーションのポイント
– 3/19(木) 貴重なデー...
AWS Black Belt Tech Webinar 2015
• AWS中上級者向け、サービスカット
• 今後の配信予定
– 2/25(水) AWS Management Console
– 3/4 (水) Amazon SQS & SNS...
よくわかるAmazon Workspacesセミナー
• 対象:仮想デスクトップの導入を検討されているお客様
• 日時:2015年3月4日 14:00-17:15(開場13:30)
• 会場:アマゾン データ サービス ジャパン株式会社
アルコ...
AWSの導入、お問い合わせのご相談
• AWSクラウド導入に関するご質問、お見積り、資料請
求をご希望のお客様は、以下のリンクよりお気軽にご相
談ください。
https://aws.amazon.com/jp/contact-us/aws-sa...
Upcoming SlideShare
Loading in …5
×

初心者向けWebinar スケーラブルWebアプリケーションの構築

8,426 views

Published on

初心者向けWebinar
スケーラブルWebアプリケーションの構築

Published in: Technology
  • Be the first to comment

初心者向けWebinar スケーラブルWebアプリケーションの構築

  1. 1. 【初心者向けWebinar】 スケーラブルWebアプリケーションの構築 2015/02/24 アマゾン データ サービス ジャパン株式会社 ソリューションアーキテクト 舟崎健治
  2. 2. 初心者向けWebinar へようこそ! • 参加者は、自動的にミュートになっています • 質問を投げることができます! – 最後のQ&Aの時間で、できるだけ回答させて頂きます – 書き込んだ質問は、主催者にしか見えません • Twitterのハッシュタグは#jawsugでどうぞ
  3. 3. 初心者向けWebinarのご紹介 • AWSについてこれから学ぶ方向けのソリューション カットの技術Webinarです。 • 過去のWebinar資料 – AWSクラウドサービス活用資料集ページにて公開 http://aws.amazon.com/jp/aws-jp-introduction/ • イベントの告知 – 国内のイベント・セミナースケジュールページにて告知 http://aws.amazon.com/jp/about-aws/events/ (オンラインセミナー枠)
  4. 4. Introduction • 今回のAWS初心者向けWebinarでは、WordPressをサ ンプルとして、どのようにスケーラブルWebアプリケー ションをAWS上で構築するか?をご紹介します。 • WordPress以外のWebアプリケーションを構築される 場合においても、役立つTipsが多いので、是非ご参考く ださい。
  5. 5. なぜスケーラブルなWebアプリケーションを構築する と良いのか? • サイト立ち上げ当初はスモールスタートが可能 • ユーザー数の増加、ビジネスの成長に応じて柔軟にリ ソース追加が可能 立ち上げ当初 Web Web Web Web Web Web Web ユーザー数増加後
  6. 6. WordPress • オープンソースのブログツールであり、CMS(コンテン ツ管理システム) • WordPressの初期バージョンは2003年にリリースされ ている。 • 当初は、現在の伸縮自在でスケーラブルなクラウドイン フラストラクチャを念頭に作成されていない • WordPressコミュニティにより、AWSのメリットを活 かすためのさまざまなWordPressモジュールが作成され ている。
  7. 7. アジェンダ • AWS関連サービスのご紹介 • WordPress 1台構成 • WordPress 複数台構成 • まとめ
  8. 8. アジェンダ • AWS関連サービスのご紹介 • WordPress 1台構成 • WordPress 複数台構成 • まとめ
  9. 9. AWSアカウント登録について • Webフォーム上で数分程度の登録作業をするだけで、すぐさまAWS を利用可能 • AWSアカウント作成の流れ http://aws.amazon.com/jp/register-flow/ • AWSアカウント作成方法についての動画(日本語字幕付き) http://aws.amazon.com/jp/getting-started/
  10. 10. AWSマネージメントコンソールにログイン • アカウント登録後にAWSのTopページへアクセス http://aws.amazon.com/jp/ • 登録したメールアドレス、パスワードでログインする
  11. 11. ログインが成功すると以下のサービスの一覧画面が表示 される 今回紹介する サービス
  12. 12. Amazon EC2(Elastic Compute Cloud) 1任意のゾーンに 分散配置可能 リージョン アベイラビリティ ゾーン A EC2 アベイラビリティ ゾーン B EC2 EC2 • 数分で起動可能な仮想サーバ • 1時間ごとの従量課金で利用可能 • スケールアップ/ダウン、アウト/イ ンが即座に可能 • Windows, Linuxなどx86-64アーキ テクチャのOS利用可能 – Windowsライセンスも従量課金 • OS以上はお客様の自由 – お手持ちのソフトをそのまま利用
  13. 13. Amazon Machine Image(AMI) • ソフトウェア構成(オペレーティングシステム、アプリ ケーションサーバ、アプリケーションなど)を記録した テンプレート • AMIから、EC2インスタンス(仮想サーバ)を起動 AMI instance instances 1つのAMIから、複数の異なるタイプの インスタンスを起動可能
  14. 14. Amazon EBS(Elastic Block Store)ボリューム EC2インスタンスに仮想外付けされた ブロックレベルのストレージ サイズは1GB単位で~1TBまで (近い将来16TBまで利用可能になる予定) サイズ/期間/IOで課金される 複数EBSを1 EC2インスタンスにアタッチ可能 1つのEBSを同時に複数のEC2インスタンスにattach 不可 データは永続的に保存される アベイラビリティゾーン(AZ) に存在 他のEC2インスタンスに付け替え可能 Region Availability Zone - a EBS EBS EBS Availability Zone - b EBS EBS Amazon Simple Storage Service (S3) EBS Snapshot EC2 EC2
  15. 15. Amazon EBS スナップショット Amazon S3に保存された EBSボリュームの ポイントインタイムバックアップコピー EBSスナップショットは増分バックアップ (最後に作成されてから、変更のあるブ ロックのみ保存される) EBSスナップショットからEBSボリューム を同じリージョン内で作成可能 リージョン間でコピー可能 Region Availability Zone - a EBS EBS EBS Availability Zone - b EBS EBS Amazon Simple Storage Service (S3) EBS Snapshot EC2 EC2
  16. 16. Amazon S3(Simple Storage Service)  低コスト  アップロード無料  格納料金 1GB/月3.3円 (100円換算、2014/11/04時点)  耐久性  99.999999999%の耐久性  3か所以上への自動複製保存  インテグリティチェックおよび自動復旧 データを 自動複製 リージョン EC2 Availability Zone  セキュリティ  データ転送はすべてSSL通信  同一リージョン内のみでの保管  サーバサイド暗号化オプション(AES256)  柔軟性  格納容量無制限  多くの3rdベンダー製品がサポート
  17. 17. ~ AWSクラウド上のロードバランシングサービス ~ ELBで実現できるシステム  スケーラブル : 複数のEC2インスタンスに負荷分散  高い可用性 : 複数のアベイラビリティゾーンにある複数のEC2インスタンス の中から正常なEC2インスタンスにのみ振り分け ELB自身の特徴  スケーラブル : ELB自体も負荷に応じてキャパシティを自動増減  安価な従量課金 : 従量課金で利用可能  運用管理が楽 : マネージドサービスなので管理が不要  豊富な連携機能 : Auto Scaling, Route 53, Cloud Formation… などと連携 Amazon Elastic Load Balancing (ELB) EC2 EC2
  18. 18. Auto Scaling • トリガーを受けてEC2インスタンス数を自動的に増減させる仕組み – パフォーマンス維持やキャパシティ増強、コスト削減のために利用可能 Auto scaling GroupCloudWatch Alarm Auto Scaling Elastic Load Balancing ①リソース監視 ②しきい値を越えたら アラーム ③アラームのアクションに 登録されたASアクションが起動 ④結果として新規にサーバが デプロイされる
  19. 19. Amazon RDS(Relational Database Service) • マネージドRDBMSサービス • バックアップやフェイルオーバーに対応したDBを数クリッ クで利用可能 • サポートRDBMS
  20. 20. Amazon ElastiCache • 構築 – キャッシュクラスタを数クリックで起動 – EC2、RDSと同様、初期費用無し、時間単位の従量 課金 • 移行 – 2種類のエンジン(memcached, redis)をサポート – 既存アプリケーションの変更不要(memcached, redisを利用中のアプリケーションの場合) • 運用 – 可用性を向上させる機能 – モニタリング、自動障害検出、復旧、拡張、パッチ 管理機能を提供 メモリ内キャッシュをマネージドで提供するサービス →キャッシュに読み込まれたオブジェクトを保存し、性能負荷を軽減する
  21. 21. Amazon DynamoDB • NoSQL as a Service • 超高速・予測可能な一貫したパフォーマンス • シームレスなスケーラビリティ、そして低コスト 運用管理必要なし 低レイテンシ、SSD プロビジョンスループット 無限に使えるストレージ
  22. 22. Amazon CloudFront • ユーザからのアクセスを、最も近いエッジサーバに誘導するこ とで、ユーザへの配信を高速化 • エッジサーバでは、コンテンツのキャッシングを行い、オリジ ンに負荷をかけず効率的に配信 レスポンス向上 負荷軽減 キャッシュ コンテンツ 4.エッジにコンテンツ を送信 1.最適なエッジに リクエスト 3.エッジにキャッシュがなければ オリジンにリクエスト 2.キャッシュを配信 5.取得したコンテンツを配信しキャッシュ Amazon CloudFront (Edge Location) オリジン配信 サーバ クライアント
  23. 23. Amazon Route 53 • 拡張性と可用性に優れたDNS権威サービス • ヘルスチェック機能を持つ Users DNS Resolver Route 53 www.example.com はどこ? 知らないので権威 サーバに尋ねます 1.2.3.4 1.2.3.4 53
  24. 24. AWS SDK/CLI EC2 起動、停止 S3 アップロード ダウンロード Management Console (Web) ユーザ名・ パスワード AWS管理者・ オペレータ 各言語ごとの SDK アクセスキー・ シークレットキー AWS CLI > REST API Route 53 登録、変更、 削除
  25. 25. アジェンダ • AWS関連サービスのご紹介 • WordPress 1台構成 • WordPress 複数台構成 • まとめ
  26. 26. WordPress 1台構成 • 以下の要件においては、WordPress 1台構成が最適な場 合がある – 高可用性が不要 – トラフィックの量が少ない(サイト立ち上げ当初など) – 低コストで構築したい Internet WordPressサーバ (DB共存)
  27. 27. WordPress 1台構成の構築手順 • WordPress用EC2インスタンスの起動 – AMIの選択 – インスタンスタイプの選択 – セキュリティグループの選択 ※仮想サーバを起動する方法の動画(日本語字幕) https://www.youtube.com/watch?v=7CsvhI17ROg • リモートからのSSHログイン • WordPressインストール WordPressサーバ (DB共存)
  28. 28. AMIの選択 ←Amazon Linux, CentOS, Redhat Enterprise Linux, SUSE Linuxなどの さまざまなAMIを選択可能 AWS MarketplaceからWordPressがプ リインストール済みのAMIも選択可能→
  29. 29. インスタンスタイプとは • CPU、メモリ、ストレージ、ネットワークキャパシティ の組み合わせ • さまざまなインスタンスタイプから選択することが可能
  30. 30. WordPressに最適なインスタンスタイプの選択 • 初期のインスタンスタイプ – T2インスタンス • 新規プロジェクトにて、最適なインスタンスタイプを見積もる必要がある場合、 コスト効率の良い選択肢 • トラフィックの量が少ないWebサイト(高いCPU使用率を必要としない) – M3インスタンス • バランスが取れており、T2インスタンスよりも多くのCPU、メモリ、ネット ワークキャパシティを提供 • より多くの需要のあるWebサイト向け • 起動後の垂直方向のスケーリング(スケールアップ) – EBSベースのインスタンスを使用している場合は、インスタンスを停止 → インスタ ンスタイプの変更 → 起動することで、インスタンスタイプを変更可能
  31. 31. セキュリティグループの選択 • インスタンスへのトラフィック を制限するSemi-statefulな ファイアーウォール機能 • デフォルトでは全トラフィック が閉じており、外からアクセス できない • 必要な受信アクセスに対してア クセスルールを定義する • プロトコル( TCP/UDP) • 宛先ポート • アクセス元IP / Security Group ポート22 (SSH) ポート80 (HTTP) EC2ファイアウォール Security Group ポート25 (SMTP) EC2 インスタンス WordPress構築用 に80番と22番を 開放する
  32. 32. EC2インスタンスの起動およびSSHログイン • EC2インスタンスを起動して、SSHでログインすると、 root権限を使って、さまざまなソフトウェアコンポーネ ントをインストール可能 • Elastic IPをEC2インスタンスに割り当てると、パブ リックIPを固定することが可能
  33. 33. WordPressのインストール方法の例 • SSHログイン後、以下を実行 sudo yum install httpd24 php55 php55-mysqlnd mysql-server wget http://ja.wordpress.org/latest-ja.tar.gz sudo tar zxvf latest.tar.gz -C /var/www/html sudo service mysqld start mysql -u root mysql> CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'mypassword'; mysql> CREATE DATABASE wordpress; sudo service httpd start
  34. 34. WordPressの設定 • WordPress用のEC2インスタンスへWebブラウザでア クセス
  35. 35. 障害からの復旧 • 従来のオンプレミス環境よりも早くインスタンス障害の復旧 が可能 – 再配置用のインスタンスをすぐさま起動可能 • WordPressインスタンス復旧時に考慮すべきコンポーネント – OSやサービスのインストール・構成(Apache, MySQL等) – WordPressアプリケーションコードおよび構成 – WordPressのテーマおよびプラグイン – メディアファイルなどのアップロードファイル – データベースのコンテンツ(投稿記事やコメントなど)
  36. 36. WordPress 1台構成の場合 • Amazon EBSボリュームのデータは複数のサー バにレプリケーションされており、通常のハー ドディスクに比べてAFR(年間故障率)が低い。 • が、常にバックアップを取得することを推奨 – オペレーションミスによるデータ喪失からの復旧も考慮する instance volume • WordPressアプリケーションコード • wp-contentsフォルダ以下のプラグイ ンやテーマ、アップロードファイル • /var/lib/mysql以下のデータベースのコ ンテンツ
  37. 37. バックアップについて • EBSスナップショット – EBSボリュームのポイントインタイムのバック アップコピーをS3内に保存する機能 – 変更のあったブロックのみの差分を保存。その 分のみ課金される – コスト効率の高いバックアップ方法 • ファイル単位でのS3への保存 ※AMI取得時にもデータの実体は S3に保存される。snapshot Amazon S3 object instance volume
  38. 38. IPアドレスとDNS • Elastic IPを使うことで、EC2インスタンスのPublic IPを固定するこ とが可能 • EC2インスタンスの障害時には、Elastic IPを置き換え用の新規EC2 インスタンスに割り当てることで、同じPublic IPでアクセスが可能 • Route 53 DNSサービスにカスタムドメインを登録することで、名 前解決が可能 http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-route53
  39. 39. パフォーマンスとコスト効率の改善 • 1台構成においても、垂直方向のスケーリング(スケー ルアップ)により、ある程度まではパフォーマンスを向 上させることが可能 • スケールアップ以外の方法でも、アプリケーション側の 修正をいくつか行うことで簡単に低コストでパフォーマ ンス向上が可能 • 今回はWordPress用のW3 Total Cacheプラグインを 使った方法を紹介する
  40. 40. WordPressのW3 Total Cacheプラグインを使ったパ フォーマンスとコスト効率の改善方法の例 • 静的コンテンツをAmazon S3から配信 • Amazon CloudFrontでコンテンツキャッシング • データベースキャッシング
  41. 41. 静的コンテンツをAmazon S3から配信 • WordPressウェブサイトは、静的および動的コンテンツ を配信する必要がある。 – 静的コンテンツ • 画像、JavaScript、スタイルシートなど – 動的コンテンツ • サーバサイドでWordPress PHPコードによって生成されるコンテンツ 【データベースからロードされる属性値など) • 静的コンテンツをAmazon S3から配信することで、 WordPress Webサーバの負荷の低減が可能 – WordPress Webサーバは動的コンテンツ生成のみを処理すれば良くなるため Amazon S3 Blackbelt Tech Webinar資料 http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belttechwebinar2014s3public
  42. 42. Amazon S3からの静的コンテンツ配信について • S3にファイルをアップロードすると、ファイルごとにURIが割り当て られる。 – https://s3-ap-northeast-1.amazonaws.com/<バケット名>/<ファイル名>(東京リージョンの例) – デフォルトでは、上記URIへのアクセスはDeniedとなるが、アクセス権限を変更することでアクセス可能 • さらに、S3のWebsite Hosting機能を有効にすると、バケット名に対 応したサブドメインでアクセス可能 – http://<バケット名>.s3-website-ap-northeast-1.amazonaws.com/<ファイル名> • 以下のレコードをDNSに登録することで、任意のドメインでS3のファ イルへHTTPでアクセスが可能 – Name: (例)example.com – Type: CNAME – Record: <バケット名>.s3-website-ap-northeast-1.amazonaws.com
  43. 43. 静的コンテンツをS3から配信する形に変更するには? • 変更前 • 変更後 Users Web サーバ <img src=“/img/product.png” /> <img src= “http://static.example.com/img/product.png” /> NFS サーバ Web サーバ png png S3 http://example.com/index.php http://example.com/index.php 動的コンテンツ用 静的コンテンツ用 http://static.example.com/img/product.jpg
  44. 44. Amazon CloudFrontのマルチオリジン機能 • 単一のCloudFrontディストリビューションから、複数 のオリジン(コンテンツのソース)を参照可能 – CloudFrontのCache Behaviorの設定にて、パスごとに参照先のオリジンを切 り替え可能 wp-contents/*, wp-includes/*が URIのパスの場合は、S3を参照 (キャッシュする設定) wp-admin/*, wp-login.php, その他 がURIのパスの場合は、EC2を参照 (キャッシュしない設定) 動的コンテンツ用 静的コンテンツ用
  45. 45. データベースキャッシング • WordPressのような参照が多いアプリケーションの場合、 データベースキャッシングにより遅延を減らし、スルー プットを増加させることが可能 • 頻繁にアクセスされるデータはメモリの中に保持して、 メモリからデータを渡すことでパフォーマンスを改善で きる場合がある。
  46. 46. Web+DBアプリとメモリキャッシュ • データ参照時の操作 キャッシュ App RDBMS ■キーを検索軸に属性データがキャッシュにあるか? 取得して完了 ②なければDBへクエリ クエリ結果を取得 DBにクエリを実行した場合、 クエリ結果をキャッシュ 繰り返し ⇒(Point)キャッシュに最新結果が反映される ①あればキャッシュへ
  47. 47. Web+DBアプリとメモリキャッシュ • 更新時の操作 App 常にDBにInsert / Update 繰り返し その結果をオブジェクト書き込み キャッシュ RDBMS ⇒(Point)キャッシュには最新結果が反映される ■キーを検索軸に属性データをキャッシュに配置する
  48. 48. WordPressとMemcachedの連携 • W3 Total Cacheプラグインを使うことで、 Memcachedと連携が可能 • 以下2パターン – WordPress Webサーバ上にMemcachedをインストール (別のEC2インスタンスも可) – Amazon ElastiCacheの活用 • マネージドサービスのため、簡単にデプロイ、運用、スケーリングが可能 • ElastiCacheのMemcached版を使うと、特にカスタマイズを行うことなく WordPress Memcachedプラグインを利用可能 https://wordpress.org/plugins/w3-total-cache/ http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-elasticache Amazon ElastiCache
  49. 49. アジェンダ • AWS関連サービスのご紹介 • WordPress 1台構成 • WordPress 複数台構成 • まとめ
  50. 50. 複数台による構成について • 1台構成で要件を満たせる場合はある。が、より高い可 用性やパフォーマンスを実現するには、以下のように変 更できると良い。 – Webとデータベースのサーバを分ける – Web・データベースサーバそれぞれの可用性とスケーラビリティを高める
  51. 51. Web層とデータベース層を隔離する • 隔離するメリット – 各層でのキャパシティの増加が容易 – 各層の構成の特性に応じた調整が可能 • WebサーバとDBサーバのCPU,メモリ,ストレージ,ネッ トワークキャパシティの要件は異なる 用途 最適なインスタンスタイプ(一般的な場合) Webサーバ コンピュート最適化インスタンス(C4またはC3インスタンス) DBサーバ メモリ最適化インスタンス(R3インスタンス)
  52. 52. データベースの移行 • MySQL DB移行先の例 – EC2インスタンス上に構築したMySQL DB – Amazon RDS MySQL (推奨) • WordPress Webサーバの設定変更 – wp-config.phpにて、ローカルホストのDBからリモートのDBへ接続先を変更 する DB on instance RDS DB instance
  53. 53. Amazon RDSを使うメリット • DBの管理負荷の低減 – 自動パッチ適用 – 自動バックアップ – ポイントインタイムリカバリ – Multi-AZ構成による自動フェイルオーバー(後述) – 1 APIコールでDBのコンピュートリソースやストレージキャパシティをスケー ル可能 • お客様のアプリケーション開発やビジネスへの注力が可 能
  54. 54. RDSおよびElastiCacheへ接続する構成
  55. 55. データベース層の可用性 • RDS Multi-AZ – DBインスタンスの可用性・冗長性を実現可能 – RDS Multi-AZを有効にすると、プライマリDBインスタンスに加えて、自動的 にスタンバイDBインスタンスを異なるAZに作成する – DBインスタンスに対する更新は、同時にスタンバイ側にレプリケーションされ る – プライマリDB側の障害時には、スタンバイDB側に自動フェイルオーバーされ る • ElastiCache(Memcached) – Memcachedノードが障害時には、自動的に新規ノードが再配置される – Memcached Cacheクラスターに属するノード数を複数にすることで、異なる AZにまたがって配置が可能 http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-elasticache
  56. 56. RDSおよびElastiCacheが複数AZにまたがった構成
  57. 57. Web層の高可用性 • 異なるAZに複数のWebサーバを配置可能 • 複数のWebサーバに対して、Amazon ELBで負荷分散させる • ELBはリージョン内の異なるAZに対して負荷分散が可能 • ELBのヘルスチェック機能により、インスタンス障害時に自動 的にそのインスタンスへのトラフィック送信を停止可能 Elastic Load Balancing Availability Zone Availability Zone
  58. 58. Web層のスケーラビリティ • AWSプラットフォームでは、Webサーバを起動させた分だけの 支払いのみ。必要なときに起動可能 – 多めに起動しておく必要がない。 • Auto Scalingにより、EC2インスタンスの自動増減が可能 – Auto Scalingにより自動増減したバックエンドEC2インスタンスを自動で動的に追加・削 除が可能 • ELB自体もトラフィック量に応じて自動でスケール Auto Scaling Elastic Load Balancing
  59. 59. アクセス急増に向けたELBの対策 • ELB自体は負荷に応じて自動的にスケールするが、TV紹 介などで瞬間的にアクセスが急増する場合、ELBの内部 的なスケーリングが間に合わず、HTTP 503レスポンス を返すことがある。 • 対策として、事前にELBをスケールさせておくために、 ELB暖気運転(Pre-warming)をAWSサポートに申請す る – AWSビジネスまたはエンタープライズサポートの加入が必要
  60. 60. ステートレスなアーキテクチャ • 複数台のWebサーバによるAuto Scaling構成を活用す るには、Web層がステートレスでなければならない • Auto Scalingにより自動で既存のWebサーバが terminateされることがあるため、永続化されるべき データは、Webサーバ上で保持しないようにする – クライアント側のCookie、あるいはRDSやS3などの永続性のあるストレージに 格納する • 複数のWebサーバ間でデータを同期させる複雑な仕組み も回避することを推奨
  61. 61. Webアプリケーションでよく使われるデータの種類と その格納先 • ユーザーセッション – WordPress CoreはセッションをCookieで管理 – PHPセッションを活用するWordPressプラグインをインストールしている場合は、 Amazon DynamoDBがその格納先として最適 • AWS SDK for PHPにDynamoDB Session Handlerが含まれている。 • ユーザーが生成したデータやアップロードデータ – デフォルトではWordPressのWebサーバ上に配置される。 – これらをS3に格納して配信することで、Web層をステートレスにすることが可能 Amazon DynamoDB Amazon S3 http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-dynamodb https://aws.amazon.com/jp/blogs/aws/scalable-session-handling-in-php-using-amazon-dynamodb/
  62. 62. WebサーバがAuto Scalingする構成
  63. 63. データベース層のスケーリング • より大きなインスタンスタイプへ変更可能 • Provisioned IOPSによりDisk IOパフォーマンスを向上可能 • WordPressは参照が非常に多いため、MySQLレプリケー ションあるいはRDSリードレプリカが有効 – が、デフォルトではWordPressは複数のDBインスタンスを活用するように設計され ていない。 – HyperDBプラグインを使うことで複数のDBインスタンスを活用する機能を追加可能 読み込み・書き込み 読み込みのみ Web https://wordpress.org/plugins/hyperdb/ http://www.slideshare.net/AmazonWebServicesJapan/20140416-aws-blackbeltrds
  64. 64. RDSリードレプリカに読み込みアクセスをする構成
  65. 65. アジェンダ • AWS関連サービスのご紹介 • WordPress 1台構成 • WordPress 複数台構成 • まとめ
  66. 66. まとめ • AWSではスケーラブルな構成を実現するために、さま ざまなオプションが提供されている • 1台構成ででも利用開始可能 • より高い可用性とスケーラビリティが求められる場合は 複数台構成を推奨 • WordPressのように、アプリケーションを一部カスタマ イズすることで、最適な構成を実現可能
  67. 67. Q&A
  68. 68. 参照リンク • AWSアカウント作成の流れ – http://aws.amazon.com/jp/register-flow/ • WordPress: Best Practice on AWS – http://d0.awsstatic.com/whitepapers/wordpress-best-practices-on-aws.pdf • Deploying WordPress with AWS Elastic Beanstalk – http://d0.awsstatic.com/whitepapers/deploying-wordpress-with-aws-elastic- beanstalk.pdf • AWSクラウド活用資料集 – http://aws.amazon.com/jp/aws-jp-introduction/ • 国内のお客様のAWS活用事例 – http://aws.amazon.com/jp/solutions/case-studies-jp/
  69. 69. AWSをより深く理解したい方向けに クラスルームトレーニングを提供しています。 詳細: aws.amazon.com/training 認定資格試験
  70. 70. 公式Twitter/Facebook AWSの最新情報をお届けします @awscloud_jp 検索 最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを 日々更新しています! もしくは http://on.fb.me/1vR8yWm
  71. 71. AWS初心者向けWebinar 2015 • AWSをこれからご使用になる技術者向け、ソリューションカット • 今後の配信予定 – 3/5(木) Windows Server 2003 マイグレーションのポイント – 3/19(木) 貴重なデータを守るクラウドバックアップの実現 • 申し込みサイト – http://aws.amazon.com/jp/about-aws/events/
  72. 72. AWS Black Belt Tech Webinar 2015 • AWS中上級者向け、サービスカット • 今後の配信予定 – 2/25(水) AWS Management Console – 3/4 (水) Amazon SQS & SNS – 3/11(水) Amazon SNS モバイルプッシュ – 3/18(水) AWS SDK – 3/19(水) リザーブドインスタンス スポットインスタンス • 申し込みサイト – http://aws.amazon.com/jp/about-aws/events/
  73. 73. よくわかるAmazon Workspacesセミナー • 対象:仮想デスクトップの導入を検討されているお客様 • 日時:2015年3月4日 14:00-17:15(開場13:30) • 会場:アマゾン データ サービス ジャパン株式会社 アルコタワー19階 セミナールーム
  74. 74. AWSの導入、お問い合わせのご相談 • AWSクラウド導入に関するご質問、お見積り、資料請 求をご希望のお客様は、以下のリンクよりお気軽にご相 談ください。 https://aws.amazon.com/jp/contact-us/aws-sales/

×