TH | EN
TH | EN
หน้าแรก Columnist Blockfint Monorepo กับการจัดการ repository ในระดับ mega project?

Monorepo กับการจัดการ repository ในระดับ mega project?

Monorepo มาจากคำว่า mono (หนึ่งเดียว) บวกกับ repo (repository = คลังเก็บข้อมูล)

Monorepo คือการรวบรวมหลาย ๆ โปรเจกต์อยู่ใน repository เดียวกัน รวบรวมทุกอย่างอยู่ในที่เดียว นักพัฒนาสามารถเข้าถึงส่วนต่าง ๆ ใน repository ได้ง่าย เป็น single version of truth ที่มี dependency version เดียวในทุก ๆ โปรเจกต์ ในทางตรงกันข้ามของ monorepo เราจะเรียกว่า polyrepo (หรือ multirepo ) คือการที่แต่ละโปรเจคมี repo เป็นของตัวเอง 1 โปรเจกต์ ต่อ 1 repo แต่ละโปรเจกต์แยกจากกันโดยสิ้นเชิง สามารถเลือกใช้ third-party-library ใน repo ของตัวเองได้ตามความเหมาะสมและมีการจัดการ test, build, deploy ที่แตกต่างกัน อาจมีการแชร์ code ระหว่างโปรเจกต์ได้โดยการสร้าง repo กลางสำหรับเป็น share library repo ปัญหาของ polyrepo ที่พบก็คือเมื่อ share library มีการเปลี่ยนแปลงหรืออัปเดตเกิดขึ้น โปรเจกต์อื่นที่มี dependency จะยังไม่อัปเดตทันที ทำให้ version ไม่ตรงกัน ซึ่ง monorepo สามารถช่วยแก้ปัญหาตรงนี้ได้

ปัจจุบันบริษัทเทคโนโลยียักษ์ใหญ่ได้มีการนำ monorepo ไปใช้ในการจัดการ repository อย่างเช่น Google, facebook หรือ uber ซึ่งเป็นกรณีศึกษาที่น่าสนใจว่า monorepo มีข้อดีข้อเสียเป็นอย่างไรและเมื่อไหร่ถึงควรเลือกใช้ monorepo สามารถนำไปประยุกต์หรือปรับใช้กับการทำงานได้อย่างไร

รูป ความแตกต่างระหว่าง polyrepo และ monorepo

ที่มา: https://monorepo.tools/

Monorepo ดีอย่างไร?

  • จากการที่ monorepo รวบรวมทุกอย่างอย่างไว้ใน repository เดียวกัน ทำให้นักพัฒนาแต่ละคนสามารถเข้าถึงงานของโปรเจกต์ต่าง ๆ และเห็นการเปลี่ยนแปลงใน repo ทั้งหมด ช่วยเพิ่มประสิทธิภาพการทำงานร่วมกันระหว่างโปรเจกต์
  • สามารถสร้าง library เป็นตัวกลางเพื่อใช้ในการแชร์หรือ reuse component, ui หรือ document กันระหว่างโปรเจกต์ เวลามีการอัปเดตจะอัปเดตพร้อมกันหมด dependency โปรเจกต์เกิด consistency ช่วยลดการเขียน code ซ้ำได้ (duplicate code) 
  • เป็น Single version of truth แต่ละโปรเจกต์ใช้ third party library ร่วมกัน แก้ไขปัญหา version library ของแต่ละโปรเจกต์ไม่ตรงกันได้
  • Tool บางตัวสามารถเก็บ cache บน cloud ช่วยให้ไม่ต้อง test และ build สิ่งเดิมที่เคยทำไปแล้ว
  • มี feature ที่ช่วยในการสร้างกราฟความเชื่อมโยงระหว่างแต่ละโปรเจกต์หรือ share library (Dependency graph visualization) ช่วยให้สามารถวิเคราะห์และเข้าใจโครงสร้างภาพรวมของ repo ได้sa

รูป Dependency graph visualization 

ที่มา : https://blog.bitsrc.io/11-tools-to-build-a-monorepo-in-2021-7ce904821cc2

ปัญหาของ Monorepo?

  • ในบริษัทขนาดใหญ่ที่ monorepo เก็บ source code ขนาดใหญ่ไว้ ต้องใช้พื้นที่ในการจัดเก็บเยอะ

และโปรเจกต์ที่มี dependency จำนวนมากส่งผลทำให้ต้องใช้เวลานานในการ build และ test ในแต่ละโปรเจกต์

  • การที่มี share library เกิดความผิดพลาด เช่น breaking change หรือ unsupported version ทำให้กระทบกับทั้ง monorepo
  • นักพัฒนาที่เข้ามาใน monorepo ทีหลังจะเจอกับข้อมูลมหาศาลและโปรเจกต์จำนวนมากที่ต้องใช้เวลาค่อนข้างนานในการศึกษาทำความเข้าใจแต่ละโปรเจกต์ให้ครบ

