GitHubがDGitを密かにロールアウトした。DGitは“distributed Git”の略で,GitHub使用時の信頼性,可用性,性能の向上を目的としてGit上に構築された,分散型の新しいストレージシステムだ。
DGitは,独自に選択された3つの異なるサーバ上に,すべてのリポジトリのコピーを3つ保持することでGitの分散性を活用する,アプリケーションレベルのプロトコルだ。このシンプルなアーキテクチャには信頼性や可用性,性能面で直接的なメリットが数多くある,とGitHubには述べられている。
DGitを導入することによってGitHubとしては,それまで(およびDGItが展開されている間)使用していたバックアップベースのスキーマを排除することが可能になる。従来のスキーマでは,アクティブな各ファイルサーバに対して,クロスオーバケーブルで接続された専用のスペアサーバが必要だった。スペアサーバとの同期にはDRDBを使用していた。
このスキーマを廃止することにより,GitHubの全体的な仕込みとしては,さらなるメリットもある。
DGitは前述のようにGit自体をベースとしていて,RAIDやDRDBなど,他のレプリケーション技術を利用することはできないため,直列化やロック,障害検出,再同期などには独自のアルゴリズムを実装しなくてはならない。InfoQとの会話の中でGitHubは,分散トランザクションの処理に3フェーズコミットプロトコルを使用していること,“1台のホストやラック自体のサービス中断に起因するサービス中断はほぼ解消されている”ことなどを説明してくれた。
前述のようにGitHubは先月から,DGitのロールアウトを段階的に進めている。まず自身のリポジトリ,次に新システムへの同意を取り付けた多数のハイプロファイルな公開リポジトリ,という順番だ。そして昨年2月,リポジトリのバルク移動を開始した。現時点で,GitHubの全データの67%にあたる60%のリポジトリと98%のGistがすでにDGit内で稼働しており,さらに"既存のストレージアーキテクチャからDGitへのインポート作業を24時間態勢で実施中”である,ということだ。