一連のライブドア騒動が起こったときライブドアのサービス群へのアクセスはかなりの量になったと聞きます。そしてライブドアのサービスが落ちなかったことに対して、ライブドアには技術力があるというコメントが数多く寄せられ関心を集めました。私も注意してその様子を見ていて、ほんとうにどういったシステムでどういったサーバー構成なんだろうと興味を持ちました。というのも、多くのWebサービスは予測不可能な急激なトラフィックは想定していません。想定すればするほど余分にコストがかかりますし、絶対に落ちないことが求められるサービスでなければ割にあわないでしょう。ライブドアはその辺りのコスト意識は高いように思えます。
そこで、実はライブドアのサービスは落ちまくっていて、単に表面化していないだけではないかという推測を立ててみました。落ちまくっているのに表面化しないというのは一件矛盾していそうで、納得できそうな理由があります。
まず推測材料として「ライブドアのシステム部署はサーバールームのあるビルに同居している(もしくは近くにいる)」ということ。そして「ネットワーク管理はほぼ自社でまかなっていて、24時間常駐している」ということを、元関係者の方からライブドアは強い方向付けでこれを実行していたという話を聞きました。この二つが揃うことで、サーバーにトラブルが起きたときの対処までの時間がかなり短くなります。この二つが揃っている企業は少ないです。(YahooやGoogleは会社規模的に比較対象にしません)
もうひとつの材料としてWebサーバーのトラブルの多くはApacheが固まるのが原因だということをつけたします。Apacheは構成によっては応答ができなくなってしまうことが当然のようになることがあります。ですが、だいたいは再起動すれば直るんです。もう嘘のように正常に走りだすんです。Apache以外にもこのケースは多々当てはまります。WindowsはOS自体がそれですからね。DBについては、公開された構成から推測すると普段からほとんど負荷はかかってなかったんじゃないかと思います。DBはそう簡単には増やせませんしApacheに比べれば落ちる頻度も低いです。またうまくキャッシュをきかせればDBへの問い合わせは激減させることができます。
で、サーバーまでの物理的&時間的距離を短かくしてエンジニアを常駐させておけば落ちたら即座に再起動、どんなに落ちても再起動なんて芸当が可能になります。ライブドアにトラフィックが集中したとき、中の人は必死にApacheを再起動しまくり、ターミナルを開くこともできなければサーバールームへひた走って電源をポチポチっと入れ直すなんてことを繰り返してたんじゃないかと思うわけです。船が沈みそうなときにバケツで水をくみだして耐えている状態といいましょうか。でも、くみだす能力はとても高いので船はまったく沈まないと。
それでもサーバーが落ちればいくら台数があっても相当なお客さんがアクセス不能になっていたのではないかと思われるかもしれません。そこは技術的な解決策があって、あるサーバーが落ちたときに負荷分散装置が落ちたサーバーへトラフィックを振り分けないように構成されていれば、サーバーが頻繁に落ちていることをほとんど誰にも気付かれずにサービスを続けることができます。ほったらかしにすると全部落ちてしまいますが、再起動すればとりあえず正常になります。ひょっとしたら緊急時は5分おきにApacheを自動再起動してたかもしれません。再起動すれば少数のユーザーに影響は出ますがトラフィックは落ちませんから、結果としては正しいときもあります。
以上のことから、サーバーやシステムの構成が想像できないほどに綿密に冗長性をもって作られていたのではなく、経験と人間の力と総合的な判断力で持ちこたえたんじゃないかと推測しました。これが当たっているのであれば中の人は大変ですね。
まあこの運用方法を選んだというのも技術力のうちといえますけどね。ただこれはあくまで推測の範囲内ですし、真相は中の人しか知る術はありません。今後またライブドアによる勉強会があればあのとき本当はどうだったのか聞いてみたいところです :-)




投稿