「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

パーシステンス

pointこの用語のポイント

pointロードバランサの機能だよ

pointセッションを維持するための仕組みだよ

スポンサーリンク

簡単に書くよ

パーシステンス(英:persistence)とは

ロードバランサ((負担を軽くするために)処理を振り分ける誘導係)の機能のひとつ
であり

同じ人からの接続を同じ機器に振り分けることによって、セッション(論理的な意味での「開始」から「終了」まで(を意図する単位))を維持する仕組みのこと
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として「ロードバランサ」について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

ロードバランサは「(負担を軽くするために)処理を振り分ける誘導係」です。

例えば、そうですね。

ホームページを見るときには、まずホームページを見るときに使うソフトWebブラウザからホームページが置いてあるコンピュータWebサーバに「このページをおくれ」と お願いが出されます。

パーシステンス

そのお願いに対して、WebサーバさんはWebブラウザさんに「ほれ、そのページだよ」と お返事をします。
くれと言われたホームページのファイルをあげるのです。

パーシステンス2

Webブラウザさんは、Webサーバさんからもらったファイルを画面に表示します。

パーシステンス3

これがホームページを見るときの流れです。

この流れにおいて、登場するWebサーバさんは普通は1台です。
1台のWebサーバさんが、えっちらおっちらと、お仕事をします。

パーシステンス4

とはいえ、世の中には人気者のホームページがあります。
人気者のホームページが置いてあるWebサーバは、たくさんの人から「このページをちょうだい」と言われるでしょう。
そうすると1台では処理しきれなくなることがあります。

そんなときはWebサーバを たくさん用意します。
数の力で対抗するのです。
今回は3台用意したと仮定しましょうかね。

パーシステンス5

もともと1台でやっていた仕事を3台でやるのです。
1台にかかる負担は三分の一になるでしょう。

ただし、1回の「このページをちょうだい」に対してお返事をするのは1台で十分です。
3台が3台とも「ほれ、そのページだよ」と お返事をすると、逆に混乱させてしまいます。

パーシステンス6

そこで登場するのが誘導係です。

「このページをちょうだい」のお願いを、まずは誘導係が受け取ります。

パーシステンス7

お願いを受け取った誘導係が、暇そうなWebサーバに「おまえがこれを処理しろや」と割り振ります。

パーシステンス8

こうすることで、1度にお仕事をするのは1台ですが、全体で見ると3台でお仕事をする状態になります。

パーシステンス9

使う人から見れば今までと同じです。
相手をしてくれているのは1台です。

パーシステンス10

でも実際には3台でお仕事をしています。
1台にかかる負担は三分の一になりました。

パーシステンス11

めでたし、めでたし。

このように、負荷分散を目的として「今回は、おまえがやれ~」「今回は君がやってね」と処理を振り分けてくれる誘導係がロードバランサです。
ちなみに、今回はWebサーバを例に挙げましたが、用途がWebサーバ以外のロードバランサもあります。

以上を踏まえて、本題に入ります。

実はロードバランサには1つ弱点があります。
それは

お仕事がどの機器に振り分けられるかわからないので、セッションが維持できない

点です。

ん?
「セッション」が何か分かりませんか?

大丈夫です。
説明します。

例えば、そうですね。
ピヨ太君がオンラインショップインターネット上のお店)でお買い物をしたとしましょう。

まずは、ピヨ太君の使っているWebブラウザからオンラインショップのWebサーバに対して「この商品を買うよ。注文画面をちょうだい」とお願いを出します。

パーシステンス12

そうするとオンラインショップのWebサーバは「ほらよ。これが注文画面だ」とお返事を出します。

パーシステンス13

次にピヨ太君は「注文内容を入力したよ。注文処理をやって結果画面をちょうだい」とお願いを出します。

パーシステンス14

それに対して、オンラインショップのWebサーバは「注文処理をやったよ。これが結果画面ね」とお返事を出します。

パーシステンス15

これでピヨ太君は無事に注文ができました。

めでたし、めでたし。

ただし、ここで1つ注意事項があります。

Webサーバさんは忘れっぽいのです。

