Monorepositories: เบเบฐเบฅเบธเบ™เบฒ, เบ•เป‰เบญเบ‡

Monorepositories: เบเบฐเบฅเบธเบ™เบฒ, เบ•เป‰เบญเบ‡

เบเบฒเบ™โ€‹เปเบ›โ€‹เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบเบฐโ€‹เบเบฝเบกโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ™เบฑเบโ€‹เบฎเบฝเบ™โ€‹เบซเบผเบฑเบโ€‹เบชเบนเบ”โ€‹ "เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบกเบท DevOps" เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบเบฒเบ™เบชเบถเบเบชเบฒ OTUS.

เบ—เปˆเบฒเบ™เบ„เบงเบ™เป€เบฅเบทเบญเบ monorepository เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบกเบฑเบ™เบชเบปเปˆเบ‡เป€เบชเบตเบกเปƒเบ™เบ—เบตเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบกเปˆเบ™เบ„เบงเบฒเบกเป‚เบ›เปˆเบ‡เปƒเบชเปเบฅเบฐเบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบฎเปˆเบงเบกเบเบฑเบ™, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เบตเบกเบ‡เบฒเบ™เป€เบ•เบตเบšเป‚เบ•. เปƒเบ™เบเปเบฅเบฐเบ™เบตเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบฅเบปเบ‡เบ—เบถเบ™เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบท, เปเบ•เปˆเบกเบฑเบ™เบเปเปˆเบ”เบตเบเบงเปˆเบฒเบ–เป‰เบฒเบžเบถเบ”เบ•เบดเบเปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰?

Matt Klein เบ‚เบฝเบ™เบšเบปเบ”เบ„เบงเบฒเบก "Monorepos: เบเบฐเบฅเบธเบ™เบฒเบขเปˆเบฒ!"โ€Š (เบซเบกเบฒเบเป€เบซเบ”เบ‚เบญเบ‡เบœเบนเป‰เปเบ›เบžเบฒเบชเบฒ: เบเบฒเบ™เปเบ›เบžเบฒเบชเบฒเปƒเบ™ Habrรฉ "Monorepositories: เบเบฐเบฅเบธเบ™เบฒเบขเปˆเบฒ"). เบ‚เป‰เบญเบเบกเบฑเบ Matt, เบ‚เป‰เบญเบเบ„เบดเบ”เบงเปˆเบฒเบฅเบฒเบงเบชเบฐเบซเบฅเบฒเบ”เบซเบผเบฒเบเปเบฅเบฐเป€เบˆเบปเป‰เบฒเบ„เบงเบ™เบญเปˆเบฒเบ™เบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡เบฅเบฒเบง. เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบฅเบฒเบงเป„เบ”เป‰เบฅเบปเบ‡เบ„เบฐเปเบ™เบ™เบชเบฝเบ‡เปƒเบ™ Twitter:

Monorepositories: เบเบฐเบฅเบธเบ™เบฒ, เบ•เป‰เบญเบ‡

เบเบฒเบ™เปเบ›เบžเบฒเบชเบฒ:
เบกเบทเป‰เบ›เบตเปƒเบซเบกเปˆเบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเป‚เบ•เป‰เบ–เบฝเบ‡เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบต monorepositories ridiculous เปเบกเปˆเบ™. เบ›เบต 2019 เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเปˆเบฒเบ‡เบ‡เบฝเบšเป†. เปƒเบ™เบˆเบดเบ”เปƒเบˆเบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเปเบฒเบซเบผเบงเบ”. เปƒเบœเป€เบ›เบฑเบ™เปเบŸเบ™เปƒเบซเบเปˆ? เบœเบนเป‰เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™:
- Monorepo
- rust
- เปเบšเบšเบชเบณเบซเบผเบงเบ”เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡ / เบ—เบฑเบ‡เบชเบญเบ‡