เมื่อไหร่ที่ควรใช้ Monorepo?

        การใช้จะ monorepo สิ่งต้องคำนึงถึงเลยคือรูปแบบการทำงานของคนในทีม การร่วมกันทำงานใน repo เดียวกัน ต้องการแชร์หรือ reuse code ระหว่างโปรเจกต์ไหม หรือต้องการเก็บข้อมูลไว้ใน repository เดียวกันรึเปล่า dependency ที่เกิดการเปลี่ยนแปลงสามารถกระทบกับโปรเจกต์อื่นได้ไหม

ถ้าโปรเจกต์ของเราไม่ได้ใหญ่มากและต้องการความรวดเร็วในการ test, build, deploy ขึ้น server การใช้ polyrepo ก็อาจจะเหมาะสมมากกว่า 

อ้างอิง

  • https://monorepo.tools/
  • https://semaphoreci.com/blog/what-is-monorepo
  • https://www.youtube.com/watch?v=9iU_IE6vnJ8
  • https://www.squash.io/the-issue-with-monorepos

STAY CONNECTED

0แฟนคลับชอบ
0ผู้ติดตามติดตาม

Lastest News

เอสซีจี บนเส้นทางการขับเคลื่อน “เทคโนโลยีและนวัตกรรมดิจิทัล” เพื่อความยั่งยืน

การเปลี่ยนผ่านของเอสซีจีจาก “ผู้ใช้” สู่การเป็น “ผู้ร่วมพัฒนาเทคโนโลยีและนวัตกรรมดิจิทัล” เป็นกระจกสะท้อนถึงความสำคัญในการเพิ่มขีดความสามารถองค์กรด้วยนวัตกรรม เพื่อให้เกิดผลสัมฤทธิ์ตามแนวทาง ESG

เดลล์เผยผลสำรวจ องค์กรในกว่า 40 ประเทศ ตระหนัก พนักงานคือสินทรัพย์สำคัญในการทำดิจิทัลทรานส์ฟอร์เมชัน

2 ปีหลังที่ผ่านมา องค์กรธุรกิจต่างเร่งปฏิรูปสู่ระบบดิจิทัล ราวครึ่งหนึ่งของผู้นำด้านไอทีในประเทศไทย หรือ 58% (เอเชียแปซิฟิกและญี่ปุ่น: 45%; ทั่วโลก: 50%) กล่าวว่า องค์กรของตนรู้ว่า จะต้องทำอย่างไรบ้างในการปฏิรูปคนทำงานสู่ระบบดิจิทัล

ดีแทค-กสทช. ขยายระยะเวลาชำระค่าบริการ ให้ผู้ประสบภัย จากพายุโนรู

ดีแทคและสำนักงาน กสทช. ขอแสดงความห่วงใยและช่วยเหลือผู้ประสบภัยในพื้นที่ ให้สามารถติดต่อสื่อสารถึงญาติพี่น้อง และติดตามข่าวสารและเฝ้าระวังสถานการณ์อย่างต่อเนื่อง

Flash Express จับมือ TikTok Shop ให้บริการจัดส่งพัสดุ

Flash Express ประกาศขยายความร่วมมือกับ TikTok Shop สู่ประเทศไทยในฐานะ Regional Logistics Partner พร้อมให้บริการจัดส่งพัสดุแก่พ่อค้า แม่ค้าทุกร้านบนแพลตฟอร์ม

ก.ล.ต. จัดกิจกรรมให้ความรู้ผู้ลงทุนประจำปีของ IOSCO ภายใต้แนวคิด “Investor Resilience”

ก.ล.ต. จัดกิจกรรมสัปดาห์ส่งเสริมความรู้ผู้ลงทุนสากล ประจำปี 2565 (World Investor Week 2022) ของ IOSCO ระหว่างวันที่ 2 - 8 ตุลาคม 2565 ภายใต้แนวคิด “Investor Resilience”

Flash Coffee จับมือ Flash Express เสิร์ฟกาแฟจากดอยวาวี ฉลองวันกาแฟสากล

เพื่อเป็นการเฉลิมฉลองวันกาแฟสากล (1 ตุลาคม) ในปี 2565 นี้ Flash Coffee ร่วมมือกับ Flash Express ผู้ให้บริการขนส่งสัญชาติไทยนำเมล็ดกาแฟจากดอยวาวี จ.เชียงราย เสิร์ฟให้กับผู้บริโภคในทั้ง 88 สาขาของแฟลช คอฟฟี่

ไทยพาณิชย์ แนะ SME ปรับกลยุทธ์ รับเทรนด์ Healthy มาแรง

