DevOps بالاخره تونست انقلاب به پا کنه و تبدیل به یک جریان اصلی در کسبوکارهای مختلف بشه. ابزارهای DevOps هم طرفدارهای زیادی پیدا کردن.
بر اساس گزارش Google Trends، کلمهی DevOps Tools به صورت مداوم توسط کاربران در حال جستجو شدنه و روزبهروز هم داره تعداد جستجوهای اون بیشتر میشه.
از اونجایی که DevOps چرخهی کامل توسعه نرمافزار رو در برمیگیره، ابزارهای مختلفی برای اون وجود داره.
البته همهی ما میدونیم، هیچ ابزاری پاسخگوی تمامی نیازها نیست.
با این وجود چند ابزار وجود داره که قابلیتهای خودشون رو ثابت کردن و از سناریوهای مختلف بیشتری در فرآیند DevOps پشتیبانی میکنن.
ما ابزارهای DevOps رو به صورت زیر و بر اساس کاری که انجام میدن در دستههای مختلفی قرار میدیم:
- ابزارهای توسعه و ساخت (Development and Build Tooling)
- ابزارهای تست خودکار (Automated Testing Tools)
- ابزارهای استقرار (Deployment Tooling)
- ابزارهای اجرا دواپس (Runtime DevOps Tooling)
- ابزارهای همکاری دواپس (Collaboration DevOps Tooling)
این پنج دسته، مراحل و ابزارهای اساسی در پایپلاین اجرای موفقیت آمیز فرآیندهای DevOps هستن. حتما ابزارها و فرآیندهای فعلی خودتون رو بررسی کنین تا مطمئن بشین که چیزی رو در فرایند CICD از قلم ننداخته باشین.
ما قصد داریم به صورت مفصل بهترین ابزارهای هر یک از این پنج دسته رو در یک مقاله معرفی کنیم. در این مقاله به بررسی و معرفی بهترین ابزارهای مرحله توسعه و ساخت میپردازیم.
ابزارهای توسعه و ساخت
همه چیز از اینجا شروع میشه!
ابزارهای توسعه و ساخت اگر به خوبی انتخاب بشن میتونن جریانهای مختلف کاری رو با هم موزون و هماهنگ کنن و امکان ادغام با ابزارهای خارجی رو به راحتی ایجاد کنن.
ابزارهای موجود در این دسته در سه زیر مجموعهی زیر قرار میگیرن:
- مدیریت کنترل منبع (Source-Control Management (SCM))
- ادغام یکپارچه (Continuous Integration (CI))
- مدیریت داده (Data management)
فناوری پیشنهادی برای SCM در سال ۲۰۲۰ فکر میکنین چی میتونه باشه؟ قطعا گیت
پس ابزار SCMای بهتره که بتونه پشتیبانی خیلی خوبی از گیت داشته باشه.
برای CI، اون چیزی که اهمیت داره اینه که ابزارتون باید توانایی اجرا و ساخت برنامه رو در یک محیط کانتینری ناپایدار داشته باشه.
در مورد مدیریت دادهها، باید ابزاری داشته باشید که توانایی ایجاد تغییر در پایگاه داده رو داشته باشه و بتونه اون رو با آخرین نسخه برنامه، هماهنگ کنه.
#1 SCM + CI Tool of 2020: Gitlab and Gitlab-CI
بدون شک گیتلب، بهترین ابزار در سال ۲۰۲۰ در چرخهی دواپسه و قطعا در آینده یک راهبر نوآور در این حوزه خواهد بود.
گیتلب به طور اساسی کارش اینه که امکان مدیریت مخازن گیت رو فراهم میکنه. اما رابط کاربری مبتنی بر وب بسیار سادهای داره که باعث رضایتمندی کارها میشه. گیتلب امکاناتش رو در سطوح مختلفی ارائه میده و برای هر کدوم امکان استفاده رایگان و آزمایشی رو هم داره. علاوه بر اون خدمات گیتلب هم به صورت ابری و هم به صورت محلی (On-Prem یا مدیریت شخصی) قابل استفاده هستن.
البته ابزارهای SCM زیادی وجود دارند، اما هیچکدومشون امکان ادغام یکپارچه (CI)ی مخازن رو به شکلی گیتلب برای سالها داره انجام میده، در اختیارتون قرار نمیدن.
Gitlab-CI رو صدا کنید.
یک فایل .gitlab-ci.yml در دایرکتوری ریشهی کدتون قرار دادید. بعد از اون، هر رویداد گیت، بر اساس چیزی که در اون فایل تعریف کردین، اتفاق میفته.
گیتلب واقعا توی حوزه ادغام یکپارچه خودکار، یک رهبره!
مزایای اصلی
بلوغ
این محصول از سال ۲۰۱۳ وارد بازار شده!
پس یک محصول پخته و با تجربه است و همونطور که از عملکردش مشخصه یک محصول پایداره. و البته از پشتیبانی خیلی خوبی هم برخورداره.
منبع-باز
نسخهی رایگان گیتلب، ویژگیهای اصلی که تیمهای توسعه به اون نیاز دارند رو در برداره. هر سطح پرداختی پس از اون، ویژگیهای اضافهای رو ارائه میده که بسته به اندازه و نیازهای سازمان شما، با خودشون ارزشهای مختلفی رو به همراه دارن.
ادغام یکپارچه
هیچ ابزار SCM دیگری، امکان ادغام یکپارچه رو به صورتی که گیتلب داره ارائه میده، ارائه ندادن.
امکان استفاده از Docker Builds باعث میشه شما بتونید بدون نگرانی برنامههای ناپایدار رو بسازید و امکان گزارش گیری باعث میشه بتونین به راحتی خطاها رو برطرف کنین. فرایند ادغام در گیتلب اصلا پیچیده نیست و نیاز به استفاده از چندین ابزار مختلف هم نداره.
ادغام نامحدود
گیتلب امکان ادغام و یکپارچهسازی ابزارهای موجود در دستهبندیهای مختلف دواپس رو به راحتی فراهم میکنه. این ویژگی باعث میشه برنامهنویسها و تیمهای عملیاتی اطلاعات مورد نیازشون رو تنها از یک منبع واحد و مورد اعتماد دریافت کنند.
ابزارهای رقیب
ابزارهای دیگهای هم وجود دارند که توی این دسته محبوب هستند. اما خب به خوبی گیتلب نیستند!
چرا؟
دونه دونه میگیم:
گیتهاب:
گیتهاب یک سرویس ابری برای مدیریت و کنترل منابع هست که برای سازمانهای کوچک و تازه تاسیس خیلی مناسبه.
اما برای شرکتهای بزرگ که باید IPشون رو در شبکهشون حفظ کنن، تنها راهحل گیتهاب استفاده از ماشین مجازی .OVA هست که قابلیت دسترسی بالایی نداره! این امر برقراری ارتباط با خدمات On-prem رو سخت می کنه. حالت ابری هم تنها برای شرکتهایی با سایز متوسط امکان استفاده رو داره.
از طرفی عدم وجود GitHub Actions یا CI به عنوان کد باعث میشه شما همیشه مجبور باشین ابزارهای برای ادغام و یکپارچهسازی از ابزارهای CI خودتون استفاده کنین.
و در نهایت هم باید بگیم، هزینهی استفاده از خدمات گیتهاب خیلی گرونتر از خدمات گیتلبه!
جنکینز:
در حالیکه جنکینز به عنوان یک ابزار استاندارد در حوزه ادغام یکپارچه شناخته میشه ولی هنوز دارای ویژگی برای کنترل منابع نیست!
یعنی اگر از جنکینز استفاده کنین، مجبورین در کنارش از یک ابزار SCM هم استفاده کنین! این در حالیه که ابزاری مثل گیتلب وجود داره که به راحتی داره هر دو رو ارائه میده. از طرف UX وحشتناکی که داره برای برنامههای وب مدرن اصلا مناسب نیست.
BitBucket/Bamboo:
این حقیقتو از من بپذیرین: اگر دارین کاری رو با استفاده از دو ابزار انجام میدین، در حالی که با استفاده از گیتلب میتونستین با یک ابزار انجامش بدین؛ متاسفانه شما یک لوزر (Loser یا بازنده!) هستین!
با اینکه بیتباکت ابری Gitlab-CI/GitHub Action رو پشتیبانی میکنه، ولی بازم شرکتهایی بزرگ تر از استارتاپها نمیتونن از اون استفاده کنن. سرور بیتباکت در حالت On-Prem از پایپلاینهای خودش (بیتباکت) هم پشتیبانی نمیکنه!
#1 Data management tool of 2020: FlywayDB
یکی از مهمترین جنبههای توسعهی برنامههای مبتنی بر وب، خودکارسازی فرآیندهای مرتبط با پایگاهداده اس. اهمیت این موضوع اصولا بعد از این که به خاطر تغییر ورژن یک برنامه در شمای پایگاهداده تغییراتی ایجاد میشه، خودشو نشون میده.
تغییر شمای پایگاهداده، اصولا اضافه کردن یا تغییر نام ستونها و یا جدول هاست. اگر ورژن برنامه با ورژن شمای پایگاهداده مطابقت نداشته باشه، حتی ممکنه برنامه کلا اجرا نشه!
از طرفی چون پایگاهداده و برنامه دو سیستم کاملا مجزا هستن، تطبیق دادن پایگاهداده با برنامه در هر تغییر ورژن، اصلا کار آسونی نیست.
FlyWayDB تمامی این مشکلات رو حل میکنه!
مزایای اصلی
نسخهبندی پایگاهداده
FlyWay به شما این امکان رو میده که به راحتی و بدون نیاز به هیچگونه سفارشیسازی بتونین نسخههای مختلفی از پایگاهداده ایجاد کنید، مهاجرت پایگاهداده رو ردیابی کنین و به تغییرات قبل یا بعد شمای پایگاهداده برید.
Binary or built-in
شما هم میتونید از FlyWay رو از ابتدا به عنوان بخشی از کد و برنامهتون استفاده کنین و هم میتونین فایل اجرایی اون رو به تنهایی اجرا کنین و مورد استفاده قرار بدین.
اگر از FlyWay در کدتون استفاده کنین:
- قابلیتهای نسخهبندی رو در ابتدا براتون چک میکنه.
- مهاجرتهایی رو که مناسب ببینه انجام میده.
- نسخهی پایگاهداده رو با نسخهی برنامه همگام نگه میداره.
علاوه بر این شما میتونین از خط فرمان (CMD Line) استفاده کنین. این ویژگی به شما قابلیت کار با پایگاهدادهها رو بدون نیاز به بازسازی کردن (Rebuilding) کل برنامه رو میده!
ابزارهای رقیب
ابزارهای زیادی توی این حوزه وجود ندارن.
با این حال بیاین با هم یک نگاهی به دو تا از ابزارهای بهتر بندازیم:
Liquibase:
خیلی شبیه به FlyWay هست.
حتی نویسندهای این مقاله در این رابطه گفته که: «خیلی خوشحال میشم اگر کسی در این حوزه تخصص داره بیاد تا Liquibase رو بر طبق FlyWay استانداردسازی کنیم.»
Flocker:
این برنامه احتمالا فقط برای برنامههای کانتینرایز شده کار میکنه.
البته بردن پایگاهداده به کانتینر خیلی سخته و باید برنامههای خیلی دقیق و خوبی داشت باشین که بتونین با موفقیت یک پایگاهدادهی کانتینرایز شده رو اجرا کنین!
در این صورت پیشنهاد ما اینه: به جای اینکه دادههای حساس خودتون رو در یک کانتینر ذخیره کنین، از یک سرویس مثل RDS استفاده کنین.
RDS مخفف Relational Database Service به معنای سرویس پایگاه دادهی ارتباطی هست.
این سرویسها مبتنی بر ابر هستن و برای ساده کردن فرآیندهای تنظیم، بهرهبرداری و مقیاسگذاری در پایگاهدادهها به وجود اومدن.