เบ„เปเบฒเบ•เบญเบšเบ‚เบญเบ‡เบ‚เป‰เบญเบเปเบกเปˆเบ™, "เบ‚เป‰เบญเบเปเบกเปˆเบ™เบ—เบฑเบ‡เบชเบญเบ‡เบ„เบปเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™." เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™ Rust เป€เบ›เบฑเบ™เบขเบฒเป€เบชเบšเบ•เบดเบ”, เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบฅเบฒเบงเบœเบดเบ”เบเปˆเบฝเบงเบเบฑเบš monorepositories. เป€เบฅเบฑเบเบ™เป‰เบญเบเบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡. เบ‚เป‰เบญเบเป€เบ›เบฑเบ™ CTO เบ‚เบญเบ‡ Chef Software. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบ›เบฐเบกเบฒเบ™ 100 เบ„เบปเบ™, เบžเบทเป‰เบ™เบ–เบฒเบ™เบฅเบฐเบซเบฑเบ”เบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™เบ›เบฐเบกเบฒเบ™ 11-12 เบ›เบต, เปเบฅเบฐ 4 เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ•เบปเป‰เบ™เบ•เป. เบšเบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰เบขเบนเปˆเปƒเบ™ polyrepository (เบ•เปเบฒเปเบซเบ™เปˆเบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ), เบšเบฒเบ‡เบญเบฑเบ™เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ monorepository (เบ•เปเบฒเปเบซเบ™เปˆเบ‡เบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ).

เบเปˆเบญเบ™เบ—เบตเปˆเบ‚เป‰เบญเบเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™: เบ—เบธเบเป†เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป€เบฎเบฑเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เบˆเบฐเปƒเบŠเป‰เบเบฑเบšเบ—เบฑเบ‡เบชเบญเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ repositories. เปƒเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบ‚เบญเบ‡เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒ, เบšเปเปˆเบกเบตเป€เบซเบ”เบœเบปเบ™เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ—เปˆเบฒเบ™เบ„เบงเบ™เป€เบฅเบทเบญเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ repository เปƒเบ™เป„เบฅเบเบฐเบญเบทเปˆเบ™. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ”เป†. เบ‚เป‰เบญเบเบเบดเบ™เบ”เบตเบ—เบตเปˆเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™, เปเบ•เปˆเบ‚เป‰เบญเบเบšเปเปˆเบชเบปเบ™เปƒเบˆเบเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เบ›เบญเบกเบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบ”เบตเบเบงเปˆเบฒเบ„เบปเบ™เบญเบทเปˆเบ™.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เบปเบเบฅเบปเบ‡เป€เบซเบฑเบ™เบ”เบตเบเบฑเบšเบชเปˆเบงเบ™เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบˆเบธเบ”เบ‚เบญเบ‡ Matt:

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ”, monorepository เบˆเบฐเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ”เบฝเบงเบเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆ polyrepository เปเบเป‰เป„เบ‚, เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบปเบกเบ—เบปเบšเบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบขเปˆเบฒเบ‡เปเบซเบ™เป‰เบ™เบซเบ™เบฒเปเบฅเบฐเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบขเปˆเบฒเบ‡เบšเปเปˆเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเป€เบงเบตเบŠเบฑเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ”เบฝเบงเบเบฑเบ™เบšเปเปˆเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐเป€เบฅเบทเบญเบ monorepository เบซเบผเบท polyrepository. เป€เบˆเบปเป‰เบฒเบ›เปˆเบญเบเบเบฒเบ™เบ›เปˆเบญเบเบญเบญเบเบกเบฒเปเบ™เบงเปƒเบ”? เบงเบดเบ—เบตเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบกเปˆเบ™เบซเบเบฑเบ‡? เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เปƒเบ™เบ”เป‰เบฒเบ™เบซเบผเบฑเบ‡? เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ‚เป‰เบฒเบก? เบฎเบนเบšเปเบšเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเปƒเบ”เบ—เบตเปˆเบเบญเบกเบฎเบฑเบš? เบ—เปˆเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบ™เบงเปƒเบ”? เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเปเบกเปˆเบ™เบšเปเปˆเบกเบตเบ—เบตเปˆเบชเบดเป‰เบ™เบชเบธเบ”. เปเบฅเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเปเบเป‰เป„เบ‚เบžเบงเบเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เป€เบ•เบตเบšเป‚เบ•. เบšเปเปˆเบกเบตเป€เบ™เบตเบเปเบ‚เบ‡เบŸเบฃเบต.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ‚เบญเบ‡ Matt เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ—เบตเปˆเปเบšเปˆเบ‡เบ›เบฑเบ™เป‚เบ”เบเบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบซเบผเบฒเบเบ„เบปเบ™ (เปเบฅเบฐเบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™) เบ—เบตเปˆเบ‚เป‰เบญเบเป€เบ„เบปเบฒเบฅเบปเบš. เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบทเป‰เบ™เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡เบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบซเบผเบทเบ—เบตเบกเบ‡เบฒเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบš. เป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบเบดเบ™เบชเบดเปˆเบ‡เบ•เปˆเบฒเบ‡เป†เป€เบŠเบฑเปˆเบ™:

  • codebase เปเบกเปˆเบ™ bulky - เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰.
  • เบกเบฑเบ™เบเบฒเบเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเบ—เบปเบ”เบชเบญเบš เป€เบžเบฒเบฐเบงเปˆเบฒเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบ—เบปเบ”เบชเบญเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบ‚เป‰เบญเบเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™.
  • เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบžเบฒเบเบ™เบญเบ.
  • เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเป€เบงเบตเบŠเบฑเบ™ virtual เบ‚เบญเบ‡เบ‚เป‰เบญเบเป€เบญเบ‡.

