このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

Bitbucketの長時間ダウンで思ったよ、分散バージョン管理系ってほんとに素晴らしい!

Kuwataさんと僕は、Catyの作業のために、分散バージョン管理システムMercurialと、オンラインMercurialリポジトリを提供しているサイトBitbucketを使っています。使い始めた頃の感想は「ナルホドー! 使って分かった Mercurial と Bitbucket の便利さ」、最近知った小ネタは「分散バージョン管理系Mercurial こんなことも知らなかったの?>自分」に書きました。

10月3日・土曜日、かなり長時間にわたってbitbucketが落ちていました。原因は、AmazonWebサービスEC2, EBSのトラブルだったようです。インフラの問題だったにしろ、このダウンで迷惑をこうむった人は多いだろうし(有料版をビジネスで使っている人々もいます)、bitbucekt自身も随分と痛手を受けたでしょう*1

僕もbitbucket利用者ですが、「あー、そうなの」という程度の反応でした。僕がたいして気を揉むことがなかったのは、先週の中頃(9月エンド)はCatyのリリース作業で頻繁にbitbucketを使っていたけれど、週末はたいして使う必要がなかったこともあります。しかし、しかしですね、もしbitbucketがCVSSubversionホスティング・サイトだったら青くなっていたでしょう。大事なリポジトリが無くなったらどうしよう、と気が気じゃないですよ。「もしデータがロストしたら訴えてやろう」とか思うでしょうね。

でもね、Mercurialならデータ・ロストの心配なんて一切ないんです。データはぜーんぶ手元にあるもんね。bitbucketがこの世から永久に消失したところで無問題。Kuwataさんと若干の食い違いが生じているかもしれませんが、応急処置としては、メールでdiffかバンドル(差分交換用バイナリ)ファイルを送れば同期を取れます。代替のホスティング・サービスを探すか、自前でサーバーを上げれば今までどおりに作業を継続できます。*2

bitbucketはWikiシステムを持ってますが、WikiMercurial管理下に入っているので、Wikiページも手元に全てあります。イッシュートラッカーは残念ながらMercurialと連動してないので、データを失うことになるかもしれません。ですが、これはさほどのダメージじゃありません。

データは手元にある。それも、「たまたまバックアップしていた」とかの僥倖とは無関係で、常にどんなときでもデータは必ず手元にあるのです。この事実は、心理的にものすごい安心感と余裕をもたらします。もちろん、それでもバックアップ(clone一発、超簡単)をしたほうがいいのですが、bitbucketと僕とKuwataさんのリポジトリが同時に失われる確率は低いでしょう。どれか1つが生き残っていれば、最後の変更以外は再現できます。

データの保全だけでなく、Mercurialは、間違いに対する不安や恐れも軽くしてくれます。例えば、Catyのリリース版を作る作業は、リポジトリをcloneしてやったのですが、僕がどんなヘマをしでかそうともKuwataさんに迷惑はかからないし、どの時点にでも戻すことができます。ビクビクせずに作業を進めることができます。実際に間違いをやらかしましたが、やり直しのコストは極小でした。

分散バージョン管理という概念はかなり分かりにくいもの(特にCVSSubversionなどのユーザーには)で、使い始めるまでの敷居が高い*3かもしれません。「ナルホドー! 使って分かった Mercurial と Bitbucket の便利さ」で言ったことをもう一度繰り返します:

  • 「四の五の言ってないで、使ってミソ」

*1:代替インフラを持ってなかったのが悪いとも言えますが、小規模ベンチャーでしょうから、ちょっと可哀想な気がします。

*2:アリャー、このエントリーを書いている最中もbitbucket落ちてるしぃー^^;、シャレになんねーよ。

*3:本来の意味は「不義理や不面目のため、訪問しにくくなる」なんだそうです。が、みんなが同様に誤用していれば意味は通じるんだから、本来の意味なんてどうでもいいんです。http://d.hatena.ne.jp/m-hiyama/20070927/1190855998 参照。)