Successfully reported this slideshow.
Your SlideShare is downloading. ×

PHP on Cloud

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 47 Ad

More Related Content

Slideshows for you (20)

Similar to PHP on Cloud (20)

Advertisement

More from Akio Katayama (20)

Recently uploaded (20)

Advertisement

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 PHP AWS 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 AMI CloudWatch 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 AMI CloudWatch 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 ElasticLoadBalanceing Management 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_deplo y_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 ZIP URLを入れ替えること 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.40 t1.micro instance Elastic Load Balancer 1 $0.025/hr * 24 hours * 30 days $18.00 ELB Data Processing 15GB $0.008/GB * 15GB $0.12 Elastic Block Store volume 8GB $0.10/GB * 8GB $0.80 S3 Storage for WAR File 1GB $0.14/1GB + $0.01 PUT,GET $0.15 Bandwidth 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

×