47
PHP on クククク - AWS Elastic Beanstalk ククク - 2012 ク 05 ク 12 ク PHP ククククククク西 2012 ククククク PHP!

PHP on Cloud

Embed Size (px)

Citation preview

Page 1: PHP on Cloud

PHP on クラウド!- AWS Elastic Beanstalk の真価 -

2012 年 05 月 12 日PHP カンファレス関西 2012

「好きやねん PHP! 」

Page 2: PHP on Cloud

自己紹介

名前:片山暁雄 ( @c9katayama ) 大阪府池田市出身

所属:アマゾンデータサービスジャパン株式会社

職種:ソリューションアーキテクト

プログラム言語:

Java

ホテルモントレ大阪にて

Page 3: PHP on Cloud

なぜ Java 派の私がお伺いしたのか

Python と Perl が得意です

Ruby が得意です

PHP より Ust です

AWS エバンジェリスト 2 号

AWS エバンジェリスト 1 号

@understeer

Page 4: PHP on Cloud

銅鑼と忍者に気をつけろ!

Page 5: PHP on Cloud

アジェンダ

AWS ご紹介

AWS SDK for PHP

AWS Elastic Beanstalk

Page 6: PHP on Cloud

ハッシュタグ #jawsug

現在 全国 17 支部各地でお世話になっています

宮崎

東京

札幌

仙台

名古屋クラウド女子会大阪

金沢京都

山口佐賀福岡

鹿児島沖縄

熊本浜松

静岡

JAWS-UG(AWS UserGroup Japan)

Page 7: PHP on Cloud

AWSは世界中のインフラを利用可能

カリフォルニアダブリン

シンガポール

東京

オレゴン

AWS を利用開始すれば、世界 7(+1) カ所のリージョン(地域)

17 のアベイラビリティゾーン(データセンター群)30 のエッジロケーションを即座に利用可能

バージニア

サンパウロ

リージョン

エッジローケーション

GovCloud

Page 8: PHP on Cloud

AWS のサービス群

EC2S3 EBS CloudFront

Route53

AMISQSSnapShot

ELB

VPC

CloudWatch

RDS AutoScaling

DynamoDB

SWF

SES

Page 9: PHP on Cloud

虎テレ(阪神タイガース公式コンテンツ)

Page 10: PHP on Cloud

AWS SDK for PHP

Page 11: PHP on Cloud

AWS SDK for PHP とは?

AWSの各種サービスをPHPで操作するSDK EC2の起動 ディスクのマウント / 拡張 ディスクバックアップ S3へのアップロード ....

PHP を使って、システム運用の自動化も!

EC2

S3

EBS

ELB

AutoScaling

Page 12: PHP on Cloud

Amazon DynamoDB とは?

・フルマネージドな NoSQL データベース

・超高速・予測可能な一貫したパフォーマンス

・シームレスなスケーラビリティ、そして低コスト

運用管理必要なし

低レイテンシ、 SSD

プロビジョンスループットOriginal

無限に使えるストレージ

Page 13: PHP on Cloud

DynamoDB Session Handler

DynamoDB を使った、 HTTP のセッション共有SDK にクラスが同梱

EC2DynamoDB

EC2

EC2

ELB 超早い消えない管理不要

Page 14: PHP on Cloud

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();

Page 15: PHP on Cloud

AWS Elastic Beanstalk

Page 16: PHP on Cloud

AWS のサービス群

EC2S3 EBS CloudFront

Route53

AMISQSSnapShot

ELB

VPC

CloudWatch

RDS AutoScaling

DynamoDB

SWF

SES

Page 17: PHP on Cloud

AWS Elastic Beanstalk とは

Beanstalk = 豆の木 「アプリケーションが実る幹」のイメージ

Web アプリケーションの実行環境を構築・管理 AWS の各種サービスをまとめて管理してくれる

使用可能な言語: PHP 5.3 、 Java ( OpenJDK6 ) , .Net

コンテナとして Apache(PHP) Tomcat IIS をサポート

Page 18: PHP on Cloud

AWS Elastic Beanstalk とは

利用出来る API の制約・処理時間の制約はない ライブラリやフレームワークの制約もない PHP: ZIP or Git デプロイ

ロードバランサー・オートスケーリング ロードバランサーとオートスケーリングが標準装備 詳細な条件設定が可能

実行環境の設定 仮想サーバスペック、 Apache 設定など 40 項目以

上の設定が可能

Page 19: PHP on Cloud

AWS Elastic Beanstalk とは

Web アプリケーションのバージョン管理 アプリの世代管理が可能 アプリのロールバック・ロールフォワードが容易

複数環境の構築が可能 本番・テストなど目的別に構築可能

開発・管理ツールを提供 AWS Management Console コマンドラインツール Eclipse プラグイン

Page 20: PHP on Cloud

開発・管理ツール

AWS Management Console

AWS Toolkit for Eclipse

Page 21: PHP on Cloud

しくみ

Page 22: PHP on Cloud

アプリケーション管理の論理構成

Application

  Environment Version

ZIPURL Environment Configuration

Configuration Template

  Environment

URL Environment Configuration

ZIP

ZIP

ZIP

ZIP

  Environment

URL Environment Configuration

Page 23: PHP on Cloud

用語説明Application トップレベルの論理単位 Application の中に、 Environment や Version が入る デプロイするアプリケーション( PHP アプリ)と混同しやす

いので注意

Environment ConfigurationTemplate を元に構成される PHP ファイルをデプロイする環境 環境毎に URL が付与される

• URL は、 XXX.elasticbeanstalk.com 各環境毎に EC2 、 ELB などが立ち上がる ログも環境毎に取得できる( 1 時間おきに S3 へ送信可能)

