دوآپس یه مفهومی هست که این روزها خیلی جاها راجع بهش میشنوید و میخونید . در واقع این روزها کمتر شرکت و یا کسبوکاری هست که در زمینه آیتی کار کنه و نیاز به نیروی متخصص DevOps نداشته باشه . علاوه بر نیاز بالای بازار کار به این تخصص خوبه بدونید که خیلیا هم هستند که در حال برنامه ریزی برای وارد شدن به این تخصص هستند و تصمیم دارند تا در آینده در این حرفه فعالیت داشته باشند . ولی اینکه DevOps چه کسی هست و چه کارهایی باید بلد باشه رو در ادامه براتون توضیح میدم .
در گذشته نه خیلی دور (حدود ۹ یا ۱۰ سال پیش) که استفاده از سیستم عامل لینوکس در ایران فراگیر شد و خیلی از شرکتها به ضرورت استفاده از این سیستم عامل پی بردند بازار کار آیتی در ایران میطلبید که سیس ادمین یا یا همون Linux System Administration زیاد جذب بشه . در حقیقت خیلی از شرکتها و کسبوکارها نیاز داشتند که یک شخصی یا گروهی وجود داشته باشند که بتوانند از پس کارهای مربوط به سرورهای لینوکسی و سرویسهای مورد نیازشون بر بیان و یا اینکه زیرساخت سرویسهای فعلی رو به سمت لینوکس سوق بدهند .
این دوره چند ساله که تا الان هم ادامه داره دورهای است که متخصصهای زیادی در زمینه لینوکس وارد بازار کار شدند و به عنوان Linux System Admin در کسبوکارها مشغول به کار شدند .
عمده کار سیس ادمینها راه اندازی و نگهداری سرویسها و سرورهای لینوکسی بود که قرار بود اپلیکیشنهای برنامهنویسها روی این سرورها اجرا بشه و به کاربران خدمت رسانی کنند .
این به این معنی هست که در هر شرکت و کسبوکاری دو تیپ متخصص مربوط به سرویس مشاهده میشود
۱. برنامه نویسها که وظیفه تولید و توسعه اپلیکیشن ها و برنامه ها رو بر عهده دارند
۲. سیس ادمینها که وظیفه راهاندازی و نگهداری از سرویسها و سرورهای لینوکسی رو برعهده دارند
و به صورت کاملا طبیعی این دو گروه دانش زیادی از کار و تخصص همدیگر ندارند و تعامل بین آنها کمی با مشکل روبرو میشد که در ادامه به برخی از اونها اشاره میکنم
موارد بالا برخی از مشکلات بوجود آمده در یک شرکت آیتی بود که اشاره کردیم
برای برطرف نمودن مشکلات نام برده شده جای خالی یک شخص یا یک تیمی احساس میشود که بتواند کارهای زیر را انجام دهد
پس تا الان اگه بخوایم ارتباط DevOps رو با سایر گروههای مرتبط با یک شکل نشان بدیم میتواند به صورت زیر باشد .
با توجه به تصویر بالا DevOps نقطه مشترک تیمهای مختلف از قبیل Develop و Test و Operation میباشد. یعنی راه ارتباط این تیمها برای استاندارد شدن فرآیندها از طریق امکانات و سرویسهایی هست که یک نیروی DevOps راه اندازی میکند.
حال به تصویر زیر که بسیار معروف هست توجه کنید که تمامی چرخه را مشخص میکند .
همانطور که در عکس بالا مشاهده میکنید کار نیروی DevOps از دو قسمت زیر تشکیل شده است.
حال که از چرخه اصلی و مراحل انجام کار در کل فرآیند مطلع شدیم بیایید با نام ابزارهایی که یک متخصص DevOps با آنها درگیر است آشنا شویم
در این چرخه چهار مرحله plan و code و build و test وجود داشت که به ترتیب ابزارهای موجود در هریک را نام میبرم و راجع به هریک توضیح مختصری میدهم
در این دو مرحله چون عمده کار (تقریبا همه کار) توسط تیم توسعه و برنامه نویسان انجام میشود و از طرفی به دلیل تنوع در شیوه انجام کار و همچنین زبان برنامه نویسی, خیلی نیروی DevOps درگیر این مراحل نیست . فقط برای نگهداری کد از سرویس گیتلب (gitlab) عمدتا استفاده میشود.
در این مرحله بسته به زبانی که برنامه با آن نوشته شده میتواند ابزارهای مختلفی استفاده کرد . برای نمونه شیوه build کردن یک برنامه با زبان nodeJS با ابزار npm صورت میگیرد. یا برای جاوا ابزار maven مناسب هست و همچنین معمولا برای مشاهده نتیجه build معمولا سورس کد را در قالب یک کانتینر container با ابزار داکر docker ارایه میدهند .
این مرحله یکی از مهمترین مراحل این چرخه هست که باید بسیار با دقت انجام شود. انتخاب ابزار در این مرحله بستگی دارد به این که ما چه مدل تستی را انجام میدهیم و اینکه چه چیزی را قرار است تست کنیم. برای نمونه برای تست استرس و پرفورمنس http ابزارهای tsung و apache jmeter مناسب هست. یا برای اینکه فانکشنالیتی یک سرویس را تست کنیم ابزار katakon studio و یا selenium مناسب هست و همچنین برای تست API هم میتوانید از این دو ابزار استفاده کنید که به صورت کامل رفتار یک کاربر در وبسایت شما را شبیه سازی میکنند .
در این مرحله قرار است که پس از موفقیت آمیز بودن تست ها یک نسخه از نرمافزار و ارایه شود. معمولا این کار را در همان سرویس gitlab انجام میشود.
در این مرحله از ابزارهای اتومیشن مانند Ansible و chef و puppet و … استفاده میشود
این مرحله و مرحله قبل deploy اکثر جاها یکجا پیاده سازی میشوند و ابزارها یکسان هست
در این مرحله هم معمولا از ابزارهای (ELK (Elasticsearch , Logstash , Kibana و zabbix و grafana استفاده میشود.
برای اتوماتیک کردن تمامی این کارها و به اصطلاح پیوسته کردن کل فرآیند از ابزارهای gitlab و jenkins استفاده میشود.
برای درک بهتر مطالب بالا میخوام در قالب یک داستان مراحل رو توضیح بدم
و در آخر اگه دوس دارید که لینوکس رو به صورت کاملا رایگان یاد بگیرید و دانش خودتون رو به اشتراک بگذارید و یا اینکه از دانش دیگران بهره ببرید به وبسایت ما sudoer یه نگاهی بندازید