この記事ではシステム構成で使われる様々な技術についてIT初心者にも分かりやすく解説します。
キャパシティプランニング
- キャパシティプランニングとはシステムの構成案を考えるのに必要な手順。
スケールアウト・スケールアップ
- スケールアウトはサーバの台数を増やすことでシステムの性能を上げる方法。
- スケールアップはサーバの性能を上げることでシステムの性能を上げる方法。
サーバの仮想化
- サーバの仮想化は1台の物理サーバに複数の仮想サーバを集約する方法。
ストアドプロシージャ
- データベースに対して行う処理をあらかじめデータベースサーバ上に格納する技術。
基本情報ではシステム構成に関する様々な技術の問題が出題されます。是非最後までご覧ください。
キャパシティプランニング
システムを構成する時、むやみやたらにシステムを構築していけば必要なものが不足したり、逆に無駄に性能の良すぎるシステムを構築してしまう可能性があります。
では、どういった手順でシステムの構成案を考えていけば良いのでしょうか?
システム構成案を考えるのに必要な手順をキャパシティプランニングと言い、次の①~④で作業を行います。
- 現状のシステム構成を確認する。システムを構成するサーバの台数や性能等。
- システムを利用しているユーザから、新しく構成するシステムに
どういった性能が必要かを確認する。 - ユーザにヒアリングした結果から、システムの構成案を検討する。
- 検討したシステムの構成案について必要に応じて見直しを行う。
キャパシティプランニングを行うことで、システムの性能を向上する技術の、適切な選定が出来るという訳ですね。
では、システムの性能を向上する技術にはどういったものがあるのでしょうか?基本情報で出題されたことがある技術について紹介していきます。
システムの性能を向上させる技術
スケールアウト・スケールアップ
スケールアウトとは、サーバの台数を増やしてシステムの性能を上げる方法です。
それに対して、スケールアップとは、サーバのスペックを上げてシステムの性能を上げる方法です。
スケールアウトとスケールアップのどちらが適しているかはシステムの性質によります。
サーバ間の整合性や処理順を意識しなくて良いシステムであれば単純にサーバを増やすだけでよいスケールアウトが向いています。しかし、サーバ間をまたがっての処理が多いようなシステムであればスケールアップが向いています。
(おまけ)スケールイン・スケールダウン
システム構成を検討した結果、現状のシステムの性能が過剰で無駄にコストが掛かってると分かることもあるでしょう。
スケールインはサーバの台数を減らすことで、スケールダウンはサーバのスペックを下げることでシステムのコストを削減します。
サーバの仮想化
仮想化とは
そもそも仮想化とはなんでしょうか。
結論から言うと、「なんちゃって〇〇」のことを仮想化と言います。
仮想の英訳はVirtualです。バーチャルユーチューバーとかバーチャルリアリティー(VR)のバーチャルですね。例えば、VRを使えば、実際目の前に海がある訳ではないのに、海にいるかのような体験が出来ます。
このように、実際にある訳ではないのに、あたかもそこにあるかのような振る舞いを見せることを仮想化と言います。
サーバの仮想化とは
サーバの仮想化とは、1台の物理サーバに複数の仮想サーバを集約する技術です。
複数台の物理サーバを持っていましたが、CPUの使用率は低く、効率的に使えていませんでした。そんな時、サーバの仮想化を行い、複数台の物理サーバで実現していた機能を1台の物理サーバに集約させました。すると、CPUを効率的に使えるようになりますし、管理する物理サーバの数も1台で良くなるので、管理コストも削減出来ます。
ストアドプロシージャ
ストアドプロシージャとは、データベース管理システム(DMBS)の機能の一つで、データベースサーバに対して行う複数の連続した処理を1つのプログラムとしてサーバに格納する技術です。クライアント等の外部からサーバに格納したプログラムを実行できます。
データベースとは、その名の通り、データを管理するサーバです。
それに対して外部PCに該当するクライアントやAPサーバは、プログラムの処理を行い、データの操作が必要になればデータベースに対してSQLを発行します。
SQLはデータベースを操作する言語で、データの参照・削除・登録・更新が出来ます。
では、本題のストアドプロシージャについて説明していきましょう。
以下の処理を例にストアドプロシージャを解説します。
直近1か月で10,000円以上の買い物をしたユーザは10%割引で買い物が出来る
普通に処理しようと思えば、以下のようになりますね。
- ユーザが商品を注文する
- クライアントがデータベースにユーザの「購買履歴」を要求
- クライアントがデータベースにユーザの「商品情報」を要求
- クライアントが「購買履歴」を確認し、直近1か月で10,000円以上買い物していたら、「商品情報」で取得した商品の金額を10%割引し、注文金額を算出
- 注文金額をユーザに表示
基本的にデータを使って処理するのはクライアントなので、クライアントは「購買履歴」と「商品情報」をデータベースから受け取る必要があります。
しかし、ユーザが商品を注文する度に「商品情報」だけでなく「購買履歴」もやり取りしないといけないのは少し面倒ですね。
そこで、「直近1か月で10,000以上買い物していたら10%割引した商品の金額を返す」という命令(ストアドプログラム)をデータベースに格納しておきましょう。
すると、処理の流れはこうなります。
- ユーザが商品を注文する
- クライアントがデータベースのストアドプログラムを呼び出し、
注文金額を受け取る - 注文金額をユーザに表示
このようにストアドプログラムをあらかじめデータベースに格納しておくことで、クライアント – データベースサーバ間のやり取りを最小限にすることができるので、処理速度を速くできたり、ネットワーク負荷を軽減出来ます。これがストアドプロシージャです。
基本情報技術者試験での出題例
サンプル問題問13
基本情報技術者
科目A サンプル問題問13
仮想化マシン環境を物理マシン20台で運用しているシステムがある。次の運用条件のとき,物理マシンが最低何台停止すると縮退運転になるか。
〔運用条件〕
(1) 物理マシンが停止すると,そこで稼働していた仮想マシンは他の全ての物理マシンで均等に稼働させ,使用していた資源も同様に配分する。
(2) 物理マシンが20台のときに使用する資源は,全ての物理マシンにおいて70%である。
(3) 1台の物理マシンで使用している資源が90%を超えた場合,システム全体が縮退運転となる。
(4) (1)~(3)以外の条件は考慮しなくてよい。
ア 2 イ 3 ウ 4 エ 5
正解は”エ”
最初は20台の物理マシンを均等に使いながら、仮想化マシンを運用します。
20台の物理マシンを使っている時は、1台ずつ70%の資源を使います。
1台の物理マシンが使える資源をMAX「100」とした場合、それぞれの物理マシンは「70」の資源を使っています。なので、仮想化マシンの運用には「70」×20台=「1400」の資源を使うということですね。
物理マシンが停止した場合は、残っている物理マシンで仮想化マシンを運用します。
仮想化マシンの運用には「1400」の資源が必要なので、19台の物理マシンで運用するには、1台のマシンで「1400」÷19=「約74」の資源を使います。
このように物理マシンの数が減っていくと、それぞれの物理マシンに必要な資源は多くなっていきます。物理マシンが14台まで減ってしまうと、1台が負担する資源は「1400」÷14=「100」となり、全てがMAXで動かないといけなくなります。これでは余裕がなく、いつ仮想化マシン自体が止まるか分かりません。そこで、1台が負担する資源が「90」を超えたら、仮想化マシンの一部を止めて運用します。これを縮退運転と言います。
では、何台に仮想化マシンが止まれば、1台が負担する資源が「90」を超えるのでしょうか?1台が負担する資源が「90」の場合、「1400」÷「90」=15.6台となります。
と言うことは、15台の場合は「90」と超えて、16台の場合は「90」を超えないということですね。
実際に計算してみると、
16台の場合、「1400」÷16台=「87.5」
15台の場合、「1400」÷15台=「93.3」
となります。
よって、答えは5台のエとなります。
平成30年度秋期問14
基本情報技術者
午前試験 平成30年度秋期問14
稼働状況が継続的に監視されているシステムがある。稼働して数年後に新規業務をシステムに適用する場合に実施する,キャパシティプランニングの作業項目の順序として,適切なものはどれか。
〔キャパシティプランニングの作業項目〕
① システム構成の案について,適正なものかどうかを評価し,必要があれば見直しを行う。
② システム特性に合わせて,サーバの台数,並列分散処理の実施の有無など,必要なシステム構成の案を検討する。
③ システムの稼働状況から,ハードウェアの性能情報やシステム固有の環境を把握する。
④ 利用者などに新規業務をヒアリングし,想定される処理件数や処理に要する時間といったシステムに求められる要件を把握する。
ア ③,②,④,①
ウ ④,②,①,③
イ ③,④,②,①
エ ④,③,①,②
正解は”イ”
システム構成案を作成する手順をキャパシティプランニングと言います。
ア~エの手順がシステム構成案を作成するのに適切な手順か見ていきましょう。誤りの選択肢は明らかにおかしな所があります。
ア ②(システム構成の案を検討する)→④(利用者にシステムに必要な要件を聞く)とありますが、まずシステムに何が必要かを利用者に聞いてから、構成案を考えないといけませんよね。よって、おかしいことが分かります。
ウ 一番最後に③(現在のハードウェアやシステムの状況を把握する)とありますが、現状の把握は早い段階で行うべきですよね。でないと、何が足りていないのかを把握することができません。よって、おかしいことが分かります。
エ ①(システム構成案の見直しをする)→②(システム構成の案を検討する)とありますが、検討したシステム構成案に対して、見直しをしていくのが普通だと思うので、おかしいことが分かります。
よって、答えはイです。
平成30年度春期問15
基本情報技術者
午前試験 平成30年度春期問15
システムのスケールアウトに関する記述として,適切なものはどれか。
ア 既存のシステムにサーバを追加導入することによって,システム全体の処理能力を向上させる。
イ 既存のシステムのサーバの一部又は全部を,クラウドサービスなどに再配置することによって,システム運用コストを下げる。
ウ 既存のシステムのサーバを,より高性能なものと入れ替えることによって,個々のサーバの処理能力を向上させる。
エ 一つのサーバをあたかも複数のサーバであるかのように見せることによって,システム運用コストを下げる。
正解は”ア”
スケールアウトでは、サーバを追加導入することでシステム全体の処理能力を向上させます。
平成29年度秋期問26
基本情報技術者
午前試験 平成29年度秋期問26
クライアントサーバシステムにおいて,利用頻度の高い命令群をあらかじめサーバ上のDBMSに格納しておくことによって,クライアントサーバ間のネットワーク負荷を軽減する仕組みはどれか。
ア 2相コミットメント
イ グループコミットメント
ウ サーバプロセスのマルチスレッド化
エ ストアドプロシージャ
正解は”エ”
ストアドプロシージャは利用頻度の高い命令をDBMSに保管しておくことでクライアントサーバ間のネットワーク負荷を軽減します。
平成29年度春期問12
基本情報技術者
午前試験 平成29年度春期問12
システムの性能を向上させるために,スケールアウトが適しているシステムはどれか。
ア 一連の大きな処理を一括して実行しなければならないので,並列処理が困難な処理が中心のシステム
イ 参照系のトランザクションが多いので,複数のサーバで分散処理を行っているシステム
ウ データを追加するトランザクションが多いので,データの整合性を取るためのオーバーヘッドを小さくしなければならないシステム
エ 同一のマスタデータベースがシステム内に複数配置されているので,マスタを更新する際にはデータベース間で整合性を保持しなければならないシステム
正解は”イ”
スケールアウトでは、サーバを追加導入することでシステム全体の処理能力を向上させます。
基本情報に関する他の記事
ハードウェア | ソフトウェア | システム構成 |
ネットワーク | データベース | 開発手法 | 情報セキュリティ |
システム構成に関する記事
クライアントサーバシステムについての記事
【基本情報】クライアントとサーバって何?その違いについても解説!
【基本情報】基本情報で出題される電子メールの全てを解説
クラウドについての記事
その他の技術についての記事
【基本情報】システム構成で使われる色々な技術を解説!
障害対応についての記事
【基本情報】システムの稼働率の求め方について解説
【基本情報】デュアルシステムとデュプレックスシステムについて解説
【基本情報】RAID0、RAID1、RAID5について解説