mirror of
https://github.com/ByteByteGoHq/system-design-101.git
synced 2026-04-19 15:37:24 -04:00
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
1.3 KiB
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 |
|
|
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.
