
1/21/2021 · Zeger-Jan van de Weg
What this post added
This post introduces Praefect, a new component designed to manage traffic to Gitaly storage nodes and enable Gitaly Clusters for high availability. It details the evolution from NFS to Gitaly, the challenges of scaling Git for high availability, and the design choices leading to Praefect. The post covers the initial implementation of eventual consistency with three data copies and the subsequent development of strong consistency using a three-phase commit protocol integrated with Git hooks. It also discusses cost considerations, the introduction of read distribution, and the challenges and lessons learned during the development and rollout of Praefect, including the decision to make it a required component.