More Related Content Similar to PHP on Cloud (20) More from Akio Katayama (20) PHP on Cloud1. PHP on クラウド!
- AWS Elastic Beanstalkの真価 -
2012年05月12日
PHPカンファレス関西2012
「好きやねんPHP!」
3. なぜJava派の私がお伺いしたのか
PythonとPerlが得意です
AWSエバンジェリスト2号
Rubyが得意です
AWSエバンジェリスト1号
PHPよりUstです
@understeer
7. AWSは世界中のインフラを利用可能
オレゴン
GovCloud
東京
ダブリン
バージニア
カリフォルニア
シンガポール
サンパウロ
AWSを利用開始すれば、
世界7(+1)カ所のリージョン(地域)
17のアベイラビリティゾーン(データセンター群)
30のエッジロケーションを即座に利用可能
8. AWSのサービス群
EC2 EBS SWF CloudFront
S3
ELB AutoScaling Route53
RDS
VPC
SQS AMI
CloudWatch SnapShot
DynamoDB
SES
11. AWS SDK for PHPとは?
AWSの各種サービスをPHPで操作するSDK
EC2の起動
ディスクのマウント/拡張
ディスクバックアップ
S3へのアップロード
....
PHPを使って、システム運用の自動化も!
S3
ELB
AutoScaling
EBS EC2
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();
16. AWSのサービス群
EC2 EBS SWF CloudFront
S3
ELB AutoScaling Route53
RDS
VPC
SQS AMI
CloudWatch SnapShot
DynamoDB
SES
17. AWS Elastic Beanstalkとは
Beanstalk = 豆の木
「アプリケーションが実る幹」のイメージ
Webアプリケーションの実行環境を構築・管理
AWSの各種サービスをまとめて管理してくれる
使用可能な言語:PHP 5.3、 Java(OpenJDK6), .Net
コンテナとしてApache(PHP) Tomcat IISをサポート
18. AWS Elastic Beanstalkとは
利用出来るAPIの制約・処理時間の制約はない
ライブラリやフレームワークの制約もない
PHP: ZIP or Git デプロイ
ロードバランサー・オートスケーリング
ロードバランサーとオートスケーリングが標準装備
詳細な条件設定が可能
実行環境の設定
仮想サーバスペック、Apache設定など40項目以上の
設定が可能
19. AWS Elastic Beanstalkとは
Webアプリケーションのバージョン管理
アプリの世代管理が可能
アプリのロールバック・ロールフォワードが容易
複数環境の構築が可能
本番・テストなど目的別に構築可能
開発・管理ツールを提供
AWS Management Console
コマンドラインツール
Eclipseプラグイン
20. 開発・管理ツール
AWS Management
Console
AWS Toolkit for
Eclipse
22. アプリケーション管理の論理構成
Application
Environment Version
URL Environment Configuration ZIP
ZIP
Environment
URL Environment Configuration ZIP
ZIP
Environment
ZIP
URL Environment Configuration
Configuration Template
23. 用語説明
Application
トップレベルの論理単位
Applicationの中に、EnvironmentやVersionが入る
デプロイするアプリケーション(PHPアプリ)と混同しやすいの
で注意
Environment
ConfigurationTemplateを元に構成される
PHPファイルをデプロイする環境
環境毎にURLが付与される
• URLは、XXX.elasticbeanstalk.com
各環境毎にEC2、ELBなどが立ち上がる
ログも環境毎に取得できる(1時間おきにS3へ送信可能)
25. テクニカルアーキテクチャ
この環境が
自動で構成される
URL
Environment
ElasticLoadBalanceing
Management
SNS
Console
S3
HM HM CloudWatch
EC2 EC2
eclipse
AutoScaling
Security Group
27. HostManager
各EC2インスタンス上で動作
Rubyで実装
/opt/elasticbeanstalk/srv/hostmanager/lib/
OS起動と同時に起動
動作に必要なパラメータはuserdataを通じて入手
プロセス起動と監視
Apache、Thin(HostManager用Webサーバ)
の起動
「Bluepill」というアプリでプロセスを監視
プロセスが落ちると、プロセスを再起動
HostManager
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
34. デプロイ
ステージ毎に環境を分けることが可能
本番用、テスト用、開発用
デプロイする
URLスワップ機能とバージョン機能を利用する アプリは自由に
選択出来る
Environment Version
URL Environment Configuration ZIP
ZIP
URLを入れ替えること Environment
で、テスト済みの環境 ZIP
URL Environment Configuration
をそのまま公開できる
ZIP
Environment
ZIP
URL Environment Configuration
36. 各種設定
Environment毎に設定が可能
サーバ設定 オートスケール設定
インスタンスタイプ 最小/最大サーバ数
セキュリティグルー 配置AZ
プ スケール時のトリガー
キーペア ロードバランサ
監視間隔 HTTP/HTTPSポート
AMI ヘルスチェック設定
セッションStickey
37. 各種設定(つづき)
HTTPサーバ設定(PHP) ログ設定
ドキュメントルート位置 S3へのバックアップ
メモリ
URL Fopen
イベント通知
Zlib圧縮
トピック設定
Display Erroes
宛先設定
Max Exection Time
42. さらに使い込む
カスタマイズしたマシンイメージの作成が可能
デフォルトで提供されるイメージを元に元に作り込む
常に使うアプリケーションはインストールしておく
PHPのライブラリ配置も必要であれば行う
OS起動時にChef/puppetで初期化など
SSHでログイン可能
障害時の詳細調査
アプリケーションのインストール
手間
デフォルト構成で使用
パラメータ調整
他サービスとの連携
イメージカスタマイズ
柔軟性 SSH接続
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
45. まとめ
AWS SDK for PHPでクラウドをAPIで操れる!
Elastic Beanstalkで、容易にPHP実行環境の構築が可能
ロードバランサ、スケーリング、通知、アプリバージョン管理が
即利用可能
必要に応じて、パラメータ設定・SSHログイン、カスタムAMIの利
用が可能
Gitを使用して、実装・設定・デプロイがシームレスに
AWSの他サービスとも連携