منوعات · شبكات الحاسوب Computer Networks

مبرمج الشبكات في عصر الشبكات المعرفة برمجياً (SDN)


مبرمج الشبكات في عصر الشبكات المعرفة برمجياً (SDN):

يقال ان الشبكات المعرفة برمجياً ستخلط عالم البرمجة بعالم الشبكات بعد ان كانا عالمين منفصلين الى حد كبير ولمدة طويلة ولكن هذا سيتطلب من مختصي كلا العالمين اكتساب مهارات جديدة فمهندسي الشبكات سيكون عليهم ان يكتسبوا مهارات برمجية كثيرة ليصمدوا امام التحديات التي يقدمها ال (SDN) وفي نفس الوقت ليكتسب المبرمجون لقب (مبرمجي شبكات) فلا بد لهم ان يكتسبوا الكثير من المهارات حول معمارية شبكات الانترنت وطرق ادارتها وهو ما ليس مطلوباً منهم حتى الان.

وبما اننا تحدثنا سابقاً في عن ما يحتاجه اي شخص للبدء في عالم الشبكات (انقر هنا لمزيد من المعلومات)، فاليوم سنأتي الى اجابة السؤال الاخر الذي يطرحه مختصي الشبكات عما يحتاجونه ليدخلوا عالم ال (SDN) بقوة وثقة؟

وللجواب على هذا السؤال سنتحدث بأسهاب عن هذا الموضوع مستندين الى مقال سابق منشور باللغة الانكليزية يمكن زيارته من الرابط التالي (انقر هنا).

حتى الان لم يكن على مهندسي الشبكات معرفة اي شيء عن البرمجة لأنهم اعتادوا على التعامل مع بيئة مهيكلة ومبرمجة مسبقاً لهم حيث تحتوي كل اجهزة الشبكات على نظام تشغيل (operating system) هو الذي يتحكم بهاردوير الجهاز والشبكة ككل بعد عمل اعداد (configuration) له ليخدم متطلبات المستخدم وبحسب موقعه في الشبكة (المحلية او العالمية).

sdn-3layers.gif

بمعنى اخر، لو اردنا بناء شبكة لزبون ما فنحن نعلم ان الاجهزة التي سنستخدمها والمنتجة من قبل شركة سيسكو او جونيبر او مايكروسوفت او (HP) او غيرها تحتوي بالفعل على نظم تشغيل تحتوي القواعد والهياكل المطلوبة مما يقصر وظيفة مهندس الشبكات على اعداد تلك الاجهزة (كل واحد على حدة) وربطها بالطريقة المطلوبة وعندها يتحول دوره الى المراقبة والصيانة فقط مع الاحتفاظ بفكرة ان نظام التشغيل لكل جهاز يعمل وفق بروتوكولات معلومة الاداء مسبقاً من قبل المهندسين.

