CI CD چیست؟
CI/CD یا یکپارچه سازی مداوم و تحویل یا استقرار پیوسته، روشی است که اغلب با اتوماسیون مراحل توسعه اپلیکیشن، تحویل برنامهها به مشتری را تسریع میکند. مفاهیم اصلی که CI/CD را در برمیگیرند شامل یکپارچه سازی مداوم، تحویل پیوسته و استقرار مستمر هستند. CI CD یک راه حل برای مشکلاتی است که در هنگام پیاده سازی کد جدید در طول پروسه توسعه نرم افزار و عملیات مربوطه پیش می آیند.
به طور خاص، CI/CD یک پروسه مستمر برای اتوماسیون و مانیتورینگ دائم چرخه عمر یک اپلیکیشن است، این پروسه شامل یکپارچه سازی، تست، تحویل و استقرار است. به طور کلی، به مجموعه این عملیات پایپلاین (pipeline) CI/CD گفته میشود که با همکاری تیم توسعه و مهندسین دواپس (DevOps) با رویکرد مدیریت چابک (Agile) پیادهسازی میشود.
تفاوت بین CI و CD چیست؟
CI/CD معانی مختلفی دارد. CI به معنی ادغام یا یکپارچه سازی مداوم (Continuous Integration) بوده که یک پروسه اتوماسیون برای توسعه دهندگان است. CI موفق به این معنی است که تغییرات کد برای یک اپلیکیشن به طور منظم ساخته و تست شده و در کتابخانه (ریپازیتوری) ادغام میشوند. در واقع CI راه حلی برای این مشکل است که هر برنامه در حال توسعه ممکن است چندین شاخه داشته باشد که با یکدیگر تعارض داشته باشند.
اما سی دی در CI/CD به معنی استقرار یا تحویل مداوم است، این مفاهیم آنقدر نزدیک به هم هستند که گاهی به جای یکدیگر مورد استفاده قرار میگیرند. این مفاهیم هر دو به معنی اتوماسیون مراحل بعدی در پایپلاین یک برنامه هستند ولی گاهی اوقات به طور جداگانه برای نشان دادن این موضوع که چه مقدار از اتوماسیون در حال رخ دادن است، استفاده میشوند.
تحویل پیوسته (Continuous Delivery) به این معنی است که تغییرات توسعه دهنده در یک برنامه به طور مداوم در حال تست شدن و سپس ذخیره در یک منبع (ریپازیتوری) هستند، جایی که بعدا توسط تیم عملیاتی به محیط عملیاتی منتقل میشوند. تحویل پیوسته در واقع راه حلی برای ارتباط ضعیف بین تیمهای توسعه و تجاری است، با این هدف که استقرار کد کمترین انرژی را از تیمهای توسعه بگیرد.
اما برداشت دیگری که از CD میشود، تحت عنوان استقرار پیوسته (Continuous Deployment) نام دارد. که به طور خودکار تغییرات توسعه دهنده برنامه را از منبع یا همان repository به محیط عملیاتی (که مشتریان در حال استفاده از آن هستند) منتقل میکند. این مسئله به مشکل تیمهای عملیاتی میپردازد که به طور ویژه درگیر پروسه کند و دستی پیاده سازی برنامه در محیط عملیاتی هستند. این عملیات به اتوماسیون مراحل از تحویل پیوسته در پایپلاین برنامه میپردازد.
بنابراین CI/CD می تواند به ۲ موضوع اشاره داشته باشد: ۱) یکپارچه سازی و تحویل پیوسته ۲) یکپارچه سازی، تحویل و استقرار پیوسته. البته در بعضی موارد از تحویل پیوسته به جای استقرار پیوسته هم استفاده میشود! یعنی براساس منظور گوینده، تحویل پیوسته می تواند شامل اسقرار پیوسته هم باشد. در پایان باید گفت که لازم نیست خیلی درگیر جزئیات شوید، صرفا بایستی بدانید که این پروسه عملیاتی به طور کلی شامل خودکارسازی و نظارت مداوم بر توسعه برنامه است.
یکپارچه سازی مداوم CI یا Continuous Integration چیست؟
در توسعه برنامههای مدرن، هدف این است که توسعهدهندگان به صورت چندگانه و همزمان بر روی ویژگیهای مختلف یک برنامه کار کنند. در واقع اگر یک سازمان تصمیم بگیرد که تمامی کدهای زده شده توسط توسعهدهندگان را در یک روز ترکیب کند، اثر حاصله احتمالا خوب از آب در نخواهد آمد. و این موضوع به این دلیل است که وقتی یک توسعهدهنده به تنهایی کار کند، احتمالا برنامهای که ایجاد میشود با سایر کدهای دیگر توسعهدهندگان در تعارض خواهد بود. یکپارچگی پیوسته یا همان ادغام مداوم (CI) به توسعه دهندگان کمک میکند که تغییرات کد خود را به طور مداوم بر روی شاخه اشتراکی ادغام (Merge) کنند. هنگامی که تغییرات یک توسعه دهنده در یک برنامه با تغییرات سایرین ادغام شود، سطوح مختلف برنامه که یکپارچه سازی شدهاند، تست میشوند تا مطمئن شویم که این تغییرات برنامه را دچار خرابی نکرده است. اگر این تستها تعارضی بین کد جدید و کد فعلی کشف کنند، CI میتواند به رفع این اشتباهات سرعت بخشد.
تحویل پیوسته CD یا Continuous Delivery چیست؟
پس از اتوماسیون ساخت (Build) و تست ادغام در CI، تحویل پیوسته انتشار کد تایید شده به مخزن یا ریپازیتوری را به صورت اتوماتیک انجام میدهد. بنابراین برای داشتن یک فرایند تحویل مداوم و موثر، اولین قدم این است که CI به خط توسعه (پایپلاین) شما اضافه شده باشد. هدف از CD داشتن کدهای برنامه ای است که همیشه برای استقرار در محیط عملیاتی آماده باشد. مراحل CD شامل اتوماسیون تست و اتوماسیون انتشار کد برنامه است، به نحوی که تیم عملیاتی بتواند به طور سریع و آسان برنامه را در محیط عملیاتی پیاده سازی کند.
استقرار پیوسته CD یا Continuous Deployment چیست؟
مرحله نهایی یک پایپلاین CI/CD استقرار پیوسته است. بعد از تحویل پیوسته (که ادغام کد در مخزن را به طور خودکار انجام میدهد) عمل میکند، استقرار مداوم انتشار کد در محیط عملیاتی را به صورت خودکار انجام میدهد. با توجه به اینکه هیچ عملیات دستی در این مرحله وجود ندارد، اتوماسیون تست در استقرار پیوسته اهمیت به سزایی دارد. در عمل، استقرار پیوسته به این معنی است که تغییرات توسعه دهنده در کد می تواند تنها در چند دقیقه در یک محیط عملیاتی ابری مستقر کند.
بهرین ابزارهای CI/CD کدام اند؟
یکی از بهترین ابزارهای متن باز برای اتوماسیون CI/CD جنکینز (Jenkins) است. پایپلاین تکتان (Tekton) هم یک فریم ورک معروف برای پلتفرم کوبرنتیس است که پیاده سازی CI CD برای کانتینرهای ابری فراهم میکند. البته در کنار موارد یاد شده، ابزارهای مدیریت شده CI CD هم وجود دارد که از میان آن ها می توان به ابزار CI/CD گیت لب (GitLab) اشاره کرد.
بطور کلی، اکثر ابزارهای دواپس (DevOps) بخشی از روند CI/CD هستند. این ابزارها، مانند انسیبل (Ansible)، پاپت (Puppet)، شف (Chef)، داکر (Docker) و کوبرنتیس (Kubernetes)، اگرچه الزاما ابزارهای CI/CD نیستند، اما در روند انجام CI CD به آنها برخورد خواهید کرد.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.