เปเบ™เปˆเบ™เบญเบ™, เบˆเบธเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™. เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เบเปเบฅเบฐเบ™เบต - เปƒเบ™ polyrepository เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบกเบต junk เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เบ™เบญเบเป€เบซเบ™เบทเบญเป„เบ›เบˆเบฒเบเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ ... เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบเบฑเบ‡เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™ junk เบญเบทเปˆเบ™เป†. เบชเบฐเบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒ "เบžเบฝเบ‡เปเบ•เปˆ" เบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบเบงเบ”เบชเบญเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. เบซเบผเบทเบ‚เป‰เบญเบเบชเป‰เบฒเบ‡ monorepository เบ›เบญเบกเบ—เบตเปˆเบกเบต submodules. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบเปˆเบฒเบ‡เป„เบ”เป‰เบ•เบฐเบซเบผเบญเบ”เบกเบทเป‰. เปเบ•เปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ‚เบญเบ‡ Matt เบ‚เบฒเบ”เป€เบซเบ”เบœเบปเบ™เบ•เบปเป‰เบ™เบ•เป, เป€เบŠเบดเปˆเบ‡เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰ swung เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบซเบผเบฒเบเปƒเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ‚เบญเบ‡ monorepository:

เบกเบฑเบ™ provokes เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เปเบฅเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบšเบฑเบ™เบซเบฒ

เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเปเบเบ repositories, เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบšเบฑเบ™เบซเบฒ de facto เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เปเบฅเบฐเบ„เบงเบฒเบกเป‚เบ›เปˆเบ‡เปƒเบช. เบ™เบตเป‰เบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบ—เบตเบก (เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบงเบดเบ—เบตเบ—เบตเปˆเบชเบฐเบกเบฒเบŠเบดเบเปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒ): เบžเบงเบเป€เบฎเบปเบฒเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ•เปเปˆเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™. เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบ„เบงเบฒเบกเป‚เบ”เบ”เบ”เปˆเบฝเบงเบžเบตเปˆเบ™เป‰เบญเบ‡. เบ‚เบญเบšเป€เบ‚เบ”เป„เบ”เป‰เบ–เบทเบเปเบเป‰เป„เบ‚เบขเบนเปˆเปƒเบ™เบ—เบตเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบเปเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ.

เป€เบกเบทเปˆเบญเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ, เบ—เบตเบกเบ‡เบฒเบ™เบซเบ™เบถเปˆเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบกเบฑเบ™เบขเปˆเบฒเบ‡เบ”เบฝเบงเป„เบ”เป‰. เบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบเบซเบผเบฒเบเบกเบตเบฅเบฐเบšเบปเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบขเบนเปˆเปƒเบ™เบซเบปเบงเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบˆเบฑเบ”เบเบฒเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบš A เบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™เป‚เบ”เบเบ—เบตเบก B, C, เปเบฅเบฐ D. เบ—เบตเบก A เบเปเบฒเบฅเบฑเบ‡เบ›เบฑเบšเบ›เบธเบ‡, เบ›เบฑเบšเบ›เบธเบ‡ API, เปเบฅเบฐเบเบฑเบ‡เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบžเบฒเบเปƒเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบซเบผเบฑเบ‡. เป€เบˆเบปเป‰เบฒเบกเบตเบ„เบณเปเบ™เบฐเบ™เบณเบญเบฑเบ™เปƒเบ”เปเบ”เปˆ?

  • เบŠเบญเบเบซเบฒเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆ API เป€เบเบปเปˆเบฒเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰.
  • เบกเบตเบšเปˆเบญเบ™เปƒเบ”เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰ API เปƒเปเปˆเป„เบ”เป‰เบšเป?
  • เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เปเบฅเบฐเบ—เบปเบ”เบชเบญเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบญเบทเปˆเบ™เป†เป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เบšเปเปˆเปเบ•เบเบšเป?
  • เบ—เบตเบกเบ‡เบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเป„เบ”เป‰เปƒเบ™เบ•เบญเบ™เบ™เบตเป‰เบšเป?

เบเบฐเบฅเบธเบ™เบฒเบฎเบฑเบšเบŠเบฒเบšเบงเปˆเบฒเบ„เบณเบ–เบฒเบกเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบšเปเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบ›เบฐเป€เบžเบ”เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™. เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบŠเบญเบเบซเบฒเบ—เบตเบก B, C เปเบฅเบฐ D. เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบชเบปเบ™เบ—เบฐเบ™เบฒเบเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒ, เบŠเบญเบเบซเบฒเป€เบงเบฅเบฒ, เป€เบ‚เบปเป‰เบฒเปƒเบˆเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบžเบงเบเป€เบฎเบปเบฒเบซเบงเบฑเบ‡เบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐ.

เบšเปเปˆเบกเบตเปƒเบœเบขเบฒเบเป€เบฎเบฑเบ”เบญเบฑเบ™เบ™เบตเป‰เปเบ—เป‰เป†. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบกเปˆเบงเบ™เบซเบ™เป‰เบญเบเบเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเปเบเป‰เป„เบ‚ API เบ—เบตเปˆเบšเปเปˆเบ”เบต. เบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบกเบฐเบ™เบธเบ”เปเบฅเบฐ messy. เปƒเบ™ polyrepository, เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เปƒเบซเป‰เบกเบฑเบ™เบเบฑเบšเบ„เบปเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ™เบฑเป‰เบ™ (เบญเบฒเบ”เบˆเบฐเบšเปเปˆ B, C เบซเบผเบท D) เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™, เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ•เปเปˆเป„เบ›. เบ—เบตเบก B, C เปเบฅเบฐ D เบชเบฒเบกเบฒเบ”เบขเบนเปˆเบเบฑเบšเบชเบฐเบšเบฑเบšเบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเบกเปˆเป€เบกเบทเปˆเบญเบžเบงเบเป€เบ‚เบปเบฒเบฎเบฑเบšเบฎเบนเป‰เป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบชเบฐเบซเบผเบฒเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ!

