DevOps (دوآپس) چیست یا کیست؟

در پست امروز می خواهیم با فرایند تولید نرم افزار یا دوآپس آشنا شویم.DevOps یک فرایند تولید نرم‌افزار است که بر مبنای ارتباط و همکاری هرچه بیشتر میان تیم‌های تولید و توسعهٔ نرم‌افزار و تیم‌های اجرایی بنا شده است؛ در طی این فرآیند، عملیاتی مانند Integration ،Testing و Deployment و همچنین اعمال تغییرات زیرساختی به‌صورت خودکار درمی‌آیند و در کل هدف از DevOps، ایجاد فرهنگی است که در آن تولید، تست و انتشار نرم‌افزار به شیوه‌ای سریع، مداوم و مطمئن انجام شود.

DevOps

به‌طور کلی، فرآیند تولید نرم‌افزار را می‌توان به ۵ مرحلهٔ‌ اصلی تقسیم کرد که این مراحل عبارتند از Planning ،Development ،Testing ،Deployment و Maintenance که در این میان، ۲ مرحلهٔ Planning و Maintenance بیشترین زمان مهندسین DevOps را به خود اختصاص می‌دهند.

Planning یا طرح‌ریزی

در این مرحله از کار، تیم (متشکل از دولوپرها، مدیران تولید و …) اهداف پروژه را تعریف و ترسیم نموده و ساختار کلی نرم‌افزار را تعیین می‌کنند؛ مهندس DevOps در این مرحله باید از دانش فنی اعضای تیم و تسلط آن‌ها بر پلتفرم‌های مورد استفاده بهره برده و بررسی نماید که چگونه می‌توان در قالب یک سیستم جامع و یکپارچه به تمام اهداف مورد نظر تیم جامهٔ عمل پوشاند (در کل، این مرحله از کار یکی از مراحل زمان‌بر است).پس از این‌که این سیستم اولیه پیاده‌سازی و اجرا شد، مهم‌ترین مسئله هدایت تیم در جهت نحوهٔ‌ افزودن قابلیت‌ها و تکنولوژی‌های از قبل تولیدشده به این سیستم اصلی است؛ همچنین در این مرحله ممکن است در مورد هماهنگی بخش‌های مختلف نرم‌افزار با یکدیگر، زیر بار بردن دیتابیس جدید و یا نحوهٔ پشتیبانی از یک میکروسرویس زیرساختی جدید نیز تصمیم‌گیری شود.

علاوه بر این، در این مرحله باید در مورد نحوهٔ پیاده‌سازی و اجرای خودکار این موارد نیز راه‌کاری اندیشیده شود؛ درواقع، مهندس DevOps همواره باید به‌دنبال راه‌کار‌هایی برای انجام خودکار فرآیندهای مختلف باشد تا بار انجام این کارها تا حد امکان از دوش اعضای تیم برداشته شود.

Development یا توسعه

در این مرحله، ترکیب‌بندی کلی کار مشخص شده و دیگر نوبت دولوپرها است که کد بزنند و قابلیت‌های پیش‌بینی شده را برای نرم‌افزار ایجاد کنند؛ هدف عمدهٔ‌ مهندس DevOps در این مرحله این است که به دنبال راه‌هایی برای سریع‌تر انجام شدن کارها باشد؛ منظورمان این است که او باید راهی پیش پای دولوپرها بگذارد که بتوانند بهترین کار را در کمترین زمان ممکن انجام دهند و این دقیقاً با هدف نهایی کار -یعنی تولید نرم‌افزار- هماهنگ و سازگار است.مهندس DevOps به دولوپرها می‌گوید که از چه ابزاری استفاده کنند و همچنین ابزارهای جدید را اختیار آن‌ها قرار می‌دهد؛ همچنین این مهندس DevOps است که باید بخش‌های مختلف کدهایی که توسط دولوپرها و در محیط توسعه نوشته شده‌اند را مانند قطعات پازل در کنار هم قرار داده و آن‌ها را با محیط نهایی نرم‌افزار هماهنگ کند.

Testing یا تست کردن

در این مرحله، دولوپرها و مسئولین کنترل کیفیت، کدهای نوشته شده را تست نموده و آن‌ها را برای یکپارچه شدن با سورس‌کد اصلی آماده می‌کنند؛ در این مرحله ممکن است از ابزارها و اسکریپت‌هایی به‌منظور انجام خودکار تست‌ها استفاده شود اما هنوز هم برای اجرای دستی کدها بر روی سیستم‌های داخلی شرکت به حضور دولوپرها و مسئولین کنترل کیفیت نیاز است.از سوی دیگر، ممکن است لازم باشد محصول نهایی مورد تست قرار گیرد یا کدهای نوشته شده در محیطی مشابه محیط محصول نهایی بارها و بارها تست شوند؛ ممکن است تست‌ها خیلی کند اجرا شوند و یا برای اجرای آن‌ها عملاً به کنترل دستگاه میزبان نیاز باشد که در چنین مواردی باید فکری به حال اجرای خودکار تست‌ها نمود.

در اینجا است که دوباره پای مهندس DevOps به میان می‌آید! در این مرحله وظیفهٔ مهندس DevOps این است که برای تکرار خودکار تست‌ها راهی بیابد؛ او می‌تواند از ابزارهایی مانند Jenkins ،Bamboo و یا Drone استفاده کند (این‌ها ابزارهای Continuous Integration یا به‌اختصار CI هستند که تست مداوم کدها را آسان‌تر می‌کنند).

Deployment یا استقرار

Deployment به‌معنای استقرار و توزیع کدها در یک محیط است که در اینجا سرور اصلی نرم‌افزار مد نظر ما است؛ به‌طور کلی، این مرحله در مورد این است که کدهای نوشته شده چه‌طور و با چه نظمی در محصول نهایی قرار بگیرند و کدام کدها در مقابل End-Userها اجرا شوند.معمولاً این مرحله زمان زیادی را از مهندسان DevOps نمی‌گیرد؛ بخشی که مهندسان DevOps باید بیشترین زمان و انرژی خود را صرف آن کنند،‌ مرحلهٔ‌ بعدی یعنی Maintenance است.

Maintenance یا نگهداری

همان‌طور که قبلاً گفتیم، مرحلهٔ نگهداری از نرم‌افزار یکی از مراحلی است که بیشترین زمان یک مهندس DevOps در این مرحله صرف می‌شود؛ به‌عنوان مثال، در شرکت‌ بزرگی مانند گوگل، یک جایگاه شغلی فقط و فقط با هدف انجام مرحلهٔ نگهداری و تحت عنوان Site Reliability Engineering درنظر گرفته شده است.این مهندسان معتقدند که کارشان مشابه کار سریع‌ترین تیم‌های تعمیر ماشین‌های مسابقه‌ می‌باشد و مثل این است که در حالی که ماشین مسابقه ۱۵۰ کیلومتر بر ساعت سرعت دارد، بخواهید تایرهای آن‌را عوض کنید! این مرحله تماماً در مورد انجام کارهایی است که درنهایت موجب در دسترس قرار گرفتن یک سیستم و حفظ کارایی آن می‌شوند.

DevOps آمیزه و مخلوطی از چندین نقش بوده و هدف نهایی آن در کنار هم قرار دادن دولوپرها و مهندسان اجرایی است؛ فرهنگ DevOps ویژگی‌ها و قابلیت‌های جدید محصول را با زیرساخت‌های آن سازگار می‌نماید و سبب می‌شود تا این دو بتوانند در کنار هم به‌خوبی عمل کنند.

منبع:*

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *