top of page

システムの仕組み

4

.

各コンピューターがどのように組み合わさって、一つのシステムを構成しているのであろうか。


一般的に、システムはクライアントとサーバーと呼ばれるコンピューターに分かれて処理を分担して機能を実現している。


クライアントからサーバーに対して指示を出し、サーバーで処理を実行して結果をクライアントに返す。クライアントではそれを引き継いで処理を行い、結果をユーザーに提示する。ユーザーはクライアントのコンピューターを利用してシステムの操作を行う。


ユーザーが利用するスマートフォンや搭載されている地図アプリはクライアントであり、地図アプリの背後にある地図サービスの本体は、サーバー側に存在している。サーバーはユーザーから直接見えなくても、サービスの全体にとって必要不可欠な機能を担っている。


現在、世の中で一般的なWebサービスやモバイルサービスは、大まかに「クライアント<->アプリケーションサーバー<->DBサーバー」の構成で機能を実現している。サービスの規模や複雑さによって細かい構成は千差万別であるが、最も基本となる構成である。


クライアントは、ユーザーが使用するPCやスマートフォン、PCやスマートフォンにインストールされているアプリを指している。


アプリケーションサーバーとDBサーバーは、サービス提供者が運用しており、ユーザーからは直接見えないようになっている。ユーザーから直接見えるのは、PCのブラウザやスマホのアプリである。


アプリケーションサーバーには、アプリケーションプログラムが配置されている。アプリケーションサーバーはDBサーバーから必要なデータを取得し、データに対して決められた処理を行い、その結果データをクライアントに送っている。


ユーザーからの入力データを受け取り、必要な処理を行ってDBサーバーに対してデータを渡すことも、アプリケーションサーバーの役割になる。アプリケーションサーバーからDBのデータを直接操作(データ更新等)するわけではなく、DBサーバーに対してDBに格納されているデータの操作を依頼する。


サービスの利用者が多くなった場合は、「アプリケーションサーバーの能力を増強する」または「複数台のアプリケーションサーバーを使用して分散処理する」という対応を行う。


前者のことを“スケールアップ”、後者のことを“スケールアウト”と呼ぶ。スケールアップは現状使用しているコンピューターの能力を上げることであるため、一番お手軽な方法である。しかし、現状のコンピューターの能力を上げることでは目標を達成できない場合、スケールアウトの方法を選択する。スケールアウトする際は、何らかの手直しが必要になることが多い。


DBサーバーには、データが格納されている。

アプリケーションサーバーからデータ操作の依頼を受け、その依頼に基づいてDBのデータを操作する。システム全体を見渡したとき、一般的にDBサーバーがシステム全体の性能上のボトルネックになることが多い。


DBサーバーはアプリケーションサーバーのようにスケールアップとスケールアウトを行って処理能力を高めることが可能であるが、DBサーバーのスケールアウトは技術的にとても複雑である。


複数のコンピューターに分散したデータの整合性を取ることは容易でないためである。そのため、簡単に実現できる“スケールアップ”の方法で対応することが多くなりがちである。


データの整合性とは、例えば「Aさんの住所に関するデータが、DBサーバーXとDBサーバーYで同じであるか否か(異なっている状態が発生するか)」を指している。同じであれば整合性がある、同じでなければ整合性がない、となる。


データの整合性にあまり神経質にならなくてもよいサービスの場合は、スケールアウトの方法で処理能力を向上させることが可能である。


bottom of page