June 2024 Summaries
3 posts from Graphite
Filter
Month:
Year:
Post Summaries
Back to Blog
In 2011, Google faced significant challenges with its source control system, relying on a single, overloaded Perforce server that supported over 12,000 users daily. Despite attempts to find alternatives, the scale of Google's operations meant that no existing solution could meet their needs, leading to the creation of Piper, a distributed system built on Google's infrastructure. The transition from Perforce to Piper was a complex, four-year process that involved careful planning to avoid disrupting Google's operations, including using clean room design to navigate legal concerns over API usage. The migration was a high-stakes, all-or-nothing endeavor that ultimately succeeded, alleviating the operational risks associated with the old server and enabling new systems like Tricorder. This transition exemplified Google's innovative and daring engineering culture during a period that required both ingenuity and caution.
Jun 27, 2024
1,581 words in the original blog post.
At Graphite, initially, there was a lack of testing culture, influenced by engineers with experience at Meta, where testing was not prioritized. Over two years, the company shifted its culture to incorporate testing more extensively, but faced issues with poorly architected tests, which can become a liability as production code evolves. The importance of well-architected tests is emphasized, as they ensure maintainability and adaptability. To improve testing practices, several strategies were implemented, such as separating logic from side effects, using domain-specific languages to reduce boilerplate, parameterizing tests for clarity, and designing tests with potential failures in mind. These efforts have not only enhanced test quality but also improved the overall speed and execution of test suites, fostering a better testing culture at Graphite.
Jun 13, 2024
2,977 words in the original blog post.
Monorepos enhance developer velocity but can lead to conflicts and deployment issues when multiple developers work within the same repository. A merge queue, which merges changes in a first-in-first-out order, helps create predictable releases and reliable software. However, long CI times can delay the queue, especially as the volume of pull requests increases. To address this, Parallel CI is introduced to the Graphite merge queue, allowing CI checks to run in parallel for multiple stacks without sacrificing correctness. This improvement significantly reduces merge times, with some early adopters experiencing up to 2.5 times faster merges. Parallel CI maintains correctness by ensuring each merged pull request passes CI on its own, while also offering the option of batch merging for higher throughput at a lower CI cost. The system allows teams to configure parallelism settings to optimize their merge process, balancing between correctness and efficiency.
Jun 04, 2024
934 words in the original blog post.