オープンソースで一からスタート

図2●システム構成の概要
基幹システムは4台のWebサーバーと3台のデータベース(PostgreSQL)・サーバーで構成する。PostgreSQLの負荷分散やデータのレプリケーション用途に,米Tierfleet社の「QueryMaster」サーバーを2台導入した。さらに,図にはないが,データベース用ストレージとしてNAS(36Gバイト×6,RAID5)を1台導入済み。PostgreSQLは,ターボリナックスが発売する製品版「TurboDB 8」を採用
図3●トラブルを乗りきり稼働にこぎ着けた
データベースのレスポンスが悪い,PHPで開発したアプリケーションで日本語が化けてしまう,などのトラブルに遭遇。QueryMasterが落ちてしまうトラブルに手間取り,稼働が1カ月遅れる一幕もあった

 BBサービスの提供を開始した有線ブロードネットワークスは,その後も堅調に加入者数が増加。トラブルが頻発する旧基幹システムは限界に近づいていた。カットオーバーから1年3カ月が経った2003年の初頭には,再構築プロジェクトが立ち上がる。

 旧システムで複数のベンダーに構築を依頼し失敗した反省を生かし,新システムではユーズコミュニケーションズ1社が開発を一手に引き受けることが決まった。

 まず,長谷川氏のグループはOSの選定に着手した。同社はUNIX技術者が多かったこともあり,UNIXかLinuxのいずれかで構築すべきと話が進んだ。「Linuxでも冗長構成を敷けばUNIX並の信頼性は確保できる。PCサーバーを活用することでコスト・メリットも享受できる」(長谷川氏)などの理由から,Turbolinux8の採用を決めた(図2[拡大表示])。

 旧システムは10万ユーザーを超えての利用は想定されていなかったが,BBサービスの契約者数は2003年7月末時点で13万5506人。そこで,新システムでは余裕を見て50万ユーザーの処理(40トランザクション/秒)まで耐えられるように設計,開発した。たとえ,50万ユーザーを突破した場合でも,並列処理するサーバーの台数を増やすことで対応できる。

 データベース・サーバーには,デルコンピュータのPowerEdge2650(Xeon 2.4GHz×2,メモリー3Gバイト)を3台採用した。Web/APサーバー用途にはPowerEdge1650を4台用意し並列に接続した。

 Linuxの採用は構築コストの引き下げに寄与したが,「コスト削減ばかりに目を奪われると,信頼性の低下につながりかねない」(同氏)ため,米TierFleet社のデータベースの負荷分散ソフト「QueryMaster」の導入を決めた。QueryMasterは,配下のデータベースの負荷を分散させる機能に加え,データベース間のレプリケーション機能を備える。QueryMasterマシンのトラブルに備え,2台で冗長構成を敷いている。データベース・ソフトはPostgreSQLとMySQLの両方を検討したが,QueryMasterの適用対象がPostgreSQLだったことで,おのずと決まった。

 アプリケーションはすべてPHPで開発した。当初,Perlを採用する案も浮上したが,フロントエンドの画面周りをPHPで開発したこともあり,ロジックもすべてPHPで統一した。

 構築費用はハードとソフト併せて約1億円(一部,外注費を含む)。15人月で開発しており,「人件費や販管費を加味しても約1億2000万円」(同氏)。保守費用は,HimalayaとPrismを打ち切り,外部インテグレータに支払っていた費用が不要になったことから6500万円にまで激減した。

負荷分散ソフトが落ちてしまう

 システム開発は順調に進んだものの,後半にいくつかトラブルに見舞われた(図3[拡大表示])。

 1つがデータベースのレスポンス。100件程度のリストを検索・表示するのに1分以上時間がかかってしまい,「テストに参加したユーザー部門から“使い物にならない”と指摘を受けた」(同氏)。そこで,検索キーを絞り込んでインデックスを張り直す,テーブル構造を見直すなどのチューニングを重ねた。最終的には数秒で表示できるまで改善した。

 最も頭を悩ましたのが,システムの耐障害性を高める目的で導入を決めたQueryMasterのバグである。それが原因でカットオーバーがずれ込む一幕もあった。「テストをしていたバージョンでは,大量のデータをストアすると,なぜかQueryMasterが落ちてしまう。さらに,本来であれば冗長構成を敷いているもう1台のマシンにフェールオーバーするはずが,それも失敗する。これには頭を抱えた」と長谷川氏は苦笑する。開発元に直接掛け合い,米国のCEOが直接来日するも原因が解明せず,マイナー・バージョンアップ版であるv1.4.35において,問題が回避できるメドがようやくついた。検証作業に手間取り,カットオーバーが1カ月ほどずれ込んだため,QueryMasterを利用しない形で稼働を決めた。現在は,マイナー・バージョンアップ版のQueryMasterを利用して最終テストに臨んでいる真っ最中だ。

(菅井 光浩=sugai@nikkeibp.co.jp)