เปƒเบ™ monorepository, เบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบˆเบฐเบ–เบทเบเบ›เปˆเบฝเบ™เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ—เบตเบก A เบ›เปˆเบฝเบ™เปเบ›เบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปเบฅเบฐ, เบ–เป‰เบฒเบšเปเปˆเบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡, เบ—เบฑเบ™เบ—เบต B, C เปเบฅเบฐ D. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰ B, C เปเบฅเบฐ D เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบ›เบฐเบ•เบนเบ‚เบญเบ‡ A, เบชเบปเบ‡เป„เบชเบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ—เบตเบก A เบ—เปเบฒเบฅเบฒเบเบเบฒเบ™เบŠเบธเบกเบ™เบธเบก. เบ™เบตเป‰เบชเบญเบ™ A เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ‚เป‰เบฒเบกเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ‚เป‰เบญเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡. เบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบˆเบฐเป€เบฎเบฑเบ”. B, C เปเบฅเบฐ D เบชเบฒเบกเบฒเบ”เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป„เบ”เป‰เบšเป? เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒ B เปเบฅเบฐ C เบชเบฒเบกเบฒเบ”, เปเบ•เปˆ D เปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบขเปˆเบฒเบ‡เปƒเบเป‰เบŠเบดเบ”เบเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบ‚เป‰เบฒเบ‡เบ„เบฝเบ‡เบ‚เบญเบ‡เบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡ algorithm เป€เบเบปเปˆเบฒ?

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบญเบญเบเบˆเบฒเบเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ™เบตเป‰:

  1. เบฎเบญเบ‡เบฎเบฑเบš APIs เบžเบฒเบเปƒเบ™เบซเบผเบฒเบเบญเบฑเบ™, เปเบฅเบฐเบˆเบฐเปเบฒเบ algorithm เป€เบเบปเปˆเบฒเป€เบ›เบฑเบ™ depreced เบˆเบปเบ™เบเปˆเบงเบฒ D เบชเบฒเบกเบฒเบ”เบขเบธเบ”เปƒเบŠเป‰เบกเบฑเบ™เป„เบ”เป‰.
  2. เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบญเบญเบโ€‹เบซเบผเบฒเบโ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹, เบซเบ™เบถเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ•เบญเบšโ€‹เป€เบเบปเปˆเบฒโ€‹, เบซเบ™เบถเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เปƒเบซเบกเปˆโ€‹.
  3. เบŠเบฑเบเบŠเป‰เบฒเบเบฒเบ™เบ›เปˆเบญเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡ A เบˆเบปเบ™เบเปˆเบงเบฒ B, C, เปเบฅเบฐ D เบชเบฒเบกเบฒเบ”เบเบญเบกเบฎเบฑเบšเป„เบ”เป‰เบžเป‰เบญเบกเบเบฑเบ™.

เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฅเบทเบญเบ 1, APIs เบซเบผเบฒเบเบญเบฑเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบญเบ‡เบŠเบดเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”. เป€เบเบปเปˆเบฒเปเบฅเบฐเปƒเบซเบกเปˆ. เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฐเบ”เบงเบเปƒเบ™เบšเบฒเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™. เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”เป€เบเบปเปˆเบฒเบเบฑเบšเบ„เบทเบ™, เปเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบ–เบทเบเบ™เบณเปƒเบŠเป‰, เปเบฅเบฐเบ•เบปเบเบฅเบปเบ‡เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เบฅเบถเบšเบเบฑเบšเบ—เบตเบกเบ‡เบฒเบ™ D เป‚เบ”เบเบซเบผเบฑเบเปเบกเปˆเบ™เบ„เบทเบเบฑเบ™เบชเบณเบฅเบฑเบšเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ poly เปเบฅเบฐ mono.

