مقایسهٔ 7 پلتفرم‌ میزبانی و مدیریت سورس‌کد

مقایسهٔ 7 پلتفرم‌ میزبانی و مدیریت سورس‌کد

امروزه با وجود این همه نرم‌افزار و سایت، اکثر شرکت‌ها به‌نوعی شرکت نرم‌افزاری محسوب می‌شوند و در هر صنعتی، سورس‌کد به یکی از دارایی‌های مهم‌شان تبدیل شده است. درنتیجه، ذخیره‌سازی کدها، برقراری امنیت آن‌ها و همکاری با سایر دولوپرها به یکی از مهم‌ترین چالش‌های شرکت‌های بزرگ، متوسط و کوچک تبدیل شده است. انتخاب بهترین پلتفرم مدیریت سورس‌کد، کار چندان ساده‌ای نیست! حتی وقتی در مورد کدها و استفاده از فایروال شخصی صحبت می‌کنیم نیز این قضیه صدق می‌کند اما در این مقاله سعی نموده‌ایم تا دید نسبتاً روشنی دربارهٔ انتخاب پلتفرم مناسب برای مدیریت سورس کدها ارائه دهیم.

آیا میزبانی سورس‌کد به‌صورت لوکال انتخاب مناسبی است؟
یکی از اولین سؤال‌هایی که باید از خودتان بپرسید این است که آیا منابع و تجربهٔ کافی برای مدیریت حرفه‌ای و هاستینگ کدهای خود را در اختیار دارید؟ هر سازمانی که در زمینهٔ IT کار می‌کند باید تعداد زیادی از خط مشی‌های سفت و سخت امنیتی را رعایت کند. اگر قوانین سازمانی که در آن مشغول به کار هستید روی نگهداری کدها به صورت لوکال تأکید دارد، چاره‌ای جز استفاده از فایروال شخصی برای حفظ امنیت کدها نخواهید داشت (البته باید توجه کرد که میزبانی شخصی از کدها تصمیمی است که نباید با عجله بگیرید؛ چیزهای زیادی وجود دارد که قبل از چنین کاری باید آن‌ها را در نظر گرفت).

امنیت
در سناریوی نگهداری از کدها به‌صورت لوکال، سازمان شما مسئول راه‌اندازی محیط ایمن و نصب به‌روزرسانی‌های پیوسته و مناسب است؛ حفظ امنیت سرورها و نگهداری مناسب از آن‌ها مساله‌ای نیست که بتوان به‌راحتی از آن گذشت. احتمالاً یک سرویس هاستینگ حرفه‌ای در زمینهٔ نگهداری از کدها، تجربهٔ زیادی در این زمینه دارد و با این‌که در این روش باید کدهای‌تان را در کلود ذخیره کنید، باز هم محیط امن‌تری را در اختیار خواهید داشت.

دسترسی‌پذیری/ بک‌آپ‌گیری
مسائل مهم دیگر در این بخش، دسترسی‌پذیری و بک‌آپ‌گیری از اطلاعات است؛ امروزه، کدها در زمینه‌های مختلفی یک دارایی حیاتی برای شرکت‌ها محسوب می‌شوند. به‌همین دلیل، دسترسی همیشگی به آن‌ها مهم به‌نظر می‌رسد و باید اطمینان حاصل کنید که سرورهای‌تان، هیچ یا مقدار بسیار کمی Downtime خواهند داشت. همچنین در نظر بگیرید که از دست دادن کدها برای برخی شرکت‌ها، به‌معنی پایان کار آن‌ها خواهد بود! باید استراتژی کاملی برای بک‌آپ‌گیری داشته باشید تا خیال‌تان از بابت از دست دادن اطلاعات راحت باشد.

یکپارچگی
در ضمن باید در مورد سیستم‌های دیگری که قرار است با ریپازیتوری‌های موجود در کدهای شما تعامل کنند نیز بیاندیشید؛ مثلاً باید در مورد یکپارچه‌سازی مداوم سرورها یا سیستم‌های پیگیری خطاها، راه‌حل‌هایی را در نظر بگیرید چراکه می‌توانند در چرخهٔ حیات نرم‌افزارتان تعیین کننده باشند. همواره اطمینان حاصل کنید که می‌توانید این موارد را با پلتفرم هاستینگ کدهای‌تان یکپارچه کنید، خواه قرار است از فایروال استفاده کنید خواه از کلود.

