1-1処理形態
クリスマスケーキの予約を受け付け始めた初日の夜8時、こむぎ堂の店頭のタブレットが静かになりました。いつもなら数分おきに鳴る「予約が入りました」の音が、まったく鳴りません。店の奥では、予約システムを動かしているパソコンの画面が固まり、マウスを動かしても矢印すら動かなくなっていました。ミナトが電源を入れ直し、受付が戻ったのは30分後です。そのあいだ、予約は1件も入っていませんでした。店長は粉の付いたエプロンのまま、固まったままのパソコンを見下ろして言います。「1台に全部任せていたのが、いけなかったのかな」。ミナトは相棒(AI)に、その問いをそのまま打ち込みました。
相棒の返事は、問いを二つに分けるところから始まりました。処理を1か所に集めるのか、何台かに分けるのか。分けるなら、何を基準に分けるのか。どちらにも長所と短所があり、それぞれに名前が付いています。業者に構成を相談すれば、見積もりにはその名前が並びます。名前を知らないと、案を比べることもできません。
1台の大きなコンピュータにすべての処理を集めるやり方を集中処理といいます。管理する機械が1台なので、データの置き場所も、守る場所も1か所で済みます。その代わり、その1台が止まると全部が止まります。こむぎ堂の夜に起きたのは、まさにこれでした。これに対し、処理を複数のコンピュータに分けて受け持たせるやり方を分散処理といいます。1台が止まっても残りが動き続けられ、台数を足して処理の量を増やすこともできます。ただし、機械が増えるぶん、管理の手間と、どこで不具合が起きたのかを探す手間は増えます。
かつての企業は、メインフレームと呼ばれる大型で高価なコンピュータに処理を集めていました。それを、安くて小さいサーバやパソコンを何台も組み合わせた構成に置き換え、費用を抑える動きをダウンサイジングと呼びます。集中処理から分散処理へ移る流れの、代表的な例です。
分散処理には、分け方の違いで名前が付いています。一つの軸は、役割の上下があるか(垂直)、同じ立場の機械が並ぶか(水平)です。もう一つの軸は、違う仕事を分担するか(機能分散)、同じ仕事を分け合うか(負荷分散)です。二つの軸を組み合わせると、次の四つになります。
| 名前 | 機械の並び方 | 分けるもの | こむぎ堂なら |
|---|---|---|---|
| 垂直機能分散システム | 上下の階層がある | 違う機能 | 店頭のタブレットは画面の表示と入力、奥のサーバは予約の記録、と役割を分ける |
| 垂直負荷分散システム | 上下の階層がある | 同じ処理の量 | 入力の確認のような同じ種類の処理を、端末とサーバで分け合う |
| 水平機能分散システム | 同じ立場で並ぶ | 違う機能(業務) | 予約用のサーバと通販用のサーバを並べ、それぞれ別の業務を受け持つ |
| 水平負荷分散システム | 同じ立場で並ぶ | 同じ処理の量 | 同じ予約の処理をするサーバを2台並べ、注文を半分ずつ受ける |
4つの中で垂直負荷分散は例を思い浮かべにくく、垂直の側には機能分散だけを挙げて、三つに分けて説明する資料もあります。名前を見たら、二つの軸に分けて読めば意味は取れます。
分散とは別の向きで処理を速くする方法もあります。一つの大きな処理を細かく分け、複数のプロセッサやコアで同時に進めるやり方を並列処理といいます。100枚の予約票の集計を4人で25枚ずつ数えれば、1人で数えるより早く終わる、という考え方です。
データの置き場所を分ける方法もあります。同じデータの複製を別のコンピュータにも持たせ、内容を同じに保ち続けることをレプリケーションといいます。予約の記録が2台に同じように入っていれば、1台が止まっても、もう1台から読み出せます。
ここから基本情報!頼む側と応える側に分ける
垂直機能分散の代表がクライアントサーバ処理です。処理を頼む側(クライアント)が要求を送り、頼まれる側(サーバ)が処理して結果を返す、という役割分担で処理を進めます。店頭のタブレットが「この予約を記録して」と頼み、奥のサーバが記録して「受け付けました」と返すのが、その一例です。この形でできたシステムの組み立て方は、この章の後半でくわしく扱います。
基本情報の範囲ここまで
1-2利用形態
止まった30分を調べていくと、気になる記録が出てきました。あの夜8時は、ちょうど1日分の売上を集計する処理が自動で始まる時刻だったのです。集計が予約の受付と同じパソコンの力を取り合い、画面が固まっていたらしい、と相棒は言います。「集計は、明日の朝までに終わっていればいいんだよね」とミナトは考えました。
処理には、すぐ答えが要るものと、あとでまとめて片づければよいものがあります。この違いを利用形態と呼び、システムを組むときの最初の判断材料になります。
データをある程度ためておき、決まった時刻にまとめて処理するやり方をバッチ処理といいます。1日分の売上の集計、月末の給与計算などが当てはまります。人が画面の前で待つ必要がないので、店が閉まった深夜に回せます。これに対し、利用者が画面から入力するたびに、コンピュータがその場で応答を返し、やりとりしながら進めるやり方を対話型処理といいます。お客さんが予約の画面で日付を選ぶと空き状況が出て、個数を入れると合計金額が出る、という流れです。
こむぎ堂の夜の問題は、バッチ処理で済む集計を、対話型処理が最も忙しい時間に同じ機械で回していたことでした。集計を深夜2時に移すだけでも、8時の混雑は軽くなります。
予約の受付には、もう一つ気をつけることがあります。「ケーキを1台予約する」という操作は、在庫を1つ減らす、予約の記録を1件足す、という二つの書き込みでできています。途中で止まり、在庫だけが減って予約が残らなかったら困ります。関連する一連の処理を一つのまとまりとして扱い、全部が成功するか、全部を無かったことにするかのどちらかにする処理をトランザクション処理といいます。まとまりごと実行されること(原子性)、処理の前後でデータの決まりが崩れないこと(一貫性)、同時に動く別の処理の影響を受けないこと(独立性)、終わった結果が失われないこと(持続性)の四つを、英語の頭文字をとってACID特性と呼びます。
決められた時間の中で必ず応答を返すことを重んじるやり方をリアルタイム処理といいます。オーブンの温度が上がりすぎたら、すぐにヒータを切る。この制御が数秒遅れたら、パンは焦げてしまいます。工場の機械や自動車の制御、列車の座席予約などで使われます。
ここから基本情報!リアルタイムの種類と、多人数・長時間の処理
端末から入力されたデータを、通信回線を通してすぐにサーバへ送り、その場で処理して結果を返す形をオンラインリアルタイム処理といい、この形で動くシステムをオンラインリアルタイムシステムと呼びます。銀行のATMや、こむぎ堂の予約システムがこれにあたります。データをためてから処理するバッチ処理と、対になる考え方です。
リアルタイムシステムは、締切りを破ったときの重さで二つに分けられます。締切りを一度でも守れなければ人命や設備に関わる深刻な損害につながるものをハードリアルタイムシステムといいます。自動車のブレーキの制御や、オーブンの過熱を止める仕組みです。締切りを少し過ぎても、性能が落ちるだけでシステム全体の失敗にはならないものをソフトリアルタイムシステムといいます。動画の再生で一瞬こま落ちしても、見続けることはできます。
予約の画面は、何人ものお客さんが同時に開きます。複数の利用者が、それぞれの端末から1台のコンピュータの資源を同時に分け合って使えるシステムをマルチユーザシステムといいます。そのとき、同時に処理が進んでいるジョブ(タスク)の数を多重度と呼びます。多重度を上げれば多くの仕事を並行して進められますが、上げすぎると1件ごとの処理に回る資源が減り、かえって全体が遅くなります。
バッチ処理を速くする工夫もあります。ファイルの1件分のデータ(論理レコード)を1件ずつ読み書きすると、そのたびに装置とのやりとりが起きます。そこで、何件かの論理レコードを一つのかたまり(ブロック、物理レコード)にまとめて、まとめて読み書きする方法をブロッキングといいます。売上の記録が1,000件あり、1ブロックに10件ずつまとめるなら、読み書きの回数は1,000回から1,000÷10=100回に減ります。1ブロックに入るレコードの数をブロック化因数と呼びます。
何時間もかかるバッチ処理が、終わる直前に止まったらどうなるでしょうか。最初からやり直すと、朝の開店に間に合わないかもしれません。処理の途中の状態を一定の間隔で記録しておき(この時点をチェックポイントといいます)、障害が起きたら最後に記録した時点から処理を再開する方式をチェックポイントリスタートといいます。
基本情報の範囲ここまで
1-3適用領域
翌朝、店長が言いました。「来年は、配達に出たときも予約の状況を見たいんだよね」。冬場、店長は軽トラックで近くの喫茶店にパンを届けています。配達の途中に予約が増えても、店に戻るまで気づけません。
システムは、使われる場所と目的によって、組み方が変わります。どこで、誰が、何のために使うのかという範囲を、システムの適用領域と呼びます。
会社全体の基幹の業務、つまり販売・在庫・会計・人事のような、止まれば仕事そのものが止まる業務を支えるシステムをエンタープライズシステム(基幹系システム)といいます。ERPと呼ばれる、業務をまとめて扱うソフトウェアがその代表です。多くの部署が同じデータを使うので、正確さと、止まらないことが強く求められます。
店長の望みは、これとは別の領域の話です。スマートフォンやタブレットのような持ち運べる端末と無線の通信を組み合わせ、場所を選ばずにコンピュータを使えるようにする形をモバイルコンピューティングといいます。配達先の駐車場で予約の数を確かめられれば、店長の望みはかないます。端末を持ち歩く以上、なくしたときの備えや、通信が途切れる場所での動き方も考えておく必要があります。
さらに体に近づけたものがウェアラブルコンピューティングです。腕時計型や眼鏡型の端末を身に付けたまま使い、手を空けたまま情報を受け取れます。生地をこねている最中でも、手首の振動で予約に気づける、という使い方です。
1-4冗長構成
集計を深夜に移しても、パソコンそのものが壊れたら受付は止まります。「じゃあ、もう1台買って並べればいいの?」と店長は聞きました。相棒は、並べ方が二通りあると答えます。2台が同じ仕事を同時にするのか、1台が働いてもう1台は待つのか。
いまのこむぎ堂のように、予備を持たず、1組の機器だけで動かす構成をシンプレックスシステムといいます。費用は最も安く、仕組みも単純です。ただ、その1組のどこかが故障すれば、システムは止まります。
そこで、同じ働きをする機器や経路をあえて余分に用意し、一部が壊れても動き続けられるようにすることを冗長化といいます。「冗長」は普段の言葉では「むだが多い」という意味ですが、ここでは、そのむだを故障への備えとして持つという意味で使います。並べ方の違いで、二つの代表的な構成があります。
一つめは、2組のシステムが同じ処理を同時に行い、結果を照らし合わせながら動くデュアルシステムです。2組の結果が食い違えば、どちらかに異常があると分かります。片方が故障しても、もう片方が同じ処理をしているので、切り替えの待ち時間なしに動き続けられます。そのぶん、2組を常に動かす費用がかかります。
二つめは、ふだんは片方だけが処理を行い、もう片方は予備として待機しておき、障害が起きたら予備に切り替えるデュプレックスシステムです。待たせ方には、予備の側も電源を入れて同じソフトウェアを動かしておき、すぐに引き継げるようにするホットスタンバイと、予備の電源を切ったまま置いておき、障害が起きてから立ち上げるコールドスタンバイがあります。コールドスタンバイは安く済みますが、切り替えに時間がかかります。予備の側は、ふだん別の仕事(夜の集計など)に使うこともできます。
ここから基本情報!働く側・待つ側の呼び名と、通信の二重化
デュプレックスシステムで、ふだん処理を受け持つ側を主系(現用系)、予備として待機する側を従系(待機系)と呼びます。主系に障害が起きると、従系が処理を引き継ぎます。従系がホットスタンバイで待っていれば引き継ぎは短時間で済み、コールドスタンバイなら立ち上げの分だけ時間がかかります。
冗長化するのはコンピュータだけではありません。こむぎ堂の予約システムがインターネットとつながる回線が1本だけなら、工事で切れたとたんに受付は止まります。ふだん使う主回線に障害や混雑が起きたとき、別の経路を通って通信を続けるために用意しておく回線を迂回回線といいます。光回線が切れたら携帯電話の回線に切り替える、という備え方です。
基本情報の範囲ここまで
1-5クラスタと負荷分散
業者の見積もりには、「クラスタ構成」という見慣れない言葉が入っていました。2台を並べる案とどう違うのか、と店長が首をかしげます。相棒によれば、クラスタは並べた何台かを、外からは1台に見えるようにまとめる仕組みのことです。
複数のコンピュータをネットワークでつなぎ、利用者からは1台のシステムとして見えるように連携させる構成をクラスタといいます。お客さんは、予約の画面の向こうに何台の機械があるかを気にせずに使えます。クラスタを組む目的は、大きく分けて二つです。止まりにくくすること(可用性を上げること)と、処理を分け合って速くすることです。
ここから基本情報!クラスタの種類と、プロセッサのつなぎ方
止まりにくくすることを目的にしたクラスタをHAクラスタといいます。HAはHigh Availability(高い可用性)の略です。現用系と待機系を組み合わせ、現用系に障害が起きたら待機系が処理を引き継ぎます(フェールオーバといいます)。利用者から見ると、少し待つだけで同じ画面が使い続けられます。
処理を分け合うことを目的にした構成がロードシェアリングシステムです。複数のシステムがふだんから処理を分担し、1台あたりの負荷を下げます。デュプレックスシステムと違い、予備として遊んでいる機械がありません。どれかが故障したら、残りの系で処理を続けます。全体の処理能力は落ちますが、止まりはしません。
分担のときに、届いた要求をどのサーバに回すかを決める装置がロードバランサ(負荷分散装置)です。予約の要求を2台のサーバへ交互に振り分けたり、空いている方に回したりして、1台だけが混まないようにします。止まったサーバには要求を回さないようにすれば、可用性も上がります。
1台のコンピュータの中に複数のプロセッサを載せて、処理を分け合う構成もあります。これをマルチプロセッサシステムといい、プロセッサどうしのつなぎ方で二つに分かれます。
複数のプロセッサが1つの主記憶(メモリ)を共有し、1つのOSのもとで動く形を密結合といいます。データを同じメモリでやりとりできるので、プロセッサ間の連絡は速く済みます。ただし、プロセッサを増やすほどメモリの取り合いが増えるため、台数に比例して速くなるわけではありません。これに対し、プロセッサごとに自分の主記憶とOSを持ち、通信でつながって協力する形を疎結合といいます。連絡は通信を経由するぶん遅くなりますが、それぞれが独立しているので、台数を増やしやすく、1台の故障がほかに広がりにくくなります。クラスタは、疎結合の考え方で組まれています。
基本情報の範囲ここまで
こむぎ堂の規模なら、2台を並べた構成で足りそうだ、とミナトは考えました。ただ、2台とも同じ店の奥の棚に置くなら、棚ごと水をかぶれば2台とも止まります。
1-6バックアップサイト
「店が停電したら、2台あっても同じだよね」と店長が言いました。去年の夏、雷で商店街が丸ごと2時間停電したことがあります。機械を何台に増やしても、置き場所が1か所なら、その場所ごと止まります。
地震・火災・水害・停電のように、建物や地域ごと使えなくなる災害に備えるには、システムを動かす場所そのものを別に用意しておく必要があります。どれだけの準備をしておくかは、止まってよい時間と、かけられる費用との兼ね合いで決まります。
ここから基本情報!災害に備えるもう一つの拠点
本来の拠点が災害などで使えなくなったときに、代わりにシステムを動かすために用意しておく別の拠点をバックアップサイトといいます。準備の度合いによって、三つに分けられます。
| 名前 | ふだんの準備 | 復旧までの時間 | 維持の費用 |
|---|---|---|---|
| ホットサイト | 同じ機器を動かしておき、データも常に最新に近い状態にそろえておく | 短い | 高い |
| ウォームサイト | 機器は置いてあるが、データや設定は災害の後に入れ直す | 中くらい | 中くらい |
| コールドサイト | 建物・電源・回線などの場所だけを確保し、機器の設置もデータの復旧も災害の後に行う | 長い | 安い |
ホットサイトは、本来の拠点が止まったらすぐに処理を引き継げます。そのかわり、使わないかもしれない機器を一式、ずっと動かし続けることになります。コールドサイトは場所代だけで済みますが、機器を運び込み、データを戻すまでに何日もかかることがあります。ホットとコールドの温度の差は、機器が「温まっている」度合い、つまり動き出すまでの近さだと考えると覚えやすくなります。
基本情報の範囲ここまで
こむぎ堂が自前で別の建物を借りるのは、現実的ではありません。この問題には、あとで見るクラウドが一つの答えになります。
1-7ピアツーピアとHPC
相棒と話しながら、ミナトはスマートフォンで友だちと写真を交換していました。近くにいる相手の端末へ、サーバを通さずに直接送る機能です。「これも分散処理なのかな」と思いつき、相棒に聞いてみました。
ここまでの分散は、頼む側と応える側、働く側と待つ側のように、機械に役割の差がありました。役割の差を持たない分け方もあります。ネットワークにつながった端末どうしが対等な立場で直接やりとりし、どの端末も、頼む側にも応える側にもなる形をピアツーピア(Peer to Peer、P2P)といいます。ピア(peer)は「対等な仲間」という意味です。特定のサーバに頼らないので、1台が止まっても全体は動き続けやすくなります。一方で、どの端末がどのデータを持っているかを全体で管理しにくく、情報の管理や守りは難しくなります。
ここから基本情報!大量の計算を分け合う
台数を集める考え方を、計算の量を増やすほうに向けたのがグリッドコンピューティングです。ネットワークでつながった、場所も持ち主も別々の多数のコンピュータの計算資源を束ね、1台の大きな計算機のように使って大規模な計算をこなします。研究機関どうしがコンピュータを持ち寄って一つの計算を分け合う、といった使い方です。
天気予報、新薬の開発、宇宙の成り立ちのシミュレーションのように、高い精度で膨大な計算を高速にこなす必要のある分野で使われる計算環境をHPC(High Performance Computing、ハイパフォーマンスコンピューティング)といいます。スーパーコンピュータがその代表です。
HPCを支えるのが大規模並列の考え方です。数千から数万といった多数のプロセッサに計算を細かく分けて同時に進め、全体として大きな速さを出します。MPP(Massively Parallel Processing)とも呼ばれます。並列処理を極端に大きくしたものだと考えると、つながりが見えます。
基本情報の範囲ここまで
こむぎ堂の予約に、そこまでの計算は要りません。ミナトは話を、店の機械をどう増やすかに戻しました。
1-8仮想化
2台目のパソコンの値段を調べた店長は、ため息をつきました。予約用、通販用、集計用と役割ごとに機械を分けたら、3台、4台と増えていきます。「1台の中を区切って、何台分かに使えたらいいのに」とミナトがつぶやくと、相棒はそれがまさに今の主流のやり方だと答えました。
CPU・メモリ・ディスクのような物理的な資源を、ソフトウェアの働きで分けたりまとめたりして、実際の機械の台数や形とは別の単位で使えるようにする技術を仮想化といいます。1台の機械を何台分にも見せることも、何台かを1つに見せることもできます。
仮想化によって、1台の物理的なコンピュータの上に作られる、ソフトウェアとしてのコンピュータをVM(Virtual Machine、仮想マシン)といいます。VMごとに別のOSを入れることができ、外からは独立した1台のコンピュータのように見えます。VMの上で動くOSをゲストOSと呼びます。
仮想化の方式は、仮想化の仕組みをどこに置くかで三つに分かれます。
| 方式 | 仕組み | 特徴 |
|---|---|---|
| ホスト型 | ふだん使うOS(ホストOS)の上に仮想化のソフトウェアを入れ、その上でゲストOSを動かす | 手持ちのパソコンで手軽に試せる。ホストOSを経由するぶん、処理は遅くなりやすい |
| ハイパーバイザー型 | ハードウェアの上で直接動く制御用のソフトウェア(ハイパーバイザ)の上で、複数のゲストOSを動かす | ホストOSを挟まないので、ホスト型より処理が速い。サーバでよく使われる |
| コンテナ型 | 1つのOSの中心部分(カーネル)を共有し、アプリケーションの実行環境(コンテナ)をプロセスの単位で区切る | ゲストOSを持たないので軽く、すぐ起動できる。ホストと違う種類のOSは動かせない |
三つの違いは、区切った中に「OSまるごと」が入るかどうかで見分けられます。ホスト型とハイパーバイザー型は、VMごとにゲストOSが丸ごと入ります。コンテナ型が分けているのはアプリケーションの実行環境だけで、OSは1つを共有しています。
仮想化をサーバに使い、1台の物理サーバの資源を分けて、複数のサーバを同時に動かす技術をサーバ仮想化といいます。こうして作られる、ソフトウェアとしてのサーバが仮想サーバです。こむぎ堂なら、性能の高い1台を買い、その中に予約用・通販用・集計用の仮想サーバを作れます。機械は1台で済み、使っていない仮想サーバの資源をほかへ回すこともできます。
仮想化はパソコンの画面にも使えます。利用者のデスクトップの環境(OSやアプリケーション、データ)をサーバの上のVMで動かし、手元の端末にはその画面だけを送る仕組みをVDI(Virtual Desktop Infrastructure、デスクトップ仮想化)といいます。手元の端末にデータが残らないので、端末をなくしても情報は漏れにくく、どの端末からでも同じ環境で作業を続けられます。
VMは、ソフトウェアである以上、ファイルのように動かせます。動いているシステムや、そのデータを、別の環境へ移すことをマイグレーションといいます。仮想化の話では、VMを別の物理サーバへ移すことを指します。なかでも、VMを止めずに動かしたまま別の物理サーバへ移すことをライブマイグレーションといいます。物理サーバの点検や交換のあいだも、予約の受付を止めずに済みます。
1-9クラウドとエッジ
性能の高いサーバを1台買う案に、店長はまだ迷っていました。「買ったら、その機械の面倒はずっとミナトさんが見ることになるよね。卒業したらどうするの」。相棒は、機械そのものを店に置かない選び方もある、と言いました。
サーバやストレージ、ソフトウェアなどの資源を自分で持たず、インターネットを通して事業者のものを必要な分だけ借りて使う形をクラウドコンピューティングといいます。使った分だけ料金を払うのが基本で、12月の予約の時期だけ性能を上げ、1月には戻す、といった使い方ができます。機械の故障や交換は事業者が受け持ちます。
借りる範囲によって、代表的な三つの形があります。アプリケーションまで含めて完成したソフトウェアを借りるSaaS(Software as a Service)、アプリケーションを動かすための実行環境(OSやデータベース、開発環境など)を借りるPaaS(Platform as a Service)、サーバやネットワークといった基盤だけを借りるIaaS(Infrastructure as a Service)です。SaaSから順に、利用者が自分で管理する部分が増えていきます。予約サービスの事業者が用意した画面をそのまま使うならSaaS、自分たちの予約システムを借りたサーバに入れて動かすならIaaSです。
借りたサーバは、実際にはどこかの建物に置かれています。多数のサーバや通信機器をまとめて設置し、安定した電源や空調、入退室の管理などのもとで運用する施設をデータセンタといいます。大きなクラウドの事業者は、離れた地域に複数のデータセンタを持っています。こむぎ堂が自前ではバックアップサイトを持てなくても、別の地域のデータセンタにデータの複製を置いてもらうことはできます。
ここから基本情報!クラウドならではの作り方
クラウドでは、サーバを画面から1台ずつ設定する代わりに、どんなサーバを何台、どうつなぐかをコード(設定のファイル)に書いて、そこから自動で環境を組み立てることができます。この考え方をIaC(Infrastructure as Code)といいます。同じコードから何度でも同じ環境を作れるので、手作業のまちがいが減り、ミナトが卒業した後も、次の担当者がコードを読めば構成が分かります。
さらに進んで、サーバの存在そのものを利用者が意識しなくてよい形をサーバレスといいます。サーバが無いわけではなく、サーバの準備・管理・増減をすべて事業者が受け持ち、利用者は動かしたいプログラムだけを用意します。その代表がFaaS(Function as a Service)です。「予約が入った」「画像が届いた」といった出来事(イベント)をきっかけに、用意しておいた小さなプログラム(関数)が実行されます。動いた時間の分だけ料金を払うので、予約が1件も入らない夜中には、ほとんど費用がかかりません。
基本情報の範囲ここまで
クラウドは、遠くのデータセンタに処理を集める考え方です。反対に、処理をデータの発生する場所の近くへ寄せる考え方もあります。店頭のカメラの映像をすべて遠くのサーバへ送ると、通信量が増え、結果が返ってくるまでに時間もかかります。利用者の端末や、その近くに置いたサーバ(ネットワークの「端」)でデータを処理し、必要な結果だけを送る方式をエッジコンピューティングといいます。応答の遅れを小さくでき、送るデータの量も抑えられます。工場の機械や自動運転の車のように、すぐに判断を返したい場面で使われます。
1-10クライアントサーバシステム
店長は、相棒の説明を聞きながら紙に絵を描いていました。真ん中に予約の記録を置き、その周りに店頭のタブレット、店長のスマートフォン、お客さんのスマートフォンを並べ、全部から線を引きます。「つまり、記録を持っている一か所に、みんなが頼みに行くってことだね」
店長の絵は、多くの業務システムの基本の形をそのまま表しています。ネットワークの上で、サービスを提供する側のサーバと、サービスを頼む側のクライアントに役割を分けて動くシステムをクライアントサーバシステムといいます。クライアントがサーバへ要求(リクエスト)を送り、サーバが処理した結果(レスポンス)をクライアントが受け取ります。サーバとクライアントは機械の種類ではなく役割の名前で、同じパソコンが、ある場面ではサーバ、別の場面ではクライアントになることもあります。
ここから基本情報!2層と3層、サーバの仕事の頼み方
この形では、利用者が触る画面の部分と、データを扱う部分を分けて考えます。利用者に情報を見せ、入力を受け付ける部分をプレゼンテーション層といいます。予約の画面に日付の一覧を出し、選ばれた日付を受け取るのが、この層の仕事です。
クライアントサーバシステムは、処理をどこで受け持つかで組み方が分かれます。クライアントが画面の表示と業務の処理(予約の個数が在庫を超えていないかの確認など)の両方を受け持ち、サーバはデータベースの管理だけを受け持つ形を2層クライアントサーバシステム(2層構成)といいます。仕組みは単純ですが、業務の処理を変えるたびに、すべてのクライアントのプログラムを入れ替えることになり、クライアント側の負荷も大きくなります。
そこで、処理を三つの層に分ける形が使われます。これを3層クライアントサーバシステムといいます。画面を受け持つプレゼンテーション層、業務の処理(ビジネスロジック)を受け持つファンクション層、データベースへの問い合わせと更新を受け持つデータベースアクセス層の三つです。各層が独立しているので、たとえば値引きの決まりが変わってもファンクション層だけを直せば済み、クライアントには手を入れずに済みます。
層をまたいで処理を頼む方法もいくつかあります。ネットワークの向こうのコンピュータにあるプログラムの手続を、手元のプログラムの一部であるかのように呼び出して実行させる仕組みをRPC(Remote Procedure Call、遠隔手続呼出し)といいます。呼び出す側は、相手がどこにあるかを細かく意識せずに処理を頼めます。
データベースへの一連の処理を、あらかじめデータベースのサーバの中に登録しておき、名前を指定するだけで呼び出せるようにしたものをストアドプロシージャといいます。「在庫を減らして、予約を記録して、合計を計算する」という三つの問い合わせを1回ずつ送る代わりに、登録した手続を1回呼ぶだけで済みます。クライアントとサーバのあいだの通信の回数が減り、処理も速くなります。
基本情報の範囲ここまで
クライアントの側の機能を、ぎりぎりまで減らす考え方もあります。利用者の端末には画面の表示と入力の機能だけを持たせ、アプリケーションの実行やデータの保存はすべてサーバ側で行う形をシンクライアントシステムといい、そのとき使う最低限の機能だけを持つ端末をシンクライアントといいます(シン(thin)は「薄い」の意味)。端末に業務のデータが残らないので、端末を盗まれたりなくしたりしても情報が漏れにくく、ソフトウェアの更新もサーバ側でまとめて行えます。先に見たVDIは、シンクライアントを実現する方法の一つです。
1-11Webシステム
お客さんがこむぎ堂の予約の画面を開くとき、手元に入っているのは、いつも使っている閲覧用のアプリだけです。予約のためのアプリを入れてもらう必要はありません。ミナトは、店長の紙の絵の上に、お客さんのスマートフォンからの線をもう一本、描き足しました。
クライアントサーバシステムのうち、クライアントの側に汎用の閲覧ソフトウェアを使い、インターネットの技術で組み立てたものをWebシステムといいます。その閲覧ソフトウェアがWebブラウザです。WebブラウザはHTTPという約束ごとでサーバとやりとりし、受け取ったHTMLや画像を画面に表示します。利用者の端末に専用のソフトウェアを配る必要がなく、サーバ側を直せば、すべての利用者の画面が一度に新しくなります。
ここから基本情報!Webシステムを3層で組む
Webブラウザから届いたHTTPの要求を受け付け、Webページを返すサーバ(ソフトウェア、またはそれを動かす機器)をWebサーバといいます。Webサーバが返す内容には二種類あります。店の地図や営業時間のページのように、あらかじめ用意したHTMLや画像のファイルをそのまま返すものを静的コンテンツといいます。ファイルを読んで返すだけなので、サーバの負荷は軽く済みます。一方、「12月24日のショートケーキの残り」のように、要求のたびにプログラムを動かして内容を作るものを動的コンテンツといいます。作る処理があるぶん、負荷は重くなります。
動的コンテンツを作る業務の処理は、Webサーバとは別のサーバに受け持たせることが多くなります。業務の処理(ビジネスロジック)を実行するサーバをAPサーバ(アプリケーションサーバ)といいます。そして、データベースを管理し、APサーバからの問い合わせに応じてデータを読み書きするサーバをDBサーバ(データベースサーバ)といいます。
この三つを並べると、Webシステムを3層クライアントサーバシステムとして組んだ形になります。WebブラウザとWebサーバがプレゼンテーション層、APサーバがファンクション層、DBサーバがデータベースアクセス層を受け持ちます。層ごとにサーバが分かれているので、注文が集中したらAPサーバだけを増やす、といった手当ても打てます。
基本情報の範囲ここまで
夜、閉店後の厨房で、ミナトは構成図を清書し終えました。お客さんの画面を返すサーバ、注文を処理するサーバ、予約の記録を持つサーバを分け、それぞれを2台ずつクラウドの上に置き、売上の集計は深夜に回す形です。店長は図を冷蔵庫の扉に貼り、腕を組んで眺めてから言いました。「来年の予約は、止まらない形で受けよう」
初日の夜に止まったのは、1台のパソコンに集中していた処理でした。集計を深夜に移したのは利用形態の見直しで、サーバを2台ずつにしたのは冗長化、役割ごとにサーバを分けたのは分散処理です。そしてクラウドを選んだことで、機械の面倒と、建物ごと止まる心配の多くを、データセンタの側に任せられるようになりました。店長の「1台に全部任せていたのが、いけなかったのかな」という問いへの答えは、機械を増やすことと、仕事の分け方を変えることの二つでした。
ただ、ミナトにはまだ答えられないことがあります。2台にしたら、どれくらい止まりにくくなるのか。業者に払う月々の料金は、パソコンを買い替えるより本当に安いのか。店長が「止まらない形」と呼んだものを、数字で確かめる方法を、ミナトはまだ知りませんでした。