DevOps از جمله مهمترین حوزههای شغلی در دنیای IT بهشمار رفته و سالانه بسیاری از افراد فرایند یادگیری آن را شروع میکنند. اگرچه میتوان فرایند یادگیری مستقیم و سرراستی را برای DevOps در نظر گرفت اما همواره نکات و موضوعاتی هستند که تنها با تجربه بدست آمده و ممکن است در مسیر یادگیریتان با آنها روبرو نشوید. اما عمده سوالاتی که در مصاحبههای شغلی مطرح میشوند براساس استانداردهای عمومی آموزشهای DevOps هستند.
با در نظر گرفتن این موضوع، در این مطلب قصد داریم پر تکرارترین سوالات مصاحبههای شغلی مهندسین دوآپس را مطرح کنیم.
سوال اول: Continuous Integration چیست و در دنیای DevOps چه اهمیتی دارد؟
CI یا Continuous Integration (ادغام مداوم) رویکردی در دنیای توسعه نرمافزار است که در آن توسعهدهندگان بهصورت مداوم تغییرات کدهای خود را روی ریپازیتوری مرکزی قرار داده و بعد از آن فرایندهای خودکار Build و Test شروع میشود. این رویکرد به توسعه سریع نرمافزار و همچنین اطمینان از نبود مشکلات و باگهای نرمافزاری منجر میشود.
سوال دوم: منظور از Continuous Delivery چیست و چه تفاوتی با Continuous Deployment دارد؟
CD یا Continuous Delivery (تحویل مداوم) رویکردی دیگر در دنیای نرمافزار است که در آن تغییرات، Build و Test شده و برای دیپلوی یا استقرار آماده میشوند. از طرفی دیگر Continuous Deployment حالتی گسترش یافته از CD است که در آن تغییرات کدها بهصورت خودکار، بدون دخالت کارهای دستی، دیپلوی میشوند. هدف این رویکرد استقرار مداوم نرمافزار است.
سوال سوم: IaC یا Infrastructure as Code چیست و در دنیای DevOps چه نقشی دارد؟
IaC یکی از رویکردهای مهم در دوآپس است که در آن فرایند مدیریت و تهیهکردن زیرساختها بوسیله کُد صورت میگیرد و کارهای دستی در آن حذف میشود. اعمال این تکنیک در دنیای دوآپس به خودکارسازی بیشتر، کم کردن خطاها انسانی و مدیریت سریعتر منجر میشود. (برای آشنایی بیشتر با این موضوع میتوانید مطلب «IaC چیست؟» را مطالعه کنید.
سوال چهارم: چگونه از امنیت فرایندها در DevOps مطمئن میشوید؟
برقراری امنیت در دوآپس یک فرایند تمام نشدنی و مداوم است که شامل استفاده از تکنیکها، ابزارها و تکنولوژیهای مختلف میشود. برخی از بهترین رویکردها برای بهبود امنیت دوآپس شامل بازبینی کدها، خودکارسازی تستهای امنیتی، مدیریت ایمن پیکربندیها و مدلسازی تهدیدها میشود.
سوال پنجم: چرا و چگونه از داکر استفاده میکنید؟
زمانی که قصد توسعه اپلیکیشنی را داشته باشم از ساختار کانتینرها در داکر استفاده میکنم. کانتینرها به من این اجازه را میدهند تا سورس کد اپلیکیشن و نیازمندیهای آن را بهصورت یک پکیج مستقل داشته باشم و در فرایندی سریعتر و البته سادهتر، پروژه مورد نظرم را دیپلوی کنم. با پیکربندی نیازمندیهای پروژه در سیستم داکر، میتوانم به این اطمینان نیز برسم که اپلیکیشن من در محیطهای استقرار مختلف مانند Development و یا Production بهصورت یکپارچه عمل میکند.
سوال ششم: نقش Pod در کلاستر کوبرنتیز چیست؟
پاد کوچکترین و سادهترین واحد اجرایی در ساختار کوبرنتیز است. هر پاد نماینده یک پروسه در حال اجرا روی کلاستر است. از پادها بهمنظور میزبانی از یک یا چند کانتینر استفاده میشود. پادها میتوانند منابع خود را با کانتینرها به اشتراک بگذارند. این منابع میتواند فضای ذخیرهسازی، شبکه و… باشد. از آنجایی که یکی از اصلیترین اهداف کوبرنتیز ایجاد دسترسیپذیری بالا و مقیاسپذیری اپلیکیشن است، پادها با Ephemeral بودنشان به این قضیه کمک میکنند. برای آشنایی بیشتر با ساختار پادها میتوانید مطلب «Pod چیست؟» را مطالعه کنید.
سوال هفتم: برای پیادهسازی پایپلاین CI/CD چگونه عمل میکنید؟
فرایند کلی پیادهسازی پایپلاین برای من به این شکل است که ابتدا کدها روی گیت کامیت میشوند، سپس تستها بهصورت خودکار روی آنها اجرا میشود، کدها build شده و در نهایت روی محیط Test دیپلوی میشود. بعد از اینکه تمام کدها بهخوبی تست شدند و تاییدیه گرفتند برای دیپلوی شدن روی محیط Production آماده میشوند. برای پیادهسازی پایپلاین CI/CD از Jenkins و Travis CI استفاده میکنم (البته این ابزارها انتخابی شماست و میتواند هر ابزاری باشد).
سوال هشتم: چگونه امنیت اپلیکیشنها را در محیط ابری حفظ میکنید؟
در قدم اول، برای برقراری امنیت در محیط ابری از بهترین رویکردها و استانداردها اولیه استفاده میکنم: رمزنگاری اطلاعات حساس، آپدیت مداوم کتابخانهها و ابزارهای مختلف، مدیریت دسترسی کاربران و… . در مرحله بعدی سراغ استفاده از پروتکلهای امنیتی، بررسی لاگها، مانیتورینگ و… خواهم رفت.
سوالات دیگر
جدای از سوالاتی که عمدتا روی «چیستی» موضوعات تاکید دارند، سوالات دیگری نیز مطرح میشود که براساس تجربیات شما در کار با ابزارهای مختلف باید به آنها پاسخ داده شود. لیستی از این سوالات را در ادامه خواهید خواند:
- از تجربیات و دانشتان راجع به لینوکس بگویید.
- آیا تا به حال کوبرنتیز را برای یک سازمان بزرگ پیادهسازی کردهاید؟ چه چیزهایی یاد گرفتید؟
- از تجربیات قبلی خودتان راجع به پیادهسازی فرایندهای DevOps بگویید.
- تجربه کار با سرویسهایی مانند آمازون و گوگل کلود را دارید؟
در پایان
یکی از روشهای مناسب برای آماده شدن برای مصاحبههای شغلی، مطالعه سوالات پرتکراری است که در بیشتر مصاحبهها پرسیده میشود. از آنجایی که حوزه کاری دوآپس به نسبت دیگر حوزههای تکنولوژی در شرکتهای ایرانی نوپا است نمیتوان لیست بلند بالایی از این دست سوالات را تهیه کرد. به همین دلیل نیاز است که خودتان را برای سناریوهای مختلف آماده کرده و سوالات مختلف را بررسی کنید.
در این مطلب چند مورد از پرتکرارترین سوالات مصاحبههای شغلی DevOps مطرح شد و همچنین نمونههایی از سوالات تجربی آورده شدند.