PHP on クラウド!- AWS Elastic Beanstalkの真価 -                      2012年05月12日                PHPカンファレス関西2012                  ...
自己紹介名前:片山暁雄 ( @c9katayama ) 大阪府池田市出身所属:アマゾンデータサービスジャパン株式会社職種:ソリューションアーキテクトプログラム言語: Java                      ホテルモントレ大阪にて
なぜJava派の私がお伺いしたのか                PythonとPerlが得意ですAWSエバンジェリスト2号                Rubyが得意です                            AWSエバンジ...
銅鑼と忍者に気をつけろ!
アジェンダAWSご紹介AWS SDK for PHPAWS Elastic Beanstalk
JAWS-UG(AWS UserGroup Japan)       17                               #jawsug
AWSは世界中のインフラを利用可能  オレゴン     GovCloud                               東京                    ダブリン            バージニアカリフォルニア     ...
AWSのサービス群 EC2                          EBS             SWF         CloudFront             S3                      ELB     ...
虎テレ(阪神タイガース公式コンテン        ツ)
AWS SDK for PHP
AWS SDK for PHPとは? AWSの各種サービスをPHPで操作するSDK   EC2の起動   ディスクのマウント/拡張   ディスクバックアップ   S3へのアップロード   .... PHPを使って、システム運用の自動化...
Amazon DynamoDBとは?・フルマネージドなNoSQLデータベース・超高速・予測可能な一貫したパフォーマンス・シームレスなスケーラビリティ、そして低コスト                       運用管理必要なし         ...
DynamoDB Session Handler DynamoDBを使った、HTTPのセッション共有 SDKにクラスが同梱               EC2                      DynamoDB      ELB    ...
require_once AWSSDKforPHP/sdk.class.php;$dynamodb = new AmazonDynamoDB();// DynamoDB Session Handler$handler = $dynamodb->...
AWS Elastic Beanstalk
AWSのサービス群 EC2                          EBS             SWF         CloudFront             S3                      ELB     ...
AWS Elastic Beanstalkとは Beanstalk = 豆の木   「アプリケーションが実る幹」のイメージ Webアプリケーションの実行環境を構築・管理   AWSの各種サービスをまとめて管理してくれる 使用可能な言語:PH...
AWS Elastic Beanstalkとは 利用出来るAPIの制約・処理時間の制約はない  ライブラリやフレームワークの制約もない  PHP: ZIP or Git デプロイ ロードバランサー・オートスケーリング  ロードバランサーと...
AWS Elastic Beanstalkとは Webアプリケーションのバージョン管理   アプリの世代管理が可能   アプリのロールバック・ロールフォワードが容易 複数環境の構築が可能  本番・テストなど目的別に構築可能 開発・管理ツー...
開発・管理ツール                      AWS Management                         Console    AWS Toolkit for      Eclipse
しくみ
アプリケーション管理の論理構成  Application      Environment                            Version       URL       Environment Configuration...
用語説明Application  トップレベルの論理単位  Applicationの中に、EnvironmentやVersionが入る  デプロイするアプリケーション(PHPアプリ)と混同しやすいの   で注意Environment  ...
用語説明Version  Webアプリケーションのバージョン   管理  アプリケーションファイルの履歴管   理が可能  S3上でファイルを保持  Versionで管理したZIPファイルを、   各Environmentと紐付け
テクニカルアーキテクチャ                                             この環境が                                           自動で構成される         ...
HostManager
HostManager 各EC2インスタンス上で動作   Rubyで実装   /opt/elasticbeanstalk/srv/hostmanager/lib/ OS起動と同時に起動   動作に必要なパラメータはuserdataを通じて...
HostManager Webアプリケーションの生存確認   ELBからの通信を受け取り、Webサーバ内部でWebアプ    リの生存を確認して返答       /_hostmanager/healthcheck               ...
HostManager ZIP入れ替え、アプリサーバ再起動、設定反映などの処理   各処理の指示が入ったHTTP通信を受け取り、指定の処理    を実行   通信はAES-256で暗号化   PHP->htdocsにzip展開      ...
開発・デプロイ
Git Gitをインストール AWSの開発キットをダウンロード    http://aws.amazon.com/code/6752709412171743 AWSDevTools-OneTimeSetupでgitに機能を追加 ローカルにリポ...
Gitでデプロイ ローカルリポジトリにソースをコミット 次のコマンドでデプロイ  git aws.push 自動生成されたgitリポジトリにソースが入る コミット後、リポジトリの中身が丸ごとzipになりS3へ格納  バージョン付けされる H...
Eventログで確認
デプロイ  ステージ毎に環境を分けることが可能    本番用、テスト用、開発用                          デプロイする  URLスワップ機能とバージョン機能を利用する アプリは自由に                  ...
各種設定
各種設定 Environment毎に設定が可能 サーバ設定                オートスケール設定  インスタンスタイプ           最小/最大サーバ数  セキュリティグルー           配置AZ   プ   ...
各種設定(つづき)HTTPサーバ設定(PHP)         ログ設定  ドキュメントルート位置          S3へのバックアップ  メモリ  URL Fopen                       イベント通知  Z...
設定方法 Eclipse,Consoleいずれでも設定可能                        DEMO
他サービスとの連携/Tips
他サービスとの連携AWSの他のサービスとの連携は可能 Relational Database Service(RDBサービス)   • Oracle,MySQL Dynamo DB(キーバリューストア) ElastiCache(memca...
他サービスとの連携DBの接続情報などのパラメータ  設定ファイルか環境変数で設定
さらに使い込む カスタマイズしたマシンイメージの作成が可能  デフォルトで提供されるイメージを元に元に作り込む  常に使うアプリケーションはインストールしておく  PHPのライブラリ配置も必要であれば行う  OS起動時にChef/pup...
料金   Elastic Beanstalk自体の利用は0   Environment 構築に伴って利用したAWSサービスに対して   課金利用サービス                    単位     コスト計算              ...
まとめ
まとめAWS SDK for PHPでクラウドをAPIで操れる!Elastic Beanstalkで、容易にPHP実行環境の構築が可能  ロードバランサ、スケーリング、通知、アプリバージョン管理が   即利用可能  必要に応じて、パラメータ...
PHP開発のお供にAWSを!
47
Upcoming SlideShare
Loading in …5
×

PHP on Cloud

2,298
-1

Published on

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,298
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
17
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

PHP on Cloud

  1. 1. PHP on クラウド!- AWS Elastic Beanstalkの真価 - 2012年05月12日 PHPカンファレス関西2012 「好きやねんPHP!」
  2. 2. 自己紹介名前:片山暁雄 ( @c9katayama ) 大阪府池田市出身所属:アマゾンデータサービスジャパン株式会社職種:ソリューションアーキテクトプログラム言語: Java ホテルモントレ大阪にて
  3. 3. なぜJava派の私がお伺いしたのか PythonとPerlが得意ですAWSエバンジェリスト2号 Rubyが得意です AWSエバンジェリスト1号 PHPよりUstです @understeer
  4. 4. 銅鑼と忍者に気をつけろ!
  5. 5. アジェンダAWSご紹介AWS SDK for PHPAWS Elastic Beanstalk
  6. 6. JAWS-UG(AWS UserGroup Japan) 17 #jawsug
  7. 7. AWSは世界中のインフラを利用可能 オレゴン GovCloud 東京 ダブリン バージニアカリフォルニア シンガポール サンパウロ AWSを利用開始すれば、 世界7(+1)カ所のリージョン(地域) 17のアベイラビリティゾーン(データセンター群) 30のエッジロケーションを即座に利用可能
  8. 8. AWSのサービス群 EC2 EBS SWF CloudFront S3 ELB AutoScaling Route53 RDS VPC SQS AMICloudWatch SnapShot DynamoDB SES
  9. 9. 虎テレ(阪神タイガース公式コンテン ツ)
  10. 10. AWS SDK for PHP
  11. 11. AWS SDK for PHPとは? AWSの各種サービスをPHPで操作するSDK  EC2の起動  ディスクのマウント/拡張  ディスクバックアップ  S3へのアップロード  .... PHPを使って、システム運用の自動化も! S3 ELB AutoScaling EBS EC2
  12. 12. Amazon DynamoDBとは?・フルマネージドなNoSQLデータベース・超高速・予測可能な一貫したパフォーマンス・シームレスなスケーラビリティ、そして低コスト 運用管理必要なし 低レイテンシ、SSD プロビジョンスループット 無限に使えるストレージ
  13. 13. DynamoDB Session Handler DynamoDBを使った、HTTPのセッション共有 SDKにクラスが同梱 EC2 DynamoDB ELB EC2 超早い 消えない 管理不要 EC2
  14. 14. require_once AWSSDKforPHP/sdk.class.php;$dynamodb = new AmazonDynamoDB();// DynamoDB Session Handler$handler = $dynamodb->register_session_handler(array( table_name => my-sessions-table));session_start();$_SESSION[username] = jeremy;$_SESSION[role] = admin;session_write_close();
  15. 15. AWS Elastic Beanstalk
  16. 16. AWSのサービス群 EC2 EBS SWF CloudFront S3 ELB AutoScaling Route53 RDS VPC SQS AMICloudWatch SnapShot DynamoDB SES
  17. 17. AWS Elastic Beanstalkとは Beanstalk = 豆の木  「アプリケーションが実る幹」のイメージ Webアプリケーションの実行環境を構築・管理  AWSの各種サービスをまとめて管理してくれる 使用可能な言語:PHP 5.3、 Java(OpenJDK6), .Net コンテナとしてApache(PHP) Tomcat IISをサポート
  18. 18. AWS Elastic Beanstalkとは 利用出来るAPIの制約・処理時間の制約はない  ライブラリやフレームワークの制約もない  PHP: ZIP or Git デプロイ ロードバランサー・オートスケーリング  ロードバランサーとオートスケーリングが標準装備  詳細な条件設定が可能 実行環境の設定  仮想サーバスペック、Apache設定など40項目以上の 設定が可能
  19. 19. AWS Elastic Beanstalkとは Webアプリケーションのバージョン管理  アプリの世代管理が可能  アプリのロールバック・ロールフォワードが容易 複数環境の構築が可能  本番・テストなど目的別に構築可能 開発・管理ツールを提供  AWS Management Console  コマンドラインツール  Eclipseプラグイン
  20. 20. 開発・管理ツール AWS Management Console AWS Toolkit for Eclipse
  21. 21. しくみ
  22. 22. アプリケーション管理の論理構成 Application Environment Version URL Environment Configuration ZIP ZIP Environment URL Environment Configuration ZIP ZIP Environment ZIP URL Environment Configuration Configuration Template
  23. 23. 用語説明Application  トップレベルの論理単位  Applicationの中に、EnvironmentやVersionが入る  デプロイするアプリケーション(PHPアプリ)と混同しやすいの で注意Environment  ConfigurationTemplateを元に構成される  PHPファイルをデプロイする環境  環境毎にURLが付与される • URLは、XXX.elasticbeanstalk.com  各環境毎にEC2、ELBなどが立ち上がる  ログも環境毎に取得できる(1時間おきにS3へ送信可能)
  24. 24. 用語説明Version  Webアプリケーションのバージョン 管理  アプリケーションファイルの履歴管 理が可能  S3上でファイルを保持  Versionで管理したZIPファイルを、 各Environmentと紐付け
  25. 25. テクニカルアーキテクチャ この環境が 自動で構成される URL Environment ElasticLoadBalanceingManagement SNS Console S3 HM HM CloudWatch EC2 EC2 eclipse AutoScaling Security Group
  26. 26. HostManager
  27. 27. HostManager 各EC2インスタンス上で動作  Rubyで実装  /opt/elasticbeanstalk/srv/hostmanager/lib/ OS起動と同時に起動  動作に必要なパラメータはuserdataを通じて入手 プロセス起動と監視  Apache、Thin(HostManager用Webサーバ) の起動  「Bluepill」というアプリでプロセスを監視  プロセスが落ちると、プロセスを再起動 HostManager
  28. 28. HostManager Webアプリケーションの生存確認  ELBからの通信を受け取り、Webサーバ内部でWebアプ リの生存を確認して返答 /_hostmanager/healthcheck 指定URL ELB を確認 HostManager
  29. 29. HostManager ZIP入れ替え、アプリサーバ再起動、設定反映などの処理  各処理の指示が入ったHTTP通信を受け取り、指定の処理 を実行  通信はAES-256で暗号化  PHP->htdocsにzip展開 /_hostmanager/tasks 暗号化データをPOST 処理を実行 HostManager
  30. 30. 開発・デプロイ
  31. 31. Git Gitをインストール AWSの開発キットをダウンロード  http://aws.amazon.com/code/6752709412171743 AWSDevTools-OneTimeSetupでgitに機能を追加 ローカルにリポジトリを作成 AWSDevTools-RepositorySetupを使い、リポジトリを初期化 AWSの情報を設定  git aws.configコマンド  AccessID、エンドポイント、対象のBeanstalk Appなどhttp://docs.amazonwebservices.com/elasticbeanstalk/latest/dg/create_deploy_PHP.html
  32. 32. Gitでデプロイ ローカルリポジトリにソースをコミット 次のコマンドでデプロイ  git aws.push 自動生成されたgitリポジトリにソースが入る コミット後、リポジトリの中身が丸ごとzipになりS3へ格納  バージョン付けされる Hostmanagerがzipをデプロイ  Apacheのhtdocs以下を削除->展開 DEMO
  33. 33. Eventログで確認
  34. 34. デプロイ ステージ毎に環境を分けることが可能  本番用、テスト用、開発用 デプロイする URLスワップ機能とバージョン機能を利用する アプリは自由に 選択出来る Environment Version URL Environment Configuration ZIP ZIPURLを入れ替えること Environmentで、テスト済みの環境 ZIP URL Environment Configurationをそのまま公開できる ZIP Environment ZIP URL Environment Configuration
  35. 35. 各種設定
  36. 36. 各種設定 Environment毎に設定が可能 サーバ設定 オートスケール設定  インスタンスタイプ  最小/最大サーバ数  セキュリティグルー  配置AZ プ  スケール時のトリガー  キーペア ロードバランサ  監視間隔  HTTP/HTTPSポート  AMI  ヘルスチェック設定  セッションStickey
  37. 37. 各種設定(つづき)HTTPサーバ設定(PHP) ログ設定  ドキュメントルート位置  S3へのバックアップ  メモリ  URL Fopen イベント通知  Zlib圧縮  トピック設定  Display Erroes  宛先設定  Max Exection Time
  38. 38. 設定方法 Eclipse,Consoleいずれでも設定可能 DEMO
  39. 39. 他サービスとの連携/Tips
  40. 40. 他サービスとの連携AWSの他のサービスとの連携は可能 Relational Database Service(RDBサービス) • Oracle,MySQL Dynamo DB(キーバリューストア) ElastiCache(memcached) Simple Email Service(メール送信) CloudFront(コンテンツ配信) Simple Queue Service(キューイング) ・・・
  41. 41. 他サービスとの連携DBの接続情報などのパラメータ  設定ファイルか環境変数で設定
  42. 42. さらに使い込む カスタマイズしたマシンイメージの作成が可能  デフォルトで提供されるイメージを元に元に作り込む  常に使うアプリケーションはインストールしておく  PHPのライブラリ配置も必要であれば行う  OS起動時にChef/puppetで初期化など SSHでログイン可能  障害時の詳細調査  アプリケーションのインストール 手間 デフォルト構成で使用 パラメータ調整 他サービスとの連携 イメージカスタマイズ柔軟性 SSH接続
  43. 43. 料金 Elastic Beanstalk自体の利用は0 Environment 構築に伴って利用したAWSサービスに対して 課金利用サービス 単位 コスト計算 コストAmazon EC2 1 $0.02/hr * 24 hours * 30 days $14.40t1.micro instanceElastic Load Balancer 1 $0.025/hr * 24 hours * 30 days $18.00ELB Data Processing 15GB $0.008/GB * 15GB $0.12Elastic Block Store volume 8GB $0.10/GB * 8GB $0.80S3 Storage for WAR File 1GB $0.14/1GB + $0.01 PUT,GET $0.15Bandwidth In and Out 15GB Inbound is free, 15 GB out * $1.80 $0.12 月額 $35.27
  44. 44. まとめ
  45. 45. まとめAWS SDK for PHPでクラウドをAPIで操れる!Elastic Beanstalkで、容易にPHP実行環境の構築が可能  ロードバランサ、スケーリング、通知、アプリバージョン管理が 即利用可能  必要に応じて、パラメータ設定・SSHログイン、カスタムAMIの利 用が可能Gitを使用して、実装・設定・デプロイがシームレスにAWSの他サービスとも連携
  46. 46. PHP開発のお供にAWSを!
  47. 47. 47
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×