بودجه
بسته به نیازمندی‌ها، اندازهٔ گروه همکاران‌تان و تعداد ریپازیتوری‌های مورد استفاده، راه‌حل‌های مختلفی وجود دارد که می‌توان مورد استفاده قرار داد؛ این قضیه در هر ۲ مورد -یعنی میزبانی به‌صورت شخصی یا با استفاده از سرویس‌های آنلاین- صدق می‌کند. البته ۲ نکته را باید در نظر گرفت:

- علاوه بر هزینهٔ لایسنس برای نرم‌افزار هاستینگ کدها، باید بدانید که به افراد و سخت‌افزار مختلفی برای مدیریت زیرساخت و سرورهای‌تان نیاز دارید. پس در بررسی‌های خود، این هزینه‌ها را فراموش نکنید.

- یک راه برای کاهش هزینه‌ها، احتمالاً استفاده از گزینه‌های اپن‌سورس خواهد بود؛ البته این روش نیز چالش‌های مخصوص به‌خود را دارا است، مانند پشتیبانی مناسب، به‌روزرسانی‌های امنیتی و غیره.

در آخر، باید توجه کنید که سخت‌ترین بخش در مورد هاستینگ کدها در سرورهای شخصی، مدیریت ریپازیتوری‌‌های گیت نیست، بلکه مدیریت و نگهداری سرورها است؛ باید اطمینان داشته باشید که سازمان‌تان می‌تواند مسائلی مانند امنیت و تعمیر و نگهداری را بدون هیچ وقفه‌ای برطرف کند. اگر از منابع و تجربهٔ کافی برخوردارید، هاستینگ کدها در سرورهای شخصی، روش قابل‌قبولی خواهد بود.

تجاری یا اپن‌سورس؟
امروزه، تقریباً تمامی سرویس هاستینگ سورس کد جزو سیستم‌های تجاری هستند؛ مسالهٔ اصلی در پرداخت هزینه در بیشتر مواقع، برخورداری از پشتیبانی حرفه‌ای است. در‌صورتی‌که مشکل/سوالی پیش بیاید یا نیاز به به‌روزرسانی باشد، می‌توانید روی متخصصین آن شرکت حساب باز کنید.

اگر نیازی به این حد از اطمینان ندارید -و حسابی از این قضیه مطمئن هستید- می‌توانید به راه‌حل‌های اپن‌سورس نیز بیاندیشید؛ GitLab بعد از خرید رقیب خود Gitorious در سال 2015، به تنها پلتفرم هاستینگ اپن‌سورس با ساختار مناسب در بازار تبدیل شد.

ابزار مکمل
در اکثر موارد، مدیریت سورس‌کد تنها بخشی از امکاناتی است که پلتفرم موردنظر در اختیارتان قرار می‌دهد؛ توسعهٔ نرم‌افزار در حال حاضر، شامل صدها ابزار مختلف می‌شود که اگر به‌خوبی با هم یکپارچه شده باشند، بهترین نتیجه را به‌دنبال خواهند داشت. به‌عنوان مثال، می‌توان به پیگیری خطاها، بازبینی کد، سیستم‌های یکپارچه‌سازی مداوم و غیره اشاره کرد.

بنابراین، روش خوبی است که پلتفرم هاستینگ کدهای‌تان را براساس ابزار مکملی که در اختیارتان قرار می‌دهد انتخاب نمایید. از طرف دیگر، تمامی سیستم‌های مدرن مدیریت سورس کد، از امکان ادغام و یکپارچگی با ابزارهای دیگر برخوردارند چراکه ممکن است پیش از انتخاب این پلتفرم‌ها، از آن ابزار دیگر استفاده کرده باشید.

مقایسهٔ راه‌کارهای هاستینگ کد
امروزه برخلاف سال‌های گذشته، چندین پلتفرم هاستینگ مختلف برای انتخاب کردن وجود دارند که در ادامه به 7 مورد از پایدارترین و مدرن‌ترین پلتفرم‌ها اشاره می‌کنیم تا با سهولت بیشتری بتوانید دست به انتخاب بزنید.

