システムの構成① 処理形態と利用形態

目次

コンピュータシステム

コンピュータシステムは、ハードウェア(物理的な機器)とソフトウェア(プログラムやアプリケーション)の組み合わせで構成されるシステムです。

このシステムは、個々のコンピュータハードウェアやソフトウェアが相互に連携して特定のタスクを実行したり、情報を処理、保存、伝達するために設計されています。

コンピュータシステムは、日常生活で使用される個人用コンピュータから、企業や組織で運用される大規模なデータセンターまで、さまざまな規模や形態があります。

処理形態

コンピュータシステムの処理形態には大別して集中処理と分散処理があります。

集中処理

集中処理は、一台の中央コンピュータと複数台の端末から構成されるコンピュータシステムの処理形態です。

端末は利便性のため様々な場所に配置されますが、データ処理は行わず、すべてのデータ処理とリソース管理は中央コンピュータが担当します。

中央コンピュータは、端末からの処理要求を受け取り、演算を行ってその結果を端末に返します。端末は、受け取ったデータを出力装置に表示します。

集中処理の利点には、データ一貫性とセキュリティの向上、およびリソース管理の容易さがあります。欠点としては、中央コンピュータの障害がシステム全体に影響し、処理能力に限界があることが挙げられます。

分散処理

分散処理は、ネットワークに接続された複数のコンピュータが同時に処理を行うことで、処理能力を拡大する方式です。

分散処理の一例として、例えば大量のデータを処理する場合、一台のコンピュータでは処理に時間がかかってしまうことがあります。しかし、分散処理システムでは、複数のコンピュータに処理を分散させることで、より高速な処理が可能になります。

また、分散処理システムは、冗長性が高く、障害が発生してもシステム全体がダウンすることはありません。各コンピュータは互いにバックアップを取り合っており、あるコンピュータに障害が発生しても他のコンピュータが処理を引き継ぐことができます。

分散処理は、以下のように水平分散システムと垂直分散システムに分類できます。

水平分散システム

水平分散システムは各コンピュータに主従関係が存在せず、対等な関係で役割を実行するシステムであり、このことから水平分散システムと呼ばれています。

水平分散システムには以下の2つの方式があります。

水平機能分散システム水平機能分散システムは、異なる機能を持つコンピュータにタスクやデータを分散する方式です。各コンピュータが異なる処理を担当し、協調して動作します。

例えば、オンラインショッピングサイトでは、ウェブサーバ、データベースサーバ、支払い処理サーバなどが異なる機能を担当し、顧客の注文処理や在庫管理などを分散して処理します。
水平負荷分散システム水平負荷分散システムは、負荷を均等に分散するために同じ機能を持つ複数のコンピュータを使用する方式です。処理要求が集中した場合でも、負荷を分散することでスケーラビリティや信頼性を向上させます。

例えば、ウェブトラフィックが急増した場合、ロードバランサを使用してリクエストを複数のウェブサーバに分散し、負荷を均等にすることができます。
水平機能分散システム
水平負荷分散システム

垂直分散システム

垂直分散システムは、主従関係が存在するコンピュータ同士が協調して役割を実行するシステムです。このことから垂直分散システムと呼ばれています。

垂直分散システムには以下の方式があります。

垂直機能分散システム垂直機能分散システムは、主従関係が存在し、異なる機能を持つ複数台のコンピュータにタスクや処理を分散する方式です。各コンピュータが特定の機能や処理を担当し、協調してシステム全体の機能を提供します。

例えば、次の単元で学習するクライアントサーバシステムでは、クライアント端末がユーザーインタフェースやユーザー入力の処理を行い、サーバがデータ処理やバックエンドの処理を担当します。

※なお、「垂直負荷分散システム」は存在しません。これは、一般的にコンピュータ同士の垂直関係が異なる機能や役割を割り当てる目的で設けられるためです。

集中処理分散処理の例え話

それぞれの処理方式を、レストランの厨房での料理の作り方に例えて説明します。

集中処理は、レストランのシェフが全ての料理を一人で作る状況に似ています。全ての材料、レシピ、調理器具はシェフの管理下にあり、全ての料理は彼の手を経て完成します。シェフが高度なスキルと経験を持っていれば、高品質の料理を効率的に作り出すことが可能です。しかし、シェフが忙しすぎると、全ての料理の準備に時間がかかり、全ての注文を処理することが難しくなる場合もあります。

分散処理は、レストランの厨房が各セクションごとに特定の調理員を持つ状況に似ています。たとえば、一人がパスタを担当し、別の人が肉料理を担当し、別の人がデザートを担当するなどです。各調理員は特定のタスクに専門化していて、それぞれの料理を作る速度を上げ、全体の効率を高めることができます。ただし、各セクションがうまく連携しないと、全ての料理が同時にテーブルに運ばれないかもしれません。

以上のように、集中処理は一つの中央ユニットが全ての作業を制御する形を取りますが、分散処理では複数のユニットが各自の作業を行い、全体の作業負荷を分散します。どちらの方式が適しているかは、その作業の性質や目的によります。

スケールアップとスケールアウト

スケールアップとスケールアウトは、サーバのパフォーマンスや容量を向上させるための2つの異なるアプローチです。

スケールアップ

スケールアップは、既存のサーバのリソース(CPU、メモリ、ストレージなど)を増強することで、パフォーマンスや容量を向上させる方法です。

例えば、より高性能なCPUにアップグレードしたり、メモリ容量を増やしたりします。

スケールアップは、システムの変更が最小限で済むことが利点ですが、ハードウェアの上限に達すると、さらなる拡張が困難になるデメリットがあります。

スケールアウト

