توسعه مبتنی بر تنه یا 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، مدل های انشعاب اصلاح و بهینه شدند، که منجر به افزایش توسعه مبتنی بر تنه شد. اکنون، توسعه مبتنی بر تنه یک نیاز یکپارچه سازی مداوم است. با ادغام مداوم، توسعهدهندگان توسعه مبتنی بر ترانک را همراه با تستهای خودکار انجام میدهند که پس از هر کمیته به یک ترانک اجرا میشوند. این تضمین می کند که پروژه همیشه کار می کند.
ارسال پاسخ