差分

ナビゲーションに移動 検索に移動

パーシステンス

4,015 バイト追加, 2015年11月27日 (金) 02:05
ページの作成:「'''パーシステンス'''(英語:persistence)とは、直訳すると「存続」という意味である。 ==概要== ウェブの世界でパーシス...」
'''パーシステンス'''([[英語]]:persistence)とは、直訳すると「存続」という意味である。

==概要==
[[ウェブ]]の世界でパーシステンスという場合は、[[ロードバランサー]]を咬ました複数台の[[HTTPサーバー]]で[[セッション]]を共有するためのセッションサーバー、およびその構築方法を指す。明示的にセッション・パーシステンスなどと記載している事例も見受けられる。

==ハードウェアで対応==
パーシステンスの主な実現方法としては高性能な[[ロードバランサー]]製品を用いる方法がある。高性能なロードバランサー製品には接続は同一のHTTPサーバーにだけ接続しつづけるという機能が付いている。これを使えば共有セッションを保持する[[サーバー]]を用意しなくても個々のサーバー内で完結できる。また[[アプリケーション]]側での対応が不要であるため[[プロプライエタリ]]なものや、[[プログラム]]の改変をしている場合じゃねぇ[[デスマーチ]]に陥った案件などでは活躍する。

==アプリケーションで対応==
[[アプリケーション]]でパーシステンスに対応する方法としては[[データベース]]に[[セッション]]を保存するという方法がある。この際に用いる[[データベース]]は一般的な[[RDBMS]]でもよいが、[[セッション]]という単純な[[データ構造]]、かつ頻繁な読み書き、かつ[[スケールアウト]]したい要件では[[Redis]]などの[[NoSQL]]を用いるのが現実的である。

===PHP: memcached===
[[PHP]]では[[セッション]]の保存先に[[memcached]]を指定できる。これを別サーバーにすることでHTTPサーバーを[[DNSラウンドロビン]]で単純に複数台設置しても簡単に対応できる。

php.iniで設定するのが手軽である。
session.save_handler = memcached // コメントアウトをはずす
session.save_path = "tcp://localhost:11211" // 追記

===ASP.NET: ASP.NET State Service===
Windows ServerにIISを入れると「ASP.NET State Service」というサービスが出来上がる。これはIISの一部なのでWindows Serverでなければ利用できない。このため開発機が普通のWindowsであったり、Monoや.NET Coreなどへの対応を考慮すると極めて非推奨である。

サービスを立ち上げてWeb.configのsessionStateに以下のような設定を加えることで利用できる。
<source lang="xml">
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<system.web>
<sessionState mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
stateNetworkTimeout="10" />
</system.web>
</configuration>
</source>

===ASP.NET: RedisSessionProvider===
[[マイクロソフト]]は[[Redis]]でセッションを監理するライブラリを[[オープンソース]]として公開している。
*https://www.nuget.org/packages/Microsoft.Web.RedisSessionStateProvider

マイクロソフトの意図としては[[Azure]]でのAzure Redis Cacheを利用したセッション監理を想定したものだと思われるが、普通にローカルにRedisサーバーを立ち上げても利用でる。Redisなのでプラットフォームに依存せず、スケールアウトもする。現状でもっとも推奨される方法であると思われる。

利用には[[NuGet]]から入れられるのが手っ取り早い。
*Microsoft.Web.RedisSessionStateProvider
*https://www.nuget.org/packages/Microsoft.Web.RedisSessionStateProvider

設定方法はマイクロソフトの公式サイトに日本語の資料があるのでこれを見るのが手っ取り早い>。
*https://azure.microsoft.com/ja-jp/documentation/articles/cache-asp.net-session-state-provider/

==関連項目==
*[[ロードバランサー]]

==参考文献==
{{reflilst}}

{{stub}}
匿名利用者

案内メニュー