معرفی ابزارهای کاربردی و متنباز در حوزهی DevOps
۱۰ فروردین ۱۴۰۰
بهعنوان یک مهندس DevOps بایستی باکیفیتترین اتوماسیون زیرساخت را ارائه دهید و اگر یک توسعهدهنده هستید، انتخاب و یا حتی راهاندازی زیرساخت مناسب برای برنامههایتان بسیار مهم است. خوشبختانه ابزارهای DevOps بهترین همراهان شما در این مسیر هستند زیرا میتوانند به شما در صرفهجویی وقت، برقراری ارتباط و همکاری در پروژههایتان کمک کنند.
ابزارهای توسعه
در این بخش لیستی از ابزارهای محبوب و مشهور را معرفی میکنیم که در افزایش بهرهوری موثر هستند.
Vagrant
Vagrant در میان ابزارهای DevOps بهطور گستردهای بهمنظور توسعه و تست استفاده میشود. همچنین میتوانید از آن برای ایجاد محیطهای Development یا شبیهسازی محیط Production استفاده کنید.
با استفاده از Vagrant میتوانید ماشینهای مجازی مورد نظر خود را با import کردن box (virtual machine template) از vagrant cloud راهاندازی کرده و بهنسبت تنظیمات مورد نیاز خود، آنها را پیکربندی کنید. حتی میتوانید اجرای ابزارهای Puppet و Chef را برعهدهی این ابزار بگذارید.
از بهترین قابلیتهای Vagrant میتوان به وجود بسیاری برنامههای کاربردی مضاعف در این ابزار اشاره داشت. مثلا اگر بخواهید برنامهی خود را بر روی وبسرور LAMP توسعه دهید میتوانید در Vagrant cloud بهدنبال LAMP box باشید.
پس از جستجوی LAMP box در Vagrant cloud تمام boxهای موجود برای شما لیست میشود. به این صورت میتوانید زمان خود را صرفهجویی کرده و از پیکربندیها خلاص شوید.
این ابزار به شما امکان میدهد محیطهای sandbox شده را بدون دردسر پیکربندی و اجرا کنید. برای مثال اگر میخواهید محیطهای توسعهی Python 2 و Python 3 را با هم داشته باشید میتوانید از دو Vagrant box موجود در Vagrant cloud استفاده کنید.
علاوهبراینها میتوانید chef cookbooks، puppet module یا ansible playbooks خودتان را داشته باشید و از آنها در فایل پیکربندی Vagrant استفاده کنید.
همچنین این ابزار به شما امکان میدهد بهراحتی با اشتراک گذاشتن Vagrant file خود، همان ماشین مجازی که در سیستم شما وجود دارد را در سرور یا سیستم دیگری راهاندازی کنید. به این صورت مشکلهای انتقال پروژه از محیط Development به Production را نخواهید داشت.
Docker
اگر از دنبالکنندگان وبلاگ لیارا باشید، قبلتر در مقالهای باعنوان مقدمهای بر پلتفرم Docker به مزیتهای این ابزار پرداختهایم. Docker ابزاری متن باز است که به توسعهدهندگان امکان ایجاد و مدیریت برنامه در Docker containerهای مجزا را ارائه میدهد.
Docker Hub یک ریپازیتوری آنلاین برای Docker imageهای آماده است که هرکسی میتواند از آنها استفاده کند بنابراین با استفاده از این ابزار نیازی به استفاده از ماشینهای مجازی یا پیکربندیهای پیچیده نیست. از دیگر مزیتهای Docker میتوان به زمان کوتاه راهاندازی Docker containerها اشاره داشت که اجرای آنها فقط در چند ثانیه انجام میشود.
علاوهبر Docker ابزار دیگری با نام Kinematic وجود دارد. این ابزار نصب Docker engine، Docker machine و سایر کامپوننتهای Docker را بهصورت خودکار انجام میدهد.
رابط کاربری گرافیکی این ابزار در مدیریت Docker containerها بسیار مفید است. از دیگر ویژگیهای Kinematic میتوان به قابلیت جستجوی imageها، سوئیچ بین حالتهای CLI و GUI، مدیریت پورتها، پیکربندی environment variableها و … اشاره داشت.
Packer
استفاده از ابزار Packer را به کسانی که با ماشینهای مجازی ابری کار میکنند توصیه میکنیم. این ابزار، ایجاد image برای ارائهدهندههای سرویسهای ابری را بهصورت خودکار انجام میدهد.
شما میتوانید یک packer configuration ثابت برای ایجاد image موردنظرتان بنویسید و از آن در چندین ارائهدهنده سرویسهای ابری استفاده کنید. همچنین میتوانید از Shell، Ansible، Chef برای تنظیم خودکار پیکربندی برنامههایتان در VM image استفاده کنید.
ابزار Continuous Integration
Continuous Integration یا بهعبارت دیگر CI، یکی از مباحث پراهمیت در زیرساخت و از مباحث الزامی برای هر مهندس DevOps است. در ادامه به برخی ابزارهای متن باز میپردازیم که نیازهای شما در مبحث CI را برطرف میکنند.
Jenkins
Jenkins یک ابزار CI متن باز محبوب همراه با جامعهی پشتیبانی گسترده است و یادگیری آسانی دارد. فقط آن را نصب کنید و از در پروژههای Java یا .Net
خود استفاده کنید. Docker imageها برای اکثر نسخههای Jenkins در دسترس هستند.
Github Actions
اگر کدهای خود را بر روی GitHub قرار میدهید میتوانید از قابلیت GitHub Action برای مباحث CI استفاده کنید مثلا ما در مقاله راهاندازی CI/CD به وسیله GitLab و GitHub در لیارا پروژهی مورد نظرمان را بهکمک این قابلیت بر روی لیارا مستقر کردیم. همچنین میتوانید جریان کاری مشخصی ایجاد کنید تا روند build کردن و release بهصورت خودکار انجام شود.
Travis CI
Travis CI یک پلتفرم CI است که بر روی سرورهای ابری میزبانی میشود و میتوانید از آن برای پروژههای متن باز خود استفاده کنید. همچنین استفاده از آن رایگان است.
پلتفرمهای Version Control
بهترین روش برای مدیریت نسخهی برنامههایتان استفاده از Version Control System است. بهعنوان یک مهندس DevOps موظف هستید که از بهترین روشهای توسعه پیروی کرده و برای همهی کدهای خود از VCS استفاده کنید.
GitHub
GitHub یک بخش جدا نشدنی از توسعهی نرمافزار است زیرا این پلتفرم آنلاین با ارائه Version Control، Supply chain management (SCM)، Bug tracking و بسیاری قابلیتهای دیگر محبوبیت بسیار زیادی پیدا کرده است. علاوهبراینها در این پلتفرم ویژگیهای جالب شبکههای اجتماعی مانند دنبال کردن دیگر توسعهدهندگان نیز وجود دارد.
توسعهدهندگان به کدهای منتشر شده در ریپازیتوریهای عمومی دسترسی دارند و حتی میتوانند کدهای خودشان را در ریپازیتوریهای این پلتفرم قرار دهند.
Bitbucket
Bitbucket را میتوان پلتفرمی دانست که از در کنار هم قرار داده شدن Mercurial و Git بهوجود آماده و توسعهدهندگان میتوانند در این پلتفرم بهتعداد نامحدودی ریپازیتوریهای private ایجاد کرده، آنها را مدیریت کنند و یا بهاشتراک بگذارند.
همچنین این پلتفرم با ابزار Jira که برای مدیریت پروژهها استفاده میشود، سازگار شده است.
Gtilab
اگر میخواهید یک پلتفرم مانند GitHub برای خودتان راهاندازی کنید میتوانید بهسراغ Gitlab بروید. پس از راهاندازی این پلتفرم میتوانید از آن برای میزبانی کدهای برنامه بهروشی مدیریت شده استفاده کنید. علاوهبراینها اگر از پیکربندی نرمافزار متنفر هستید استفاده از Gitlab Docker image به شما توصیه میشود.
ابزارهای همکاری و ارتباط
Slack
Slack یک ابزار مفید برای همکاری در پروژه است و با یک لیست طولانی از برنامهها مانند Google Calendar، Skype، Trello، GitHub، Jira سازگار شده. اگر بهدنبال ابزاری برای ایدهپردازی، برقراری ارتباط و همکاری هستید، Slack انتخاب مناسبی برای شما است.
این ابزار در پلتفرمهای Web، Desktop، Mac، Windows، Linux، iOS، Android و Windows Phone در دسترس است.
Trello
Trello یک ابزار مدیریت پروژه بسیار جالب است که میتوانید بهکمک آن پروژههایتان را در boardها سازماندهی کنید. این ابزار تقریبا تمام ویژگیهای مورد نیاز شما را پوشش داده است و میتواند به شما در ساماندهی موثر وظایف کمک کند.
این ابزار در پلتفرمهای Web، iOS و Android در دسترس است.
Asana
Asana بهترین ابزاری است که میتواند در همکاری با اعضای تیم به شما کمک کند. این ابزار یک سیستم مدیریت پروژه هوشمند یکپارچه و سازگار را ارائه میدهد. یکی دیگر از ویژگیهای جالب این ابزار، real-time بودن آن است و به شما این امکان را میدهد تا با ارسال ایمیل، کارها را مدیریت کنید.
همچنین میتوانید نظرها و یادداشتها را مستقیما در Asana اضافه کنید یا مثلا میتوانید پروژههای جداگانهای ایجاد کنید و در هر پروژه کارهای مختلفی انجام دهید. بهطور خلاصه Asana ابزاری عالی برای مدیریت پروژه است.
این ابزار در پلتفرمهای Web، iOS و Android در دسترس است.