図4●RACを使えばDBサーバーのスケールアウトもできる<BR>SMP構成時のCPUと処理性能の関係を,Linuxを動作させたPCサーバーとRISC UNIX機とで比較してみる。RISC UNIX機は8CPUまでCPUに比例して性能が伸びる。PCサーバーは,単体では4CPU以上で性能の伸びが鈍るが,4CPU機を2台用いてRACを組めば,8CPUまでほぼリニアに性能が上がる。サーバー機単体のスケープアップの限界に達しても,RACによってスケールアップの余地が広が
図4●RACを使えばDBサーバーのスケールアウトもできる<BR>SMP構成時のCPUと処理性能の関係を,Linuxを動作させたPCサーバーとRISC UNIX機とで比較してみる。RISC UNIX機は8CPUまでCPUに比例して性能が伸びる。PCサーバーは,単体では4CPU以上で性能の伸びが鈍るが,4CPU機を2台用いてRACを組めば,8CPUまでほぼリニアに性能が上がる。サーバー機単体のスケープアップの限界に達しても,RACによってスケールアップの余地が広が
[画像のクリックで拡大表示]
図5●楽天は論理パーティショニング機でDBサーバーにスケーラビリティを確保&lt;BR&gt;ECサイト大手の楽天は,オンライン店舗システムのDBサーバーに,論理パーティショニング可能なRISC UNIX機を用いている。例えば全64個のCPUを3つの業務アプリケーションが16CPUずつ使っていても,予備のCPUが16個残っている。これらの使っていないCPUを動的に割り振ることで,DBサーバーのCPU処理能力を拡張可能である。予備のCPUが足りなくなった場合は,各CPUの動作周波数を上げることで,予備を確保している
図5●楽天は論理パーティショニング機でDBサーバーにスケーラビリティを確保<BR>ECサイト大手の楽天は,オンライン店舗システムのDBサーバーに,論理パーティショニング可能なRISC UNIX機を用いている。例えば全64個のCPUを3つの業務アプリケーションが16CPUずつ使っていても,予備のCPUが16個残っている。これらの使っていないCPUを動的に割り振ることで,DBサーバーのCPU処理能力を拡張可能である。予備のCPUが足りなくなった場合は,各CPUの動作周波数を上げることで,予備を確保している
[画像のクリックで拡大表示]
図6●郵便貯金カード普及協会はDBを分割してディスクI/Oの負荷を分散&lt;BR&gt;1000万顧客分という大容量のデータベースにアクセスするためにディスクI/Oがボトルネックになっていた。APサーバー上のアプリケーションから見て6個のデータベースを論理的に1個のデータベースとして利用できるようにして,アプリケーションに手を加えずにDBアクセス負荷を分散した。実際には,クラスタリング機能を持たないPostgreSQLとPerlアプリケーションとの間に,独自に作りこんだDBアクセス用ラッパー・プログラムを稼働させている
図6●郵便貯金カード普及協会はDBを分割してディスクI/Oの負荷を分散<BR>1000万顧客分という大容量のデータベースにアクセスするためにディスクI/Oがボトルネックになっていた。APサーバー上のアプリケーションから見て6個のデータベースを論理的に1個のデータベースとして利用できるようにして,アプリケーションに手を加えずにDBアクセス負荷を分散した。実際には,クラスタリング機能を持たないPostgreSQLとPerlアプリケーションとの間に,独自に作りこんだDBアクセス用ラッパー・プログラムを稼働させている
[画像のクリックで拡大表示]

パート1:拡張
DBサーバーも拡張可能に

 Webシステムのボトルネックを解消する最も単純な方法は,サーバー機の性能を上げてしまうことだ。サーバー機の台数を増やして処理負荷を分散する方法を「スケールアウト」と呼び,サーバー機をより高性能な機械に置き換える方法を「スケールアップ」と呼ぶ。

 Webシステムの場合,フロントエンド側に近いほどスケールアウトしやすくなる。具体的には,3層のうち,WebサーバーとAPサーバーはスケールアウトしやすい*5

 一方で,DBサーバーはデータベースを集中管理しているため,粗結合のサーバー機群に処理負荷を分散するスケールアウトが難しい。スケールアップ,すなわち,SMP構成のCPU数を増やしたり,密結合のサーバー・クラスタにして負荷を分散するしかない。

 SIベンダーの新日鉄ソリューションズの調べでは,典型的なWebシステムのハードウエア・コストの比率は「DBサーバーが77%,APサーバーが21%,Webサーバーが2%である」(マーケティング部コンピュータ&ストレージグループの早瀬久雄グループリーダー)。コストのほとんどを占めるDBサーバーにかけるお金をいかに下げるかがサイジングのポイントとなる。

 ここへきてスケールアップ手法の選択肢が広がった点は見逃せない。具体的には,前述のRACのように,クラスタリングしたサーバー機群に処理負荷を分散できるミドルウエアが実用段階に入ってきた*6。新日鉄ソリューションズが検証したRACの性能動向も,図4[拡大表示に示す傾向を示した。

 楽天がECサイトのDBサーバーで使っている論理パーティショニングも,DBサーバーの拡張性を確保する有効な手段である(図5[拡大表示)。常に余剰のCPUリソースを確保しておくためサーバー機のコストは高くつくが,ニーズに応じて動的にサーバー機の性能を上げられるメリットがある。

 アイ・ティ・フロンティアの「シェアード・ホスティング」など,論理パーティショニングを用いたホスティング・サービスを提供するベンダーもある。ユーザーに対し,オンデマンドでサーバーの処理能力を引き上げる。「今後はオンデマンドの考え方が重要になる」(システム営業統括本部xWeb事業本部マーケティング推進部の木村和之リーダー)。

業務次第ではDBを分割可能

 スケールアップの必要がないDBサーバーもある。例えば,参照系データだけで構成しているのであれば,データベースを複製すればよいので,スケールアウトの対象となる。また,そもそもアクセスするユーザーごとに使うデータベースが独立しているようなケースでは,ユーザーごとに独立したDBサーバーを立てれば済む。

 郵便貯金カード普及協会は,会員番号のまとまりごとにデータベースを6個に分割して,システムのボトルネックであるディスクI/Oの遅さを緩和した(図6[拡大表示)。システムの特徴は,1000万人規模の大量の顧客レコードにある。複数のディスクにテーブルを分割しないとレスポンスが悪化してしまう。まさに「DBの分割に適した事例」(開発を担当したNTTデータの渡部広志第四公共ビジネスユニットオープン技術統括部第三ソリューション担当課長)と言える。