เป€เบžเบทเปˆเบญเบ›เปˆเบญเบเบซเบฅเบฒเบเบฅเบธเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบฒเบ‚เบฒ. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบš - A1 เปเบฅเบฐ A2. เบ—เบตเบก B เปเบฅเบฐ C เปƒเบŠเป‰ A2 เปเบฅเบฐ D เปƒเบŠเป‰ A1. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบธเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเป€เบžเบทเปˆเบญเบเบฝเบกเบžเป‰เบญเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเป€เบžเบฒเบฐเบงเปˆเบฒเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเปเบฅเบฐเบเบฒเบ™เปเบเป‰เป„เบ‚เบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡เบญเบทเปˆเบ™เป†เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบเปˆเบญเบ™เบ—เบตเปˆ D เบชเบฒเบกเบฒเบ”เบเป‰เบฒเบงเป„เบ›เบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบฒ. เปƒเบ™ polyrepository, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบŠเปˆเบญเบ™เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบชเบฒเบ‚เบฒเบ—เบตเปˆเบกเบตเบญเบฒเบเบธเบเบฒเบงเบ™เบฒเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบ”เบต. เปƒเบ™ monorepository, เบžเบงเบเป€เบฎเบปเบฒเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เป‚เบกเบ”เบนเบ™เปƒเบซเบกเปˆ. เบ—เบตเบก D เบˆเบฐเบเบฑเบ‡เบ„เบปเบ‡เบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เปเบ›เบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบš "เป€เบเบปเปˆเบฒ". เบ—เบธเบเบ„เบปเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบˆเปˆเบฒเบเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰ - เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบฅเบฐเบซเบฑเบ”เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ, เปเบฅเบฐเบเบฒเบ™เปเบเป‰เป„เบ‚เบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡เปƒเบ”เป†เบ—เบตเปˆเปƒเบŠเป‰เบเบฑเบš A1 เปเบฅเบฐ A2 เบ•เป‰เบญเบ‡เปƒเบŠเป‰เบเบฑเบšเบ—เบฑเบ‡เบชเบญเบ‡. เบ”เป‰เบงเบเบงเบดเบ—เบตเบเบฒเบ™เปเบ•เบเบ‡เปˆเบฒเบขเบนเปˆเปƒเบ™ polyrepository, เบ™เบตเป‰เปเบกเปˆเบ™เป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰เบขเบนเปˆเบซเบฅเบฑเบ‡ cherry-pick. เบžเบงเบเป€เบฎเบปเบฒเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบ•เปˆเปเบฒเป€เบžเบฒเบฐเบงเปˆเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบŠเปเป‰เบฒเบŠเป‰เบญเบ™. เบˆเบฒเบเบˆเบธเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบˆเบดเบ‡, เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเปเบกเปˆเบ™เบ„เบทเบเบฑเบ™: เบ—เปˆเบฒเบ™เบˆเบฐเบชเป‰เบฒเบ‡, เบ›เปˆเบญเบ, เปเบฅเบฐเบฎเบฑเบเบชเบฒเบชเบญเบ‡ codebases เบ—เบตเปˆเบ„เบทเบเบฑเบ™เบˆเบปเบ™เบเปˆเบงเบฒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบถเบšเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ™เบฑเป‰เบ™. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ”เป‰เบงเบ monorepository เบ„เบงเบฒเบกเป€เบˆเบฑเบšเบ›เบงเบ”เบ™เบตเป‰เปเบกเปˆเบ™เป‚เบ”เบเบเบปเบ‡เปเบฅเบฐเป€เบซเบฑเบ™เป„เบ”เป‰. เบ™เบตเป‰เปเบกเปˆเบ™เบฎเป‰เบฒเบเปเบฎเบ‡เบเบงเปˆเบฒเป€เบเบปเปˆเบฒ, เปเบฅเบฐเบ™เบฑเป‰เบ™เบเปเปˆเบ”เบต.