ولكن مع مفهوم الشبكات المعرفة برمجياً فقد تغير الامر كثيراً، حيث علينا ان نقوم بعمل تطبيقات متحكمات (controllers) والتي توجه عشرات الالاف من المنافذ مع قابلية ال(virtualization) لكل منها. وبسبب هذا فقد ظهر عنوان وظيفي جديد لأدارة شبكات ال (SDN) الا وهو ” مبرمج الشبكات”. هذا الشخص يجب ان يمتلك معرفة كبيرة في هندسة الشبكات اضافة الى معرفة عميقة في واحدة (على الاقل) من اللغات القوية الفعالة ومن امثلتها (C,C++, C#, Java, Objective-C). هذا الشخص سيكون مسؤولاً عن البرمجة الفعلية لمتحكمات الشبكة المعرفة برمجياً (SDN controllers) والتي هي الواجهة الى الاجهزة المطلوب المراد التحكم بها.

فهم عالم البرمجة:

حين يأتي الامر الى البرمجة والوصول الى الاشياء وانجاز الوظائف بأستخدام الهياكل البرمجية فأن الامر سيكون مختلفاً تماماً. في البرمجة فنحن مجبرين على العمل ضمن نظم معينة وقواعد معينة متغيرة الى حد ما من نظام تشغيل الى اخر وهو امر عائم وغائم ومظلم الى حد كبير بالنسبة لمهندسي الشبكات الذين اعتادوا على معرفة ما يفعلون حين يأتي الامر الى اعداد (configure) جهاز ما او ربط شبكة ما.

“المشكلة لكثير من مختصي الشبكات انهم اعتادوا على التعامل مع الكثير من المتغيرات في بيئة العمل ولكن ليس في نظام تشغيل الاجهزة او الايعازات نفسها وهو ما سيشكل نقطة الاختلاف الكبرى بين شبكات اليوم وشبكات الغد”

البرمجة تسمح لنا بأستخدام قواعد وتراكيب برمجية (syntax) معينة ولكن ليس هناك قاعدة معينة تخبرك بكيفية تحقيق هدفك بأستخدام تلك الجمل البرمجية. كمثال فأن هناك شيئاً في لغات البرمجة اسمه الدوارة (loop) ولنفترض اننا نتعامل مع دوارة في لغة سي وهنا لدينا الدوراة بأستخدام (For) والدوارة بأستخدام (while) والدوارة بأستخدام (do-while) وكل منها لها شروط عمل خاصة وقد يمكننا استخدام اي منها في اي مكان وقد تحتاج بعض الاماكن الى احدها دون الاخرى مما يوفر مرونة في مكان ما وتقييداً في مكان اخر.

slide_3

المشكلة بالنسبة لكثير من مختصي الشبكات ان هناك الكثير من المرونة والمتغيرات في البرمجة مما يزيد من احتمالية الفشل وعمل الاخطاء في اي مكان من البرنامج ولأن البرامج تبنى بشكل تدريجي فقد تبني برنامجاً كبيراً ثم تدرك ان احد الخطوات في البداية فيها مشكلة مما يعني ان كل الخطوات اللاحقة يجب تعديلها.

“ان بيئة الشبكات فيها ما يكفيها من متغيرات وتعقيدات على فرض ثبوت السوفتوير لكل جهاز في الشبكة فكيف الحال لو كانت كل اجهزة الشبكة قابلة للتعديل على برمجياتها ونظم تشغيلها؟ ستتضاعف الصعوبة والتعقيد بشكل كبير طبعاً!”

الخطوة الاولى لتصبح مبرمج شبكات في عالم ال (SDN):

طبعاً الخطوة الاولى تختلف من شخص لأخر بحسب خلفيته العلمية ولكن الكثير من المختصين يفضلون ان تكون الخطوة الاولى هي التعامل مع سطر اوامر اللينكس او الويندوز بالعمل على بناء سكربتات (scripts) ولو بسيطة في البداية ثم تتطور مع الوقت وافضل ماكن للبدء به هو (Linux shell=BASH) او (Microsoft PowerShell scripting) حيث يوفر كلاهما الكثير من الادوات والموارد لأعانة المبتدئين على التقدم في هذا المجال وكلاهما مدعومات بشكل كبير من قبل كل المختصين في مجال ال (IT) ولذا فهناك الكثير من الموارد التعليمية لتعلم البرمجة في هذه البيئات.

ماذا بعد البرمجة النصية (Script programming

بعد فهم عملية استخدام الباش او الشيل في الويندوز او اللينكس فأول خطوة بعدها هي تعلم لغة برمجة مفسرة (interpreted) وافضل خيار في هذا المجال هو لغة بايثون (python) لما توفره هذه اللغة من مميزات والسهولة في التعلم ومرونة ومكتبات قل او توجد في غيرهام من اللغات عالية المستوى.

اخيراً فأن عملية الانتقال الى الشبكات المعرفة برمجياً هي ليست شيئاً يمكن تجنبه او الهرب منه او التخوف منه. وانما هي فرصة للتعلم والنمو والتطور. وللبعض منا فهي فرصة لأتقان مهارات جديدة لملء فراغ وظيفي لم يكن موجوداً مسبقاً. وعلى كل حال فالبرمجة لأي مختص في مجال تكنولوجيا المعلومات اصبحت اليوم مما لا مفر منه ولا غنى عنه وبتعلم البرمجة واستخدامها في حياتنا اليومية يمكننا ملاحظة كم تحل لنا من مشاكل وكم تغير من طريقة تفكيرنا وتعاملنا مع الامور.

 

Advertisements

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s