2008/04/30(水)「Googleを支える技術」を読んだ気分になる要点

はてなのnaoyaさんのところで見かけて購入したこの本。あれだけ巨大なシステムがどうやって動いているのか、興味深いところが解説されていてとても面白かった。

よくあるサーバの考え方

よくC10K問題といってクライアントが1万人を越えた途端、どんなシステムでも耐えられなくなると言われています。この先をどうやって維持していくか。はててやmixiなどでは、

  • DNSによるサーバグループの切り離し(障害発生時)
  • リバースプロクシによる負荷分散
  • データベースレプリケーションによる負荷分散、障害対策

普通サーバと言えば、とりあえずRAIDをして、電源ユニットを冗長化して、とにかく基幹システムが壊れないように構成します。基幹システムが落ちなければ、サブシステムは基幹システムによって障害対応しようというものです。

Googleの考え方

システムは、普通のPC(それもハイパフォーマンスPCではなく、コストパフォーマンスのいいPC)を使います。メモリもそこそこ、HDDはIDEディスクです。ネットワークは100Mbpsや1000Mbpsの普通のLAN。

その代わり、マシン台数を増やすことで徹底した負荷分散を行います。

しかしこれ、言うのは簡単ですが実際どうするのか。Googleのもっとも優れたところは、このような負荷分散システムを作り上げたところにあります。

ファイルシステムやデータベースシステムなどは「実に単純な機能」を効率的に実装します。例えば、GFS(Google File System)にはファイルの読み込みと書き込みの機能はあってもオフセットを指定して書き換えたりできないそうです。必要なら読み出して再度書き込むべしという具合です。

書き込みは多くのPCに分散・冗長化して行われ、障害発生時の切り離し対策を何重にも行って対応します。逆に言えば障害対策はすべて「障害発生PCの切り離し」によって復旧するということを徹底して行っています。

そして基幹システムの Chubby は、どれかが特別に優先するわけではなく、複数マシンによる合議制によって作られていて、半数以上のマシンが停止しない限りシステムが稼働し続けるように作られています。

まるで本を読んだかのように自慢できる、要点

  • PCの中身は冗長化しない
  • PCの数を用意するだけで冗長化・障害対策できるシステムを構築する
    • コピーを複数作り障害が起きたら自動的に切り離す
    • 早急に別の新マシンを起動させデータを自動的にコピーする
  • PCの数を用意するだけで性能が向上するようにシステムを構築する
    • 大きなデータは複数のブロックに分割し、手分けして処理をする
    • このような手分け処理をシステム化(ライブラリ化)する

asin:4774134325

2008/03/23(日)アンテナの交換

引っ越しをする人からアンテナをもらってきました。ブースター付。

もったいないからもらうという約束はしていたものの、いざもらってしまうと使い道*1に困るなあーと思ったのも束の間、「あっ家のアンテナ取り替えて」という謎の一言により、家のアンテナを取り替えることになりました。

家のアンテナ。

普通に使えてますけどね。固定部が完全にサビ付いてるので、取り替えようとかいう話。脆くなって落ちそうとかではないので、別に取り替える必要はないと思いますけど、14素子→20素子に増えるからいいか。

ついでに屋外の壁に付いているブースターを外して分解してみました。

案の定中に電解コンデンサがありました。20年以上屋外に置かれた電解コンデンサがまともに機能するはずがありません。吹いた後なのか単なるサビなのか足が黒くなってました。

手持ちがなかったので片方だけ交換*2。TVを映してみると、アンテナのおかげかどうか幾分映りがよくなったような気がします。

とにかくアンテナありがとうございました >○柱さん

*1 : 謎のサブアンテナにしようと思ったのですが、受信するチューナーが1つしかなかった(汗

*2 : 使ったのは普通の電源用電解コンデンサです。容量は増えましたが。

追加作業

その後再度取り外して、もう片方のコンデンサを交換、電解コンデンサに積層セラミックをパラに取り付け、可変抵抗(ゲインボューム)を固定抵抗に取り替えましたが特に変化なし。

そもそも送信電波の質の限界の模様。

2008/03/14(金)デジタルフィルタ勉強中

asin:4789830918

デジタルフィルタを勉強しています。なにかいい本ないかなと思ってネットで検索してたら、CQのこの本が評判がよさそうでした。Amazonで頼もうかと思ったのですが、たまたま本屋に行く機会があったので立ち読み。フィルタの設計法とか演算法とか非常に実践的な本。

…残念ながら求めてたのと違う(汗)

CQの本は技術書としては大変優秀なのですが、半数ぐらいは理屈(理論)をきちんとフォローしようとすると物足りない。理論に偏りすぎるのはどうかと思いますが、HOW TO本的にこうやればフィルタが作れるも(書かれたケース以外の)応用が利かないかと。

そんなこんなでフィルタ設計してた人からお借りしたビギナーズ デジタルフィルタ*1という本読んでます。やさしい学術書ですが基礎的事項がしっかり書かれているので入門にはちょうど良いです。

そんなこんなで理論がしっかりしてるデジタルフィルタのお勧めありませんか?

*1 : この本、よくできてるなと思ったら東京電機大学出版局ですか。どうりで。

2008/03/11(火)ショッピングレンタルサイトにやられた

このまえ、ちょっと物資調達しようと思って某電子系通販サイトを開きました。「かごシステム」でした。

当たり前とか思われがちですが、大手除くと電子系通販なんてカゴシステムがある方がめずらしい。そんな感じで注文を進めていくと注文確定後に「オンライン決済」画面が表れた。なんとめずらしい。と思って、普通に決済手続きを進めていたらリンクを2回押してしまってエラーが出て決済フォームが停止。

仕方がないので戻るを押してやりなおすもだめ。IEでURL打ち込んで開きなおしてもだめ。仕方がないので画面を閉じる。注文確認メールを待ったものの、決済のURLとかは貼られていない。

仕方がないのでメール。

To: 通販担当者

オンライン決済のページでエラーが出て止まってしまったのですが、

決済画面のURLを再発行してください。

しばらく返信なし。……1時間後、突然電話が。

「さきほどの注文はそのままにして、もう一度最初から注文してください」

やりなおせないのかよ!

つまり決済画面を途中で閉じたら二度と決済できない仕様だと。アホですか。どんなシステム設計ですか。

しかも前の注文そのままってキャンセル扱いにもできないんだろなーきっと(キャンセルメールとかこなかったし)。支払い期限切れまで放置しろってことだと思う。

e-shopsとかいうレンタル買い物かごシステム(レンタル通販システム)を使っているようですが、この手のものはほんとダメだと思った。大手の楽○も使いにくいし。