نماد سایت سودوئر

آشنایی با مفاهیم دوآپس DevOps

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

در گذشته نه خیلی دور (حدود ۹ یا ۱۰ سال پیش) که استفاده از سیستم عامل لینوکس در ایران فراگیر شد و خیلی از شرکت‌ها به ضرورت استفاده از این سیستم عامل پی بردند بازار کار آی‌تی در ایران می‌طلبید که سیس ادمین یا یا همون Linux System Administration زیاد جذب بشه . در حقیقت خیلی از شرکت‌ها و کسب‌وکارها نیاز داشتند که یک شخصی یا گروهی وجود داشته باشند که بتوانند از پس کارهای مربوط به سرورهای لینوکسی و سرویس‌های مورد نیازشون بر بیان و یا اینکه زیرساخت سرویس‌های فعلی رو به سمت لینوکس سوق بدهند .

این دوره چند ساله که تا الان هم ادامه داره دوره‌ای است که متخصص‌های زیادی در زمینه لینوکس وارد بازار کار شدند و به عنوان Linux System Admin در کسب‌وکارها مشغول به کار شدند .

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

این به این معنی هست که در هر شرکت و کسب‌وکاری دو تیپ متخصص مربوط به سرویس مشاهده می‌شود

۱. برنامه نویس‌ها که وظیفه تولید و توسعه اپلیکیشن ها و برنامه ها رو بر عهده دارند

۲. سیس ادمین‌ها که وظیفه راه‌اندازی و نگهداری از سرویس‌ها و سرورهای لینوکسی رو برعهده دارند

و به صورت کاملا طبیعی این دو گروه دانش زیادی از کار و تخصص همدیگر ندارند و تعامل بین آنها کمی با مشکل روبرو می‌شد که در ادامه به برخی از اونها اشاره میکنم

موارد بالا برخی از مشکلات بوجود آمده در یک شرکت آی‌تی بود که اشاره کردیم

برای برطرف نمودن مشکلات نام برده شده جای خالی یک شخص یا یک تیمی احساس می‌شود که بتواند کارهای زیر را انجام دهد

پس تا الان اگه بخوایم ارتباط DevOps رو با سایر گروه‌های مرتبط با یک شکل نشان بدیم میتواند به صورت زیر باشد .

با توجه به تصویر بالا DevOps نقطه مشترک تیم‌های مختلف از قبیل Develop و Test و Operation می‌باشد. یعنی راه ارتباط این تیم‌ها برای استاندارد شدن فرآیندها از طریق امکانات و سرویس‌هایی هست که یک نیروی DevOps راه اندازی می‌کند.

حال به تصویر زیر که بسیار معروف هست توجه کنید که تمامی چرخه را مشخص می‌کند .

همانطور که در عکس بالا مشاهده می‌کنید کار نیروی DevOps از دو قسمت زیر تشکیل شده است.

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

 

چرخه Dev

در این چرخه چهار مرحله plan و code و build و test وجود داشت که به ترتیب ابزار‌های موجود در هریک را نام می‌برم و راجع به هریک توضیح مختصری می‌دهم

مرحله plan و مرحله code

در این دو مرحله چون عمده کار (تقریبا همه کار) توسط تیم توسعه و برنامه نویسان انجام می‌شود و از طرفی به دلیل تنوع در شیوه انجام کار و همچنین زبان برنامه نویسی, خیلی نیروی DevOps درگیر این مراحل نیست . فقط برای نگهداری کد از سرویس گیتلب (gitlab) عمدتا استفاده می‌شود.

مرحله build

در این مرحله بسته به زبانی که برنامه با آن نوشته شده میتواند ابزارهای مختلفی استفاده کرد . برای نمونه شیوه build کردن یک برنامه با زبان nodeJS با ابزار npm صورت میگیرد. یا برای جاوا ابزار maven مناسب هست و همچنین معمولا برای مشاهده نتیجه build معمولا سورس کد را در قالب یک کانتینر container با ابزار داکر docker ارایه می‌دهند .

مرحله test

این مرحله یکی از مهمترین مراحل این چرخه هست که باید بسیار با دقت انجام شود. انتخاب ابزار در این مرحله بستگی دارد به این که ما چه مدل تستی را انجام میدهیم و اینکه چه چیزی را قرار است تست کنیم. برای نمونه برای تست استرس و پرفورمنس http ابزارهای tsung و apache jmeter مناسب هست. یا برای اینکه فانکشنالیتی یک سرویس را تست کنیم ابزار katakon studio و یا selenium مناسب هست و همچنین برای تست API هم میتوانید از این دو ابزار استفاده کنید که به صورت کامل رفتار یک کاربر در وبسایت شما را شبیه سازی می‌کنند .

 

چرخه Ops

مرحله release

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

مرحله deploy

در این مرحله از ابزارهای اتومیشن مانند Ansible و chef و puppet و … استفاده می‌شود

مرحله operates

این مرحله و مرحله قبل deploy اکثر جاها یکجا پیاده سازی می‌شوند و ابزارها یکسان هست

مرحله monitor

در این مرحله هم معمولا از ابزارهای (ELK (Elasticsearch , Logstash , Kibana و zabbix و grafana استفاده می‌شود.

 

نکته بسیار مهم

برای اتوماتیک کردن تمامی این کارها و به اصطلاح پیوسته کردن کل فرآیند از ابزارهای gitlab و jenkins استفاده می‌شود.

 

یک داستان

برای درک بهتر مطالب بالا میخوام در قالب یک داستان مراحل رو توضیح بدم

خروج از نسخه موبایل