SlideShare ist ein Scribd-Unternehmen logo
1 von 11
PHP のセッション管理に DynamoDB を使
う
2014/07/27  いのうえ たいじ
自己紹介
井上泰治  (いのうえ たいじ)
  Twiter :  @inufs
  Github :  inouet
 所属  : ハンズラボ株式会社
 
2
1.セッション管理方法について
 クライアントサイド  サーバーサイド
• cookie • FILE (PHP デフォルト)
• memcached
• Redis
• DynamoDB
• MySQL
 :
PHP には Session Handler という機能があり
容易にセッションストレージを拡張可能
http://php.net/manual/ja/function.session-set-save-handler.php
2 .セッション管理方法/一長一短
方法 メリット デメリット
cookie 専用のサーバーが不要 改ざんに対する考慮が必要
容量の問題
FILE session handler のデフォルト
すぐに使える
複数サーバーがあるときに困る
L7 Load Balancer, NFS など別途必要
memcached session handler が用意されてい
る
複数サーバーで共有できる
早い
サーバー落ちたら消える
Memcached クラスタの運用が必要
Redis session handler が用意されてい
る
複数サーバーで共有できる
永続化
Redis クラスタの運用が必要
MySQL Session handler が用意されてい
る
複数サーバーで共有できる
書き込みをスケールさせるのが困難
3. Session 管理に DynamoDB を使った時のメリット
 メリット
 デメリット
• サーバー運用が不要( AWS に任せられる)
• 落ちる心配をしなくて良い
• 保証された読み込み/書き込み性能
• Session Handler も容易されている (AWS SDK)
• スパイクアクセスに弱い
• 予め読み込み性能、書き込み性能を指定するため
• Dynamic DynamoDB などを使い、自動でキャパシティを
• 上げる仕組みが必要
4 .ところで DynamoDB って何?
• AWS のマネージドシステム
•運用不要
• 高い可用性
•3箇所の AZ (データセンター)へデータの保存
•保証された書き込み・読み込み性能
• NoSQL の一種
• スキーマレス
• 基本的に検索は、テーブル作成時に指定したインデックスでのみ可
•ハッシュキー/レンジキー
•Local Secondary Index
•Global Secondary Index
 特徴
5 . DynamoDB の料金体系
特徴的な料金体系
• プロビジョンしたスループットに対して課金 ( テーブル毎)
• Read Capacity Unit / Write Capacity Unit
• 容量に対する課金 ($0.285 / GB / month)
例) Read 100, Write 100 で $66.25 / month
※ 2014/07/27 時点
 料金体系
5 .使い方
<?php
require 'vendor/autoload.php';
use AwsDynamoDbDynamoDbClient;
use AwsDynamoDbSessionSessionHandler;
$dynamoDb = DynamoDbClient::factory(array(
'region' => 'ap-northeast-1'
));
$sessionHandler = SessionHandler::factory(array(
'dynamodb_client' => $dynamoDb,
'table_name' => 'session',
));
$sessionHandler->register();
session_start();
$_SESSION[“counter”] ++;
<準備>
SDK のロード
Session Handler
への登録
あとは普通に
$_SESSION を使うだけ
宣伝コーナー
東急ハンズネットストアでは、 8 月 28 日 ( 木 ) ~ 9 月 3 日
(水)まで
年に一度の大感謝バーゲン「ハンズメッセ」を開催いたし
ます。
いいモノいっぱい、おトクな価格で。
詳しくは WEB で
https://hands.net/special/custom/2014messe/
 
ご清聴ありがとうございました。
参考
■ Amazon DynamoDB
  http://aws.amazon.com/jp/dynamodb/
■ DynamoDB Session Handler
  http://docs.aws.amazon.com/aws-sdk-php/guide/latest/feature-dynamodb-session-
handler.html
■ PHP アプリケーションのセッション管理に Amazon DynamoDB を使う
  http://dev.classmethod.jp/cloud/aws/php-session-dynamodb/
 サンプルコードはここから拝借しました。

Weitere ähnliche Inhalte

Was ist angesagt?

AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことKeisuke Nishitani
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
20190911 AWS Black Belt Online Seminar AWS Batch
20190911 AWS Black Belt Online Seminar AWS Batch20190911 AWS Black Belt Online Seminar AWS Batch
20190911 AWS Black Belt Online Seminar AWS BatchAmazon Web Services Japan
 
Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~HommasSlide
 
