Monorepo คืออะไร
Monorepo คือการมีหลาย Project ใน Repository เดียว
ข้อดีของ Monorepo
Monorepo คือการเก็บหลายๆ โครงการ (Project) ใน repository เดียว ซึ่งช่วยให้การจัดการโค้ดในโปรเจกต์ที่แตกต่างกันในองค์กรง่ายขึ้นและสะดวกต่อการบำรุงรักษา
การจัดการเวอร์ชันร่วมกัน
- การใช้ monorepo ช่วยให้ทุกโปรเจกต์ใน repository เดียวกันใช้เวอร์ชันเดียวกันของไลบรารีหรือเครื่องมือที่ใช้ร่วมกัน ทำให้สามารถอัปเดตและบำรุงรักษาได้ง่าย
การแชร์โค้ดระหว่างโปรเจกต์ได้ง่าย
- โค้ดที่ใช้ร่วมกันระหว่างโปรเจกต์สามารถแชร์ได้ใน monorepo โดยไม่ต้องสร้าง dependency แยกต่างหาก ทำให้การแชร์โค้ดเป็นไปอย่างราบรื่น
การประสานงานระหว่างทีม
- การมี repository เดียวช่วยให้ทีมพัฒนาทุกคนสามารถเห็นการเปลี่ยนแปลงในโค้ดทั้งหมดได้ ทำให้การทำงานร่วมกันระหว่างทีมต่างๆ เป็นไปได้ง่ายขึ้น
ง่ายต่อการบำรุงรักษา
- การบำรุงรักษาส่วนประกอบที่ใช้ร่วมกันในหลายๆ โปรเจกต์สามารถทำได้ในที่เดียว ช่วยให้การอัปเดตหรือแก้ไขบั๊กทำได้ทันทีในทุกโปรเจกต์ที่เกี่ยวข้อง
การควบคุมการสร้าง (Build) และการทดสอบที่มีประสิทธิภาพ
- เครื่องมือ build สามารถตั้งค่าให้คอมไพล์เฉพาะส่วนที่เปลี่ยนแปลงและทดสอบโปรเจกต์ที่เกี่ยวข้อง ทำให้การสร้างโปรเจกต์รวดเร็วขึ้น
การจัดการ Dependency ที่ง่าย
- การจัดการ dependencies ทั้งหมดใน monorepo ทำให้สามารถติดตามไลบรารีที่ใช้ได้ง่าย และอัปเดตได้ทั้งในหลายโปรเจกต์พร้อมกัน
การทำงานร่วมกันในระดับสูง
- ทีมต่างๆ ที่ทำงานในโปรเจกต์ต่างๆ จะสามารถทำงานร่วมกันได้สะดวกขึ้น เมื่อทุกคนทำงานใน repository เดียวกันจะมีความเข้าใจร่วมกันเกี่ยวกับโค้ด
Turborepo คือ Monorepo Management
Turborepo เป็นเครื่องมือที่ช่วยจัดการ Monorepo โดยมีคุณสมบัติเด่น เช่น
- Build Caching: ใช้ caching เพื่อลดเวลาการ build
- Parallel Execution: รัน task พร้อมกันหลายโปรเจค
- Remote Caching: แชร์ cache ระหว่างทีม
- Task Pipelines: จัดการ task dependencies อย่างเป็นระบบ
เมื่อไหร่ควรใช้ ทำเป็น Monorepo
ควร setup project เป็น monorepo เมื่อ
- projects มีขนาดใหญ่ขึ้น และมีการใช้ code ร่วมกัน
- สร้าง libraries ให้คนอื่นใช้