شما اینجا هستید :

Home » مقالات » توسعه سمت سرور » DevOps (دوآپس) چیست؟

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

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

DevOps یه فرایند تولید نرم‌افزاره که بر مبنای ارتباط و همکاری هرچه بیشتر میان تیم‌های تولید و توسعهٔ نرم‌افزار و تیم‌های اجرایی بنا شده. طی این فرآیند عملیاتی مانند Integration ،Testing و Deployment و همچنین اِعمال تغییرات زیرساختی به‌ صورت خودکار انجام میشه و در کل هدف از چنین فرایندی ایجاد فرهنگیه که تو اون تولید، تست و انتشار نرم‌افزار به شیوه‌ای سریع، مداوم و مطمئن انجام بشه. اصطلاح DevOps از دو واژهٔ Development به‌ معنی «توسعه» و Operations به‌ معنی «عملیات» ساخته شده.

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

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

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

سوالایی که تو این مرحله یه مهندس دوآپس باید بهشون جواب بده:

– چگونگی تعامل دو سرویس مختلف با هم؟
– برای مرتبط کردن این دو سرویس، از چه پروتکلی باید استفاده کنیم؟
– آیا سخت‌افزاری که در اختیار ماست جوابگوی نیاز ما هستش؟
– برای اینکه کمک به مهندسا در امر تولید به چه چیزهایی نیاز داریم؟
– آیا سرویس مذکور به‌ اصطلاح Production-Ready خواهد بود؟
– همه دیپندنسی‌های مورد استفاده در نرم‌افزار برای ما قابل درکن؟
– چه چیزی رو باید بسازیم و چه چیزی رو باید بخریم؟
– آیا میتونیم یه تسک خاص رو به صورت خودکار انجام بدیم؟
– چطوری میتونیم بعدا، از این نرم افزار پشتیبانی کنیم؟

Development (توسعه)
تو مرحله توسعه ترکیب‌بندی کلی کار مشخص شده و نوبت دولوپراس که کد بزنن و قابلیت‌های پیش‌بینی شده رو برای نرم‌افزار ایجاد کنن و هدف عمدهٔ‌ مهندس دوآپس تو این مرحله اینه که دنبال راه‌هایی برای سرعت بخشیدن به کارها باشه. به بیان دیگه، باید راهی پیش پای دولوپرها بذاره تا بتونن بهترین کار رو در کمترین زمان ممکن انجام بده.

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

سؤالایی که مهندس دوآپس تو این مرحله با اونا مواجه میشه به شرح زیره:

– چجوری میتونم دولوپرها رو تو فضایی مشابه فضای محصول نهایی نگه دارم؟
– چه‌طور به دولوپرها اجازه بدم تا از ابزارهای مورد علاقهٔ‌ خودشون استفاده کنن؟
– چجوری بهره‌وری و کارایی دولوپرها را بالا ببرم؟
– چطور باید به دولوپرها توضیح بدم که که محیط نهایی نرم‌افزار چجوری میشه؟

Testing (تست کردن)
تو این مرحله دولوپرها و مسئولین کنترل کیفیت (QC) کدهای نوشته شده رو تست میکنن و اونا رو برای یکپارچه شدن با سورس‌ کد اصلی آماده میکنن. امکان داره تو این مرحله از ابزارها و اسکریپت‌هایی به‌ منظور انجام خودکار تست‌ها استفاده بشه ولی باز هم برای برای اجرای دستی کدها بر روی سیستم‌های داخلی شرکت به حضور دولوپرها و مسئولین کنترل کیفیت نیازه. اینجا وظیفه‌ اش اینه که یه راهی برای تکرر خودکار تست ها پیدا کنه. برای اینکار میتونه از ابزارهایی مانند Jenkins ،Bamboo و یا Drone استفاده کنه (این ابزار ها Continuous Integration یا به‌ اختصار CI هستن که تست مداوم کدها رو آسونتر میکنن).

سوالاتی که تو این مرحله باید بهشون پاسخ داده بشه:

