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

4,485 views

Published on

PHPのセッション管理方法の選択とDynamoDBという選択肢について。

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

No Downloads
Views
Total views
4,485
On SlideShare
0
From Embeds
0
Number of Embeds
1,862
Actions
Shares
0
Downloads
13
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

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

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

×