در گذشته یک مهندس شبکه نیازی نداشت درباره مهارتهای برنامهنویسی اطلاع زیادی کسب کند، تمام تخصص و دانشی که مهندسان شبکه به آن نیاز داشتند، چگونگی تعویض روترها، هماهنگ کردن روترها و سوییچها با یکدیگر از طریق دستورات پنجره خط فرمان، آشنایی با نحوه پیکربندی دستگاههای شبکه و نظارت بر ترافیک شبکه بود. اکنون شرایط تغییر کرده است. مهندس شبکه باید در یک بازار به شدت رقابتی با مبحث کدنویسی آشنایی کامل داشته باشد. اگر یک متخصص شبکه درباره مهارتهای برنامهنویسی اطلاعی نداشته باشد به سرعت از فهرست نامزدهای احراز یک شغل کنار گذاشته میشود، حتا اگر در رشته خود سطح بالایی از مهارتها را داشته باشد. در سالهای گذشته، نقشها و وظایف مهندسان شبکه در مدیریت زیرساختهای ابری گسترش یافته و بیشتر شده است. مجازیسازی عملکردهای شبکه (NFV) و شبکههای نرمافزار محور (SDN)، ایمنسازی زیرساختهای ارتباطی، تسهیل دسترسی کاربران یک سازمان به شبکههای نسل چهارم و پنجم ارتباطی و مواردی این چنینی تنها بخشی از این تغییر و تحولات هستند. این سیر تحولات نشان میدهند مرزهای میان یک مهندس شبکه و توسعهدهنده نرمافزار حذف شده و ضرورت آشنایی با مهارتهای برنامهنویسی برای مهندسان شبکه دوچندان شده است. درست است که برنامهنویسی یک مهارت مهم برای مهندسان شبکه در نظر گرفته نمیشود، اما آشنایی با نحوه کدنویسی مزایای روشنی برای مهندسان شبکه به همراه دارد که از آن جمله به موارد زیر میتوان اشاره کرد:
- صرفهجویی در وقت و زمان با خودکارسازی فرآیندها
- بهبود بهرهوری بر مبنای مدل زیرساخت به عنوان کد
- انعطافپذیری در انجام کارها
صرفهجویی در وقت و زمان با خودکارسازی فرآیندها
تا قبل از پیدایش و تکامل معماری SDN دستگاههای شبکه بر مبنای یک معماری مستقل طراحی میشدند. هر دستگاه باید به شکل دستی پیکربندی میشد و دسترسی به یک دستگاه در یک لحظه از طریق تلنت یا SSH و تایپ فرامین از طریق رابط خط فرمان (CLI) انجام میشد. هر تولیدکنندهای بر مبنای استراتژی خاص خود تجهیزات را تولید میکرد و مهندسان شبکه مجبور بودند برای پیکربندی صحیح دستگاهها، دانش شبکهای خود در مورد محصولات یک تولیدکننده را دائما بهروز نگه دارند. همچنین، بدون داشتن تجربه عملی پیکربندی صحیح دستگاههای تحت شبکه کار چندان سادهای نبود. در آن زمان مهندسان شبکه مجبور بودند ساعتهای متوالی به صفحهنمایش مانیتور خیره شوند و روترها را یکبهیک پیکربندی کنند و مسیرهای آدرسدهی ایستا را برای روترها مشخص کنند. حال تصور کنید یک مهندس شبکه مجبور بود دستکم برای 100 روتر یک چنین کاری را تکرار میکرد و امکان انجام اینکار به شکل یکپارچه وجود نداشت.
زبانهای برنامهنویسی میتوانند با خودکارسازی یکسری فرآیندهای تکراری به میزان قابل توجهی در زمان صرفهجویی کنند. در حال حاضر، فروشندگان سختافزارهای شبکه قابلیتهای بیشتری را از طریق رابط قابل برنامهریزی کاربردی (API) به محصولات خود اضافه کردهاند. متخصصان میتوانند از این رابطهای برنامهریزی کاربردی برای ساخت و استقرار برنامهها روی چند دستگاه استفاده کرده، در کوتاهترین زمان اطلاعات مربوط به پیکربندی دستگاههای مختلف را استخراج کرده، گزارشهای آماری و وضعیت دستگاهها را جمعآوری کرده و در قالب یک نمایش گرافیکی اطلاعات را مشاهده کنند. یک برنامه میتواند به مدیریت خطاها پرداخته و در صورت لزوم، تنظیمات را به حالت اولیه بازگرداند تا تاثیر منفی خطاهای به وجود آمده به حداقل برسد. به عبارت دقیقتر، برنامهنویسی دستگاههای شبکه انعطافپذیری و سفارشیسازی بیشتری را برای مهندسان شبکه به ارمغان آورده است. همچنین، کتابخانههای قدرتمندی شبیه به netmiko یا NAPALM که برای پایتون آماده شدهاند فرآیند خودکارسازی وظایف برای محصولات تولیدکنندگان مختلف را تسهیل کردهاند. رویکرد فوق به مهندسان شبکه مسلط به مهارتهای برنامهنویسی اجازه میدهد با سرعت بیشتری به مدیریت زیرساختهای شبکه بپردازند. تکرار منظم یکسری وظایف بهطور روزانه فرسودگی نیروی کار را به همراه دارد. این مشکل در تمامی مشاغل وجود دارد و باعث میشود متخصصان شاغل در صنایع مختلف پس از گذشت مدت زمانی از کار خود خسته شوند. در دنیای شبکه یکسری وظایف حالت تکراری دارند و سرپرستان شبکه مجبور هستند برای حصول اطمینان از عملکرد بدون مشکل شبکه، بررسیهای روزانه را انجام دهند. کلید حل این مشکل خودکارسازی وظایف است. راهکار فوق ضمن صرفهجویی در وقت و اجتناب از انجام کارهای خستهکننده تکراری و کاهش هزینهها یک فرآیند مدیریت ساختیافته را ارائه میکند. بنابراین مهندسان شبکه این فرصت را پیدا میکنند تا وقت خود را صرف انجام کارها یا پروژههای مهمتری کنند.
بهبود بهرهوری بر مبنای زیرساخت به عنوان کد
حفظ و نگهداری تنظیمات شبکه کار سادهای نیست. زمانی در شرکتی مشغول به کار شدم که متصدی مربوطه شغل خود را ترک کرده بود و من عهدهدار انجام وظایف او شدم. من به برخی اسناد، نمودارها و فایلهای پیکربندی تجهیزات شبکه دسترسی نداشتم، زیرا متصدی قبلی تمام اطلاعات را در ذهن خود ذخیره کرده بود و پس از ترک شرکت، اطلاعات را نیز با خود برد! به همین دلیل مجبور شدم تک به تک به سراغ روترها و سوییچها بروم، اطلاعات مربوط به پیکربندی تجهیزات را جمعآوری کنم و سعی کنم دلیل بهکارگیری برخی تنظیمات را درک کرده، به مستندسازی اطلاعات پرداخته و یک نمودار دقیق در مورد شبکه شرکت ترسیم کنم. در آن زمان از اعمال تغییر در پیکربندیها هراس داشتم و اطمینان نداشتم در صورت اعمال تغییر در تنظیمات ممکن است چه اتفاقاتی به وجود آید. هر بار که تصمیم میگرفتم تنظیمات را تغییر دهم، ابتدا پیکربندیهای انجام شده را بررسی میکردم، مطمئن میشدم پس از اعمال تغییرات همه دستگاهها و سرویسها بدون مشکل کار خواهند کرد، اسناد و نمودارهای شبکه را به شکل دائم بهروز میکردم و اطلاعات مربوط به پیکربندی را ذخیره میکردم. به عبارت دقیقتر برای هر تغییر - هرچند کوچک- یک بهروزرسانی در تمامی مستندات انجام میدادم. امروزه یک چنین کاری دیگر قابل قبول نیست، زیرا باعث خستگی مفرط متخصصان شده و همواره این احتمال وجود دارد که برخی از نکات نادیده گرفته شود. تصور کنید در سازمان بزرگی هستید که متشکل از سوییچها، روترها، شبکهها و زیرشبکههای مختلفی است و در نظر داشته باشید برای هر تغییر کوچک اسناد زیادی را بهروزرسانی کنید. از طرفی پیشرفتهای مستمر فناوریاطلاعات باعث پدید آمدن دستگاههای تحت شبکه قابل برنامهریزی شده که ظرفیت بهکارگیری مفهومی بهنام زیرساخت به عنوان کد را برای پیادهسازی کامل یک شبکه فراهم کردهاند. همچنین این امکان وجود دارد که بتوان دستگاههای شبکه را به عنوان بخشی از IoC در نظر گرفت. در این مکانیزم، فایلهای پیکربندی متشکل از دادههای ساختیافته قابل فهمی هستند که برای ساخت آنها از فناوریهایی شبیه به JSON، YAML یا XML استفاده میشود و درون سامانههای ذخیرهسازی که برای مدیریت پروژهها استفاده میشوند شبیه به گیت، پوپت، Ansible و نمونههای مشابه ذخیره میشوند. در نتیجه این امکان وجود دارد تا تاریخچه مربوط به تغییرات اعمال شده در زیرساختهای یک شبکه را درون مکان واحدی ذخیرهسازی و پیگیری کرد. زمانی که قرار است تغییراتی به وجود آیند، این امکان وجود دارد تا ویژگیها یا تنظیمات جدید را در یک محیط مجازی آزمایش کرده و زمانی که اطمینان حاصل شد همه چیز در صحت و سلامت کار میکند و آزمایشها با موفقیت به سرانجام رسیدهاند، پیکربندیها را بهطور خودکار در محیط واقعی پیادهسازی کرد. در گذشته زمانی که قرار بود تغییرات به شیوه دستی در پیکربندیها اعمال شود، احتمال بروز خطای انسانی زیاد بود، اما اعمال تغییرات به شکل خودکار اجازه میدهد سامانهها به راحتی بهروزرسانی شده و نگرانی از بابت قطع دسترسی به خدمات شبکه را تهدید نکند.
به درخواستها پاسخ داده و شبکه را به سمت جلو هدایت کنید
فناوریها و ابزارهای جدیدی به دنیای فناوریاطلاعات وارد میشوند. رایانش ابری، اینترنت اشیا، هوش مصنوعی، یادگیری ماشین و تجزیه و تحلیل بزرگ دادهها تنها بخشی از تغییرات بنیادین فناوریاطلاعات در سالهای اخیر هستند. در بطن تمامی این فناوریها شبکههای کامپیوتری قرار دارد. شبکههایی که به اشکال مختلف در سازمانها پیادهسازی میشوند. افرادی که آشنا به مباحث برنامهنویسی هستند به راحتی نحوه عملکرد این فناوریها را درک کرده و سعی میکنند از فناوریهای نوین در انجام وظایف کاری خود استفاده کنند. شما میتوانید خدمات نوین را با برنامههای کاربردی خود ادغام کنید، به شرطی که مهارتهای برنامهنویسی را فرا گرفته باشید. بهطور مثال، میتوانید یک برنامه کاربردی طراحی کنید که در تعامل با بلندگوهای هوشمندی همچون اکو آمازون یا گوگل هوم باشد و از طریق فرامین صوتی وضعیت شبکه را بررسی کرده و اگر مشکلی وجود داشت فرآیند عیبیابی را آغاز کرده و گزارشهای مربوطه را برای شما ایمیل کند. در یک چنین سناریویی مهندسان شبکه ناآشنا به مهارتهای برنامهنویسی از این غافله عقب مانده و مجبور هستند تمامی کارها را به شیوه دستی انجام دهند. اگر سطح مهارتهای شما در این حوزه در حد عالی باشد و به خوبی بدانید که چگونه باید این فناوریها را با یکدیگر مرتبط کنید، شانس شما برای احراز مشاغلی با درآمدهای خوب در شرکتهای بزرگ زیاد خواهد بود. خلاصه اینکه، این روزها برنامهنویسی یک مهارت ضروری و راهگشا برای مهندسان شبکه است. شرایط حاکم بر بازار کار مهندسان شبکه نشان میدهد در آینده نزدیک تسلط بر کدنویسی به یک مهارت ضروری برای مهندسان شبکه تبدیل خواهد شد.
یک مهندس شبکه چه مسئولیتهایی دارد؟
مهندس شبکه یک متخصص فنی است که وظیفه برنامهریزی، طراحی، کنترل و مراقبت از شبکههای کامپیوتری را عهدهدار است. رشد گسترده شبکههای کامپیوتری باعث شده تا تقاضا برای جذب مهندسان شبکه پیوسته در حال رشد باشد. بهطور مثال، یک مهندس شبکه مسلط بر سیستمعامل لینوکس بازار کار بهتری نسبت به فردی دارد که تنها با مباحث نرمافزاری و سختافزاری شبکه آشنا است، زیرا این فرد بهطور مستمر فناوریهای روز را دنبال میکند و درباره تغییرات مختلفی که ممکن است بر شغل او تاثیرگذار باشد اطلاعات کافی دارد.
شبکهسازی نرمافزار محور
شبکههای نرمافزار محور در چند سال گذشته با استقبال چشمگیری روبرو شدهاند. شبکههایی که نرمافزار شالوده آنها را شکل داده و آشنایی با زبانهای برنامهنویسی به منظور کدنویسی برخی از وظایف مرتبط با این شبکهها، کلید احراز مشاغل مرتبط با آنها است.
آیا یک مهندس شبکه باید مسلط به زبانهای برنامهنویسی باشد؟
با مطالعه این مطلب، ممکن است سوال کنید که باید به سراغ یادگیری زبانهای برنامهنویسی بروم؟ پاسخ مثبت است. همچنین، پیشنهاد میکنیم به سراغ یادگیری زبانهای برنامهنویسی همهمنظوره شبیه به پایتون و روبی بروید. برخی از متخصصان شبکه میگویند زمانی که ابزارهای مختلفی برای انجام وظایف مرتبط با شبکهها در دسترس است چه لزومی دارد به سراغ یادگیری مهارتهای برنامهنویسی برویم. واقعیت این است که ابزارهای در دسترس نمیتوانند به تمامی نیازهای کاری شما پاسخ دهند و از طرفی ابزارهایی شبیه به پوپت، Ansible و نمونههای مشابه از یکسری اصول برنامهنویسی پیروی میکنند. به همین دلیل لازم است در مورد اصول بنیادین برنامهنویسی اطلاعات کافی داشته باشید.
تسلط بر لینوکس و پاورشل
اگر در ارتباط با شل لینوکس و اسکریتنویسی پاورشل مایکروسافت دانش کافی داشته باشید، به راحتی میتوانید برخی از کارها را خودکارسازی کرده و به میزان قابل توجهی در وقت خود صرفهجویی کنید. زمانی که در مسیر یادگیری این فناوریها گام بردارید با کمترین زحمت ممکن با اصول و منطق برنامهنویسی آشنا خواهید شد. شبکه و امنیت دو مفهوم جدانشدنی از یکدیگر هستند، به همین دلیل پیشنهاد میکنیم به سراغ یادگیری لینوکس و به ویژه توزیع کالی بروید تا درباره مخاطرات امنیتی اطلاعات کافی به دست آورید.
یادگیری پایتون برای یک مهندس شبکه مهمتر از نان شب است!
پایتون هنوز هم یکی از محبوبترین زبانهای برنامهنویسی است و تقریبا بیشتر کارفرمایان از این موضوع اطلاع دارند. چرا پایتون محبوبترین زبان در این زمینه است و ما تاکید خاصی روی آن داریم؟ خوب، همانگونه که متوجه شدهاید، برنامهنویسی یک ضرورت برای مهندسان شبکه است. با این حال، هیچ شرکتی از یک مهندس شبکه انتظار ندارد بهطور کامل روی برنامهنویسی متمرکز شود، زیرا شرح وظایف یک مهندس شبکه از یک توسعهدهنده نرمافزاری که سالهای متمادی در این حوزه به فعالیت اشتغال داشته متفاوت است. پایتون در مقایسه با جاوا و سیپلاسپلاس ترکیب نحوی سادهتری دارد و پیچیدگیهای رایج این دو زبان را ندارد، در نتیجه یادگیری آن سادهتر است و به مهندسان شبکه اجازه میدهد برای انجام وظایف خود از کدهای سادهتر و روانتری استفاده کنند. پایتون اجازه میدهد با کدنویسی و بهکارگیری اسکریپتها بخش عمدهای از وظایفی که به شکل دستی انجام میشوند را خودکارسازی کنید و به سادهترین شکل به مدیریت و پیکربندی سرورها بپردازید. پایتون با کنترل دستگاههای مختلف و بهکارگیری واسطهای برنامهنویسی (API) اجازه میدهد به شکل دقیقتر و هوشمندانهتری با شبکههای نرمافزار محور ارتباط برقرار کنید. مهندسان شبکه میتوانند از پایتون برای ساخت اسکریپتهای خاصی که قرار است فعالیتهای مشخصی را انجام دهند استفاده کنند. فراموش نکنید کتابخانه استاندارد پایتون از پروتکلهای رایج شبکه پشتیبانی میکند که خود یک مزیت بزرگ به شمار میرود. یکی از مهمترین مزیتهای پایتون در کدنویسی مختصر خلاصه شده ، در نتیجه برای خودکارسازی یک وظیفه نیازی به نوشتن کدهای طولانی ندارید. در نهایت به این نکته توجه داشته باشید مهندسان شبکه مسلط به مهارتهای برنامهنویسی در شغل خود پیشرفتهای زیادی خواهند کرد. از طرفی، یادگیری یک زبان برنامهنویسی جدید هیچ ضرری ندارد و صرف وقت برای یادگیری یک زبان خیلی بهتر از هدر دادن وقت در شبکههای اجتماعی است.
به این مطلب چند ستاره میدهید؟(امتیاز: 4.5 - رای: 1)
- منبع: ماهنامه شبکه
- نویسنده: حمیدرضا تائبی