– چجوری میتونم به اصطلاح چندین Client Environment تکرارپذیر ایجاد کنم؟
– از کجا بدونم تست مورد نظر در مورد کدوم نسخه از سرویس در حال انجامه؟
– چجوری تاریخچهٔ تست‌ها رو دنبال کنم و با استفاده از اون به روندهای موجود پی‌ ببرم؟
–  پس از تست نمودن کدها، مشکلات احتمالی رو چجوری به دولوپرها اعلام کنم؟
– داده های تست رو از کجا باید بدست بیارم؟

Deployment (استقرار)
Deployment به‌ معنای قرار دادن کدها روی سرور اصلی نرم‌افزاره. این مرحله در مورد اینه که کدهای نوشته شده چه‌طور و با چه نظمی در محصول نهایی قرار بگیرن تا کاربر نرم‌افزار بتونه از سرویس استفاده کنه. در این مرحله هم مهندسای دوآپس از ابزارهای CI، مشابه موردی که تو بخش قبلی اشاره شد استفاده میکنن.

بخشی از مهم‌ترین سؤالایی که تو این مرحله باید بهشون پاسخ داده بشه عبارتند از:

– چه زمانی نسخهٔ نهایی نشده از نرم‌افزار آمادهٔ‌ دیپلوی شدنه؟
– چجوری بدون اینکه کاربر متوجه بشه،‌ سرویسی رو دیپلوی کنم؟
– چجوری مطمئن بشم که سرویسی که جدیدا دیپلوی شده، سبب ایجاد اختلال نمیشه؟
– فرآیند دیپلوی شدن رو چجوری به صورت خودکار در بیارم؟
– چجوری در صورت لزوم در فرآیند دیپلوی خودکار، مراحلی را به‌ صورت دستی و غیرخودکار انجام بدم؟
– چجوری فرآیند دیپلوی  رو با روشی تکرارپذیر انجام بدم؟

این مرحله خیلی زمان بر نیس اما بخشی که مهندسا باید بیشترین زمان و انرژی خودشون رو صرفش کنن،‌ مرحله Maintenance هستش.

Maintenance (نگهداری)
مرحله نگهداری کلا در مورد انجام کارهاییه که در نهایت موجب در دسترس قرار گرفتن یه سیستم و حفظ کارایی اون میشن. سوالایی که تو این مرحله باید بهشون پاسخ داده بشه:

– چجوری میتونم از مشکلات و باگ‌های موجود در محصول یا سرویس آگاه بشم؟
– چجوری باگ‌های مختلف موجود در محصول یا سرویس را به تیم‌های مناسب ارجاع بدم؟
– باگ‌های زیرساختی موجود در محصول چجوری برطرف کنم؟
– چجوری میتونم از سلامت و کارایی همهٔ سرویس‌ها مطمئن بشم؟

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

مــطالب مشـــابه

تفاوت میان برنامه‌نویسی شئ‌گرا و تابعی

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

ارسال شده در شهریور ۷, ۱۳۹۷

جوملا چیه؟

جوملا یه سیستم مدیریت محتوای تحت وبه که مدیریت و انتشار مطالب رو به شکل ساده امکان پذیر میکنه، جوملا امکانات گسترده ایی و با ابزار های خودش امکان گسترش نرم افزارها رو فراهم میکنه. با جوملا میتونین وبسایت ها و سامانه های تحت وب…

ارسال شده در شهریور ۶, ۱۳۹۷

عناصر مهم در ایجاد یک وبسایت فوق العاده

چطوری میتونیم یه وبسایت عالی داشته باشیم؟ هیچ دستور جادویی و یا الگوی خاصی برای حل این سوال وجود نداره. داشتن یه وبسایت فوق العاده میتونه به عوامل و فاکتور های مختلفی بستگی داشته باشه، مثلا مهارت شما یا بودجه ای که در اختیار دارین…

ارسال شده در شهریور ۴, ۱۳۹۷

دیدگاهتان را بنویسید

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