پایگاه کد یا Codebase چیست ؟ — شرح مفهوم کدبیس به بیان ساده
در توسعه، ساخت و برنامه نویسی نرم افزار، Codebase یا Code Base مجموعهای از کدهای منبع است که برای ساخت سیستم کامپیوتری، اپلیکیشن یا قطعههای نرم افزاری مورد استفاده قرار میگیرد. معمولاً Codebase تنها فایلهای «کد منبع» (Source Code) نوشته شده به وسیله انسان را شامل میشود. بنابراین، اغلب در Codebase فایلهای کد منبع تولید شده به وسیله ابزارهای مختلف (فایلهای تولید شده) یا فایلهای باینری کتابخانهها (فایلهای اشیا) وجود ندارد. البته معمولاً Codebase شامل فایلهای پیکربندی و Property نیز میشود، چون آنها دادههای مورد نیاز برای ساخت به حساب میآیند و ضروری هستند. در این مقاله سعی شده است تا بهطور جامع به این موضوع پرداخته شود که «پایگاه کد» یا Codebase چیست و انواع آن کدامند.
Codebase چیست ؟
کدبیس (پایگاه کُد) که به انگلیسی «Codebase» و گاهی به صورت جدا یعنی «Code Base» نوشته میشود، بدنه کامل کدهای منبع برای یک نرمافزار یا اپلیکیشن به حساب میآید. کدهای منبع نسخهای از یک برنامه هستند که برنامه نویس آنها را مینویسد و به عنوان فایلهایی آنها را ذخیره میکند. پس از آنکه کدها در سطح مقدماتی برای اجرا روی کامپیوتر آماده شدند، برنامه به عنوان «کدهای شی» (Object Code) نمود و ظهور پیدا خواهد کرد.
کامپیوتر کدهای شی را درک میکند، اما انسان نمیتواند آنها را بدون دشواری بسیار بفهمد. کدهای منبع یا به عنوان مجموعهای از فایلها حفظ میشوند یا در یک «مخزن کنترل منبع» (Source Control Repositroy) نگهداری خواهند شد تا تغییرات لازم را بتوان در طول چرخه حیات پشتیبانی نرمافزار اعمال کرد.
مدیریت Codebase در وهله اول در واقع با ایجاد کدها آغاز میشود. رعایت و حفظ کیفیت برنامه نویسی با تبعیت از بهترین شیوهها و کامنتنویسی کافی و مناسب میتواند نگهداری از Codebase را بسیار آسانتر کند.
برنامهنویسان میتوانند نسخههای توسعه متفاوتی از کدهای منبع را در یک «سیستم کنترل نسخه» (Version Control System) ذخیره و بازیابی کنند که این خود به تیمهای توسعه کمک میکند تا بتوانند مدیریت نسخههای مختلف فایلها را در مخزن مشترک کدهای منبع به اشتراک بگذارند. سیستم یک کپی از Codebase را به همراه ثبت وقایع یا رکوردهایی از هر گونه تغییرات نگهداری میکند. وقتی که نسخه خاصی درخواست میشود، سیستم کنترل نسخه آن را با استفاده از اطلاعات موجود بازسازی میکند.
ارتباط مخزن کنترل منبع با Codebase چیست ؟
کدبیس معمولاً در مخزن «کنترل منبع» (Source Control) و در یک سیستم «کنترل نسخه» (Version Control) ذخیره میشود. مخزن کدهای منبع محلی است که در آن مقادیر بزرگی از کدهای منبع به صورت عمومی یا به صورت خصوصی نگهداری میشود. مخزنهای کنترل منبع اساساً برای موارد زیر استفاده میشوند:
- پشتیبانگیری
- نسخهبندی (Versioning)
- پروژههای دارای چند برنامه نویس (توسعهدهنده) برای مدیریت نسخههای مختلف کدهای منبع
- به منظور ارائه کمک برای حل چالشها و مشکلاتی استفاده میشود که در خصوص فرستادن ویرایشهای همپوشان توسط برنامهنویسان رخ میدهند.
سیستمهایی مثل Subversion، گیت و Mercurial نمونههایی از ابزارهای محبوب کنترل نسخه و منبع هستند که برای مدیریت این گردشکار استفاده میشوند. خصوصاً چنین روند کار و گردشکاری در پروژههای منبع آزاد بسیار رایج است. برای پروژههای کوچکتر، کدهای آن باید به عنوان مجموعهای از فایلهای غیر مدیریت شده نگهداری شوند. حتی کرنل لینوکس هم برای مدتها به عنوان مجموعهای از فایلها نگهداری میشد.
Codebase متمایز و یکپارچه یا Distinct و Monolithic چیست ؟
پروژههای مختلف میتوانند کدبیسهای جداگانه و متمایزی داشته باشند یا میتوانند دارای Codebase واحد، مشترک یا «یکپارچه» (monolithic) باشند. این امر بهویژه برای پروژههای مرتبط، مثل پروژههایی صادق است که در همان شرکت توسعه یافتهاند. به بیان دقیقتر، «کدبیس یکپارچه» (Monolithic Codebase) معمولاً مستلزم مخزنی واحد (یعنی تمام کدها در یک محل) و اغلب «سیستم ساختی» (Build System) مشترک یا کتابخانهایی مشترک است.
چه کدبیسها بهاشتراکگذاری شده باشند و چه از هم جدا باشند، به معماری سیستم یا نتایج ساخت واقعی وابستگی ندارند. بنابراین Codebase یکپارچه که به توسعه مربوط است، مستلزم سیستم یکپارچهای نیست که به معماری نرم افزار یا باینری یکپارچه مربوط میشود. برای مثال، کرنل لینوکس به لحاظ معماری کرنلی واحد و یکپارچه به حساب میآید، اما شامل باینریهای (اجزای بارگذاری شده) مجزایی است و در چندین مخزن توزیع شده توسعه داده میشود.
مزایا و معایب Codebase متمایز و یکپارچه چیست؟
در خصوص کدبیس یکپارچه نیز در مقایسه با Codebase توزیعشده، هم کاستیها و هم مزایایی وجود دارند. سادهتر از همه، Codebase یکپارچه باعث میشود ادغامسازی سادهتر انجام شود. تغییرات اجزای مختلف یا بازسازی کدها بین قطعات میتواند به راحتی و با دقت انجام شود. همچنین امکان انجام عملیات در تمام طول Codebase قابل انجام است، اما نیاز به مخزن بزرگتری وجود دارد و امکان ارائه ظرفیتهای فنی گستردهتری را فراهم میسازد.
یک Codebase مجزا یا توزیع شده باعث میشود هر یک از مخزنها کوچکتر باشند و بهتر بتوان آنها را مدیریت کرد؛ این مسئله باعث میشود که اجباراً بهطور همزمان بین اجزا جدایی اتفاق بیوفتد، امام علاوهبر این نیاز به ادغامسازی =کدبیسها (یا همان مخزن اصلی) وجود خواهد داشت و تغییراتی که در طول چندین Codebase اتفاق میافتند و این همه چیز را پیچیدهتر میکند.
به لحاظ استانداردها، اطلاق عبارت «متمایز» (Distinct) به چندین کدبیس اعلان میدارد که پیادهسازیهایی مستقل بدون کدهای منبع بهاشتراکگذاری شده وجود دارد و اینکه به لحاظ تاریخی، این پیادهسازیها از یک پروژه مشترک تکامل نیافتهاند. این ممکن است راهی برای نمایش تعامل متقابل به وسیله نشان دادن ۲ بخش مستقل از نرمافزار باشد که استاندارد داده شدهای را پیادهسازی میکنند.
مثال Codebase
در ادامه برخی از کدبیسهایی معرفی و فهرست شدهاند که به طور قابل ملاحظهای بزرگ هستند:
- کدبیس گوگل: یکپارچه است و بیش از یک میلیارد فایل دارد، دارای ۹ میلیون فایل کد منبع است. همچنین کدبیس گوگل ۲ میلیارد خط کد منبع دارد و بیش از ۳ میلیون کامیت برای آن ثبت شده است. اندازه کلی آن ۸۶ ترابایت است.
- کدبیس فیسبوک: این Codebase هم یکپارچه یا مونولیتیک به حساب میآید، ۸ گیگابات حجم دارد (مخزن آن به همراه تاریخچه در سال ۲۰۱۴ حجمی معادل با ۵۴ گیگابایت داشته) و دارای صدها هزار فایل است.
- کدبیس کرنل لینوکس: این Codebase توزیعشده است و دارای بیش از ۱۵ میلیون خط کد، آن هم در سال ۲۰۱۳ و کرنل نسخه ۳٫۱۰، بوده است.
جمعبندی
در این مقاله سعی شد تا حد امکان به بیان ساده به این سوال پاسخ داده شود که Codebase چیست و به سایر مباحث پیرامون آن نیز پرداخته شد. Codebase را به صورت Code Base هم مینویسند و میتوان در فارسی آن را پایگاه کد نامید. در واقع Codebase پایگاه کدهای پروژه برنامه نویسی به حساب میآید و مجموعهای از کدهای منبع، کدبیس یک پروژه نرم افزاری را تشکیل میدهند. امید است این مقاله مفید واقع شود.
اگر این مطلب مفید بوده است، استفاده از دورههای آموزشی و مطالب زیر نیز پیشنهاد میشوند:
- مجموعه دورههای آموزش برنامهنویسی
- دوره آموزش رایگان گیت Git، گیتهاب و گیتلب
- مجموعه دورههای آموزش پروژهمحور برنامهنویسی
- استفاده مجدد از کدبیس Vue.js در اپلیکیشنهای مختلف — به زبان ساده
- تشکیل تیم برنامهنویسی موفق و توانمند — راهنمای جامع و کاربردی
- راهنمای پیشرفته Git برای مبتدیان — به زبان ساده
مجموعه: برنامه نویسی برچسب ها: Code Base, Codebase یعنی چی, آموزش مفاهیم برنامه نویسی, برنامه نویسی, پایگاه کد, ساخت نرم افزار, سیستم کنترل نسخه, فیلم آموزش برنامه نویسی فرادرس, فیلم آموزش گیت, فیلم اموزش کنترل نسخه, کد بیس, کد منبع, کد منبع انسانی, کدبیس, کدهای منبع انسانی, کنترل منبع, کنترل نسخه