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

بیایید با نگاهی به یک برنامه در تلفن خود شروع کنیم. به عنوان مثال، بیایید برنامه YouTube را در نظر بگیریم که به ما امکان می دهد هر ویدیویی را که می خواهیم به راحتی تماشا کنیم (البته اگر از ایران خارج شوید). تصور اولین مرحله بسیار آسان است: یک عده از مهندسان برای آن کد می نویسند. آنها از یک زبان برنامه نویسی برای پیاده سازی تمام ویژگی هایی که باید داشته باشد استفاده می کنند. اما قبل از اینکه این برنامه در فروشگاه گوگل پلی یا اپ استور اپل قرار بگیرد، باید مراحل زیادی را طی کند.

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

devops

بیایید به عقب برگردیم و ساده تر صحبت کنیم. ما می توانیم این فرایند‌ها را فقط به دو مرحله تقسیم کنیم.

ابتدا توسعه دهندگان، کد می نویسند. این مرحله را توسعه می‌نامیم، بخش “Dev” کلمه “DevOps” مربوط به این مرحله است.

بعد، مرحله Operations را داریم، که بخش “Ops” از “DevOps” مربوط به این مرحله است. خب “Operations” چیست؟ به زبان ساده، تیم عملیات اطمینان حاصل می کند که این برنامه همه‌ی چیزهایی را که برای کار در دنیای واقعی نیاز دارد، را دارد. به عنوان مثال، برنامه ممکن است نیاز به دسترسی به برخی از سرورها، برای ذخیره جزئیات ورود کاربر در برخی پایگاه داده، به خاطر سپردن ویدیوهای مورد علاقه کاربر و غیره داشته باشد. بنابراین آنها مطمئن می شوند که تمام این زیرساخت وجود دارد و به درستی کار می کند تا از این برنامه پشتیبانی کند.

بین این دو مرحله توسعه و عملیات است که مشکلات زیادی می تواند ظاهر شود. بیایید نگاهی به چند مورد بیاندازیم.

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

” توسعه دهندگان کارتون عالی بود! ما فقط به یک تغییر کوچک در خط 127 نیاز داریم: ما باید اندازه حافظه اختصاص داده شده در این متغیر را کاهش دهیم تا مطمئن شویم که با سرورهای فعلی ما به خوبی کار می کند.” و به همین ترتیب، از مشکل جلوگیری می شود. توسعه دهندگان این تغییر را انجام می دهند، سپس کد توسط تیم DevOps تایید می شود و برنامه اکنون با سرورهایی که ما داریم به خوبی کار می کند. بنابراین این یکی از مسئولیت های یک مهندس DevOps است. آنها به نوعی پلی بین مراحل توسعه و عملیات هستند.

بیایید یک مشکل بزرگتر را بررسی کنیم. کد یک برنامه اغلب تغییر می کند. توسعه دهندگان به طور مداوم کد را اضافه، حذف و اصلاح می کنند. به این ترتیب، آنها می توانند ویژگی های جدید اضافه کنند، موارد را اصلاح کنند، عملکرد را بهبود بخشند و غیره. حال تصور کنید 30 توسعه دهنده در شرکت ما کار می کنند. هر 10 دقیقه یک کد به روز شده دریافت می کنیم. هر 10 دقیقه ما باید کد را بررسی کنیم، برنامه را بسازیم، چند آزمایش اولیه را روی سرورهایمان انجام دهیم و غیره. تصور کنید که مجبور هستید برای انجام این مراحل، هر 10 دقیقه، 20 دستور بنویسید، دوباره و دوباره و دوباره. خیلی سریع ناامید کننده می شد و توسعه دهندگان باید منتظر بمانند تا ما بتوانیم تأیید کنیم که کد آنها به خوبی کار می کند. این امر زمان تلف شده زیادی را برای همه به همراه خواهد داشت.

اکنون می‌توانیم در نهایت به آنچه که DevOps در هسته آن است بپردازیم.

به موقعیت هایی فکر کنید که ما همین الان بحث کردیم. آیا واقعاً به یک نفر نیاز داریم که هر بار که کد برنامه ما تغییر می کند وارد عمل شود؟ آیا کامپیوترها نمی توانند این کار را انجام دهند؟ آیا کامپیوتر نمی تواند به آن کد نگاه کند و آزمایش های عمومی انجام دهد تا از معتبر بودن آن مطمئن شود؟ آیا کامپیوتر نمی تواند آن کد را بگیرد و آن را کامپایل کند و آن را به یک برنامه تبدیل کند که می تواند روی تلفن اجرا شود؟ آیا نمی تواند آزمایش کند که این برنامه با سرورهایی که داریم به خوبی کار می کند؟ البته، می تواند!

devops

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

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

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

حالا می‌توانیم تصویر واضح‌تری ارائه کنیم و در مورد DevOps نتیجه‌گیری کنیم:

  • تیم DevOps همکاری بین توسعه و عملیات را بهبود می‌بخشد. یا به عبارت ساده تر، بین آنهایی که کد می نویسند و آنهایی که زیرساختی را می سازند که در آن کد اجرا می شود: سرورها، سرویس های ابری و غیره.
  • تیم DevOps یک خط تولید برای نرم افزار ایجاد می کند. آنها این کار را با اطمینان از خودکار بودن هر چیزی که نیازی به مداخله انسانی ندارد انجام می دهند. گام به گام، کد به تدریج از متن ساده به یک برنامه کاربردی کاملاً کاربردی تبدیل می شود که می تواند (همچنین به طور خودکار) به کاربرانی که به آن نیاز دارند تحویل داده شود.
  • تیم DevOps همچنین مسئولیت های دیگری نیز دارد تا مطمئن شود نه تنها برنامه با موفقیت راه اندازی شده است، بلکه به درستی کار خود را نیز ادامه می دهد. به عنوان مثال، آنها می توانند راه هایی را برای نظارت مستمر این برنامه و نحوه عملکرد آن در دنیای واقعی تنظیم کنند. به این ترتیب آنها می توانند به طور خودکار در صورت بروز خطاهای جدی هشدار دریافت کنند که به رفع سریعتر آنها کمک می کند

همه این موارد به یک شرکت اجازه می‌دهد تا نرم‌افزار را سریع بسازد، اغلب آزمایش کند و محصول نرم‌افزار نهایی را کارآمدتر ارسال کند

امیدواریم که این تصویر واضح تری از مسئولیت های یک مهندس DevOps ارائه دهد. و اگر می‌خواهید نگاهی به جنبه فنی چیزها بیندازید، و نوع ابزارهایی که اغلب در DevOps استفاده می‌شوند، می‌توانید مقاله “درک مفاهیم اساسی DevOps” را بررسی کنید و همچنین این مسیر یادگیری را برای شروع کار با DevOps بررسی کنید.

نوشته‌های مشابه

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

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