Page 24: PHP on Cloud

用語説明

Version Web アプリケーションのバージョ

ン管理 アプリケーションファイルの履歴

管理が可能 S3 上でファイルを保持 Version で管理した ZIP ファイル

を、各 Environment と紐付け

Page 25: PHP on Cloud

  Environment

テクニカルアーキテクチャ

ManagementConsole

S3

CloudWatch

ElasticLoadBalanceing

EC2

HM

EC2

HM

AutoScaling

Security Group

eclipse

SNS

URL

この環境が自動で構成される

Page 26: PHP on Cloud

HostManager

Page 27: PHP on Cloud

HostManager

各 EC 2インスタンス上で動作 Ruby で実装 /opt/elasticbeanstalk/srv/hostmanager/lib/

OS 起動と同時に起動 動作に必要なパラメータは userdata を通じて入手

プロセス起動と監視 Apache 、 Thin(HostManager 用 Web サーバ)  の起動 「 Bluepill 」というアプリでプロセスを監視 プロセスが落ちると、プロセスを再起動

HostManager

Page 28: PHP on Cloud

HostManager

Web アプリケーションの生存確認 ELB からの通信を受け取り、 Web サーバ内部で

Web アプリの生存を確認して返答

ELBHostManager

/_hostmanager/healthcheck

指定 URLを確認

Page 29: PHP on Cloud

HostManager

ZIP 入れ替え、アプリサーバ再起動、設定反映などの処理 各処理の指示が入った HTTP通信を受け取り、指定の処

理を実行 通信は AES-256 で暗号化 PHP->htdocs に zip展開

HostManager

/_hostmanager/tasks

暗号化データを POST

処理を実行

Page 30: PHP on Cloud

開発・デプロイ

Page 31: PHP on Cloud

GitGit をインストール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

Page 32: PHP on Cloud

Git でデプロイ

ローカルリポジトリにソースをコミット次のコマンドでデプロイ git aws.push

自動生成された git リポジトリにソースが入るコミット後、リポジトリの中身が丸ごと zip になり S3 へ格納 バージョン付けされる

Hostmanager が zip をデプロイ Apache の htdocs 以下を削除 ->展開

DEMO

Page 33: PHP on Cloud

Event ログで確認

Page 34: PHP on Cloud

デプロイ

ステージ毎に環境を分けることが可能 本番用、テスト用、開発用

URL スワップ機能とバージョン機能を利用する

  Environment Version

ZIPURL Environment Configuration

  Environment

URL Environment Configuration

  Environment

URL Environment Configuration

URL を入れ替えることで、テスト済みの環境をそのまま公開できる

デプロイするアプリは自由に

選択出来る

ZIP

ZIP

ZIP

ZIP

Page 35: PHP on Cloud

各種設定

Page 36: PHP on Cloud

各種設定

オートスケール設定 最小 /最大サーバ数 配置 AZ スケール時のトリガー

Environment 毎に設定が可能

ロードバランサ HTTP/HTTPS ポート ヘルスチェック設定 セッション Stickey

サーバ設定 インスタンスタイプ セキュリティグルー

プ キーペア 監視間隔 AMI

Page 37: PHP on Cloud

各種設定(つづき)

HTTP サーバ設定 (PHP) ドキュメントルート位置 メモリ URL Fopen Zlib圧縮 Display Erroes Max Exection Time

ログ設定 S3 へのバックアップ

イベント通知 トピック設定 宛先設定

Page 38: PHP on Cloud

設定方法

Eclipse,Console いずれでも設定可能

DEMO

Page 39: PHP on Cloud

他サービスとの連携 /Tips

Page 40: PHP on Cloud

他サービスとの連携

AWSの他のサービスとの連携は可能 Relational Database Service(RDB サービス )

• Oracle,MySQL Dynamo DB (キーバリューストア) ElastiCache ( memcached) Simple Email Service( メール送信 ) CloudFront (コンテンツ配信) Simple Queue Service( キューイング ) ・・・

Page 41: PHP on Cloud

他サービスとの連携

DB の接続情報などのパラメータ 設定ファイルか環境変数で設定

Page 42: PHP on Cloud

さらに使い込むカスタマイズしたマシンイメージの作成が可能 デフォルトで提供されるイメージを元に元に作り込む 常に使うアプリケーションはインストールしておく PHP のライブラリ配置も必要であれば行う OS 起動時に Chef/puppet で初期化など

SSH でログイン可能 障害時の詳細調査 アプリケーションのインストール

デフォルト構成で使用

パラメータ調整他サービスとの連携

イメージカスタマイズSSH 接続

手間

柔軟性

Page 43: PHP on Cloud

料金

Elastic Beanstalk 自体の利用は \0Environment 構築に伴って利用した AWS サービスに対して課金

利用サービス 単位 コスト計算 コストAmazon EC2 t1.micro instance

1 $0.02/hr * 24 hours * 30 days $14.40

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 * $0.12

$1.80

月額 $35.27

Page 44: PHP on Cloud

まとめ

Page 45: PHP on Cloud

まとめAWS SDK for PHP でクラウドを API で操れる!

Elastic Beanstalk で、容易に PHP 実行環境の構築が可能 ロードバランサ、スケーリング、通知、アプリバージョン管理が

即利用可能 必要に応じて、パラメータ設定・ SSH ログイン、カスタム AMI

の利用が可能

Git を使用して、実装・設定・デプロイがシームレスに

AWS の他サービスとも連携

Page 46: PHP on Cloud

PHP開発のお供にAWSを!

Page 47: PHP on Cloud

47