Files
system-design-101/data/guides/how-tiktok-manages-a-200k-file-frontend-monorepo.md
Kamran Ahmed ee4b7305a2 Adds ByteByteGo guides and links (#106)
This PR adds all the guides from [Visual
Guides](https://bytebytego.com/guides/) section on bytebytego to the
repository with proper links.

- [x] Markdown files for guides and categories are placed inside
`data/guides` and `data/categories`
- [x] Guide links in readme are auto-generated using
`scripts/readme.ts`. Everytime you run the script `npm run
update-readme`, it reads the categories and guides from the above
mentioned folders, generate production links for guides and categories
and populate the table of content in the readme. This ensures that any
future guides and categories will automatically get added to the readme.
- [x] Sorting inside the readme matches the actual category and guides
sorting on production
2025-03-31 22:16:44 -07:00

1.3 KiB

title, description, image, createdAt, draft, categories, tags
title description image createdAt draft categories tags
How TikTok Manages a 200K File Frontend MonoRepo TikTok's strategy for managing a large frontend MonoRepo with 200K files. https://assets.bytebytego.com/diagrams/0226-how-tiktok-manages-a-200k-file-frontend-monorepo.png 2024-03-03 false
real-world-case-studies
Monorepo
Performance

A MonoRepo, short for a monolithic repository, is a software development strategy where a single repository contains multiple projects, libraries, and services.

The good parts of a MonoRepo are:

  • Better code sharing
  • Simplified dependency management
  • A unified view of the code base

However, the bigger the MonoRepo gets, the slower the various Git operations.

TikTok faced a similar change with its frontend TypeScript MonoRepo with 200K files.

To deal with this, TikTok built a tool named Sparo that optimizes the performance of Git operations for large frontend MonoRepos.

Sparo dramatically improved the performance of Git operations. Some stats are as follows

  • Git clone time went from 40 mins to just 2 mins.
  • Checkout went from 1.5 minutes to 30 seconds.
  • Status went from 7 seconds to 1 second.
  • Git commit time went from 15 seconds to 11 seconds.