GitHub Enterprise
منصفانه است اگر بگوییم بخش‌های بزرگی از چیزی که امروزه آن را Collaborative Coding (کدنویسی مشترک) می‌نامیم، اختراع GitHub بوده‌ است؛ اگرچه پلتفرم‌های هاستینگ دیگر زمینهٔ این‌کار را فراهم کردند، ولی گیت‌هاب همچنان به‌عنوان یکی از خلاق‌ترین شرکت‌های فعال در این حوزه شناخته می‌شود.

GitHub Enterprise مزیت‌های بسیاری دارد که یکی از اصلی‌ترین آن‌ها این است که بسیاری از دولوپرها، از قبل با اینترفیس و ویژگی‌های این پلتفرم آشنا هستند چرا‌که بسیار شبیه به سرویس کلود موجود در github.com طراحی شده و در میان کدنویسان سراسر جهان از محبوبیت بسیار زیادی برخوردار است.

GitHub Enterprise از یک سیستم پیگیری باگ کوچک بهره می‌برد که به‌طور خلاصه Issues نامیده می‌شود؛ این ابزار، عملکرد بسیار ضعیف‌تری را در مقایسه با رقبایی مثل JIRA ساختهٔ شرکت Atlassian فراهم می‌کند، ولی همهٔ این‌ها عمداً رخ داده است. بهره‌گیری تنها از ویژگی‌های مهم‌تر، باعث شده تا سادگی یکی از بزرگ‌ترین مزیت‌های سرویس Issues باشد.

اینترفیس‌های بسیار سنجیده برای Pull Requestها و بازبینی کدها، از دیگر ویژگی‌های اختصاصی GitHub Enterprise است. یکپارچگی یکی دیگر از برگ برنده‌های این پلتفرم است؛ تقریباً همهٔ ابزار مدرن کدنویسی امکان یکپارچه‌سازی و ادغام با محبوب‌ترین پلتفرم دولوپرها یعنی گیت‌هاب را در اختیارتان می‌گذارند.

سرویس Integration نیز به‌خاطر این‌که ابزاری برای یکپارچه‌سازی مداوم در اختیار باشد، با این سرویس همراه شده تا اتصال به ابزار محبوبی مثل Jenkins ،TravisCI یا TeamCity را فراهم کند.

Bitbucket Server (با نام قبلی Atlassian Stash)
غول نرم‌افزاری یعنی Atlassian، چندین سال پیش پلتفرم آنلاین Bitbucket را خریداری نمود و از سال 2012 به‌بعد، راه‌کار خود را ارائه کرده است (لازم به‌ذکر است که پیش از این Atlassian Stash نام داشت و اخیراً به Bitbucket Server تغییر نام داده است).

Bitbucket Server یک مزیت عمده دارد و آن‌هم این‌که ادامه دهندهٔ راه Atlassian است -شرکتی که محصولات فوق‌العاده موفقی مانند JIRA و Confluence را توسعه داده- چراکه یکپارچه‌سازی با این ابزار (مخصوصاً JIRA) در Bitbucket Server بدون مشکل انجام می‌شود.

همین قضیه در مورد یکپارچه‌سازی مداوم نیز وجود دارد: فراهم کردن روشی مجزا در Bitbucket Server برای این مبحث، چندان منطقی به‌نظر نمی‌رسد چراکه Atlassian در‌حال‌حاضر از یک پلتفرم خوش‌ساخت در این زمینه به‌نام Bamboo بهره می‌برد (یکپارچگی با Bamboo هم در Bitbucket Server به خوبی تعبیه شده است).

روی‌هم‌رفته،‌ اگر چرخهٔ توسعه‌ٔتان از قبل وابستگی زیادی به محصولات Atlassian مانند JIRA و Bamboo داشته است، بنابراین Bitbucket Server مناسب‌ترین انتخاب برای شما خواهد بود.