Jenkinsとamazon ecsで コンテナCI
Jenkinsとamazon ecsで コンテナCIJenkinsとamazon ecsで コンテナCI
Jenkinsとamazon ecsで コンテナCIshigeyuki azuchi
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
AWS Black Belt Online Seminar 2017 Amazon Pinpoint で始めるモバイルアプリのグロースハック
AWS Black Belt Online Seminar 2017 Amazon Pinpoint で始めるモバイルアプリのグロースハックAWS Black Belt Online Seminar 2017 Amazon Pinpoint で始めるモバイルアプリのグロースハック
AWS Black Belt Online Seminar 2017 Amazon Pinpoint で始めるモバイルアプリのグロースハックAmazon Web Services Japan
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)Trainocate Japan, Ltd.
 
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)NTT DATA Technology & Innovation
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
20191016 AWS Black Belt Online Seminar Amazon Route 53 ResolverAmazon Web Services Japan
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
AWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグAWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグAmazon Web Services Japan
 
Amazon Kinesis Video Streams WebRTC 使ってみた
Amazon Kinesis Video Streams WebRTC 使ってみたAmazon Kinesis Video Streams WebRTC 使ってみた
Amazon Kinesis Video Streams WebRTC 使ってみたmganeko
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo!デベロッパーネットワーク
 
MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介Shinya Sugiyama
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAmazon Web Services Japan
 
20191112 AWS Black Belt Online Seminar AWS Media Services で始めるライブ動画配信
20191112 AWS Black Belt Online Seminar AWS Media Services で始めるライブ動画配信20191112 AWS Black Belt Online Seminar AWS Media Services で始めるライブ動画配信
20191112 AWS Black Belt Online Seminar AWS Media Services で始めるライブ動画配信Amazon Web Services Japan
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 

Was ist angesagt? (20)

AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
20190911 AWS Black Belt Online Seminar AWS Batch
20190911 AWS Black Belt Online Seminar AWS Batch20190911 AWS Black Belt Online Seminar AWS Batch
20190911 AWS Black Belt Online Seminar AWS Batch
 
Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~
 
Jenkinsとamazon ecsで コンテナCI
Jenkinsとamazon ecsで コンテナCIJenkinsとamazon ecsで コンテナCI
Jenkinsとamazon ecsで コンテナCI
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
AWS Black Belt Online Seminar 2017 Amazon Pinpoint で始めるモバイルアプリのグロースハック
AWS Black Belt Online Seminar 2017 Amazon Pinpoint で始めるモバイルアプリのグロースハックAWS Black Belt Online Seminar 2017 Amazon Pinpoint で始めるモバイルアプリのグロースハック
AWS Black Belt Online Seminar 2017 Amazon Pinpoint で始めるモバイルアプリのグロースハック
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
AWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグAWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグ
 
Amazon Kinesis Video Streams WebRTC 使ってみた
Amazon Kinesis Video Streams WebRTC 使ってみたAmazon Kinesis Video Streams WebRTC 使ってみた
Amazon Kinesis Video Streams WebRTC 使ってみた
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
 
MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
 
20191112 AWS Black Belt Online Seminar AWS Media Services で始めるライブ動画配信
20191112 AWS Black Belt Online Seminar AWS Media Services で始めるライブ動画配信20191112 AWS Black Belt Online Seminar AWS Media Services で始めるライブ動画配信
20191112 AWS Black Belt Online Seminar AWS Media Services で始めるライブ動画配信
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 

Andere mochten auch

[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5Kenichi Mukai
 
スクレイピングその後
スクレイピングその後スクレイピングその後
スクレイピングその後Tomoki Hasegawa
 
本当のオブジェクト指向は可読性を上げる
本当のオブジェクト指向は可読性を上げる本当のオブジェクト指向は可読性を上げる
本当のオブジェクト指向は可読性を上げるWataru Terada
 
FuelPHPにアプリと管理ツールを同居してみる
FuelPHPにアプリと管理ツールを同居してみるFuelPHPにアプリと管理ツールを同居してみる
FuelPHPにアプリと管理ツールを同居してみるMakoto Shimoda
 
Using xvim with macvim
Using xvim with macvimUsing xvim with macvim
Using xvim with macvimpebble8888
 
Twilio API を PHP で触ってみよう
Twilio API を PHP で触ってみようTwilio API を PHP で触ってみよう
Twilio API を PHP で触ってみようMasashi Shinbara
 
Make the Prott Faster
Make the Prott FasterMake the Prott Faster
Make the Prott FasterSadaaki HIRAI
 
VimConf 2014 from deris0126
VimConf 2014 from deris0126VimConf 2014 from deris0126
VimConf 2014 from deris0126deris0126
 
OpenBlocks IoTで温湿度を可視化してみた
OpenBlocks IoTで温湿度を可視化してみたOpenBlocks IoTで温湿度を可視化してみた
OpenBlocks IoTで温湿度を可視化してみたHideki Yanagihara
 
FuelPHP × HHVM サービス開発事例
FuelPHP × HHVM サービス開発事例FuelPHP × HHVM サービス開発事例
FuelPHP × HHVM サービス開発事例Yuji Otani
 
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovimShougo
 
Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014cohama
 
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)アシアル株式会社
 
