
برای اینکه بدانیم DevOps دقیقا چیست، بهتر است با معنی و توضیحاتی که در ویکی پدیا تحت این اصطلاح داده شده است شروع کنیم. با آخرین اخبار همراه باشید…
طبق ویکی پدیا، DevOps مخفف عبارت زیر است:
DevOps یک فرآیند تحویل نرم افزار است که بر ارتباطات و همکاری از مفهومی به بازار دیگر، از جمله مدیریت تولید، توسعه نرم افزار و عملیات تخصصی مرتبط تاکید دارد. DevOps همچنین فرآیندهای تکمیل نرم افزار و ساخت، آزمایش، تنظیم و تغییر زیرساخت آن را خودکار می کند. هدف از این فرآیند ایجاد فضا و شرایطی است که در آن امکان ساخت، تست و ارائه نرم افزار با سرعت، اطمینان و اعتماد بیشتر و به طور مکرر وجود داشته باشد.
این تعریف تعریف خوبی است، اما به نظر می رسد یک نکته را در نظر نمی گیرد. تفاوت زیادی بین قابل اجرا بودن یک برنامه به صورت مجزا (در خلاء) و امکان اجرای همان برنامه در یک محصول تولیدی وجود دارد، متأسفانه در اکثر مواقع، این تفاوت زمانی که زمان بررسی و تعیین می رسد از بین می رود. . برای ساختن یک محصول موفق ضروری است، معمولا نادیده گرفته می شود.
برای درک بهتر کاری که مهندسان DevOps انجام می دهند، بیایید نگاهی به چرخه توسعه نرم افزار بیندازیم. این چرخه دارای پنج قسمت اصلی است که عبارتند از: طراحی و برنامه ریزی، ساخت، تست، تنظیم و نگهداری، البته تجربه نشان داده است که مهندسان DevOps بیشتر وقت خود را در دو فاز طراحی و برنامه ریزی و نگهداری می گذرانند. اما در نظر داشته باشید که مراحل فوق دقیقاً به یک ترتیب انجام نمی شود و گاهی با یکدیگر ترکیب می شوند و گاهی به طور همزمان انجام می شوند.
طراحی و برنامه ریزی
در این مرحله اعضای تیم (ایده ها، مدیران تولید…) اهداف پروژه را تشریح می کنند. در این مرحله باید در مورد طراحی کلی نرم افزار تصمیم گیری کنند.
بخش مهمی که یک مهندس DevOps باید در این مرحله انجام دهد. این است که از دانش فنی آنها در مورد ویژگی های یک پلت فرم برای ساختن و تعیین اینکه چگونه می توان این ویژگی های پراکنده را کنار هم قرار داد و به یک سیستم منسجم و مجزا تبدیل کرد، استفاده کرد. پس از طراحی و تکمیل سیستم پایه، آنها به نحوه ادغام یک فناوری جدید در سیستم موجود نگاه می کنند.
این می تواند به شکل برنامه ریزی و طراحی برای هر یک از موارد زیر باشد: نحوه ایجاد یک لایه هماهنگی، نحوه راه اندازی یک پایگاه داده جدید، نحوه پشتیبانی از یک زیرساخت جدید نازک ارائه خدمات. این مهندسان همچنین باید نحوه نگهداری و اتوماسیون این سیستم و فناوری همراه آن را نیز در نظر بگیرند. در واقع، مهندسان DevOps همیشه باید راهی برای خودکارسازی وظایف و خلاص شدن از شر وظایف دستی پیدا کنند.
سوالات متداول در این مرحله عبارتند از:
- چگونه دو سرویس مختلف را به هم متصل کنیم؟
- کدام پروتکل باید برای این ارتباط استفاده شود؟
- آیا برای این کار باید نگران سخت افزار باشم یا از سرورهای مجازی استفاده کنم؟
- مهندسان باید به صورت قانونی چه چیزی بسازند تا بتوانم در ساخت آن به آنها کمک کنم؟
- خدمات آماده تولید چیست؟
- همه نرم افزارهایی که نیاز داریم چگونه اجرا می شوند؟
- آیا ما می توانیم تمام سرویس های وابسته در سیستم را کنترل کنیم و آیا این سرویس ها را به طور کامل می شناسیم تا در صورت نیاز بتوانیم مشکلات را برطرف کنیم؟
- ساختن سیستم بهتر است یا خرید؟
- آیا این سیستم می تواند به تنهایی اجرا شود؟
- چگونه می توان از این سیستم در آینده پشتیبانی کرد؟
ساخته شده است
در این مرحله بیشتر خصوصیات شغلی مشخص می شود و بیشتر کار انجام می شود. طراحان بین خود صحبت می کنند، قهوه می نوشند، برنامه های لازم را می نویسند و در نهایت محصول نهایی را ارائه می دهند.
هدف اصلی یک مهندس DevOps در این مرحله، سرعت بخشیدن به کارها برای عبور از این مرحله است. یعنی این مهندسان باید شرایطی را ایجاد کنند تا طراحان در سریع ترین زمان ممکن و به بهترین و مناسب ترین شکل به نتیجه نهایی یعنی تولید سیستم برسند.
در این مرحله وجود برخی تجهیزات مهم می شود. بهتر است بگوییم که مهندس DevOps وقت خود را صرف کنار هم قرار دادن این زیرساخت های جالب و جذاب می کند که ممکن است توانایی تعمیر خود و خود ارزیابی و غیره را داشته باشند. اما اگر این نرم افزار که توسط طراحان ساخته شده در شرایط دیگری ساخته می شد، بیشتر شکوه و زیبایی خود را از دست می داد.
بدیهی است که ما نمیتوانیم اطمینان حاصل کنیم که شرایط و شرایط طراحان در هنگام ایجاد یکسان با محصول است – این کاملاً عملی نیست، اما میتوانیم این دو شرایط را تا حد امکان مشابه کنیم. وجود کانتینرها نشان دهنده این است که امروزه امکان شبیه سازی این موقعیت ها وجود دارد، البته قبل از وجود لوازم خانگی و ماشین های مجازی نیز می توانستند این موقعیت های مشابه را تا حدودی ایجاد کنند.
در این مرحله، مهندسان DevOps با این سوالات روبرو هستند:
- چگونه می توانند به طراحان اجازه دهند تا از ابزار مورد نظر خود استفاده کنند، در حالی که شرایط محیط تولید را دارند؟
- چگونه می توانند شرایطی را برای کارآمدتر شدن طراحان ایجاد کنند؟
- چگونه می توانند شرایط محیطی مورد نظر را برای استفاده از نرم افزار به طراحان آموزش دهند؟
استفاده کنید
طراح، QA و بقیه این سیستم را تست می کنند.
آنها تمام ابزارها و دستورات را به گونه ای تنظیم می کنند که این سیستم به طور خودکار اجرا شود، اما در پایان روز، آنها همچنان باید به صورت دستی سیستم را روی دستگاه های خود اجرا کنند. اگر بخواهیم این سیستم را در شرایط تولیدی یا نیمه تولیدی تست کنیم چه؟ اگر برنامه آزمایشی خیلی کند اجرا شود یا تجهیزات میزبان را برای عملکرد قابل قبول غرق کند، چه؟ چنین آزمایشاتی را نمی توان در شرایط محدود انجام داد، بلکه باید در شرایط ثابت و به طور خودکار انجام شود. DevOps راه حل این مشکل است.
مهندسان DevOps نقشی کلیدی در شناسایی و راهاندازی زیرساختی دارند که این آزمایشها را به طور مکرر انجام میدهد. آنها زیرساختی را تشکیل می دهند که می توان به جنکینز، بامبو یا هواپیمای بدون سرنشین به عنوان نمونه هایی از این زیرساخت ها اشاره کرد. این زیرساختها ابزارهای ادغام پیوسته (CI) هستند که بخش عمدهای از پیکربندی پیچیده سیستمهای آزمایشی را تشکیل میدهند.
سوالات این مرحله:
- چگونه شرایط تکرارپذیر مشابه شرایط مشتریان ایجاد کنیم؟
- چگونه می دانید که کدام نسخه از سرویس در حال بررسی و آزمایش است؟
- چگونه می توان کارآزمایی ها را دنبال و ردیابی کرد تا تغییرات را مشاهده کرد؟
- چگونه می توان به طراحان از شرایط ساخت و ساز اطلاع داد؟
- از کجا می توانم اطلاعاتی در مورد آزمایش پیدا کنم؟
تنظیم
برنامه نوشته شده را وارد محیطی کنید که در این مقاله به عنوان محیط تولید در نظر گرفته شده است.
چه تعداد از ویژگی ها و امکانات برنامه توسعه یافته به محیط تولید منتقل شده و در نهایت به دست کاربران نهایی می رسد؟ مرحله تعدیل به این سوال پاسخ می دهد. مهندسان DevOps معمولاً از ابزارهایی مشابه ابزارهای CI که قبلاً ذکر شد برای یافتن پاسخ این سؤال استفاده می کنند.
یافتن پاسخ سوالاتی مانند:
- چه زمانی یک سیستم ساخته شده برای استفاده آماده است؟
- چگونه می توان بدون در نظر گرفتن مشتریان از یک سرویس استفاده کرد؟
- چگونه مطمئن شویم که سرویسی که به تازگی مستقر شده است دلیل رگرسیون نیست؟
- چگونه از یک سرویس به صورت خودکار استفاده کنیم؟
- چگونه مراحل کار دستی را در یک سیستم خودکار وارد کنیم؟
- چگونه یک محصول آماده برای مصرف تهیه کنیم؟
- چگونه می توان یک محصول را بارها و بارها استفاده کرد؟
نگهداری
بخش بزرگی از زمان مهندسان DevOps به این مرحله اختصاص دارد. در واقع گوگل دپارتمانی دارد که به طور کامل به کار با این افراد اختصاص داده شده است، این بخش SRE نام دارد.
این مرحله در واقع مرحله ای است که با کارکردها و ابزارهای خود یک سیستم را به چیزی تبدیل می کند که برای بسیاری از کاربران قابل اجرا و در دسترس است.
این کارها و ابزارها شامل سوالاتی مانند:
- چگونه می توان از عیوب یک محصول تولیدی آگاه شد؟
- هنگامی که یک باگ در یک محصول رخ می دهد، چگونه می توان آن را به تیم اشکال زدایی نشان داد؟
- چگونه مشکلات زیرساختی محصول در حال تولید را برطرف کنیم؟
- مهندسان چگونه باگ های محصول را در خدمات خود برطرف می کنند؟
- چگونه می توان سلامت خدمات ارائه شده را پیگیری کرد؟
- چگونه می توانیم خدماتی را ارائه دهیم که قادر به حل خودکار مشکلات و محاسبه بارهای ورودی باشد؟
نتیجه
DevOps در واقع ترکیبی از تمام نقش هایی است که تا به حال ذکر کردیم و طراح سیستم و مهندس را در کنار هم قرار می دهد. DevOps ارتباط بین توانایی اجرای یک برنامه به تنهایی و اجرای همان برنامه در یک محصول تولیدی است.
DevOps چیست؟ این اتفاق برای اولین بار در نوین رخ می دهد. ظاهر شد.