เบชเบธเบ”เบ—เป‰เบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบกเบฒเบฎเบญเบ”เบˆเบธเบ”เบ—เบตเบชเบฒเบก. เบ›เปˆเบญเบเบ„เบงเบฒเบกเบฅเปˆเบฒเบŠเป‰เบฒ. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบงเปˆเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เป‚เบ”เบ A เบˆเบฐเบŠเปˆเบงเบเบ›เบฑเบšเบ›เบธเบ‡เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบ—เบตเบก A. เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™, เปเบ•เปˆเบšเปเปˆเบฎเบตเบšเบ”เปˆเบงเบ™. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบŠเบฑเบเบŠเป‰เบฒเป„เบ”เป‰เบšเป? เปƒเบ™ polyrepository, เบžเบงเบเป€เบฎเบปเบฒเบเบนเป‰เบญเบฑเบ™เบ™เบตเป‰เป€เบžเบทเปˆเบญ pin เบ›เบญเบก. เปเบ™เปˆเบ™เบญเบ™เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบšเบญเบเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เบเบฑเบšเบ—เบตเบกเบ‡เบฒเบ™ D. เบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบชเบฐเบšเบฑเบšเป€เบเบปเปˆเบฒเบˆเบปเบ™เบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐเบˆเบฑเบšเป„เบ”เป‰! เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบซเบผเบดเป‰เบ™เบ„เบปเบ™เบ‚เบตเป‰เบ•เบปเบงเบฐ. เบ—เบตเบก A เบเบฑเบ‡เบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เบšเปเปˆเบชเบปเบ™เปƒเบˆเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบ—เบตเบก D เบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰เป€เบงเบตเบŠเบฑเบ™เบ—เบตเปˆเบฅเป‰เบฒเบชเบฐเป„เบซเบกเบซเบผเบฒเบเบ‚เบถเป‰เบ™ (เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบ—เบตเบก D, เบžเบงเบเป€เบ‚เบปเบฒเป‚เบ‡เปˆ). เปƒเบ™เบ‚เบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™, เบ—เบตเบก D เป€เบงเบปเป‰เบฒเบšเปเปˆเบ”เบตเบเปˆเบฝเบงเบเบฑเบšเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ„เบฐเบ•เบดเบ—เบตเปˆเบšเปเปˆเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เบ—เบตเบก A เบ•เปเปˆเบเบฑเบšเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”, เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. เป€เบ”เบทเบญเบ™เบœเปˆเบฒเบ™เป„เบ›. เบชเบธเบ”เบ—เป‰เบฒเบ, เบ—เบตเบกเบ‡เบฒเบ™ D เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบšเบดเปˆเบ‡เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡, เปเบ•เปˆ A เบžเบฝเบ‡เปเบ•เปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบซเบผเบฒเบ. เบ—เบตเบก A เบˆเบทเปˆเป„เบ”เป‰เบšเปเปˆเบงเปˆเบฒเป€เบงเบฅเบฒเปƒเบ” เบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปเบ•เบ D. เบเบฒเบ™เบเบปเบเบฅเบฐเบ”เบฑเบšเปเบกเปˆเบ™เป€เบˆเบฑเบšเบ›เบงเบ”เบซเบผเบฒเบ เปเบฅเบฐเบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เบเบงเปˆเบฒ. เป€เบŠเบดเปˆเบ‡เบชเบปเปˆเบ‡เบกเบฑเบ™เบฅเบปเบ‡เบ•เบทเปˆเบกเบญเบตเบเปƒเบ™ stack เบšเบนเบฅเบดเบกเบฐเบชเบดเบ”. เบˆเบปเบ™เบเปˆเบงเบฒเบกเบทเป‰เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบšเบฑเบ™เบซเบฒเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเปƒเบ™ A เบ—เบตเปˆเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบชเบฒเบ‚เบฒ. เบ—เบตเบก A เบ•เป‰เบญเบ‡เบเบฑเบšเบ„เบทเบ™เป„เบ›เปƒเบ™เป€เบงเบฅเบฒ, เบŠเบญเบเบซเบฒเบˆเบธเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ D เบกเบตเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡, เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบเบฝเบกเบžเป‰เบญเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบง. เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ de facto เบ—เบตเปˆเบ›เบฐเบŠเบฒเบŠเบปเบ™เป€เบฎเบฑเบ”, เปเบฅเบฐเบกเบฑเบ™เปเบกเปˆเบ™เบฎเป‰เบฒเบเปเบฎเบ‡เบ—เบตเปˆเบชเบธเบ”. เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ”เบตเบชเปเบฒเบฅเบฑเบšเบ—เบฑเบ‡เบ—เบตเบก A เปเบฅเบฐเบ—เบตเบก D เบ•เบฒเบšเปƒเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบšเปเปˆเบชเบปเบ™เปƒเบˆเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™.

เปƒเบ™ monorepository, เบ—เบตเบชเบฒเบกเปเบกเปˆเบ™เปเบ—เป‰เป†เบšเปเปˆเปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เป€เบˆเบปเป‰เบฒเบ–เบทเบเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปƒเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบชเบญเบ‡เบงเบดเบ—เบต. เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบšเบดเปˆเบ‡เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบกเบตเบชเบญเบ‡เบชเบฒเบ‚เบฒเบเบฒเบ™เบ›เปˆเบญเบ. เบฎเบฝเบ™โ€‹เบฎเบนเป‰โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ›เบปเบโ€‹เบ›เบฑเบโ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เบ—เบตเปˆโ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบ„เบงเบฒเบกโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบเบฑเบšโ€‹เบ„เบทเบ™โ€‹เป„เบ›โ€‹เบšเปˆเบญเบ™โ€‹. เปเบ•เปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”: เบ—เปˆเบฒเบ™โ€‹เบšเปเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบซเบผเบตเบโ€‹เป€เบงเบฑเป‰เบ™โ€‹เบเบฒเบ™โ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบชเบปเบ™โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹เบ—เบตเปˆโ€‹เบซเบเบธเป‰เบ‡โ€‹เบเบฒเบโ€‹.

