バケツにGitを教えてみた
オブジェクトストレージバケットをGitサーバーとして動かす実験の記録。Billyファイルシステム抽象化レイヤーと純Go実装のgo-gitを組み合わせ、Tigrisオブジェクトストレージ上にGitリポジトリを構築。POSIXのrenameアトミック性、大量のstat()呼び出しによるレイテンシ問題、パックファイルのキャッシュ戦略など、ファイルシステム前提のGitを分散オブジェクトストレージで動かす際に直面した技術的課題とその解決策を詳述している。
背景メモ
- **Tigris Data**(ティグリス・データ):分散オブジェクトストレージ(S3互換)を提供する企業。従来のファイルシステムではなく、クラウドネイティブなオブジェクトストレージを売りにしており、「append-only(追記専用)」モデルを採用している。