โควิด-19 คือจุดเปลี่ยนสำคัญที่สร้างผลกระทบต่อเศรษฐกิจ สังคม และวิถีชีวิตของผู้คนทั่วโลกในหลากหลายมิติ ทั้งยังส่งผลกระทบต่อการดำเนิน ธุรกิจอาหารและเครื่องดื่มอย่างหลีกเลี่ยงไม่ได้

‘อากาศปนเปื้อนเชื้อโรค’ ภัยเงียบที่รุนแรง

ตัวเลข “68,728 คน” คือยอดคนไทยที่เสียชีวิตจากโรคระบบทางเดินหายใจ ซึ่งมีสาเหตุหลักจาก อากาศที่มีการปนเปื้อนเชื้อโรคและมลพิษ ความต้องการ “อากาศสะอาด” เป็นสิ่งที่สังคมเริ่มให้ความสำคัญ

วช. – สวทช.-วท.กห. มอบนวัตกรรมปุ่มกดลิฟต์แบบไร้สัมผัส แก่ รพ. ทหาร 3 เหล่าทัพ

สำนักงานการวิจัยแห่งชาติ (วช.) ร่วมกับ สำนักงานพัฒนาวิทยาศาสตร์และเทคโนโลยีแห่งชาติ และ กรมวิทยาศาสตร์และเทคโนโลยีกลาโหม มอบนวัตกรรม MagikTuch ระบบปุ่มกดลิฟต์ไร้สัมผัส แบบ 2 in 1

ไมโครซอฟท์ นําบริการคลาวด์ของ Microsoft Azure มาสู่ลูกค้าคนไทยด้วย Azure Arc

ปฏิเสธไม่ได้ว่าปัจจุบันโลกกำลังขับเคลื่อนอยู่บน cloud-based economy เศรษฐกิจเชิงสร้างสรรค์ของหลายประเทศล้วนตั้งอยู่บน Infrastructure สำคัญที่เรียกว่าคลาวด์ (Cloud Infrastructure)

MUST READ

เซ็นทรัลรีเทล เปิดตัว Tops CLUB อาณาจักรสินค้านำเข้าจากทั่วโลก ย่านพระราม 2

เซ็นทรัล รีเทล พลิกโฉมค้าปลีกไทย เปิดตัว Tops CLUB (ท็อปส์ คลับ) เมมเบอร์ชิปสโตร์ บนพื้นที่กว่า 15,000 ตารางเมตร บริเวณด้านหลังศูนย์การค้าเซ็นทรัลพระราม 2

โพสต์ด่าลอย ๆ กับ ทักด่าในแชตส่วนตัว แบบไหนเจ็บกว่ากัน?

หลายคนอาจเคยโพสต์โซเชียล ด่าเพื่อน หรือคนรอบข้าง แบบลอย ๆ โดยไม่ระบุชื่อ เพียงหวังแค่ว่าเจ้าตัวอาจมาอ่านเจอ แล้วรู้สึกตัวไปเอง ซึ่งเดี๋ยวนี้กำลังจะกลายเป็นเรื่องที่ใคร ๆ ก็ทำกันเป็นปกติ

K PLUS ปล่อยมินิซีรีส์ระทึกขวัญ ‘The 8scape’ หวีดสนั่น 29 ก.ย. ทุกออนไลน์แพลตฟอร์ม

ธนาคารกสิกรไทย ย้ำความสำเร็จผู้นำโมบายแบงกิ้งอันดับหนึ่งด้วยยอดผู้ใช้งานกว่า 19 ล้านราย มีลูกค้าใช้งานประจำกว่า 80% ลุยสร้างความแข็งแกร่งให้ K PLUS ภายใต้แนวคิด #KPLUS #ดีสารพลัส

ไมโครซอฟท์ นําบริการคลาวด์ของ Microsoft Azure มาสู่ลูกค้าคนไทยด้วย Azure Arc

ปฏิเสธไม่ได้ว่าปัจจุบันโลกกำลังขับเคลื่อนอยู่บน cloud-based economy เศรษฐกิจเชิงสร้างสรรค์ของหลายประเทศล้วนตั้งอยู่บน Infrastructure สำคัญที่เรียกว่าคลาวด์ (Cloud Infrastructure)

ยูโอบีเปิดตัวแอป “UOB TMRW” แพลตฟอร์มธนาคารดิจิทัลแบบครบวงจร

ยูโอบี ประเทศไทย ประกาศรวม 2 แอปพลิเคชัน UOB Mighty กับ TMRW เป็นหนึ่งเดียว สู่แพลตฟอร์มธนาคารดิจิทัลแบบครบวงจรภายใต้ชื่อ “UOB TMRW” รองรับบริการด้านดิจิทัล
Newsletter

สนใจรับข่าวสารจาก The Story Thailand อัพเดตก่อนใคร สมัคร Newsletter กับเราเพียงกรอกอีเมลเท่านั้น