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

  • 1,328 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,328
On Slideshare
0
From Embeds
0
Number of Embeds
12

Actions

Shares
Downloads
4
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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/
  • 10.   ご清聴ありがとうございました。
  • 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/  サンプルコードはここから拝借しました。