GitLab
تا ابتدای سال 2015، دو پروژهٔ مهم در حال تلاش برای ساخت بهترین پلتفرم هاستینگ اپن‌سورس گیت بودند اما پس از خرید Gitorious توسط گیت‌لب، این رقابت از بین رفت! گیت‌لب در ۳ نسخهٔ مختلف در دسترس قرار دارد:
- نسخهٔ کامیونیتی: که برای دانلود و نصب روی سرورهای‌تان به‌صورت رایگان در دسترس است.
- نسخهٔ تجاری: که نسخهٔ پولی محسوب می‌شود و می‌تواند پشت فایروال نصب شود (البته با پشتیبانی در حد عالی نیز همراه است و ویژگی‌های اضافی زیادی را در بر می‌گیرد).
Gitlab.com: در این سایت، این شرکت اقدام به ارائهٔ هاستینگ برای ریپازیتوری‌های شما نیز پرداخته است.

به‌دلیل این‌که هستهٔ GitLab اپن‌سورس است، این پروژه باسرعت زیادی در حال پیشرفت است و بیش از 700 نفر در کامیونیتی دولوپرهای آن مشارکت می‌کنند.

به غیر از مدیریت ریپازیتوری گیت، GitLab مجموعه‌ای از ابزارهای مختلف برای بررسی کدها، پیگیری خطا و ویکی‌ها را در بر می‌گیرد و در کنار یکپارچه‌سازی مداوم، این پلتفرم با ابزار GitLab CI مخصوص به خودش نیز همراه است (البته گیت‌لب انتخاب‌های زیادی را برای یکپارچه‌سازی با ابزارهای محبوب دیگر مانند Jenkins و محصولاتی مانند JIRA ،Slack یا Hipchat را برای مباحث دیگر در اختیار دارد).

Perforce GitSwarm
Perforce از بین شرکت‌هایی که در این مقاله به آن‌ها اشاره شده، دارای قدیمی‌ترین تاریخچه در زمینهٔ مدیریت سورس‌کد است؛ این شرکت به‌خاطر روش سنتی و تاثیرگذارش در هاستینگ کدها به‌صورت تجاری از طریق سیستم ورژن کنترل خودش -یعنی Perforce- معروف است. البته اخیراً این شرکت خدمات خود را در قالب پلتفرم جدیدی تحت‌عنوان GitSwarm توسعه داده است.

GitSwarm نیز بر مبنای پروژهٔ GitLab، با مجموعهٔ مشابهی از ویژگی‌ها همراه است (البته خصوصیات مجزایی نیز دارد که مربوط به امنیت و مقیاس‌پذیری می‌شوند). با Mirror کردن پروژه‌ٔتان در پلتفرم اختصاصی Perforce یعنی Helix، بسیاری از ویژگی‌های تجاری نیز در سیستم مورد نظرتان اعمال خواهند شد که از آن جمله می‌توان به موارد زیر اشاره کرد:
- کنترل دسترسی با عملکرد بهتر
- قفل کردن برنچ‌ها و فایل‌های خاص
- تقسیم ریپازیتوری‌های بزرگ و Pull کردن قسمت‌های صرفاً ضروری

در این مورد، شرکت‌های بزرگ قدر تجربهٔ طولانی Perforce به‌عنوان سرویس دهندهٔ مدیریت سورس‌کد را بهتر می‌دانند چراکه مطمئن هستند نیازها و ملزومات‌شان به‌خوبی از طرف Perforce درک خواهند شد.

Microsoft Team Foundation Server
مایکروسافت نیز از مدت‌ها پیش، پلتفرم مدیریت کد خود را به‌خوبی پیاده‌سازی کرده است؛ در سال 2006 بود که Team Foundation Server شروع به کمک به تیم‌های توسعهٔ نرم‌افزار برای عرضهٔ نرم‌افزارهای بهتر نمود. البته در ابتدا از گیت پشتیبانی نمی‌کرد ولی درحال‌حاضر از سیستم ورژن کنترل نامتمرکز و جدید گیت نیز به‌خوبی استقبال می‌کند.

