برنامه نویسی

الزامات نقش برای یک متخصص DevOps

به بازگشت خوش آمدید، و امیدوارم فرصتی برای مرور منابع و ارسال پست در روز اول از #120DaysOfDevOps داشته باشید. در اولین پست خود، به طور خلاصه به مفهوم DevOps پرداختیم، اما اکنون زمان آن رسیده است که عمیق‌تر بگردیم. درک این نکته مهم است که ایجاد یک برنامه کاربردی شامل دو بخش اصلی است: توسعه و عملیات.

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

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

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

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

توسعه دهندگان با استفاده از پشته های فناوری مختلف، زبان های برنامه نویسی، ابزارهای ساخت و مخازن کد برنامه ها را ایجاد می کنند. به عنوان یک مهندس DevOps، کد برنامه را نمی نویسید، اما باید درک خوبی از مفاهیم، ​​سیستم ها، ابزارها و فرآیندهایی که توسعه دهندگان استفاده می کنند داشته باشید.

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

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

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

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

چرخه حیات مدیریت برنامه DevOps

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

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

ایجاد/توسعه اپلیکیشن

بیایید یک برنامه کاملاً جدید را به عنوان مثال در نظر بگیریم. در ابتدا، چیزی ایجاد نشده است، و به عنوان یک توسعه دهنده، باید الزامات را با مشتری یا کاربر نهایی خود در میان بگذارید و برنامه ای برای برنامه خود ارائه دهید.

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

انتخاب IDE و زبان برنامه نویسی مناسب در این مرحله مهم است، اما از نظر ابزارسازی به چیزی بیشتر از این نیاز نخواهید داشت.

شایان ذکر است که برنامه را می توان به هر زبانی نوشت، اما باید با استفاده از یک سیستم کنترل نسخه مانند Git نگهداری شود. ما بعداً Git را به تفصیل پوشش خواهیم داد، از جمله بهترین روش‌ها برای همکاری روی کد با توسعه‌دهندگان دیگر.

هنگام توسعه یک برنامه، این احتمال وجود دارد که چندین توسعه دهنده روی پایگاه کد کار کنند. در چنین مواردی، یک مخزن کد برای ذخیره و همکاری در تغییرات کد ضروری است. گزینه های زیادی برای مخازن کد مانند GitHub یا GitLab وجود دارد که می توانند به صورت عمومی یا خصوصی میزبانی شوند. در ادامه به عنوان بخشی از بخش Git خود، به مخازن کد و استفاده از آنها با جزئیات بیشتری خواهیم پرداخت.

آزمایش کردن

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

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

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

ادغام

یکپارچه‌سازی یک روش حیاتی در چرخه عمر DevOps است، زیرا به توسعه‌دهندگان این امکان را می‌دهد که تغییرات را در کد منبع به دفعات بیشتر انجام دهند – برای مثال به صورت روزانه یا هفتگی.

با هر commit، برنامه به طور خودکار می تواند مراحل مختلف آزمایشی را طی کند و امکان تشخیص زودهنگام باگ ها و مشکلات را قبل از رفتن به مرحله بعدی فراهم می کند.

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

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

گسترش

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

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

ما در چند هفته آینده عمیق‌تر به این موضوعات می‌پردازیم، و درک می‌کنیم که آنها چیست و چه زمانی باید از آنها استفاده کنیم تا دانش بنیادی بهتری به دست آوریم.

نظارت بر

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

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

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

علاوه بر این، مشارکت تیم های FinOps در این فرآیند مستمر بسیار مهم است. از آنجایی که برنامه‌ها و داده‌ها در جایی اجرا می‌شوند و ذخیره می‌شوند، نظارت مداوم بر آنها ضروری است تا اطمینان حاصل شود که هرگونه تغییر در منابع باعث دردسر مالی قابل توجهی در صورت‌حساب‌های Cloud شما نمی‌شود.

شایان ذکر است که در حالی که موقعیت های مهندسی DevOps زیادی در بازار وجود دارد، این عنوان نباید هدف اولیه برای هر کسی باشد. در عوض، فرهنگ و فرآیندهای DevOps باید در موقعیت‌های مختلفی مانند مهندس/معمار Cloud-Native، مدیر مجازی‌سازی، معمار/مهندس ابر و سرپرست زیرساخت اتخاذ شوند. فرآیند DevOps برای موقعیت‌ها و حوزه‌های متعدد اعمال می‌شود که با عبارت «مهندس DevOps» مشخص شده است.

منابع

ممنون که وقت گذاشتید و با من یاد گرفتید، امیدوارم فردا دوباره شما را ببینم.

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

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

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

دکمه بازگشت به بالا