เปƒเบ™เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เป€เบกเบทเปˆเบญเบ—เบตเบกเปƒเบซเบเปˆ, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบฎเบฑเบเบชเบฒเบฅเบฐเบšเบปเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบขเบนเปˆเปƒเบ™เปƒเบˆ, เปเบฅเบฐเบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบชเปˆเบงเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”. เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เบ„เบงเบฒเบกเบ‚เบฑเบ”เปเบเป‰เบ‡เปƒเบ™เบฅเบฐเบšเบปเบš. เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบซเป‰เบฒเบงเบซเบฑเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ—เบตเบกเบ‡เบฒเบ™เป€เบšเบดเปˆเบ‡เบซเปˆเบฒเบ‡เบˆเบฒเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปเบฅเบฐเป€เบšเบดเปˆเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ—เบตเบกเบ‡เบฒเบ™เปเบฅเบฐเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบญเบทเปˆเบ™เป†.

เปเบกเปˆเบ™เปเบฅเป‰เบง, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบžเบฐเบเบฒเบเบฒเบกเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ polyrepository. เปเบ•เปˆเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบเบเบฒเบ™เบชเบญเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบปเปˆเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เปเบฅเบฐเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ™เบงเบดเบชเบฒเบซเบฐเบเบดเบ”เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบšเบญเบเบ‚เป‰เบญเบเบงเปˆเบฒ: เบžเบถเบ”เบ•เบดเบเปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบกเปˆเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเป€เบซเบฑเบ™. เบžเบถเบ”เบ•เบดเบเปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ polyrepository เปเบกเปˆเบ™เบเบฒเบ™เป‚เบ”เบ”เบ”เปˆเบฝเบง, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบˆเบธเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”. เบžเบถเบ”เบ•เบดเบเปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ monorepository เปเบกเปˆเบ™เบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบฎเปˆเบงเบกเบเบฑเบ™เปเบฅเบฐเบ„เบงเบฒเบกเป‚เบ›เปˆเบ‡เปƒเบช, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบˆเบธเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”. เปƒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เบเปเบฅเบฐเบ™เบต, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบˆเบฐเบเป‰เบฝเบ‡เบญเบญเบเปเบ„เบก rough. เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™เบœเบนเป‰เบ™เปเบฒ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเป€เบฅเบทเบญเบเป€เบญเบปเบฒ monorepository เบ—เบธเบเป†เบ„เบฑเป‰เบ‡เป€เบžเบฒเบฐเบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบชเบตเบกเบชเป‰เบฒเบ‡เบงเบฑเบ”เบ—เบฐเบ™เบฐเบ—เปเบฒเบ—เบตเปˆเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™, เปเบฅเบฐเบงเบฑเบ”เบ—เบฐเบ™เบฐเบ—เปเบฒเปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ™เป‰เบญเบเป†เปเบฅเบฐเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ›เบฐเบˆเปเบฒเบงเบฑเบ™เบ‚เบญเบ‡เบ—เบตเบกเบ‡เบฒเบ™.

เบžเบฝเบ‡เปเบ•เปˆเบœเบนเป‰เปƒเบŠเป‰เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบชเปเบฒเบซเบผเบงเบ”. เป€เบ‚เบปเป‰เบฒโ€‹เบชเบนเปˆโ€‹เบฅเบฐโ€‹เบšเบปเบšเบเบฐเบฅเบธเบ™เบฒ.

เปƒเบœเป€เบ›เบฑเบ™เปเบŸเบ™เบšเบฒเบ™เบ—เบตเปˆเปƒเบซเบเปˆเบ—เบตเปˆเบชเบธเบ”? เบœเบนเป‰เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™:

  • Monorepo

  • rust

  • เปเบšเบšเบชเบณเบซเบผเบงเบ”เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡ / เบ—เบฑเบ‡เบชเบญเบ‡

เบœเบนเป‰เปƒเบŠเป‰ 33 เบ„เบปเบ™เบฅเบปเบ‡เบ„เบฐเปเบ™เบ™เบชเบฝเบ‡. 13 เบœเบนเป‰เปƒเบŠเป‰เบ‡เบปเบ”.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™