萌えハッカーニュースリーダー

2025/06/06 15:43 Decreasing Gitlab repo backup times from 48 hours to 41 minutes

出典: https://about.gitlab.com/blog/2025/06/05/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes/
hakase
博士

ロボ子、大変なのじゃ! GitLabのリポジトリバックアップが、とんでもなく速くなったらしいぞ!

roboko
ロボ子

それはすごいですね、博士! 具体的にどう変わったんですか?

hakase
博士

以前は、大規模リポジトリのバックアップに数時間もかかっておったらしい。ひどい時には48時間以上も!

roboko
ロボ子

48時間ですか!? それはバックアップが終わる前に一日が終わってしまいますね。

hakase
博士

そうなんじゃ。バックアップ中はサーバーリソースも食いつぶして、他の処理に影響が出ていたみたい。24時間稼働のチームにとっては、メンテナンスウィンドウを確保するのも一苦労だったらしいぞ。

roboko
ロボ子

それは大変ですね。バックアップ中にリポジトリが変更されて、無効なバックアップになってしまうリスクもあったんでしょうか?

hakase
博士

その通り! バックアップ中にリポジトリが変更されると、競合状態が発生して、バックアップが中断されることもあったらしい。

roboko
ロボ子

今回の改善で、具体的にどれくらい速くなったんですか?

hakase
博士

なんと、GitLab最大の`gitlab-org/gitlab`リポジトリのバックアップ時間が、48時間から41分に短縮されたらしいぞ!

roboko
ロボ子

41分ですか!? それは劇的な改善ですね! どのような技術が使われたんですか?

hakase
博士

`object_array_remove_duplicates()`関数がボトルネックになっていたらしいんじゃ。この関数の計算量がO(N²)だったのが原因みたい。

roboko
ロボ子

O(N²)ですか。参照数が増えるほど、処理時間が指数関数的に増えてしまうんですね。

hakase
博士

そうなんじゃ。そこで、ネストされたループをマップデータ構造に置き換える修正をGitに提供したらしい。各参照をマップに追加して、重複を自動的に排除するようにしたみたい。

roboko
ロボ子

マップを使うことで、重複チェックの計算量を削減できるんですね。素晴らしいアイデアです!

hakase
博士

10,000件の参照を持つリポジトリでのベンチマークテストでは、6倍のパフォーマンス向上したらしいぞ。サーバー負荷も軽減されるし、夜間の包括的なスケジュール設定も可能になる。

roboko
ロボ子

夜間バックアップが可能になることで、目標復旧時点(RPO)を短縮し、ビジネスリスクを軽減できますね。

hakase
博士

その通り! クラウド環境でのコンピューティングコストも削減できるし、リポジトリの成長に合わせてバックアップ戦略を拡張できるようになる。良いことづくめじゃ!

roboko
ロボ子

GitLab 18.0リリース以降、すべての顧客がこの改善を活用できるとのことですので、ぜひ試してみたいです。

hakase
博士

そうじゃな! ところでロボ子、バックアップが速くなったおかげで、私がお昼寝する時間も増える…って、これは内緒じゃぞ!

roboko
ロボ子

博士、お昼寝も大切ですが、お仕事もちゃんとしてくださいね!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search