スケールアウトは、複数のサーバを追加してシステム全体のパフォーマンスや容量を向上させる方法です。

ロードバランサーやクラスタリング技術を使用して、負荷を複数のサーバ間で分散させることで、効率的にシステムを拡張できます。

スケールアウトは、柔軟性が高く、必要に応じてサーバを追加・削除できる利点がありますが、管理が複雑になることがデメリットです。


スケールアップとスケールアウトを例えるならば、重いものをたくさん持ち運ばなければならないときに、筋力トレーニングをした1人の人間が運ぶのがスケールアップ、複数人が分担して運ぶのがスケールアウトに相当します。

スケールアップとスケールアウトの例え話

レストラン経営を想像してみてください。客が増えるにつれ、レストランのキャパシティを向上させる必要があります。

スケールアップは、レストランの内装を改善し、より多くの席を設けることで、一度に客をもっと収容できるようにする方法です。しかし、レストランのスペースには限界があり、それ以上拡張できなくなります。

スケールアウトは、隣接する土地に新しいレストランをオープンして、全体のキャパシティを増やす方法です。複数のレストランで負荷を分散させ、柔軟に対応できますが、複数の店舗を管理することが難しくなります。

クラスタリング

クラスタリングは、複数のコンピュータを連携させて一つのシステムのように動作させる技術です。これらのコンピュータは物理的に近い場所に配置され、同種または類似のハードウェアで構成されることが多いです。

クラスタリングの主な目的は、処理能力の向上、負荷分散、高可用性の実現です。各コンピュータは共同でタスクを処理し、一つのシステムのように認識されます。これにより、単一のコンピュータでは達成できない高速な計算処理や、一台のコンピュータが故障してもシステム全体が停止しないような冗長性を確保できます。

クラスタリングは、データセンター、高性能計算、Webサービスのホスティングなど多くの分野で応用されています。

利用形態

コンピュータシステムの利用形態には以下のようなものがあります。

バッチ処理

バッチ処理は、あらかじめ定義されたタスクを自動実行するプログラムです。

複数のタスクを一度にまとめて処理することができます。大規模なデータ処理や一定の作業を自動化するために使用されます。

バッチ処理の例としては、データのバックアップ・銀行の取引処理・ソフトウェアの更新などがあります。

バッチ(batch)とは 1回分、ひと束、一団を意味する英単語です。

「夜間バッチ」とは?

バッチ処理は夜間に行われることが一般的です。これは主に次の二つの理由によります:

  1. リソースの有効利用:バッチ処理は大量の計算リソース(CPUやメモリ)を必要とするため、これを昼間のビジネス時間に行うと、ユーザーが普段使うシステムに影響を及ぼす可能性があります。夜間は利用者が少なく、リソースを十分に利用できるため、バッチ処理に適しています。
  2. データの整合性:日中はシステムが頻繁に更新されるため、その間にバッチ処理を行うとデータの整合性が保たれない可能性があります。夜間にバッチ処理を行うことで、一定の時点のデータに対して処理を行うことが可能となり、データの整合性を確保できます。

このように、リソースの有効利用とデータの整合性確保の観点から、バッチ処理は夜間に行われることが一般的です。ただし、システムの性能やバッチ処理の規模、ビジネスの要件によっては、昼間にバッチ処理を行うこともあります。

オンラインリアルタイム処理

オンラインリアルタイム処理は、ユーザーの入力や要求に即座に反応し、結果を迅速に提供するコンピュータの処理方式です。

システムとユーザー間のやり取りがリアルタイムで行われるため、処理速度と応答性が重要な要素となります。

銀行のATMサービス、航空予約システム、オンラインゲームなどで一般的に使用されます。

対話型処理

対話型処理は、利用者からの処理要求に応じて、あたかも対話をするように、コンピュータが処理を実行して作業を進める処理方式です。

ユーザーは、コンピュータが生成する情報に基づいて追加の情報や指示を提供することができます。

対話型処理は、新幹線や電車の座席予約システム、AIベースのチャットボット、オンラインショッピング、インターネットバンキング、などの分野で使用されます。

関連用語

ブレードサーバ

ブレードサーバは、複数の独立したサーバブレード(コンピュータの機能を持った基板)を1つの筐体(シャーシ)に収めることで高密度で省スペースなサーバーを実現する技術です。

各サーバブレードは、プロセッサ、メモリ、ストレージ、およびネットワーク機能を持ち、シャーシ内で共有リソース(ディスプレイ・キーボード・ネットワークスイッチなど)を利用します。

ブレイドサーバは、省スペースで拡張性が高く、データセンターやクラウド環境に適しています。

筐体に収められたサーバブレード
ブレードサーバを構成するサーバブレード
スーパーコンピュータ

スーパーコンピュータとは、その時点で最も高性能なコンピューティングパワーを持つコンピュータのことを指し、主に科学技術計算や気象予報、物理シミュレーション、そして大規模なデータ解析など、非常に複雑で計算量が大きいタスクのために使用されます。

スーパーコンピュータは、通常、多数のプロセッサを組み合わせて大量の並列処理を行うことで、その高性能を達成します。つまり、一つの大きな問題を小さな部分問題に分割し、それぞれを同時に解くことで、効率的に解を求めます。この並列処理は分散処理の一形態であり、そのためスーパーコンピュータは大規模な分散処理環境とも言えます。

ただし、スーパーコンピュータの設計と管理は複雑で、その運用には専門的な知識と技術が必要です。また、その高性能は高コストにつながるため、スーパーコンピュータは特定の研究機関や大企業など、大規模で複雑な問題を解決する必要がある場所で主に利用されます。

スーバーコンピュータ
目次