امروزه با وجود ورود فناوری به کسبوکارهای مختلف، برخی شرکتهایی که در ظاهر برچسب نرمافزای روی آنها نمیخورد، در باطن به نوعی شرکت نرمافزاری محسوب میشوند و نیاز به توضیح نیست که وقتی نام نرمافزار به میان میآید، سورسکد به منزلهٔ یکی از داراییهای مهم شرکتها محسوب میگردد و بالتبع مدیریت سورسکد، برقراری امنیتاش و همکاری با سایر دولوپرها در حوزهٔ توسعهٔ نرمافزار به یکی از مهمترین چالشهای شرکتهای بزرگ، متوسط و کوچک تبدیل شده است. روی هم رفته، انتخاب بهترین پلتفرم مدیریت سورسکد، کار چندان سادهای نیست! اما در این مقاله سعی نمودهایم تا دید نسبتاً روشنی دربارهٔ انتخاب پلتفرم مناسب برای Version Control ارائه دهیم.
درآمدی بر معیارهای انتخاب یک استراتژی برای ورژن کنترل
اگر علاقمند هستید که خود دست به میزبانی سورسکد پروژههای نرمافزاریتان بزنید، یکی از اولین سؤالهایی که باید از خودتان بپرسید این است که آیا منابع و تجربهٔ کافی برای مدیریت حرفهای و هاستینگ کدهای خود را در اختیار دارید یا خیر که در ادامه برخی از عوامل تأثیرگذار در این زمینه را مورد بررسی قرار خواهیم داد:
- - امنیت: در سناریوی مدیریت سورسکد به صورت لوکال، سازمان شما مسئول راهاندازی محیطی ایمن و بهروزرسانیهای نرمافزارهای مربوطه است به طوری که حفظ امنیت سرورها و نگهداری مناسب از آنها مسألهای نیست که بتوان به راحتی از آن گذشت.
- - دسترسیپذیری/ بکآپگیری: مسائل مهم دیگر در این بخش، دسترسیپذیری و بکآپگیری از اطلاعات است زیرا همانطور که پیش از این اشاره شد، سورسکد یکی از داراییهای مهم شرکتهای نرمافزاری به شمار میآید و به همین دلیل هم دسترسی همیشگی به آنها مهم به نظر میرسد و باید اطمینان حاصل کنید که سرورهایتان هیچ یا مقدار بسیار کمی اصطلاحاً Downtime خواهند داشت (نیاز به توضیح نیست که از دست دادن کدها برای برخی شرکتها، به معنی پایان کار آنها خواهد بود!)
- - یکپارچگی: در ضمن باید در مورد سیستمهای دیگری که قرار است با ریپازیتوریهای موجود در کدهای شما تعامل داشته باشند نیز بیاندیشید. مثلاً باید در مورد یکپارچهسازی مداوم سرورها یا سیستمهای لاگگیری راهحلهایی را در نظر بگیرید چرا که میتوانند در چرخهٔ حیات نرمافزارتان تعیین کننده باشند.
- - بودجه: بسته به نیازمندیها، اندازهٔ تیم توسعه و تعداد ریپازیتوریهای مورد استفاده، راهحلهای مختلفی وجود دارد که میتوان مورد استفاده قرار داد. این قضیه در هر دو مورد، یعنی میزبانی به صورت شخصی یا استفاده از سرویسهای اینترپرایز، صدق میکند که البته در این رابطه باید این نکته را در نظر گرفت که علاوه بر هزینهٔ لایسنس برای نرمافزار هاستینگ کدها، باید بدانید که به افراد و سختافزار مختلفی برای مدیریت زیرساخت و سرورهایتان نیاز دارید. پس در بررسیهای خود، این هزینهها را فراموش نکنید. به علاوه اینکه یک راه برای کاهش هزینهها، احتمالاً استفاده از گزینههای اپنسورس خواهد بود که البته این روش نیز چالشهای مخصوص به خود را دارا است (مانند پشتیبانی مناسب، بهروزرسانیهای امنیتی و غیره.)
- - تجاری یا اپنسورس: امروزه، تقریباً تمامی سرویس هاستینگ سورسکد جزو سیستمهای تجاری هستند. مسألهٔ اصلی در پرداخت هزینه در بیشتر مواقع، برخورداری از پشتیبانی حرفهای است به گونهای که اگر مشکل/سؤالی پیش بیاید یا نیاز به بهروزرسانی باشد، میتوانید روی متخصصین آن شرکت حساب باز کنید.
- - ابزار مکمل: در اکثر موارد، مدیریت سورسکد تنها بخشی از امکاناتی است که پلتفرم مورد نظر در اختیارتان قرار میدهد. در حال حاضر، پروسهٔ توسعهٔ نرمافزار شامل صدها ابزار مختلف میشود که اگر به خوبی با هم یکپارچه شده باشند، بهترین نتیجه را به دنبال خواهند داشت (به عنوان مثال، میتوان به پیگیری خطاها، بازبینی کد، سیستمهای یکپارچهسازی مداوم و غیره اشاره کرد.) بنابراین، روش خوبی است که پلتفرم هاستینگ کدهایتان را بر اساس ابزار مکملی که در اختیارتان قرار میدهد انتخاب نمایید. از طرف دیگر، تمامی سیستمهای مدرن مدیریت سورسکد از امکان ادغام و یکپارچگی با ابزارهای دیگر برخوردارند چرا که ممکن است پیش از انتخاب این پلتفرمها، از آن ابزار دیگر استفاده کرده باشید.
به طور کلی، چندین پلتفرم هاستینگ مختلف برای انتخاب وجود دارند که در ادامه به چند مورد از آنها اشاره خواهیم کرد تا با سهولت بیشتری بتوانید دست به انتخاب بزنید اما چنانچه در مورد ماهیت ورژن کنترل اطلاعات چندانی ندارید، توصیه میکنیم ابتدا به مقالهٔ Version Control (ورژن کنترل) چیست و Git چگونه کار میکند؟ مراجعه نمایید.
GitHub Enterprise
منصفانه است اگر بگوییم بخشهای بزرگی از چیزی که امروزه آن را Collaborative Coding (کدنویسی مشترک) مینامیم، حاصل فعالیتهای گیتهاب بوده است و اگرچه که پلتفرمهای ورژن کنترل دیگر زمینهٔ این کار را فراهم کردند، ولی گیتهاب همچنان به عنوان یکی از خلاقترین شرکتهای فعال در این حوزه شناخته میشود. GitHub Enterprise مزیتهای بسیاری دارد که یکی از اصلیترین آنها این است که بسیاری از دولوپرها از قبل با اینترفیس و ویژگیهای این پلتفرم آشنا هستند چرا که بسیار شبیه به سرویس رایگانی است که در اختیار فعالان کامیونیتی اپنسورس قرار میگیرد.
Bitbucket Server
کمپانی Atlassian چندین سال پیش Bitbucket را خریداری نمود و از سال 2012 به بعد، ابزار ورژن کنترل اختصاصی خود را که پیش از این Atlassian Stash نام داشت، تحت عنوان به Bitbucket Server به بازار عرضه کرد. Bitbucket Server یک مزیت عمده دارد و آن هم اینکه ادامهدهندهٔ راه Atlassian است (شرکتی که محصولات فوقالعاده موفقی مانند JIRA و Confluence را توسعه داده است) چرا که یکپارچهسازی، مخصوصاً با جیرا، در Bitbucket Server بدون هیچگونه مشکلی انجام میشود.
GitLab
تا ابتدای سال 2015، دو پروژهٔ مهم در حال تلاش برای ساخت یکی از بهترین پلتفرمهای هاستینگ اپنسورس گیت بودند اما پس از خرید Gitorious توسط GitLab، این رقابت از بین رفت و به دلیل اینکه هستهٔ گیتلب اپنسورس است، این پروژه با سرعت زیادی در حال پیشرفت است. کاربران سرویس گیتلب میتوانند هم ریپازیتوری عمومی داشته باشند و هم ریپازیتوری خصوصی که همگی رایگان هستند اما اگر به دنبال قابلیتهای حرفهایتری میگردید، میبایست از سرویسهای پریمویم گیتلب استفاده کنید که مسلماً غیررایگان هستند.
Team Foundation Server
مایکروسافت نیز از جمله شرکتهایی است که در این حوزه حرفهایی برای گفتن دارد به طوری که در سال 2006 بود با سرویس مدیریت سورسکد خود شروع به کمک به تیمهای توسعهٔ نرمافزار برای عرضهٔ نرمافزارهای بهتر نمود (البته در ابتدا از گیت پشتیبانی نمیکرد ولی در حال حاضر از سیستم ورژن کنترل نامتمرکز و جدید گیت نیز به خوبی استقبال میکند.)
RhodeCode
این سرویس به دولوپرها اجازه میدهد تا نه تنها از Git استفاده کنند، بلکه سیستمهای Mercurial و Subversion را نیز به کار گیرند. RhodeCode مهمترین امکاناتی که برای مشارکت در توسعهٔ نرمافزار نیاز هستند را منجمله بررسی کدها و پول ریکوئست در اختیار دولوپرها قرار میدهد.
Assembla
طی سالهای متمادی، این سرویس به عنوان یک پلتفرم هاستینگ Subversion و Perforce شناخته میشد تا اینکه در نهایت پشتیبانی از Git را هم اضافه کرد به طوری که در حال حاضر Assembla از ویژگیهای زیادی همچون پیگیری خطاها و تَسکها، پول ریکوئست، بررسی کد و ... برخوردار است.
نتیجه
روی هم رفته، داشتن این تعداد انتخاب یک سرویس مدیریت سورسکد برای دولوپرها یک مزیت است اما در عین حال توجه داشته باشیم که هر کدام از پلتفرمهای فوق دارای نکات ضعف و قوت مخصوص به خود است و تیمهای توسعهٔ نرمافزار میبایسته بسته به نیازهای خود دست به انتخاب بزنند.
حال نوبت به نظرات شما میرسد. تجربهٔ کار با کدامیک از سرویسهایی که در بالا بدانها اشاره شد را دارید و به نظر شما کدام مورد بهترین بازدهی و عملکرد را خواهند داشت و چرا؟ نظرات، دیدگاهها و تجربیات خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.