توسعه مبتنی بر تنه یا trunk based development
توسعه مبتنی بر ترانک، توسعه مبتنی بر تنه یا TBD یک روش مدیریت کنترل نسخه است که در آن توسعهدهندگان بهروزرسانیهای کوچک و مکرر را در یک «Trunk» یا شاخه اصلی ادغام میکنند. این یک رویه رایج در میان تیمهای DevOps و بخشی از چرخه عمر DevOps است زیرا مراحل ادغام و ادغام را ساده میکند. در واقع، توسعه مبتنی بر تنه یک تمرین مورد نیاز CI/CD است. توسعهدهندگان میتوانند شعبههای کوتاهمدتی را با چند تعهد کوچک در مقایسه با دیگر استراتژیهای انشعاب ویژگی با عمر طولانی ایجاد کنند. همانطور که پیچیدگی پایگاه کد و اندازه تیم افزایش مییابد، توسعه مبتنی بر تنه کمک میکند تا انتشارات تولید جریان پیدا کنید.
توسعه مبتنی بر تنه یا trunk based development
Gitflow در مقابل TBD، کدام بهتر است؟
پیشتر در کمل کیس از gitflow صحبت کردیم، گفتیم که Gitflow یک مدل انشعاب Git جایگزین است که از شاخههای ویژگی با عمر طولانی و چندین شاخه اولیه استفاده میکند. Gitflow دارای شاخههای بیشتر و با طول عمر بیشتر و تعهدات بزرگتر از توسعه مبتنی بر تنه است. در این مدل، توسعهدهندگان یک شاخه ویژگی ایجاد میکنند و ادغام آن با شاخه اصلی تنه را تا تکمیل ویژگی به تاخیر میاندازند. این شاخههای ویژگی با عمر طولانی نیاز به همکاری بیشتری برای ادغام دارند، زیرا خطر انحراف از شاخه تنه و ارائه بهروزرسانیهای متناقض را دارند. Gitflow همچنین دارای خطوط شاخه اصلی جداگانه برای توسعه، رفع فوری، ویژگیها و نسخهها است. استراتژیهای مختلفی برای ادغام کامیتها بین این شاخهها وجود دارد. از آنجایی که شعبههای بیشتری برای دستکاری و مدیریت وجود دارد، اغلب پیچیدگیهای بیشتری وجود دارد که نیازمند جلسات برنامهریزی و بررسی بیشتر از سوی تیم است. توسعه مبتنی بر Trunk بسیار سادهتر است زیرا بر شاخه اصلی به عنوان منبع اصلاحات و نسخهها تمرکز دارد. در توسعه مبتنی بر تنه فرض میشود که شاخه اصلی همیشه پایدار، بدون مشکل و آماده استقرار است.
مزایای TBD یا توسعه مبتنی بر تنه
توسعه مبتنی بر تنه یک تمرین لازم برای یکپارچه سازی مداوم است. اگر فرآیندهای ساخت و آزمایش خودکار شوند، اما توسعهدهندگان روی شاخههای ویژگی ایزوله و طولانی کار کنند که به ندرت در یک شاخه مشترک ادغام میشوند، یکپارچهسازی مداوم به پتانسیل خود نمیرسد. توسعه مبتنی بر Trunk اصطکاک یکپارچه سازی کد را کاهش میدهد. هنگامی که توسعه دهندگان کار جدید را تمام میکنند، باید کد جدید را در شاخه اصلی ادغام کنند. با این حال، آنها نباید تغییرات را در کامیون ادغام کنند تا زمانی که تأیید کنند که میتوانند با موفقیت بسازند. در طول این مرحله، اگر تغییراتی از زمان شروع کار جدید انجام شده، ممکن است درگیری ایجاد شود. به ویژه، با رشد تیمهای توسعه و مقیاسهای پایه کد، این تضادها به طور فزایندهای پیچیده میشوند. این زمانی اتفاق میافتد که توسعهدهندگان شاخههای جداگانهای ایجاد میکنند که از شاخه منبع منحرف میشوند و توسعهدهندگان دیگر به طور همزمان کدهای همپوشانی را ادغام میکنند. خوشبختانه، مدل توسعه مبتنی بر تنه این تضادها را کاهش میدهد.
- TBD یکپارچه سازی مداوم کد را امکان پذیر میکند: در مدل توسعه مبتنی بر ترانک، یک مخزن با جریان ثابتی از تعهدات وجود دارد که به شاخه اصلی جریان دارد. افزودن یک مجموعه تست خودکار و نظارت بر پوشش کد برای این جریان از تعهدات، یکپارچگی مداوم را امکان پذیر میکند. هنگامی که کد جدید در ترانک ادغام میشود، تستهای یکپارچه سازی خودکار و پوشش کد برای تایید کیفیت کد اجرا میشود.
- TBD بررسی مداوم کد را تضمین میکند: تعهدات کوچک و سریع توسعه مبتنی بر ترانک، مرور کد را به فرآیندی کارآمدتر تبدیل میکند. با شاخههای کوچک، توسعه دهندگان میتوانند به سرعت تغییرات کوچک را ببینند و بررسی کنند. این در مقایسه با یک شاخه ویژگی طولانی مدت که در آن بازبین صفحات کد را میخواند یا به صورت دستی سطح وسیعی از تغییرات کد را بررسی میکند، بسیار سادهتر است.
- TBD انتشار کد تولید متوالی را فعال میکند: تیمها باید مکرر و روزانه به شعبه اصلی ادغام شوند. توسعه مبتنی بر تنه در تلاش است تا شاخه تنه را سبز نگه دارد، به این معنی که آماده استقرار در هر تعهدی است. آزمایشهای خودکار، همگرایی کد و بررسی کد، یک پروژه توسعه مبتنی بر ترانک را با اطمینان خاطر آماده میکند که در هر زمان برای تولید آماده است. این به تیم چابکی میدهد تا مکرراً در تولید مستقر شوند و اهداف بیشتری از انتشار تولید روزانه تعیین کنند.
توسعه مبتنی بر Trunk و CI/CD
با افزایش محبوبیت CI/CD، مدلهای انشعاب اصلاح و بهینه شدند، که منجر به افزایش توسعه مبتنی بر تنه شد. اکنون، توسعه مبتنی بر تنه یک نیاز یکپارچه سازی مداوم است. با ادغام مداوم، توسعهدهندگان توسعه مبتنی بر ترانک را همراه با تستهای خودکار انجام میدهند که پس از هر کمیته به یک ترانک اجرا میشوند. این تضمین میکند که پروژه همیشه کار میکند.
ارسال پاسخ