実はWebブラウザさんとWebサーバさんのやり取りは、1回のお願いと1回のお返事で完結します。
「注文画面をちょうだい」「これが注文画面だ」で関係は終わりです。
お返事を出した時点で、Webサーバさんは今のやり取りを忘れてしまいます。

パーシステンス16

ですから、次に(さっきの続きとして)「注文処理をやって結果画面をちょうだい」とお願いを出しても、Webサーバさんは戸惑ってしまいます。
「あぁ、さっき『注文画面をちょうだい』ってお願いをくれたピヨ太君ね」とは気づいてくれないのです。

パーシステンス17

Webサーバさんは、さっきのやり取りを忘れていますからね。
「注文画面をちょうだい」と「注文処理をやって結果画面をちょうだい」が続きだとは気づきません。
Webサーバさんにとって、それぞれのやり取りは独立しているのです。

パーシステンス18

これでは不便ですよね。

そこで、それぞれのやり取りは独立しているものの「これは一連の流れですよ」と認識させるための仕組みがあります。

パーシステンス19

この一連の流れを認識させる仕組みを「セッション」や「セッション管理」と呼びます。

セッションの具体的な仕組みは、ここでは触れません。
ざっくりと雰囲気だけ説明しておくと、2回目のお願いをするときに、単に「注文処理をやって結果画面をちょうだい」ではなく「さっき『注文画面をちょうだい』ってお願いしたピヨ太だけどよ~。注文処理をやって結果画面をちょうだい」と伝えるイメージです。
これでWebサーバさんは「あぁ、さっきのアイツか」と気付けます。

パーシステンス20

このような涙ぐましい努力をして、忘れっぽいWebサーバさんの記憶をつなぎとめているのです。
独立したひとつひとつの「お願い→お返事」を関連付けて、意味のある一連の流れを形作るための仕組みがセッションです。

さて、このような涙ぐましい努力ですが、ロードバランサが混ざると問題が生じます。

ロードバランサは処理の誘導係です。
複数の機器のどれかに割り振ってくれます。

そうするとですね。

1回目の「注文画面をちょうだい」のお願いを機器1に振り分け、2回目の「さっき『注文画面をちょうだい』ってお願いしたピヨ太だけどよ~。注文処理をやって結果画面をちょうだい」のお願いを機器2に振り分けることも出てくるわけです。

パーシステンス21

機器2は困りますよね。
「さっき『注文画面をちょうだい』って お願いしたピヨ太だけどよ~。」と言われても、そんな「さっき」は ありません。
「注文画面をちょうだい」なお願いは機器1に行ってます。

これではセッションを維持できません。

そこで、ロードバランサには「同じ人からのお願いは同じ機器に振り分けるから」な機能があります。
ピヨ太君の最初のお願いを機器1に振り分けたら、それ以降も必ず機器1に振り分けるのです。

そうすれば「注文画面をちょうだい」も「さっき『注文画面をちょうだい』ってお願いしたピヨ太だけどよ~。注文処理をやって結果画面をちょうだい」も機器1に届きます。
機器1は一連の流れを把握できる立場にいるので、セッションを維持できます。

パーシステンス22

このような

ロードバランサの機能のひとつで、同じ人からの接続を同じ機器に振り分けることによってセッションを維持する仕組み

が「パーシステンス」です。

ちょっと小難しい言い方をすると

クライアントとロードバランサ間で(ある程度の)セッション管理をやることによってセッションを維持する仕組み

です。

もちろん、振り分け先の機器でもセッション管理をやる必要はありますけどね。
その前段階としての「同じ人からの接続は同じ機器に振り分ける」ロードバランサの機能がパーシステンスです。


image piyo2

一言でまとめるよ

まぁ「パーシステンス」って単語が出てきたら「ロードバランサ((負担を軽くするために)処理を振り分ける誘導係)におけるセッション(論理的な意味での「開始」から「終了」まで(を意図する単位))を維持するための仕組みなんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像065
書籍画像040

おまけ

■訳してみるよ

「persistence(パーシステンス)」の意味は

・粘り強さ
・しつこさ
・持続性


とかです。




書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
ソフトウェア受託現場の「失敗」集めてみた。 42の失敗事例で学ぶ受託開発のうまい進めかた
「技術書」の読書術 達人が教える選び方・読み方・情報発信&共有のコツとテクニック