فدک - برنامه نویسی - CI/CD و اهمیت آن در مسیر DevOps
آخرین تغییرات : 2021-04-30تعداد بازدید : 541

CI/CD و اهمیت آن در مسیر DevOps


  1. CI/CD

CI/CD

CI/CD وادار می‌کند که فرایندهای ساخت، تست و استقرار برنامه‌ها به صورت خودکار انجام شوند. بدین وسیله به نحوی پلی بین فعالیت‌های تیم‌های «توسعهٔ نرم‌افزار DEVelopment» و «عملیات فناوری اطلاعات OPerationS» ایجاد می‌کند. فعالیت‌های دواپس شامل توسعه پیوسته، آزمون پیوسته، یکپارچه‌سازی مداوم، استقرار پیوسته و نظارت مداوم بر نرم‌افزار در طول فرایند توسعه می‌باشد. 'اقدامات CI/CD زیربنای فعالیت‌های دواپس را تشکیل می‌دهد.
CI/CD یکی از روش‌های ایده‌آل (به انگلیسی: best practice) برای تیم‌های دواپس است. علاوه بر این، جزئی از متدولوژی‌های توسعه‌ی نرم‌افزاری چابک نیز به شمار می‌آید. با استفاده از CI/CD تیم توسعه‌ی نرم‌افزار، فارغ از دغدغه‌ی مسائل استقرار، می‌تواند به نیازمندی‌های جلسات، کیفیت کد و امنیت رسیدگی کند.[۴]
استقرار پیوسته
استقرار پیوسته (به انگلیسی: Continuous deployment، اختصار: CD) رویکردی در مهندسی نرم‌افزار است که ویژگی‌ها و قابلیت‌های نرم‌افزاری به صورت پیاپی از طریق استقرار خودکار تحویل می‌شوند.[۵][۶][۷]
یکپارچه سازی مداوم
یکپارچه سازی مداوم
یکپارچه‌سازی مداوم یا ادغام مداوم (به انگلیسی: Continuous Integration، اختصار: CI) در برنامه‌نویسی به مجموعه‌ای از روش‌ها می‌گویند که باعث حفظ انسجام کد می‌شود و از به‌هم‌ریختگی کد جلوگیری می‌کند. این روش‌ها مبتنی بر ساختن مداوم پروژه پس از هر تغییر در کد توسط برنامه‌نویسان و اجرای تست کیس‌های برنامه است. به عنوان مثال هر زمان که یک کامیت توسط توسعه‌دهنده بر روی مخزن پروژه پوش شود همهٔ تست‌ها اجرا می‌شود تا بتوان اطمینان حاصل نمود که همهٔ قسمت‌های پیشین کد و قسمت‌های تازه‌نوشته‌شده با یک‌دیگر سازگاری دارد و درست کار می‌کند.[۸]
تحویل پیوسته
تحویل پیوسته یا (به انگلیسی: Continuous Delivery، اختصار: CD) رویکردی در مهندسی نرم‌افزار است که به تیم‌ها این قابلیت را می‌دهد که نرم‌افزار تولید شده را به روشی سریع و مطمئن برای انتشار و تحویل آماده کنند. این فرایند از لحظه اضافه‌شدن یا تغییر کد در source control شروع می‌شود و شامل ساخت (build)، تست، پیکربندی و انتشار در محیط‌های مختلف تست و محیط عملیات می‌شود. این مفهوم در فارسی به «تحویل مداوم» یا «تحویل مستمر» ترجمه شده‌است.
به عبارت دیگر: تحویل مستمر توانایی اعمال تغییرات در محیط عملیات در هر لحظه با روشی سریع و مطمئن و به‌طور کاملاً پایدار می‌باشد. این تغییرات شامل همه انواع آن از جمله تغییرات پیکربندی در نرم‌افزار، زیرساخت و پلتفرم، افزودن ویژگی‌های جدید، رفع باگ و خطاها می‌شود.
به وسیله محیط‌های تست مختلف، می‌توان یک Deployment pipeline ایجاد کرد تا بتوان یک زیرساخت جدید را به‌طور اتوماتیک ایجاد کرد و نرم‌افزار را روی آن منتشر کرد. منظور از زیرساخت سرور، سیستم عامل، سرویس دهندهٔ وب، virtualization، شبکه، پیکربندی و تنظیمات آن‌ها می‌باشد. به کمک این محیط‌های متوالی می‌توان فعالیت‌های طولانی یکپارچه‌سازی، تست عملکرد و تست‌های پذیرش نهایی را به تدریج انجام داد. فرایند تحویل پیوسته در Deployment pipeline با یکپارچه‌سازی مداوم شروع می‌شود و با انتشار و پایان تست در هر محیط، انتشار و تست در مرحله بعدی شروع می‌شود. مجموع این کارها به صورت حلقه‌های یک زنجیر در پشت سر هم قرار گرفته و فرایند تحویل پیوسته را تشکیل می‌دهند.[۹]
ابزارهای پرکاربرد
ابزارهای CI/CD به تیم‌ها این امکان را می‌دهند که استقرار، توسعه و تست‌کردنشان را به صورت خودکار انجام بدهند. بعضی از ابزارها به صورت خاص‌منظوره برای بخش CI، بعضی برای CD و سایرین برای تست خودکار یا استفاده‌های دیگه توسعه یافته‌اند.[۴]
یکی از بهترین ابزارهای متن‌باز در زمینه‌ی CI/CD سرور خودکارسازی Jenkins است. یکی دیگر از فریم‌وورک‌های CI/CD برای بسترهای کوبرنتیز نیز پایپ‌لاین‌های Tekton هستند. علاوه بر این‌ها، چند ابزار متن‌باز دیگر عبارتند از: Spinnaker، GoCD، Concourse و Screwdriver.
در زمینه‌های دیگر
در زمینه ارتباطات شرکتی، CI/CD می‌تواند به فرایند کلی هویت سازمانی (Corporate Identity) و طراحی سازمان (Corporate Design) اشاره داشته باشد.

 

OS: GNU/Linux, deb-based
Backend: Nginx + php-fpm
DB: Mysql (standalone, master-slave), MongoDB (standalone, replica, sharding)
BI: Python + Scientific libs

Внутренняя инфраструктура сопровождения разработки, платформы сервиса:

SCM: Puppet
Monitoring: Zabbix
CI/CD: Jenkins
VCS: Git (GitLab)
Scripting: Bash, Python

Построение непрерывной интеграции и доставки (CI/CD);
Администрирование и настройка Linux-систем (RHEL, CentOS, Debian);
Администрирования HTTP-серверов (Nginx, Apache HTTP Server);
Написание и работа с SQL-запросами (PostgreSQL, MySQL);
Администрирование серверов приложений (PHP-FPM, PHP, Node.Js, Redis, RabbitMQ);

Построение непрерывной интеграции и доставки (CI/CD);
Опыт работы с системами контроля версий git;
Мониторинг доступности, производительности и создание проверок для системы мониторинга (Zabbix);
Автоматизация задач на скриптовых языках (Bash, sh).

Мы ожидаем от Вас:

Kubernetes / openshift - желательно;
Знание Linux-систем на уровне администратора (RHEL, CentOS);
Опыт построения непрерывной интеграции и доставки (CI/CD) - желательно;
Опыт поддержки прикладных систем на PHP или Java;
Умение писать запросы и работать с СУБД (PostgreSQL, MySQL);
Умение писать на скриптовых языках (Bash, sh).

 

 

 

 


             

2000-2016 CMS Fadak. ||| Version : 4.2-b2 ||| This page was produced in : 0.001 Seconds