情報システムの構成と信頼性
コンビニのレジ、鉄道の座席予約、銀行のATM、スマホ決済 — 私たちの生活は情報システムに支えられています。情報システムとは、コンピュータとネットワークを組み合わせて情報の収集・処理・伝達を行い、サービスを提供する仕組み全体のことです。この講義では、情報システムの構成のしかたと、止まらないシステムを作るための信頼性設計を学びます。
身近な情報システムの例
コンビニのPOSシステムは、レジで商品のバーコードを読み取った瞬間に「何が・いつ・いくつ売れたか」を記録し、本部のサーバに送ります。集まったデータは在庫の補充や新商品の開発に活かされます。座席予約システムは、全国のどの窓口・アプリから操作しても同じ座席が二重に売られないよう、中央のデータベースで一元管理しています。情報システムの中心にはデータベースがあることを覚えておきましょう。
Webシステムの3層構成
多くのWebサービスは、役割の異なる3種類のサーバを組み合わせた3層構成(3層アーキテクチャ)で作られています。
・Webサーバ(プレゼンテーション層):ブラウザからのリクエストを受け取り、画面(HTML)を返す窓口。
・アプリケーションサーバ(アプリケーション層):ログイン処理や料金計算など、サービス固有の処理(ビジネスロジック)を実行する。
・データベースサーバ(データ層):会員情報や商品データを保管し、問い合わせに応じて読み書きする。
層を分けておくと、アクセスが増えたときにWebサーバだけ台数を増やす、データベースだけ高性能な機器に置き換える、といった柔軟な拡張・変更がしやすくなります。
クラウドコンピューティング
自前でサーバを買って運用する代わりに、インターネット越しに事業者の計算資源を借りる形態をクラウドコンピューティングと呼びます。借りる範囲によって、アプリケーションごと借りるSaaS(例: WebメールやオンラインOffice)、開発・実行環境を借りるPaaS、サーバやストレージなどの基盤だけ借りるIaaSに分類されます。初期費用を抑え、必要に応じて規模を伸縮できるのが利点です。
信頼性の設計 — 止まらない工夫・安全に止まる工夫
銀行や交通のシステムは、止まると社会に大きな影響が出ます。そこで次のような設計が行われます。
・冗長化:機器や回線を複数用意し、1つが故障しても全体を止めない。
・フォールトトレラント:一部が故障してもシステム全体としては機能し続ける設計。
・フェールセーフ:故障したときに安全側に倒れる設計。例: 故障すると赤を表示する信号機、倒れると火が消える石油ストーブ。
・フールプルーフ:人間が誤操作してもよいように作る設計。例: フタを閉めないと回らない洗濯機。
・直列(両方動かないとシステムが動かない):0.9 × 0.9 = 0.81。1台のときより下がる。
・並列(どちらか一方が動けばよい=冗長化):両方同時に故障する確率は 0.1 × 0.1 = 0.01 なので、稼働率は 1 − 0.01 = 0.99。1台のときより大きく向上する。
「同じものを並列に2つ置く」だけで、故障に強いシステムになることが数字で確かめられます。
- 情報システムの中心にはデータベースがあり、一元管理でデータの矛盾を防ぐ。
- Webシステムは「Webサーバ/アプリケーションサーバ/DBサーバ」の3層構成が基本。
- クラウドは借りる範囲でSaaS/PaaS/IaaSに分かれる。
- 冗長化(並列)で稼働率は上がり、直列に増やすと下がる。
- フェールセーフ=故障時に安全側へ、フールプルーフ=誤操作対策。
練習問題
- Webシステムの3層構成のそれぞれの層の役割を簡単に説明しなさい。
- 稼働率0.8の装置を2台使うとき、直列に接続した場合と並列に接続した場合のシステム全体の稼働率をそれぞれ求めなさい。
- 「故障すると自動的にすべての信号が赤になる踏切システム」は、フェールセーフとフールプルーフのどちらの考え方か、理由とともに答えなさい。
解答・解説
- 解答:Webサーバはブラウザからのリクエストを受けて画面を返す窓口。アプリケーションサーバはログインや計算などサービス固有の処理を実行する。データベースサーバはデータを保管し読み書きに応える。
解説:役割を分けることで、負荷に応じた増強や部分的な改修がしやすくなる。 - 解答:直列: 0.8×0.8=0.64。並列: 1−(0.2×0.2)=1−0.04=0.96
解説:直列は両方動く必要があるので掛け算。並列は「両方同時に故障する確率」を1から引く。冗長化により稼働率が0.8→0.96に向上する。 - 解答:フェールセーフ。故障(異常)が起きたときに、列車を止める「安全側」の状態に倒れるように設計されているから。
解説:フールプルーフは「人間の誤操作」への対策(例: 押し間違い防止)。フェールセーフは「機器の故障」時に安全を確保する設計。