システムも世の理からは逃れられないという話。ユニファ開発者ブログスマートフォン用の表示で見るユニファ開発者ブログユニファ株式会社システム開発部メンバーによるブログです。2017-07-14システムも世の理からは逃れられないという話。みなさん、こんにちは。エンジニアの田渕です。梅雨真っ只中の今週、皆様いかがお過ごしでしょうか?暑かったり寒かったり、じめじめしてたり......気候が安定しないおかげで、私の周囲では体調を崩す人が続出しています。今回は、エンジニアブログなのにエンジニアではない方にも読んで頂けそうな記事を書いてみようと思います。いうのも、先日、弊社の営業さんから「読んでおくと良いシステム系の本教えてください」とリクエスト頂いたのですが、なかなかご紹介できる本が無くてですね......。いうことで、自分で記事を一つ、かいてみようかなと。エンジニアが不思議に思うこと。長いこと、エンジニアをやっていると、エンジニアとそうではない人の間に、結構大きな感覚の違いがあることに気づきます。その筆頭にあげられるのが、いわゆる、システムのパフォーマンス、限界についての話。先日も、某大手通販の会社さんがセールを始めた途端、サイトに人が殺到して、繋がりにくいという状況が起こりました。エンジニアなら割とみんな、「あー、あるある。」ってなるんですが、エンジニアでない人と話をしていると「対策しておけよ!」と結構、お怒りだったり。世の中の物理的な法則に縛られていない、別次元の世界の話のような。いやいやそうじゃないんだよ、システムの世界も、現実世界と同じようなルールに縛られてるんだよ、というのが今日のお話です。夏休みのアミューズメントパークは長蛇の列もうすぐ夏休みシーズンですね。夏休みになると、人気のあるアミューズメントパークの入場ゲートは長蛇の列になります。行ったはいいけど、入場規制や、あまりの列の長さに涙を飲んだ、という過去をお持ちの方もいらっしゃるはず。答えは簡単で、入場しようと訪れている人の人数に対して、開いている窓口が少ないからです。窓口が10個開いているところに11組のお客様が同時に来たら、1組は並んで順番を待つことになります。最後に来た人は、自分の前に広がる列を眺めて、遠い目をするに違いありません。自分が入場できるまでにとても時間がかかることが、目に見えてわかるからです。実は、Webシステム/サイトの処理が遅くなる/繋がりにくくなる、という事象の背後で起こっていることの多くは、これと同じようなことです。Webシステムにはあらかじめ、同時に開いていい窓口の数が設定されています。この窓口の数よりも少ない人が一斉にやってくる分には何の問題もないのですが、この窓口の数よりもたくさんの人が一斉にやってくると、アミューズメントパークの窓口と同じく、処理の順番待ちが発生します。ここで、現実世界なら「あ〜前に人が並んでるからね〜。」と自分の目で見て状況を把握出来ますが、Webサイトに訪れたお客様には自分の前に並んでいる他のお客様の姿など見えていません。結果、いつまでも処理がされないまま、ただ待たされ「遅い」「繋がらない」と感じることになります。お客様に早く入場してほしい!「いやいやいや。待たせるなんてもってのほかだよ!早く入場してもらってよ!顧客満足度ダダ下がりじゃん!」......おっしゃる通りです。入場処理の効率化、簡略化をする......1組あたりにかかる入場処理の時間を短くして、入場できるお客様の数を増やす方法です。窓口の数を増やす......入場処理のやり方は変えず、単純に窓口の数を増やすことで、入場できるお客様の数を増やす方法です。システムの性能改善、パフォーマンスチューニングと呼ばれるものも、概ね同じようなことをします。「なんだ、窓口の数増やせばいいなら、常に多目にしとけばいいじゃん。」と思うかもしれませんが、窓口は多ければ多いほどお金がかかる。それは、現実世界と一緒です。システムも基本は、「繁忙期に合わせて」ではなく、「平常時の来客に対応するに十分」なだけの窓口しか開けません。ないと必要以上にお金がかかるからです。言われると、実はあります。近年ではそのあたりの技術が飛躍的に発達し、あらかじめ設定しておけば機械が自動的に窓口を増やすことも出来るようになったので、システム利用者が長蛇の列に並ぶ機会は一昔前に比べると随分減っています。「無限に増やしていいよ」という設定にはできないので、「ここまでなら窓口増やしていいよ」という感じの設定をあらかじめしておくことになります。その数を超えてしまった=当初の予想を超えてしまえば、やっぱり長蛇の列はできます。そんな訳で、未だにインターネットの世界でも、長蛇の列に遭遇することになります。今回は、システムの利用者が並ぶ長蛇の列について解説してみました。形がないからイメージしづらいインターネットの世界ですが、実はあまり、現実の世界と変わりません。これからは、「読み込み中」のままでなかなかお返事が帰って来ない画面に遭遇したら「ああ、私今、窓口の前で待たされてるのね。