20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With Laravel20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With LaravelTakumi Yoshida
 
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014Sugoi Kanari
 
Developing Applications with the IoT Button - March 2017 AWS Online Tech Talks
Developing Applications with the IoT Button - March 2017 AWS Online Tech TalksDeveloping Applications with the IoT Button - March 2017 AWS Online Tech Talks
Developing Applications with the IoT Button - March 2017 AWS Online Tech TalksAmazon Web Services
 
PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろうPHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろうTaiji INOUE
 

Andere mochten auch (20)

[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
 
スクレイピングその後
スクレイピングその後スクレイピングその後
スクレイピングその後
 
本当のオブジェクト指向は可読性を上げる
本当のオブジェクト指向は可読性を上げる本当のオブジェクト指向は可読性を上げる
本当のオブジェクト指向は可読性を上げる
 
FuelPHPにアプリと管理ツールを同居してみる
FuelPHPにアプリと管理ツールを同居してみるFuelPHPにアプリと管理ツールを同居してみる
FuelPHPにアプリと管理ツールを同居してみる
 
Using xvim with macvim
Using xvim with macvimUsing xvim with macvim
Using xvim with macvim
 
Twilio API を PHP で触ってみよう
Twilio API を PHP で触ってみようTwilio API を PHP で触ってみよう
Twilio API を PHP で触ってみよう
 
Make the Prott Faster
Make the Prott FasterMake the Prott Faster
Make the Prott Faster
 
VimConf 2014 from deris0126
VimConf 2014 from deris0126VimConf 2014 from deris0126
VimConf 2014 from deris0126
 
OpenBlocks IoTで温湿度を可視化してみた
OpenBlocks IoTで温湿度を可視化してみたOpenBlocks IoTで温湿度を可視化してみた
OpenBlocks IoTで温湿度を可視化してみた
 
FuelPHP × HHVM サービス開発事例
FuelPHP × HHVM サービス開発事例FuelPHP × HHVM サービス開発事例
FuelPHP × HHVM サービス開発事例
 
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovim
 
Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014
 
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
 
20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With Laravel20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With Laravel
 
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
 
Incident Coordination Workshop
Incident Coordination WorkshopIncident Coordination Workshop
Incident Coordination Workshop
 
AWS Lambdaを紐解く
AWS Lambdaを紐解くAWS Lambdaを紐解く
AWS Lambdaを紐解く
 
Developing Applications with the IoT Button - March 2017 AWS Online Tech Talks
Developing Applications with the IoT Button - March 2017 AWS Online Tech TalksDeveloping Applications with the IoT Button - March 2017 AWS Online Tech Talks
Developing Applications with the IoT Button - March 2017 AWS Online Tech Talks
 
PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろうPHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろう
 

Ähnlich wie PHPのセッション管理にDynamoDBを使う

スクリプト言語PHP攻略法
スクリプト言語PHP攻略法スクリプト言語PHP攻略法
スクリプト言語PHP攻略法Rui Hirokawa
 
Hyper vを理解する
Hyper vを理解するHyper vを理解する
Hyper vを理解するNaoki Abe
 
php-src の歩き方
php-src の歩き方php-src の歩き方
php-src の歩き方do_aki
 
Windows Server 2012 のストレージ強化とエンタープライズへの活用
Windows Server 2012 のストレージ強化とエンタープライズへの活用Windows Server 2012 のストレージ強化とエンタープライズへの活用
Windows Server 2012 のストレージ強化とエンタープライズへの活用Daichi Ogawa
 
PHP4の今 ~日本語対応と最近のトピックス~
PHP4の今 ~日本語対応と最近のトピックス~PHP4の今 ~日本語対応と最近のトピックス~
PHP4の今 ~日本語対応と最近のトピックス~Rui Hirokawa
 
Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5
Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5
Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5Naoya Nakazawa
 
WordPressでの制作説明
WordPressでの制作説明WordPressでの制作説明
WordPressでの制作説明Toshiaki Endo
 
WordPressサイトのバージョン管理
WordPressサイトのバージョン管理WordPressサイトのバージョン管理
WordPressサイトのバージョン管理lolipopjp
 
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...php and sapi and zendengine2 and...
php and sapi and zendengine2 and...do_aki
 
PowerShell を使用した Hyper-V の管理
PowerShell を使用した Hyper-V の管理PowerShell を使用した Hyper-V の管理
PowerShell を使用した Hyper-V の管理Kazuki Takai
 
Cloudera大阪セミナー 20130219
Cloudera大阪セミナー 20130219Cloudera大阪セミナー 20130219
Cloudera大阪セミナー 20130219Cloudera Japan
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作Yuki Okamoto
 
おさらいActive directory 130330
おさらいActive directory 130330おさらいActive directory 130330
おさらいActive directory 130330wintechq
 
Basic of virtual memory of Linux
Basic of virtual memory of LinuxBasic of virtual memory of Linux
Basic of virtual memory of LinuxTetsuyuki Kobayashi
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用Shinya Okano
 
Hadoop conference 2013winter_for_slideshare
Hadoop conference 2013winter_for_slideshareHadoop conference 2013winter_for_slideshare
Hadoop conference 2013winter_for_slideshareYu Ishikawa
 
Cloudera Manager4.0とNameNode-HAセミナー資料
Cloudera Manager4.0とNameNode-HAセミナー資料Cloudera Manager4.0とNameNode-HAセミナー資料
Cloudera Manager4.0とNameNode-HAセミナー資料Cloudera Japan
 
PHP 5.4のビルトインウェブサーバー
PHP 5.4のビルトインウェブサーバーPHP 5.4のビルトインウェブサーバー
PHP 5.4のビルトインウェブサーバーAtsushi Matsuo
 
Windows HPC Server 講習会 第2回 開発編
Windows HPC Server 講習会 第2回 開発編Windows HPC Server 講習会 第2回 開発編
Windows HPC Server 講習会 第2回 開発編Osamu Masutani
 

Ähnlich wie PHPのセッション管理にDynamoDBを使う (20)

スクリプト言語PHP攻略法
スクリプト言語PHP攻略法スクリプト言語PHP攻略法
スクリプト言語PHP攻略法
 
Hyper vを理解する
Hyper vを理解するHyper vを理解する
Hyper vを理解する
 
php-src の歩き方
php-src の歩き方php-src の歩き方
php-src の歩き方
 
Windows Server 2012 のストレージ強化とエンタープライズへの活用
Windows Server 2012 のストレージ強化とエンタープライズへの活用Windows Server 2012 のストレージ強化とエンタープライズへの活用
Windows Server 2012 のストレージ強化とエンタープライズへの活用
 
PHP4の今 ~日本語対応と最近のトピックス~
PHP4の今 ~日本語対応と最近のトピックス~PHP4の今 ~日本語対応と最近のトピックス~
PHP4の今 ~日本語対応と最近のトピックス~
 
Redis
RedisRedis
Redis
 
Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5
Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5
Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5
 
WordPressでの制作説明
WordPressでの制作説明WordPressでの制作説明
WordPressでの制作説明
 
WordPressサイトのバージョン管理
WordPressサイトのバージョン管理WordPressサイトのバージョン管理
WordPressサイトのバージョン管理
 
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
 
PowerShell を使用した Hyper-V の管理
PowerShell を使用した Hyper-V の管理PowerShell を使用した Hyper-V の管理
PowerShell を使用した Hyper-V の管理
 
Cloudera大阪セミナー 20130219
Cloudera大阪セミナー 20130219Cloudera大阪セミナー 20130219
Cloudera大阪セミナー 20130219
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
 
おさらいActive directory 130330
おさらいActive directory 130330おさらいActive directory 130330
おさらいActive directory 130330
 
Basic of virtual memory of Linux
Basic of virtual memory of LinuxBasic of virtual memory of Linux
Basic of virtual memory of Linux
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
 
Hadoop conference 2013winter_for_slideshare
Hadoop conference 2013winter_for_slideshareHadoop conference 2013winter_for_slideshare
Hadoop conference 2013winter_for_slideshare
 
Cloudera Manager4.0とNameNode-HAセミナー資料
Cloudera Manager4.0とNameNode-HAセミナー資料Cloudera Manager4.0とNameNode-HAセミナー資料
Cloudera Manager4.0とNameNode-HAセミナー資料
 
PHP 5.4のビルトインウェブサーバー
PHP 5.4のビルトインウェブサーバーPHP 5.4のビルトインウェブサーバー
PHP 5.4のビルトインウェブサーバー
 
Windows HPC Server 講習会 第2回 開発編
Windows HPC Server 講習会 第2回 開発編Windows HPC Server 講習会 第2回 開発編
Windows HPC Server 講習会 第2回 開発編
 

PHPのセッション管理にDynamoDBを使う

  • 1. PHP のセッション管理に DynamoDB を使 う 2014/07/27  いのうえ たいじ
  • 2. 自己紹介 井上泰治  (いのうえ たいじ)   Twiter :  @inufs   Github :  inouet  所属  : ハンズラボ株式会社   2
  • 3. 1.セッション管理方法について  クライアントサイド  サーバーサイド • cookie • FILE (PHP デフォルト) • memcached • Redis • DynamoDB • MySQL  : PHP には Session Handler という機能があり 容易にセッションストレージを拡張可能 http://php.net/manual/ja/function.session-set-save-handler.php
  • 4. 2 .セッション管理方法/一長一短 方法 メリット デメリット cookie 専用のサーバーが不要 改ざんに対する考慮が必要 容量の問題 FILE session handler のデフォルト すぐに使える 複数サーバーがあるときに困る L7 Load Balancer, NFS など別途必要 memcached session handler が用意されてい る 複数サーバーで共有できる 早い サーバー落ちたら消える Memcached クラスタの運用が必要 Redis session handler が用意されてい る 複数サーバーで共有できる 永続化 Redis クラスタの運用が必要 MySQL Session handler が用意されてい る 複数サーバーで共有できる 書き込みをスケールさせるのが困難
  • 5. 3. Session 管理に DynamoDB を使った時のメリット  メリット  デメリット • サーバー運用が不要( AWS に任せられる) • 落ちる心配をしなくて良い • 保証された読み込み/書き込み性能 • Session Handler も容易されている (AWS SDK) • スパイクアクセスに弱い • 予め読み込み性能、書き込み性能を指定するため • Dynamic DynamoDB などを使い、自動でキャパシティを • 上げる仕組みが必要
  • 6. 4 .ところで DynamoDB って何? • AWS のマネージドシステム •運用不要 • 高い可用性 •3箇所の AZ (データセンター)へデータの保存 •保証された書き込み・読み込み性能 • NoSQL の一種 • スキーマレス • 基本的に検索は、テーブル作成時に指定したインデックスでのみ可 •ハッシュキー/レンジキー •Local Secondary Index •Global Secondary Index  特徴
  • 7. 5 . DynamoDB の料金体系 特徴的な料金体系 • プロビジョンしたスループットに対して課金 ( テーブル毎) • Read Capacity Unit / Write Capacity Unit • 容量に対する課金 ($0.285 / GB / month) 例) Read 100, Write 100 で $66.25 / month ※ 2014/07/27 時点  料金体系
  • 8. 5 .使い方 <?php require 'vendor/autoload.php'; use AwsDynamoDbDynamoDbClient; use AwsDynamoDbSessionSessionHandler; $dynamoDb = DynamoDbClient::factory(array( 'region' => 'ap-northeast-1' )); $sessionHandler = SessionHandler::factory(array( 'dynamodb_client' => $dynamoDb, 'table_name' => 'session', )); $sessionHandler->register(); session_start(); $_SESSION[“counter”] ++; <準備> SDK のロード Session Handler への登録 あとは普通に $_SESSION を使うだけ
  • 9. 宣伝コーナー 東急ハンズネットストアでは、 8 月 28 日 ( 木 ) ~ 9 月 3 日 (水)まで 年に一度の大感謝バーゲン「ハンズメッセ」を開催いたし ます。 いいモノいっぱい、おトクな価格で。 詳しくは WEB で https://hands.net/special/custom/2014messe/
  • 11. 参考 ■ Amazon DynamoDB   http://aws.amazon.com/jp/dynamodb/ ■ DynamoDB Session Handler   http://docs.aws.amazon.com/aws-sdk-php/guide/latest/feature-dynamodb-session- handler.html ■ PHP アプリケーションのセッション管理に Amazon DynamoDB を使う   http://dev.classmethod.jp/cloud/aws/php-session-dynamodb/  サンプルコードはここから拝借しました。