در این پلتفرم لازم نیست دولوپرها حتماً از تکنولوژی‌های ساختهٔ مایکروسافت استفاده کنند، بلکه سیستمی بسیار آزاد است که در صفحهٔ ورودی آن می‌توان تکنولوژی‌های دیگری مثل Xcode و Eclipse را انتخاب نمود. Team Foundation Server به جز ورژن کنترل، از بوردهای اجایل (برای Kanban و Scrum)، زیرساخت CI، و یک API با قابلیت یکپارچه‌سازی بالا پشتیبانی می‌کند.

RhodeCode
درحالی‌که بیشتر سیستم‌های مدیریت کد مخاطبان مختلفی را هدف قرار داده‌اند، RhodeCode مانند Perforce تمرکز خود را روی شرکت‌ها گذاشته است؛ RhodeCode نه دارای نسخهٔ مخصوص کامیونیتی است و نه ریپازیتوری‌هایی را بر روی کلود عرضه می‌کند بلکه این تیم تمرکز خود را به‌طور کامل روی توسعهٔ مدلی از این پلتفرم برای قرارگیری در پشت فایروال گذاشته است.

RhodeCode به دولوپرها اجازه می‌دهد تا نه‌تنها از گیت استفاده کنند، بلکه برای کنترل و تجدیدنظر از Mercurial و Subversion نیز بهره ببرند. این پلتفرم، مهم‌ترین امکاناتی که برای همکاری نیاز هستند را فراهم می‌کند مانند بررسی کدها و Pull Requestها ولی در مورد یکپارچگی با ابزارهای خارجی، مثلاً ویژگی‌های پیگیری خطا (با استفاده از JIRA یا MantisBT یا Bugzilla) و همچنین یکپارچه‌سازی مداوم (بااستفاده از Jenkins یا Bamboo) ضعیف عمل می‌کند!

این پلتفرم با تمرکز بر روی شرکت‌ها، امکانات زیادی مربوط به امنیت (انطباق، بازرسی، مجوز دسترسی) و مقیاس‌پذیری (Multiple Nodes، بهبود کارایی و غیره) را فراهم می‌کند.

Assembla
Assembla طی سال‌های متمادی، به‌عنوان یک پلتفرم هاستینگ Subversion و Perforce شناخته می‌شد تا این‌که چندی پیش، این شرکت پشتیبانی از گیت را هم به دستور کار خود اضافه کرد. با استفاده از سرویس Assembla، کاربران می‌توانند از این پلتفرم در سرورهای اختصاصی خود استفاده کنند.

از طرف دیگر، Assembla از ویژگی‌های مخصوص کدنویسی زیادی مانند پیگیری خطاها و تسک‌ها، درخواست ادغام، بررسی کد و ابزارهای پیاده‌سازی برخوردار است (حتی امکان مدیریت بلوک‌های مجزای کد نیز در این پلتفرم وجود دارد).

در تقابل با راهکارهای مخصوص مدیریت سورس‌کد، پلتفرم Portfolio شرکت Assembla درنظر دارد تا یک بستهٔ کامل مدیریت پروژه را ارائه دهد؛ ویژگی‌هایی مانند اشتراک‌گذاری فایل، اینترفیسی ساده برای ارسال پیام و یک ویکی، آن‌را برای اعضای خارج از تیم توسعه نیز جالب توجه می‌نماید.

نتیجه
روی‌هم‌رفته، داشتن این تعداد انتخاب برای پلتفرم‌های هاستینگ کد هیجان‌انگیز است؛ البته به غیر از ویژگی‌های اساسی، هر پلتفرمی خصوصیات‌ خاص خود را نیز دارا است که با در نظر گرفتن آن‌ها، انتخاب مناسب‌ترین گزینه برای نیازمندی‌های‌تان چندان سخت نخواهد بود.

حال نوبت به نظرات شما می‌رسد؛ شما تجربه‌ٔ کار با کدامیک از سرویس‌هایی که در بالا به آن‌ها اشاره شد را دارید و به‌نظر شما کدام مورد برای دولوپرهای ایرانی بهترین بازدهی و عملکرد را خواهند داشت؟ نظرات و دیدگاه‌های خود را با ما و سایر کاربران سکان آکادمی به‌اشتراک بگذارید.

منبع


مرتضی صمدی