スケールアウトに向くシステムを分散と整合性から見分ける
基本情報技術者試験 平成29年度春期 午前 問12 / システム構成要素 › システムの構成
過去問にチャレンジ
システムの性能を向上させるために,スケールアウトが適しているシステムはどれか。
- ア
一連の大きな処理を一括して実行しなければならないので,並列処理が困難な処理が中心のシステム
- イ
参照系のトランザクションが多いので,複数のサーバで分散処理を行っているシステム
- ウ
データを追加するトランザクションが多いので,データの整合性を取るためのオーバーヘッドを小さくしなければならないシステム
- エ
同一のマスタデータベースがシステム内に複数配置されているので,マスタを更新する際にはデータベース間で整合性を保持しなければならないシステム
会話形式の解説
講師今回はスケールアウト、つまりサーバの台数を増やして性能を上げる方法が、どんなシステムに向くかを考えます。見るところは二つです。処理を分けて並列に実行できるか、そしてサーバ同士でデータをそろえる手間が台数とともに増えないか、です。
受験者私は、サーバを増やせばどのシステムでも速くなると思っていました。向き不向きがあるのですか。
講師あります。たとえば、大きな一括処理を並列に分けにくいシステムを考えてみてください。サーバを10台に増やしたら、その処理はどうなりそうですか。
受験者処理を分けられないなら、結局1台が全部を担当して、残りのサーバは手が空いたままになりそうです。
講師そのとおりです。仕事を受け持てるのが実質1台なので、性能はほとんど上がりません。こういう処理には、1台のCPUやメモリを強化するスケールアップのほうが向いています。
受験者では、データを追加するトランザクションが多いシステムはどうでしょうか。追加の処理なら、サーバごとに分けて受け持てそうな気がします。
講師そこが紛らわしいところです。更新を複数のサーバに分けると、サーバ間でデータをそろえる処理や、排他制御、つまり同じデータを同時に書き換えないようにする仕組みの待ちが生じます。台数が増えるほどその負担も大きくなります。この選択肢は整合性をとるオーバーヘッドを小さくしたいと言っているので、スケールアウトの性質と逆向きです。
受験者同じマスタデータベースを複数置いていて、更新のたびに整合性を保つ必要があるシステムも、同じ理由で合わないのですね。
講師はい。台数を増やすと同期をとる相手も増えるので、更新時の調整がより複雑で重くなります。性能向上は期待しにくいです。
受験者残るのは、参照系のトランザクションが多くて、すでに複数のサーバで分散処理をしているシステムです。読み取りならデータを書き換えないので、サーバ間でそろえる必要がほとんどない、ということでしょうか。
講師そうです。サーバを足せばその分だけ読み取りを受け持てますし、分散の仕組みもすでにあるので、台数を増やす効果が出やすいです。これがスケールアウトに適したシステムで、正解になります。
受験者まとめると、処理を分けられて、更新をそろえる手間が少ないほどスケールアウト向き、並列化しにくい処理や更新・同期が多い処理はスケールアウトに向かない、という判断ですね。
講師よく整理できています。補足すると、スケールアウトは台数が増えることで一部のサーバが止まっても処理を続けやすく、可用性の面でも利点があります。一方、並列化しにくい処理や更新が主体の処理では、スケールアップが向くことが多いです。「台数を増やす=必ず速くなる」と思い込まないことが、引っかけを避けるコツです。
まとめ
スケールアウトはサーバの台数を増やして処理を分け合い、全体の性能を高める方法です。そのため、処理を独立した単位に分けて並列に実行でき、サーバ間でデータをそろえる手間が少ないシステムほど効果が出ます。参照系のトランザクションが中心で、すでに分散処理をしているシステムはこの条件に合うため、スケールアウトに適しています。一方、並列化しにくい一括処理や、更新が多く整合性の維持が必要な処理では、台数を増やすほど同期や排他制御の負担が増えるので、スケールアップが向くことが多いです。
解答・解説
正解はイです
この問題のテーマ
サーバの台数を増やして性能を上げる「スケールアウト」が、どのような処理の性質をもつシステムに向いているかを問う問題です。
解き方の考え方
スケールアウトは、サーバを増やして処理を分け合うことで全体の処理能力を高める方法です。そのため、処理を分けて並列に実行でき、サーバ同士で更新内容をそろえる手間が少ないシステムほど効果が出ます。各選択肢について、処理を分割できるか、更新の整合性をとる負担が台数とともに増えないかを確認します。
選択肢ごとの解説
- ×ア 一連の大きな処理を一括して実行しなければならないので,並列処理が困難な処理が中心のシステムアは、大きな一括処理を並列に分けにくいシステムです。処理を分けられなければ、サーバを増やしても仕事を受け持てるのは実質1台だけなので、性能はほとんど上がりません。このような処理には、1台の性能を高めるスケールアップのほうが向いています。
- ○イ 参照系のトランザクションが多いので,複数のサーバで分散処理を行っているシステムイは、参照系のトランザクションが中心で、すでに複数のサーバで分散処理をしているシステムです。読み取りはデータを書き換えないため、サーバ間で更新をそろえる必要がほとんどなく、サーバを足せばその分だけ処理を受け持てます。分散の仕組みもすでにあるので、台数を増やす効果が出やすく、スケールアウトに適しています。
- ×ウ データを追加するトランザクションが多いので,データの整合性を取るためのオーバーヘッドを小さくしなければならないシステムウは、データ追加のトランザクションが多く、整合性をとるオーバーヘッドを小さくしたいシステムです。更新を複数のサーバに分けると、サーバ間でデータをそろえる処理や排他制御の待ちが生じ、台数が増えるほどその負担も大きくなります。オーバーヘッドを小さくしたいという要件と、スケールアウトの性質がかみ合いません。
- ×エ 同一のマスタデータベースがシステム内に複数配置されているので,マスタを更新する際にはデータベース間で整合性を保持しなければならないシステムエは、同じマスタデータベースを複数置いていて、更新のたびにデータベース間の整合性を保たなければならないシステムです。台数を増やすと同期をとる相手も増えるため、更新時の調整がより複雑で重くなります。そのため、台数を増やしても性能向上は期待しにくくなります。
補足
スケールアウトは、台数が増えることで一部のサーバが止まっても処理を続けやすくなり、可用性の面でも利点があります。一方、並列化しにくい処理や更新が主体の処理では、スケールアップを選ぶのが一般的です。
POINT
- スケールアウトはサーバの台数を増やす方法、スケールアップは1台のCPUやメモリなどを強化する方法です。
- スケールアウトは、処理を独立した単位に分けて並列・分散で実行できるシステムに向いています。
- 参照(読み取り)中心の処理は、サーバ間でデータをそろえる手間が少ないため、台数を増やす効果が出やすくなります。
- 更新が多い処理や、複数のデータベース間で整合性を保つ必要がある処理では、台数を増やすほど同期や排他制御の負担が増えます。
