اذهب إلى المحتوى

Ola Sobeh

الأعضاء
  • المساهمات

    8
  • تاريخ الانضمام

  • تاريخ آخر زيارة

آخر الزوار

لوحة آخر الزوار معطلة ولن تظهر للأعضاء

إنجازات Ola Sobeh

عضو مبتدئ

عضو مبتدئ (1/3)

5

السمعة بالموقع

  1. تُعَد جافا منصةً برمجيةً ولغة برمجة حاسوب، وواحدةً من أكثر التقنيات انتشارًا في العالم الحديث. تُستخدم كلمة جافا عادةً للإشارة إلى شيئين، هما منصة جافا Java platform، وهي مجموعة من الأدوات التي تتيح تطوير التطبيقات متعددة المنصات بسهولة، ولغة برمجة جافا، وهي لغة برمجة عامة الاستخدام، تُستخدم غالبًا لتطوير البرامج لهذه المنصة. تتميز جافا عن العديد من التقنيات الأخرى بأنها مصممة بحيث يمكن تشغيل التعليمات البرمجية المكتوبة بلغة جافا على أي نظام يمكنه تشغيل آلة جافا الافتراضية Java virtual machine، واختصارًا JVM، وقد رُفع شعار "اكتبه مرةً واحدةً وشغله في أي مكان" للترويج لقدرات جافا متعددة المنصات، حيث يمكن إنشاء بيئات جافا على جميع أنواع الأجهزة، الكبيرة منها والصغيرة، وبالتالي يتمتع مطور جافا بالمرونة، لأن الشيفرة البرمجية تُعامل على أنها غير مرتبطة بالنظام الذي تُشغل عليه. لغة جافا لغة كائنية التوجه، وتشبه من الناحية التركيبية لغة ++C، وستلاحظ أن برامج جافا مبنية دائمًا بتصميم كائني التوجه على عكس بعض اللغات الأخرى التي سبقتها، والتي طبقت مفهوم الأصناف classes ولكنها لم تتطلب استخدامها. تقترن لغة جافا مع آلة جافا الافتراضية JVM -التي تشغّل التعليمات البرمجية المكتوبة بلغة جافا- اقترانًا وثيقًا، على الرغم من أنهما منفصلان، كما يمكن تشغيل الشيفرة البرمجية المكتوبة بلغات أخرى مصممة خصيصًا لآلة جافا الافتراضية، مثل Groovy و Scala عليها. احرص على عدم الخلط بين جافا وجافاسكربت JavaScript، فبالرغم من اشتراكهما في جزء من الاسم، إلا أنهما يختلفان اختلافًا كبيرًا، وتُستخدمان في العديد من البيئات، إلا أن جافاسكربت تستخدم لتعزيز التفاعل داخل متصفح الويب. ما هي استخدامات جافا؟ يمكن العثور على جافا في جميع الأماكن، ربما في جيبك أو على معصمك، حيث إن نظام أندرويد Android، وهو نظام تشغيل مفتوح المصدر مشتق من نظام التشغيل لينكس Linux، ويُشغل ملايين الأجهزة المحمولة حول العالم، يستخدمها مع مكتباته أساسًا لتطبيقات الأجهزة المحمولة المبنية لمنصته، كما يمكن استخدام جافا في تطبيقات سطح المكتب، وتوجد العديد من أنواع التطبيقات التي تعمل على جافا، بدءًا من الألعاب ذات الشعبية الكبيرة -مثل Minecraft- إلى بيئة التطوير المتكاملة Eclipse التي يستخدمها المطورون للعديد من اللغات. كما تعمل جافا على تشغيل عدد من التطبيقات المصممة خصيصًا للويب، ومع التحسينات المطبقة على JavaScript و HTML، لم تعد بريمجات جافا Java applet المعيار الفعلي لتطبيقات الويب التفاعلية، إلا أن الكثيرين لا زالوا يعتمدون على جافا لتوفير تجربة تفاعلية داخل المتصفح، وعلى الرغم من أن جافا ليست شائعة الاستخدام في تطوير الواجهة الأمامية front-end لتطبيقات الويب هذه الأيام، إلا أنها شائعة الاستخدام خلف الكواليس في الكثير من المواقع وتطبيقات الويب، لأن لها نظامًا بيئيًا غنيًا من الأدوات لتشغيل وتوصيل التطبيقات القابلة للتوسع على نطاق كبير، والتي تحافظ على تشغيل بعض أكبر مواقع الويب والعمليات التجارية، وذلك من خلال الإمكانيات التي توفرها منصة جافا التجارية Java EE و خوادم جافا مفتوحة المصدر، مثل WildFly وApache Tomcat . هل جافا مفتوحة المصدر؟ يعد موضوع ترخيص جافا قصةً طويلةً ومعقدةً، ولكن حاليًا توجد معظم المكونات الرئيسية لجافا بموجب تراخيص مفتوحة المصدر، وتتوافر عادةً بدائل مفتوحة للمكونات غير الداخلة في الرخصة المفتوحة. وضعت شركة Sun (وهي المطور الأصلي لجافا) الكثير من مكونات جافا تحت رخصة GNU العامة في عام 2006، وسدت عدة مشاريع، مثل IcedTea، الفجوات الخاصة بأجزاء عُدة تطوير جافا Java Development Kit، والتي تختصر إلى JDK، غير الداخلة في الرخصة المفتوحة، مما يعني أنه من الممكن اليوم تشغيل تطبيقات جافا دون استخدام أي شيفرة تحتاج إلى رخصة. وتجدر الإشارة إلى توافر نسخة مفتوحة المصدر من عُدة تطوير جافا وهي openJDK، التي صدرت تحت رخصة GPL وهي المرجع الرسمي لجافا SE بدءًا من الإصدار 7. كيفية تشغيل تطبيق جافا اتجهت اللغة نحو مفهوم الوحدات modules منذ الإصدار 9، حيث تحتوي الوحدة على مجموعة من الحزم، وتجمّع العديد من تطبيقات جافا الحديثة حزمة وحدة جافا صغيرة مثل جزء من البرنامج نفسه، مما يعني إمكانية تشغيل البرنامج دون الحاجة إلى تنزيل جافا. لا يشمل هذا جميع التطبيقات بالتأكيد، ولا بد من تثبيت بيئة تشغيل جافا Java runtime environment، والتي تختصر إلى JRE، لتشغيل العديد من تطبيقات جافا، ولا توجد بيئة تشغيل واحدة فقط لأن جافا مفتوحة المصدر، ولكن يمكن اختيار بيئة التشغيل التي تناسبك، فمثلًا توفر توزيعات لينكس Linux بيئة تشغيل جافا OpenJRE أو IcedTea، بينما يمكن لمستخدمي ويندوز تنزيل بيئة تشغيل JRE من بوابة مطوري Red Hat، أما مستخدمو ماك Mac OS (و Windows و Linux) فيمكنهم تنزيل بيئة تشغيل جافا JRE من OpenJDK.java.net أو مجتمع Zulu في Azul. تُصمم بيئة تشغيل جافا JRE خصيصًا لنظام تشغيل معين يمكن تثبيتها عليه، حينها نستطيع تشغيل أي تطبيق جافا على الجهاز، وبتثبيت جافا فإنك تزود نظامك بطبقة -تقنيًا هي آلة جافا الافتراضية- يمكن تشغيل أي تطبيق جافا عليها. كيفية البرمجة في جافا جافا هي لغة كائنية التوجه OOP، وصارمة في تحديد النوع strictly typed، وتستخدَم في جميع الصناعات تقريبًا، من المالية إلى النشر إلى تكنولوجيا المعلومات، وتمتلك جمهورًا كبيرًا لأنها متعددة المنصات، وتبدأ مناهج البرمجة الأساسية في العديد من الجامعات بتعليم لغة جافا، لأنها تفرض أفضل ممارسات كتابة الشيفرة، مثل تحديد النطاق وتحديد نوع المتغيرات، والتي تسمح لغات أخرى بتجاهلها، مثل لغة Python ولغة GO، وتعد جافا شائعةً وقديمةً إلى درجة احتوائها على مكتبات لأي مهمة تقريبًا، لذلك يمكن للمبرمج المبتدئ الوصول إلى مجموعة غنية من الدوال الجاهزة للاستخدام. لاستخدام جافا يجب تثبيت عدة تطوير جافا JDK، ويمكنك الانتقاء من عدة خيارات، بما في ذلك OpenJDK و Zulu، وهي JDK تحتوي على JRE، بحيث يمكنك تشغيل التطبيقات التي تطورها. توجد العديد من الطرق لبدء التعرف على جافا، فإذا كنت تفضل مقدمةً ممتعةً، فيمكنك تجربة Greenfoot، وهي بيئة تطوير تفاعلية interactive development environment، وتختصر إلى IDE، مصممة لتعليم جافا، وتساعد المبرمج الجديد على إنشاء ألعاب وتطبيقات ممتعة بواجهة رسومية سهلة. فإذا أردت خطوةً أكثر تقدمًا فاستخدم BlueJ، وهو بيئة تطوير تفاعلية لجافا صممته كلية King's في لندن، وهو يسلط الضوء على عناصر مهمة من الشيفرة، مثل الأصناف والكائنات. تعد بيئة التطوير Eclipse أحد أكثر بيئات برمجة جافا شهرةً وقدرةً، وتساعد في إدارة المكتبات، وحل الأخطاء والتعارضات في التعليمات البرمجية، كما تساعد في التنقيح debug وإنشاء الحزم وغير ذلك، ويوفر Eclipse Che لفرق التطوير مساحة عمل مشتركةً قائمةً على السحابة، مما يضمن استخدام كل شخص في المشروع لنفس البيئة. مستقبل جافا طوَّرت شركة Sun Microsystems لغة جافا بدايةً ودعمتها فترةً من الزمن، ثم انتقلت جافا إلى جناح شركة أوراكل Oracle التي تدعمها هذه الأيام، ولا زالت هنالك نسخة مفتوحة المصدر من جافا هي openJDK يقف خلفها مجتمع عالمي يدعمها ويقف خلف نموها وتطويرها، ورأينا تغير استخدامات جافا بمرور الأيام، لكنها ما زالت ترفع شعارها الشهير "اكتبه مرةً واحدةً وشغله في أي مكان" بقوة، متحديةً أي لغة برمجة أن تضاهيها وتنافسها فيه. لمعرفة المزيد يمكنك العودة إلى مدخل إلى جافا ترجمة -وبتصرف- للمقال What is Java?‎ من موقع opensource.com. اقرأ أيضًا مدخل إلى أساسيات البرمجة بلغة Java: ما هي البرمجة؟ بيئات البرمجة (programming environment) في جافا مقدمة إلى برمجة واجهات المستخدم الرسومية (GUI) في جافا
  2. يشير مصطلح إنترنت الأشياء Internet of Things -واختصارًا IoT- إلى العالم الواسع من الأجهزة المتصلة مع بعضها بعضًا، إذ تزوَّد هذه الأجهزة بمستشعرات مدمجة تعمل على توفير البيانات، كما يمكن التحكم بها عبر الإنترنت، ومن الأمثلة الشائعة على ذلك أجهزة أتمتة المنزل، مثل منظمات الحرارة الذكية، والإضاءة التي يمكن التحكم فيها عن بُعد، وغيرها من مجسات المرور، وأجهزة قياس جودة المياه، ومكونات الشبكة الكهربائية الذكية لتتبع البضائع المصنعة وأساطيل المركبات في جميع أنحاء العالم. ومع النمو السريع في مجال إنترنت الأشياء، أصبح هناك عدد من المعايير والأدوات والمشاريع والسياسات والأطر والمنظمات المتنافسة التي تسعى لتحديد كيفية تواصل الأجهزة المتصلة في العصر الحديث، ومن هنا تزايدت أهمية المصادر المفتوحة والمعايير المفتوحة، حيث تعمل على ضمان قدرة اتصال الأجهزة مع بعضها اتصالًا صحيحًا، وكذلك مع عمليات المعالجة الخلفية للكميات الهائلة من البيانات الضخمة التي تولدها هذه الأجهزة. استخدامات أجهزة إنترنت الأشياء تعتمد كيفية الاستفادة من الأجهزة المتصلة بإنترنت الأشياء على ما إذا كان الهدف منها جمع البيانات أو أتمتة العمليات، وعلى نطاق الاستخدام، وتعمل العديد من الأجهزة الاستهلاكية للأفراد بطريقة غير تقليدية، ومنها ما ذكر أعلاه، وتندرج العديد من هذه الأجهزة في فئة أتمتة المنزل، ومنها: الإضاءة الداخلية والخارجية، والمنافذ الكهربائية المتحَكم بها بواسطة أجهزة الاستشعار، وأجهزة ضبط الوقت، والتطبيقات عن بعد. منظم الحرارة Thermostat، وأجهزة تغيير الجو الداخلي للمنزل بناءً على معرفة مكانك، وظروف درجة الحرارة الخارجية، وأهدافك في توفير الطاقة. الكاميرات، وأجهزة استشعار الحركة، والأقفال التلقائية، وغيرها من أجهزة التحكم في الوصول التي يمكن دمجها في أنظمة الأمان والمراقبة المتقدمة. أجهزة استشعار تسرب المياه، وأجهزة إنذار الدخان، واستشعار أول أكسيد الكربون، وغيرها من الأجهزة المصممة لحماية الأشخاص والممتلكات من الحوادث العرضية. الغسالات والمجففات والثلاجات وغيرها من الأجهزة التي لها وظائف خاصة، وتنبهك إلى حالتها عن بُعد. شواحن السيارات الكهربائية، وبطاريات الشحن المحمولة، والأجهزة الأخرى التي تشحن بذكاء في غير ساعات الذروة، لتوفير المال، وتقليل ذروة الطلب على الطاقة. بالإضافة إلى أجهزة أخرى، مثل مستشعرات معدل ضربات القلب القابلة للارتداء، وأجهزة مراقبة الأطفال، وأجهزة استشعار النوم، والمصممة للمساعدة في المهام اليومية أو المساعدة في تتبع المعلومات الحيوية وغير الحيوية، وأصبحت العديد من الأجهزة، مثل السيارات، عبارةً عن شبكة من المستشعرات التي تتعقب أنواعًا من المعلومات حول أدائها وسلامتها، مما مكّن من توفير ميزات وخيارات ترفيهية جديدة. تختلف أجهزة إنترنت الأشياء في الحكومات والشركات والمؤسسات قليلًا عن الأجهزة الموجهة للأفراد، وتركز عمومًا على جمع البيانات التي يمكن معالجتها وتصورها، وغالبًا ما تكون هذه البيانات آنيةً real-time data، مثل: تستطيع شركات المرافق العامة التنبؤ بالطلب على الطاقة والمياه بدقة، مما يقلل الإهدار. تساعد المستشعرات البيئية المتقدمة، مثل أجهزة مراقبة المياه والضوضاء وجودة الهواء، في فهم مصادر التلوث وآثاره، قبل أن تؤثر سلبًا على النظام البيئي وصحة الإنسان. يمكن لوكالات السلامة العامة تطوير أنظمة إنذار مبكر أكثر تقدمًا للكوارث الطبيعية، مثل الزلازل والفيضانات، والحصول على بيانات أفضل لتقديم الخدمات الحيوية، مثل مكافحة الحرائق وتقديم الإغاثة الإنسانية. يمكن للشركات والحكومات تتبع الموقع الحالي لأساطيل المركبات، وقطع الغيار، والمنتجات، وعينات الرعاية الصحية والأدوية. يمكن للحكومات المحلية تتبع مواقف السيارات في الوقت الفعلي، وطلبات العبور، ومعرفة متى تصل حاويات القمامة إلى سعتها القصوى، لتوفير خدمات أفضل والتخطيط للمستقبل. وتوجد العديد من الأمثلة الأخرى أيضًا، ومن المتوقع أن يُطوَّر المزيد منها في السنوات القادمة. أهمية المعايير المفتوحة لإنترنت الأشياء قد لا تتمكن الأجهزة من الاتصال مع بعضها البعض دون معايير مفتوحة open standards وبروتوكولات مشتركة، إذ تتصل العديد من أجهزة إنترنت الأشياء بالإنترنت في النهاية، إلا أن الطرق المستخدمة للتواصل مع بعضها البعض ومع مراكز التحكم المحلية غالبًا ما تكون محتكرةً أو موثقةً توثيقًا ضعيفًا، فبدون أساس مشترك للاتصال، قد تكون مقيدًا بمزود واحد لجميع الأجهزة، ومن الممكن أن تُترك عالقًا مع مجموعة من الأجهزة غير الصالحة للعمل؛ لأن الشركة المصنعة للأجهزة توقفت عن العمل أو قررت إيقاف الدعم لأجهزتك. وتعمل منظمات مثل AllSeen Alliance، وهي أحد مشاريع مؤسسة Linux Foundation، على إنشاء أطر عمل مشتركة للأجهزة، لتكون قادرةً على التواصل مع بعضها بعضًا مهما كانت الشركة المصنعة. التعامل مع البيانات الضخمة مع وجود مليارات من الأجهزة المتصلة بالإنترنت قيد الاستخدام حاليًا، والذي يُتوقَّع أن يصل لعشرات المليارات من الأجهزة الأخرى المتصلة عبر الإنترنت في السنوات القليلة المقبلة، تجمع أعداد ضخمة من أجهزة الاستشعار الجديدة البيانات حول العالم، لذلك تحتاج المنظمات التي تستخدم شبكات من أجهزة الاستشعار إلى طريقة لمعالجة جميع البيانات الجديدة التي تتلقاها وتخزنها. ولا تتطلب هذه البيانات المجمعة مقاييس تخزين ومعالجة مختلفين وحسب، بل تتطلب تقنيات جديدةً أيضًا، وتسمح لنا التطورات الجديدة في الذكاء الاصطناعي artificial intelligence وتعلم الآلة machine learning وتنقيب البيانات data mining بالعثور على أنماط من البيانات لن تستطيع أساليب التحليل التقليدية أن تتعامل معها، ولكن أدوات البيانات الضخمة مفتوحة المصدر تجعل تحليل هذه الأنماط ممكنًا. أهمية الأمن في مجال إنترنت الأشياء مع دخول المزيد من الأجهزة إلى منازلنا، والتي تجمع بيانات حول كل جانب من جوانب حياتنا؛ أصبح الأمان والخصوصية من أبرز الاهتمامات، وعلى الرغم من أن سياسة الخصوصية تحدد العديد من قضايا الخصوصية، إلا أن التكنولوجيا في حد ذاتها تعد جزءًا مهمًا من الأمان، وهذا أحد الأسباب التي تجعل المصدر المفتوح مهمًا لإنترنت الأشياء. يعمل كل جهاز قادر على الاتصال بشبكة على الأقل على نظام تشغيل أولي بجانب التعليمات البرمجية التي تحدد وظيفته، ويسمح وجود قاعدة تعليمات برمجية مفتوحة المصدر باختبار أمان الجهاز وفحصه وإصلاحه بسهولة للمساعدة في إبعاد المتسللين، ويمكن تحسين نظام التشغيل الآمن، مثل نواة لينكس Linux kernel وأنظمة التشغيل مفتوحة المصدر الأخرى، لاستخدامها في الأجهزة المدمجة للمساعدة في الحفاظ على أمان البيانات والأجهزة. البدء بمجال إنترنت الأشياء إن دخولك مجال إنترنت الأشياء، وإنشاء أجهزتك وبرامجك الخاصة أمر سهل، حيث توجد العديد من منصات عتاد الحاسوب hardware platforms التي تستهدف المبتدئين والهواة وتمتلك مجتمعات كبيرةً، وتتضمن العديد من العتاد المفتوح جزئيًا أو كليًا، فبعض منصات الأجهزة الأكثر شيوعًا لإنشاء أجهزة متصلة بإنترنت الأشياء تتضمن Arduino، وهو مثالي للعمليات منخفضة الطاقة، ويمكنه الاتصال بواسطة اللوحات الإضافية عبر العديد من بروتوكولات الاتصالات الشائعة، وRaspberry Pi التي تتضمن منفذ الإيثرنت Ethernet المدمج باللوحة، مما يجعل اتصالات الشبكة أمرًا سهلًا. وفرنا سلسلة حول راسبيري باي باسم دليل راسبيري باي والتي تشرح راسبيري باي وكيفية استخدامه من البداية وحتى الاتقان فيمكنك البدء بها لولوج عالم إنترنت الأشياء. ترجمة -وبتصرف- للمقال What is the Internet of Things?‎ من موقع opensource.com. اقرأ أيضًا الذكاء الاصطناعي: أهم الإنجازات والاختراعات وكيف أثرت في حياتنا اليومية مدخل إلى الذكاء الاصطناعي وتعلم الآلة
  3. تعد بيئة التطوير المتكاملة Integrated development environments -واختصارًا IDE- من الأدوات التي تستخدم في البرمجة، حيث يحدِث امتلاك بيئة جيدة فرقًا كبيرًا عند كتابة شيفرة بلغة برمجة معينة، ويساعد على تجنب الأخطاء التي قد لا تُكتشف إلا عند تجميع الشيفرة أو اختبارها. لكنك ستجد عند بداية تعلم البرمجة أو تعلم لغة برمجة معينة العديد من خيارات بيئات التطوير المتكاملة، مع معرفة قليلة بالخيارات التي توفرها، بل في فهم ماهية بيئة التطوير المتكاملة بالضبط، حيث لا توجد مواصفات رسمية لما هو مؤهل لأن يكون بيئة تطوير، لذلك سيوضح هذا المقال الميزات التي تتوفر غالبًا في بيئات التطوير المتكاملة، وكيفية البحث عن بيئة مناسبة لك. ميزات بيئة التطوير المتكاملة IDE الأساسية يشير مصطلح "بيئة التطوير المتكاملة IDE" إلى بعض الميزات الأساسية، منها: محرر الشيفرة يُصرف معظم الوقت عند استخدام بيئة التطوير في كتابة الشيفرة البرمجية، لذا يجب أن تحتوي بيئة التطوير على مكان مناسب لذلك، وأن يكون محرر النص فعالًا، لأنه إذا لم يكن كذلك فلن ترغب باستخدامه مرةً أخرى بالتأكيد. وتحتوي بيئة التطوير الجيدة على أنماط محاكاة المحرر التي تمكن المبرمجين المعتادين على محرر النصوص emacs أو vim من استخدام نفس مجموعات المفاتيح التي اعتادوا عليها. تلوين بنية الجملة البرمجية وإبرازها تعرض بيئة التطوير كلًا من الكلمات المفتاحية والمتغيرات والمكتبات والوظائف بألوان مختلفة، ويُعد هذا التمييز إضافةً تسهّل عملية كتابة الشيفرة. فحص التعليمات البرمجية تحدد بيئة التطوير الأخطاء المرتكبة أثناء كتابة التعليمات البرمجية، وتسلط الضوء عليها، وتسمى عملية كشف الأخطاء المحتملة في الشيفرة "linting"، ولا يقتصر الأمر على اكتشاف الأخطاء الفادحة فقط، حيث تشجع بعض اللغات -مثل Python- المطورين على كتابة تعليمات برمجية وفقًا لدليل رسمي لطريقة كتابة اللغة، وتحذرك بيئة التطوير عندما تنحرف عن توصيات مقترحات تحسين بايثون Python Enhancement Proposals، واختصارًا PEP. تصحيح الشيفرة تمثل عملية تدقيق الشيفرة Linting اكتشاف الأخطاء المحتملة، ويمكن للعديد من بيئات التطوير تنفيذ ذلك بناءً على مخطط أولي للصيغ المتوقعة، وستقترح بيئة التطوير الجيدة تصحيحات لهذه الأخطاء، بل ستقترح تصحيحات مشتقةً من الطريقة التي تعمل بها لغة البرمجة التي تكتب بها الشيفرة، بمعنىً آخر ستقترح بيئة تطوير جافا Java إصلاحات منطقيةً للغة جافا، لا للغة بايثون Python أو ++C، وهذه الاقتراحات ليست مثاليةً دائمًا، حيث يمكن أن تقترح بيئة التطوير إصلاحًا بناءً على تلبية مواصفات اللغة فقط، لكنه قد يكون في سياق خاطئ، ومن الممكن أن يتسبب في تلف الشيفرة، لذا يعد فهمك للغة البرمجة هنا أمرًا مهمًا، ولك أن تستخدم التصحيحات الآلية للعثور على الأخطاء الواضحة، والتي يمكن أن توفر عليك الكثير من البحث والاستبدال اليدوي، وحتى إعادة بناء التعليمات البرمجية refactoring. الاطلاع على المشروع تُجمع التعليمات البرمجية والأصول الثابتة معًا حرفيًا أو افتراضيًا، بحيث لا تُترك أي عناصر مهمة عندما تكون جاهزًا لتوزيع شيفرتك، ولمعظم بيئات التطوير مفهوم ما عن دليل المشروع، تمامًا كما تفترض Autotools أو CMake وجود تخطيط قياسي لملفات شيفرة المشروع، ويجرد بعضها بنية التعليمات البرمجية ومكتباتها حتى تتمكن من رؤية كل شيء تعتمد عليه التعليمات البرمجية، مثل مجموعة الأدوات المثبتة افتراضيًا على مستوى النظام، والشيفرة التي أنشأتها على جهازك. يعتمد مستوى تقسيم ملفات الشيفرة الذي تحتاجه على مهاراتك في التنظيم، وتعقّب الاعتمادية dependency tracking، واللغة والمكتبات المستخدمة، ولكن يُفضل -بغض النظر عن مدى تعقيد المشروع أو بساطته- أن تعرف بيئة تطويرك الدليل الذي يجب أن يكون افتراضيًا عند البحث عن الملفات والمكتبات والأصول. الإلمام بالأدوات المختلفة المستخدمة لتطوير الشيفرة البرمجية تحتوي بيئة التطوير عادةً على نظام إدارة لتعيين المكتبات المستخدمة في الشيفرة، ووقت التشغيل، وخيارات المترجم، وتتبع التحكم في الإصدار، وهو أمر مهم في أي نظام، ولكنه يصبح ضروريًا على الأجهزة التي تُثبت عليها إصدارات متعددة من الأدوات، فمثلًا عند تثبيت كل من مجموعة أدوات Qt4 و Qt و Python 2 و Python 3، وإصدارات مختلفة من Java runtimes، ومكتبات 32 بت و64 بت، وGCC و LLVM وغيرها، يُفضل أن يكون على الجهاز بيئة تطوير IDE تدير كيفية بناء المشروع وتجميعه، للحصول على نتائج متسقة. يعد إنشاء التعليمات البرمجية الخاصة وتشغيلها وتصحيحها من داخل بيئة التطوير ميزةً مهمةً، وبذلك لا تحتاج إلى تطبيق تعديل التعليمات البرمجية لتشغيل المترجم أو تشغيل مصحح أخطاء، ويؤدي وجود هذه الميزات في واجهة واحدة إلى اتحاد عمليةٍ كانت متباينةً غالبًا. هل استخدام بيئة التطوير المتكاملة اختياري؟ لا حاجة من الناحية التقنية إلى بيئة التطوير المتكاملة IDE لكتابة التعليمات البرمجية، بغض النظر عما يقال نظريًا، فمهما كانت اللغة التي تكتب بها، فسينتهي الأمر بتحليل النص ومعالجته بواسطة المترجم، لذلك كل ما تحتاجه حقًا هو محرر نصوص جيد وسلسلة أدوات بناء، وجميع الميزات التي سبق ذكرها اختيارية، ولا تحتوي كل بيئات التطوير المتكاملة IDE على كل هذه الميزات، ويمكن تجربة أنواع مختلفة، واكتشاف الميزات المهمة، ثم اختيار ما يناسبك بناءً على التجربة. البحث عن بيئة تطوير متكاملة مفتوحة المصدر يوجد الكثير من بيئات التطوير مفتوحة المصدر، بعضها مخصص للغة برمجة واحدة، مثل Eric وPayza وSpyder وPyCharm، وهي مخصصة للغة بايثون Python، وبعضها مخصص للغة جافا مثل BlueJ و IntelliJ، وبعضها الأخر مخصص للغات مختلفة وأطر عمل مختلفة، بحيث يمكن استخدامها في العديد من المشاريع المختلفة أو في المشاريع التي تستخدم لغات متعددة، ويمكنك دائمًا عدم استخدام بيئة تطوير متكاملة، واستخدام محرر نصوص فقط، أو محرر نصوص أُعدّ ليعمل مثل بيئة تطوير، مثل محرر النصوص Vim. وأهم ميزة لبيئة التطوير المتكاملة هي توفير الراحة والكفاءة، ولكن كما هو الحال مع أي أداة جديدة، يمكنك توقع منحنى تعليمي عندما تبدأ باستخدامها، لكنك ستفهم واجهتها لاحقًا، وستعرف مكان العثور على ميزات جديدة بسرعة، مما سيجعلك مبرمجًا أفضل وأسرع، وإذا لم تحصل على ذلك من بيئة تطوير واحدة، فجرّب بيئةً أخرى مختلفةً، ولا بد أن تجد ما يناسبك منها، نظرًا لوجود العديد من بيئات التطوير المتكاملة مفتوحة المصدر الرائعة لتختار من بينها. ترجمة -وبتصرف- للمقال What is an IDE?‎ من موقع opensource.com. اقرأ أيضًا لمحة عن بيئة تطوير NET Core. نقل ووردبريس من بيئة التطوير المحلية إلى خادوم إنتاجي بسهولة وسرعة بناء نموذج كامل لسلسلة أدوات تطوير الويب من طرف العميل
  4. للعديد من التطبيقات التي تشغلها على حاسوبك واجهة مستخدم، تحتوي غالبًا على أزرار للنقر أو أيقونات للسحب أو حقول نصية للكتابة فيها، وتستخدم بعض التطبيقات الطرفية terminal (أو سطر الأوامر) واجهةً لها، حيث يكتب المستخدم الأوامر بدلاً من النقر فوق الأزرار أو سحب الأيقونات، وتخصَّص الواجهة البرمجية للتطبيقات Application Programming Interface -واختصارًا API- للتطبيقات بدلًا من المستخدمين. تُوجَّه جميع أجهزة الحاسوب في النهاية للمستخدم، ولكن الواجهة البرمجية للتطبيقات تسهّل على المستخدمين كتابة تعليمات برمجية للتحكم بالتطبيق، وقد تكون الواجهة البرمجية للتطبيقات غير فعالة وغير مباشرة لاستخدام التطبيق بالنسبة للبشر، ولكنها طريقة مناسبة لأجهزة الحاسوب لإرسال الإشارات، والحصول على بيانات مفيدة من التطبيقات الأخرى، ويمكن الوصول إليها محليًا أو عبر شبكة -أكبرها الإنترنت-، ويمكن تصميمها لتقبل مدخلات من عدة لغات برمجة وبروتوكولات، ويكثر استخدامها في تصميم ألعاب الفيديو وتعديلها، وتوسيع التطبيقات المعقدة، واستخراج البيانات data scraping والتفاعل معها. البرمجة المبسطة باستخدام الواجهة البرمجية للتطبيقات API من ميزات الواجهة البرمجية للتطبيقات قدرتها على إخفاء متطلبات التعليمات البرمجية المعقدة عن المستخدم، فعلى سبيل المثال، هذا برنامج بسيط مكتوب بلغة C لطباعة جملة "Hello world" على الشاشة: #include <stdio.h> int main(int argc, char *argv[]) { int i; for(i=1;i<argc;i++) { printf("%s\n",argv[i]); } return 0; } يمكن للواجهة البرمجية للتطبيقات المكتوبة لإخراج نفس النتيجة أي طباعة جملة "Hello world" أن تبسط التعليمات البرمجية تبسيطًا كبيرًا، وفيما يلي واجهة برمجية لتطبيقات وهميةً مثالًا على ذلك: cprint(hello_msg) تعليمات إنشاء API معقدةً عادةً، كما هو موضح في مثال Lua، لكن المستخدم النهائي ليس مضطرًا للتعامل مع ذلك، فالشيء الوحيد الذي سيراه هو لغة برمجة مبسطة تمكنه من الوصول إلى نتائج الحسابات المعقدة للغاية. الاستعلامات المبسطة باستخدام الواجهة البرمجية للتطبيقات API يمكن من خلال الواجهة البرمجية للتطبيقات توفير تعليمات للمستخدمين النهائيين لتنفيذ إجراءات محددة أو استعلامات queries عن المعلومات، إذ تمكّن الواجهة البرمجية API المستخدمين من الاستفادة من ميزات البرنامج دون الحاجة لتعلم أوامر برمجية معقدة أو كشف بياناتهم الحساسة، فمثلًا إذا شغلت منتدى دعم أو خادم دردشة فقد ترغب في مشاركة عدد المستخدمين الآخرين -فكلما زاد عدد المستخدمين الموجودين زادت فرصة الحصول على إجابة لسؤال الدعم- لكنك لن تشارك أسماءهم أو أنشطتهم. ومن أمثلة ذلك إصدار API الذي نُفذ بواسطة مضيف Git مفتوح المصدر GitLab، حيث يحتوي GitLab على واجهة برمجية للتطبيقات غنية بالميزات تساعد المطورين على تحديد أحدث إصدارات برامجهم، ويمكن للمبرمجين إنشاء إصدار من خلال واجهة الويب في GitLab، إلا أن العديد من المطورين يفضلون أتمتة العملية بحيث لا نحتاج للنقر يدويًا عبر شاشات الخيارات، ويتيح GitLab إرسال الأوامر عبر بروتوكول HTTP باستخدام طريقة الإرسال POST، وهذا مثال عن ذلك: $ curl --header 'Content-Type: application/json' \ --header "PRIVATE-TOKEN: example_token" \ --data '{ "name": "Release", "tag_name": "2.4", "description": "Fixed Makefile.am" }' \ --request POST https://gitlab.com/api/v4/projects/trashy%2Ftrashy للواجهة البرمجية للتطبيقات GitLab العديد من الميزات، منها الحصول على معلومات حول الوسوم والإصدارات وحذف الإصدارات وتحديثها وما إلى ذلك، ومن السهل على المطورين استخدامها ودمجها في عملياتهم الحالية، لأنها تستخدم طرائق إرسال HTTP القياسية. مفتاح الواجهة البرمجية للتطبيقات API نلاحظ في مثال GitLab أن مفتاح الواجهة البرمجية للتطبيقات API key كان مطلوبًا، ووظيفته هي نفس وظيفة اسم المستخدم وكلمة المرور في الواجهات التفاعلية، ولكن سيكون تقديم حقل اسم مستخدم وكلمة مرور -مثل الذي تراه عند تسجيل الدخول للتحقق من بريدك الإلكتروني- معقدًا؛ لأنه من المتوقع أن يكون الكيانان المتفاعلان من خلال الواجهة أجهزة حاسوب، لذا يُصدر للمبرمج مفتاح الواجهة البرمجية للتطبيقات يضمَّن في التعليمات البرمجية المكتوبة ليتمكن من التفاعل مع الواجهة. يختلف الحصول على المفتاح بناءً على كاتب الواجهة البرمجية للتطبيقات التي تريد استخدامها، فمثلًا توفر GitHub مفتاح واجهة برمجية للتطبيقات في لوحة إعدادات رموز الوصول Access Tokens، بينما تقدم خدمة Twitter -مغلق المصدر- المفاتيح من خلال نطاق فرعي subdomain للمطورين، وتعدّ مفاتيح الواجهة البرمجية للتطبيقات من أدوات المطور؛ لذا نادرًا ما تُصدر لكل مستخدم تلقائيًا، لكنها تحجَز للمستخدمين المتقدمين عند الطلب، ولها نفس مزايا اسم المستخدم وكلمة المرور، فهي تنظم الوصول إلى البيانات الحساسة، وتسمح الواجهة البرمجية للتطبيقات بالكشف عن المعلومات كشفًا انتقائيًا بناءً على الاستدعاءات التي تُوفر من خلالها، وهنا يمكن للمفتاح إجراء استثناءات أيضًا بناءً على احتواء طلب الاستدعاء على مفتاح صالح أم لا . الفرق بين حزمة أدوات تطوير البرامج SDK والواجهات البرمجية للتطبيقات API تجرد الواجهة البرمجية للتطبيقات الدوال البرمجية لتطبيق عن أدوات التحكم بها، أما حزمة أدوات تطوير البرامج SDK فهي دوال البرمجة للتطبيق حرفيًا. تستخدم الواجهة البرمجية للتطبيقات API في التطبيقات المفتوحة المصدر غالبًا لتوفير الراحة أو الأمان، وتسهل في بعض الأحيان على المبرمج إنشاء أدوات حول تطبيق معقد دون الحاجة إلى فهم الكثير حول كيفية عمله، كما يمكن أن تعمل على حماية البيانات المهمة أو الحساسة مع السماح بالوصول إلى البيانات الأخرى، أما في التطبيقات مسجلة الملكية، فتقدَّم حزمة أدوات تطوير البرامج SDK على أنها الجزء "الأكثر انفتاحًا" من شيفرة البرنامج المصدرية، ويلزمنا غالبًا دفع المال للحصول عليه قانونيًا، ويكون جزء المنتج الذي يدفع المطورون ثمنه ليتمكنوا من التطوير باستخدامه. لا حاجة إلى أدوات تطوير البرامج في التطبيقات مفتوحة المصدر من الناحية التقنية؛ لأن الشيفرة المصدرية متاحة للاستخدام والتعديل مباشرةً من قبل أي شخص، ومع ذلك توفر بعض المشاريع مفتوحة المصدر حزمة أدوات تطوير البرامج مثل طريقة لتوضيح الدوال الأكثر أهميةً لحالات الاستخدام الأكثر شيوعًا للمطورين، فعلى سبيل المثال عندما تطور تطبيق Qt، يمكنك استخدام أدوات تطوير برامج Qt بالرغم من أن Qt مفتوحة المصدر، أي أنك ستستخدم مكتبات Qt لتطوير التطبيق، أما إذا أردت تطوير Qt نفسها، فستكتب مكتبات بنفسك، لذا لن تستخدمها في عملية التطوير. يمكن ألا يكون الفرق بين حزمة أدوات تطوير البرامج والواجهة البرمجية للتطبيقات واضحًا في بعض الحالات، ولكن عمومًا توفر حزمة أدوات تطوير البرامج الوصول إلى المكتبات، بينما تستخدم الواجهة البرمجية للتطبيقات هذه المكتبات لإنتاج نتيجة بناءً على أمر معين يمكن تنفيذه من خلالها. إنشاء واجهة برمجية للتطبيقات API تعمل الواجهة البرمجية للتطبيقات على تسهيل التفاعل، وفي علم الحواسيب غالبًا ما يكون التفاعل عبارةً عن طلب وإجابة، وإذا كتبت شيفرةً تستمع إلى التعليمات عبر بروتوكول -دون تدخل بشري مباشر أو معه- فمن المحتمل أنك أنشأت واجهة برمجية لتطبيقات. يمكن كتابة API بأي لغة برمجة، وكُتِب العديد منها بلغة Java بمساعدة البرامج الوسيطة middleware مثل JBoss وscale3، بينما كُتب البعض الآخر بلغة Python باستخدام Flask أو Django أو Pyramid، بينما لا يزال البعض الآخر مكتوبًا بلغات Ruby وPerl وLua وC و++C وNET.، وأي لغة أخرى تقريبًا. الواجهة البرمجية للتطبيقات من نمط RESTful وصف الدكتور روي فيلدنغ Roy Fielding في إحدى أطروحاته أسلوب API الذي أسماه "Representational State Transfer"، والذي يعرف اختصارًا REST، وهنالك عدد من المعايير والشروط التي تجعل الواجهة البرمجية واجهةً من النمط RESTful، ومن أهمها أن تكون عديمة الحالة statelessness، أي أن لا يخزن الخادم (وهو جانب الواجهة البرمجية للتطبيقات الذي يتخذ إجراءً بناءً على الطلبات الواردة من العميل) أي بيانات للمستخدم، وأن يستلم كل ما يحتاجه من البيانات منه، أي يجب أن تحتوي الواجهة البرمجية للتطبيقات من النمط RESTful على استدعاءات مصممة لتوفير جميع البيانات اللازمة لإكمال التفاعل. فإذا كتبت واجهةً برمجيةً للتطبيقات لتوفير الرصيد المصرفي للمستخدم، فيجب أن تستقبل اسم المستخدم وكلمة المرور -أو مفتاح API- والحساب المصرفي المقصود، والأمر المطلوب لاسترداد الرصيد المصرفي، بالإضافة إلى أي خيارات مثل نوع العملة واللغة، ويجب تقديم كل هذه المعلومات مع كل طلب؛ لأن الخادم سيعود -بعد كل طلب- إلى حالة عدم المعرفة الافتراضية، كما لو أنه لم يستلم أي طلب من أي شخص، حتى لو أجرى المستخدم مهامًا ذات صلة من قبل، مثل الحصول على رصيد الحساب قبل تحويل الأموال من هذا الحساب إلى حساب آخر، وسيطلب الخادم مرةً أخرى إرسال جميع بيانات الاعتماد والتفاصيل ضمن الطلب. توجد عدة فوائد للواجهة البرمجية للتطبيقات من النمط RESTful، منها فصل العميل والخادم، ولكن هذا ليس كل شيء، فنظرًا لعدم تخزين الخادم لبيانات المستخدم وعدم اعتماده على نوع معين من الواجهات؛ فيمكن لعدة مطورين تطوير عملاء فريدين للخوادم، أي سنتمكّن من تطوير تطبيق هاتف وتطبيق قائم على الطرفية terminal-based لنفس الخادم دون تعديل، لأن الواجهة البرمجية للتطبيقات توفر واجهةً متوافقةً مع كليهما، إذ تعمل معظم الأوامر الطرفية بنفس الطريقة، حتى أن الأوامر التي تسمح لملفات الإعدادات (التي تخزن الخيارات الدائمة) لا زالت توفر متغيرات البيئة أو خيارات سطر الأوامر لتحديد المعاملات parameter والمدخلات والمخرجات المهمة، لذا يشبه التعامل مع الواجهة البرمجية للتطبيقات من النمط RESTful إلى حد كبير تنفيذ أمر على نظام آخر. الاستفادة من الواجهة البرمجية للتطبيقات إذا لم تستخدم الواجهة البرمجية للتطبيقات مطلقًا، فحاول استخدامها لشيء بسيط، ودوّن ملاحظات حول ما يعجبك فيها وما حدودها، وإذا كنت مطورًا فحاول كتابة واجهة برمجية للتطبيقات، إذ ساعد مفهوم الواجهة البرمجية للتطبيقات، مثل التطبيقات مفتوحة المصدر نفسها، على أن تصبح الحوسبة أكثر مرونةً وسهولةً وكفاءةً، فتعلمه، واجعله مفتوح المصدر! لمعرفة المزيد حول الواجهة البرمجية للتطبيقات يمكنك الرجوع إلى المقالات ضمن وسم api ترجمة -وبتصرف- للمقال ?What is an API من موقع opensource.com. اقرأ أيضًا مقدمة إلى واجهة برمجة التطبيقات Stream API في جافا إنشاء واجهة برمجية API في Laravel 5 الواجهة البرمجية fetch في JavaScript إنشاء واجهة برمجية بسيطة باستخدام إطار العمل المصغّر Lumen
  5. هو مجموعة من الأدوات البرمجية لبناء وإدارة منصات الحوسبة السحابية cloud computing للسحب العامة والخاصة، ويعتقد الكثيرون أنه مستقبل الحوسبة السحابية، لأنه مدعوم من بعض أكبر شركات الاستضافة وتطوير البرمجيات، بالإضافة إلى آلاف أفراد المجتمع، وتديره مؤسسة OpenStack، وهي مؤسسة غير ربحية تشرف على التنمية وبناء مجتمع المشروع. مقدمة إلى OpenStack يتيح OpenStack للمستخدمين إمكانية نشر أجهزة افتراضية ونُسخ أخرى تتعامل مع مهام مختلفة لإدارة بيئة السحابة عند الطلب، كما يُسهّل التوسع الأفقي، مما يعني قدرة المهام التي تستفيد من التشغيل المتزامن على خدمة عددًا أكبر أو أقل من المستخدمين عند الطلب بسهولة بتشغيل المزيد من النُسخ، فمثلًا قد يستطيع تطبيق الهاتف الذي يحتاج إلى الاتصال بخادم عن بعد تقسيم عملية الاتصال مع كل مستخدم عبر العديد من النُسخ المختلفة، وتتواصل هذه النسخ مع بعضها، وتتوسع بسرعة وسهولة مع ازدياد عدد المستخدمين. OpenStack هو برنامج مفتوح المصدر، مما يعني وصول أي شخص إلى الشيفرة المصدرية، وإجراء أي تغييرات أو تعديلات يحتاج إليها ومشاركتها مع المجتمع بحرّيّة، وفي المقابل يستفيد من آلاف المطورين في جميع أنحاء العالم، والذين يعملون جنبًا إلى جنب لتطويره ليصبح أفضل وأكثر قوةً وأمانًا. كيف يستخدم OpenStack في بيئة السحابة؟ تدور فكرة السحابة حول توفير الحوسبة للمستخدمين النهائيين عند بُعد، بحيث يعمل البرنامج الفعلي مثل خدمة على خوادم موثوقة وقابلة للتوسع، بدلاً من تثبيت البرنامج وتشغيله على حاسوب كل مستخدم نهائي، وتشير الحوسبة السحابية إلى أشياء مختلفة، ولكنها تتحدث عادةً عن تشغيل عناصر مختلفة "مثل خدمة"، وقد تشمل هذه العناصر البرامج أو المنصات أو البنية التحتية، ويعدّ OpenStack بنيةً تحتيةً كخدمة Infrastructure as a service، والتي تختصر إلى IaaS، أي أنه يسهّل على المستخدمين إضافة نسخة جديدة بسرعة، مع إمكانية تشغيل مكونات السحابة الأخرى، وتشغل البنية التحتية منصةً platform يمكن للمطور من خلالها إنشاء تطبيقات برمجية تُقدم إلى المستخدمين النهائيين. مكونات OpenStack يمكن لأي شخص إضافة مكونات إضافية إلى OpenStack لتساعده على تلبية احتياجاته، لأنه مفتوح المصدر، لكن مجتمعه حدد تسعة مكونات رئيسية لتكون جزءًا من نواته، وتوزّع مثل جزء من أي نظام OpenStack، ويضمن مجتمعه صيانتها رسميًا، وهذه المكونات التسعة هي: Nova: هو محرك الحوسبة الأساسي لـ OpenStack، ويستخدم لنشر وإدارة أعداد كبيرة من الأجهزة الافتراضية والنُسخ الأخرى للتعامل مع مهام الحوسبة. Swift: هو نظام تخزين الكائنات والملفات، بدلًا من الفكرة التقليدية للإشارة إلى الملفات من خلال موقعها على محرك الأقراص، ويمكن للمطورين الرجوع إلى معرف فريد يشير إلى الملف أو جزء من المعلومات، أما مكان تخزين هذه المعلومات فيحدده OpenStack، مما يجعل التوسع أمرًا سهلًا، إذ لا يقلق المطورون بشأن سعة النظام الذي يعمل عليه البرنامج، ويصبح على النظام -لا على المطور- إيجاد أفضل السبل للتأكد من النسخ الاحتياطي للبيانات في حالة فشل اتصال الجهاز أو الشبكة. Cinder: هو أحد مكونات التخزين الكتلي، وهو أكثر تشابهًا مع المفهوم التقليدي المتمثل في قدرة الحاسوب على الوصول إلى مواقع محددة على محرك الأقراص، وهذه الطريقة التقليدية للوصول إلى الملفات مهمة في السيناريوهات التي تكون فيها سرعة الوصول إلى البيانات هي الأمر الأكثر أهميةً. Neutron: يوفر إمكانية الربط الشبكي لـ OpenStack، ويساعد على ضمان إمكانية اتصال مكونات نشر OpenStack ببعضها بسرعة وكفاءة. Horizon: لوحة تحكم OpenStack، وهي الواجهة الرسومية الوحيدة له، لذلك قد يكون هذا هو المكون الأول الذي يراه المستخدمون الذين يرغبون في تجربته، ويمكن للمطورين الوصول إلى جميع مكونات OpenStack من خلال واجهة برمجة التطبيقات API، لكن لوحة القيادة Horizon توفر لمسؤولي النظام القدرة على الاطلاع على ما يجري في السحابة، وإدارتها حسب الحاجة. Keystone: هو المسؤول عن توفير خدمات الهوية في OpenStack، وهو في الأساس قائمة مركزية لجميع مستخدمي سحابة OpenStack، مربوطة بجميع خدمات السحابة التي يمكنهم استخدامها، ويوفر Keystone وسائل متعددةً للوصول، مما يعني أنه يمكن للمطورين تعيين طرق وصول المستخدم الحالية بدل Keystone بسهولة. Glance: يوفر خدمات الصور images لـ OpenStack، وهي نُسخ (أو نسخ الافتراضية) من الأقراص الثابتة، و يسمح باستخدام هذه الصور مثل قوالب عند نشر نُسخ آلة افتراضية جديدة. Ceilometer: يوفر خدمات القياس عن بُعد، والتي تسمح للسحابة بتقديم خدمات الفوترة لمستخدمي السحابة، كما يحتفظ بعدد يمكن التحقق منه لاستخدام كل مستخدم للمكونات المختلفة لسحابة OpenStack. Heat: هو مكون التنظيم في OpenStack، ويسمح للمطورين بتخزين متطلبات تطبيق السحابة في ملف يحدد الموارد اللازمة للتطبيق، مما يساعد على إدارة البنية التحتية اللازمة لتشغيل خدمة السحابة. من يمكنه استخدام OpenStack ؟ قد تكون أحد مستخدمي OpenStack حاليًا دون أن تعرف ذلك، ولا زال عالم التطبيقات التي تعمل على OpenStack في توسع مستمر، مع بدء الكثير من الشركات في اعتماده جزءًا من مجموعة أدوات سحابتها. كيف أبدأ مع OpenStack؟ إذا رغبت في تجربة OpenStack فقط، فأحد موارد البداية دون الالتزام بأي موارد مادية هو TryStack، الذي يتيح لك اختبار تطبيقاتك في بيئة الاختبار sandbox لفهم كيفية عمل OpenStack فهمًا أفضل، وما إذا كان هو الحل المناسب لك. يبحث OpenStack دائمًا عن مساهمين جدد، لذا ضع في حسبانك الانضمام إلى OpenStack Foundation إذا كانت لديك خبرة تقنية واهتمام في هذا المجال. ترجمة -وبتصرف- للمقال ?What is OpenStack من موقع opensource.com. اقرأ أيضًا المدخل الشامل لتعلم علوم الحاسوب الانتقال إلى الحوسبة السحابيّة تعلم أساسيات Kubernetes
  6. تكمن الفكرة الرئيسة من الخدمات المصغرة في سهولة بناء بعض أنواع التطبيقات وصيانتها عند تقسيمها إلى أجزاء أصغر قابلة للتركيب وتعمل معًا، حيث يُطوَّر كل مكون باستمرار، ويستطيع المطور صيانته على حدة، ثم تُجمع هذه الأجزاء لتكوين التطبيق، على عكس التطبيق التقليدي ذي المعمارية المتراصة monolithic التي يُطور فيها البرنامج مثل قطعة واحدة، وتكون كل خدماته في وحدات برمجية متراصة، وتعمل كلها في وقت واحد. تتميز التطبيقات المكونة من مجموعة من المكونات المعيارية بسهولة الفهم والاختبار، وكذلك سهولة الصيانة طوال مدة عمل التطبيق، وقد مكّنت المنظمات من تحقيق مرونة أعلى، مع القدرة على تحسين الوقت المستغرق لتحسين عملية الإنتاج، فأثبت هذا النهج تفوقه خاصةً في تطبيقات المؤسسات الكبيرة التي تعمل عليها فرق من المطورين المتنوعين جغرافيًا وثقافيًا، كما كانت له فوائد أخرى هي: استقلالية المطور: تعمل الفرق الصغيرة بالتوازي، ويمكنها تكرار دورات التطوير development cycles أسرع من الفرق الكبيرة. العزل والمرونة: فإذا توقف أحد المكونات نعزله لفترة قصيرة، بينما تستمر باقي مكونات التطبيق بعملها. قابلية التوسع: تستهلك المكونات الأصغر موارد أقل، ويمكن توسيع نطاقها لتلبية تزايد الطلب على هذا المكون فقط. أتمتة دورة الحياة: من السهل ملاءمة المكونات الفردية في أنابيب التسليم المستمر وسيناريوهات النشر المعقدة، وهذا غير ممكن في نظام المعمارية المتراصة. العلاقة بالعمل: تُقَسم بنى الخدمات المصغرة على طول حدود مجال العمل، مما يزيد الاستقلالية والفهم في المؤسسة. يعتمد التعريف الشائع للخدمات المصغرة على كل خدمة صغيرة توفر الواجهة البرمجية للتطبيقات API مثل نقطة وصول، وتكون REST API غالبًا عديمة الحالة stateless، ويمكن الوصول إليها عبر بروتوكول HTTPS تمامًا مثل صفحة الويب القياسية، وتعدّ هذه الطريقة سهلةً للمطورين؛ لأنها لا تتطلب إلا أدوات ودوال يعرفها الكثير منهم. هل مفهوم الخدمات المصغرة حديث؟ إن فكرة فصل التطبيقات إلى أجزاء أصغر ليست جديدةً، حيث تناولت نماذج برمجة أخرى هذا المفهوم، مثل مفهوم البنية الخدمية Service-oriented architecture، والتي تختصر إلى SOA، ومع ذلك أدت التطورات التكنولوجية الحديثة المرتبطة بالتوقعات المتزايدة "للتجارب الرقمية" إلى ظهور جيل جديد من أدوات وتقنيات التطوير المستخدمة لتلبية متطلبات التطبيقات التجارية الحديثة. لا تعتمد الخدمات المصغرة على التكنولوجيا المُعدة لدعم هذا المفهوم فقط، بل تعتمد أيضًا على ثقافة وخبرة المؤسسة، والبنى المتوافرة لفرق التطوير لتتمكن من اعتماد هذا النموذج، فالخدمات المصغرة جزء من تحول أكبر في أقسام تكنولوجيا المعلومات نحو ثقافة DevOps، والتي تعني تعاون فرق التطوير Development والعمليات Operation تعاونًا وثيقًا لدعم أحد التطبيقات على مدار دورة حياته، والعمل على دورة إصدار سريعة أو مستمرة بدلًا من دورة تقليدية طويلة. أهمية المصدر المفتوح للخدمات المصغرة عندما تصمم تطبيقاتك من الألف إلى الياء لتكون معياريةً وقابلةً للتركيب، فسيتيح لك ذلك استخدام عدد كبير من المكونات المتاحة في أماكن مختلفة، والتي ربما كانت تتطلب حلولًا مسجلة الملكية سابقًا، إما بسبب ترخيص المكونات أو المتطلبات المتخصصة، ويمكن أن تكون بعض مكونات التطبيق أدوات جاهزةً مفتوحة المصدر، ويتوافر عدد لا يحصى من المشاريع مفتوحة المصدر التي تنفذ المتطلبات الشاملة لبنى الخدمات المصغرة، مثل المصادقة واكتشاف الخدمة والتسجيل والمراقبة وموازنة الحمل والتوسع وغيرها. يسهّل التركيز على الخدمات المصغرة على مطوري التطبيقات تقديم واجهات بديلة لتطبيقاتك، إذ ستصبح الاتصالات بين مكونات التطبيق قياسيةً عندما يكون كل شيء واجهة برمجة تطبيقات API، وإذا أراد المكون الاستفادة من تطبيقك وبياناتك فما عليه إلا أن يكون قادرًا على المصادقة والتواصل عبر واجهات برمجة التطبيقات القياسية، مما يتيح لمن هم داخل مؤسستك أو خارجها تطوير طرق جديدة بسهولة للاستفادة من بيانات وخدمات تطبيقك. الارتباط بين الحاويات والخدمات المصغرة ظهر المفهوم الحديث لحاويات نظام التشغيل OS الخفيفة في أوائل العقد الأول من القرن الحادي والعشرين مثل جزء من مشروع FreeBSD، وقدم Docker تجربة مستخدم محسّنةً لإنشاء صور الحاويات ومشاركتها، فلاقت اعتمادًا كبيرًا بدءًا من عام 2013. وتناسب الحاويات الخدمات المصغرة، وتتوافق مع الرغبة في الحصول على مكونات خفيفة يمكن إدارتها واستبدالها ديناميكيًا بسهولة، ويمكن تقليص الحاوية للحد الأدنى من القطع القابلة للاستمرار واللازمة لتشغيل ما بداخلها، بدلاً من وضع وظائف متعددة في نفس الجهاز الافتراضي أو المادي، على عكس الأجهزة الافتراضية، وتساعد سهولة التطوير التي يوفرها Docker والأدوات المماثلة على إمكانية تطوير الخدمات واختبارها بسرعة. الحاويات مجرد أداة، وبنية الخدمات المصغرة مجرد مفهوم، لذلك يمكن إنشاء تطبيق يتبع مفهوم الخدمات المصغرة دون استخدام الحاويات، تمامًا كما يمكن إنشاء تطبيق تقليدي داخل الحاوية، وسيكون هذا منطقيًا عندما تريد الاستفادة من إمكانيات تنظيم الحاوية دون إعادة كتابة تطبيق كبير ذي معمارية متراصة. تنسيق الخدمات المصغرة لتشغيل تطبيق قائم على الخدمات المصغرة، يجب أن تكون قادرًا على مراقبة الأجزاء المختلفة المكونة للتطبيق وإدارتها وتوسيع نطاقها، وتوجد أدوات مختلفة تسمح لك بذلك، وقد تكون بعض الأدوات مفتوحة المصدر جزءًا من الحل، مثل Kubernetes، ويمكن استخدام أدوات أخرى لتنظيم أجزاء التطبيق التي لا توجد في الحاويات، فعلى سبيل المثال قد تستخدم Heat لإدارة مكونات التطبيق في سحابة OpenStack. يمكن استخدام المنصة مثل خدمة Platform as a service، والتي تختصر إلى PaaS، والتي تتيح للمطورين التركيز على كتابة التعليمات البرمجية عن طريق تجريد بعض تقنيات التنسيق الأساسية، أي تضمين الميزات الأساسية لهذه التقنيات، كما تسمح لهم باختيار مكونات مفتوحة المصدر جاهزة لأجزاء معينة من التطبيق بسهولة، مثل محرك تخزين قاعدة البيانات، أو خدمة التسجيل أو خادم التكامل المستمر أو خادم الويب، ولإدارة مكونات التطبيق مباشرةً تستخدم بعض أنظمة PaaS، مثل OpenShift، مشاريع أولية مثل Docker و Kubernetes، بينما يحاول البعض الآخر إعادة تنفيذ أدوات الإدارة بأنفسهم. ماذا عن التطبيقات الحالية؟ قد يكون استخدام الخدمات المصغرة عنصرًا مهمًا للمضي قدمًا في استراتيجية تكنولوجيا المعلومات في المؤسسة، إلا أن العديد من التطبيقات لا تتوافق مع هذا النموذج، ولا نتوقع إعادة تصميم هذه التطبيقات بين عشية وضحاها لتلبي النموذج الجديد، إذ توجد تكلفة ثقافية وتقنية للانتقال إلى بنية الخدمات المصغرة، ولكن لحسن الحظ يمكن أن تعمل الخدمات المصغرة والتطبيقات التقليدية معًا في نفس البيئات، بشرط أن يكون لدى المنظمة استراتيجية قوية لتكنولوجيا المعلومات ثنائية النسق. تكنولوجيا المعلومات ثنائية النسق Bi-modal IT وفقًا لـشركة جارتنر Gartner، هي القدرة على استخدام أسلوبين مختلفين ولكن مترابطين لتطوير التطبيقات، يركز الأول على الاستقرار ووقت التشغيل، والثاني على المرونة والسرعة، من خلال طرق أحدث تتضمن أمورًا مثل التزويد الذاتي ودورات التطوير القصيرة، وستحتاج العديد من المنظمات، إن لم يكن معظمها، إلى التكيف للعمل مع كليهما في السنوات القادمة. ترجمة -وبتصرف- للمقال ?What are microservices من موقعopensource.com اقرأ أيضًا حماية الخدمات المصغّرة عن طريق DevOps مقدمة في بناء تطبيقات الويب باستخدام إطار العمل Angular وقاعدة بيانات Firestore مدخل إلى تطبيقات الويب التقدمية PWA
  7. الحوسبة الافتراضية هي تشغيل نسخة نظام حاسوب افتراضية في طبقة مستخرجة من العتاد hardware الفعلي، ويشير المصطلح غالبًا إلى تشغيل عدة أنظمة تشغيل على الحاسوب في وقت واحد، حيث يبدو للتطبيقات التي تعمل على الجهاز الافتراضي virtualized machine أنها على جهاز مخصص لها، ويكون نظام التشغيل والمكتبات والبرامج الأخرى فريدةً لنظام الضيف guest الافتراضي، وغير متعلقة بنظام التشغيل المضيف. تُستخدم الحوسبة الافتراضية لأسباب عدة، أكثرها شيوعًا بالنسبة لمستخدمي سطح المكتب هو تشغيل التطبيقات المخصصة لنظام تشغيل آخر غير النظام المثبت على حواسيبهم، دون الحاجة إلى تبديل أجهزة الحاسوب أو إعادة تشغيل نظام مختلف، أما بالنسبة لمسؤولي الخوادم، فهي توفر لهم القدرة على تشغيل أنظمة تشغيل مختلفة أيضًا، بالإضافة إلى طريقة لتقسيم نظام كبير إلى أجزاء أصغر، مما يسمح باستخدام أكثر كفاءةً للخادم من قبل عدد من المستخدمين المختلفين أو تطبيقات ذات متطلبات مختلفة، كما تسمح بالعزل، وحماية البرامج التي تعمل داخل الجهاز الافتراضي من العمليات التي تحدث في جهاز افتراضي آخر على نفس المضيف. المراقب hypervisor يُستخدم المراقِب Hypervisor لإنشاء وتشغيل الأجهزة الافتراضية، وهو صنفان، يسمى الأول بالنمط الأول type one أو الخادم الحقيقي bare metal، حيث تشغّل آلات الضيف الافتراضية مباشرةً على عتاد النظام، وتعمل مثل نظام تشغيل، ويدعى الصنف الثاني بالنمط الثاني type two أو المراقب المستضاف Hosted، وهو يشبه التطبيقات التقليدية التي يمكن تشغيلها وإيقافها مثل أي برنامج عادي، وهذا التقسيم غير شائع في الأنظمة الحديثة، خاصةً مع أنظمة مثل KVM، اختصار الأجهزة الافتراضيّة المعتمدة على نواة لينكس Kernel-based Virtual Machine، وهو جزء من نواة نظام لينكس Linux يمكنه تشغيل الأجهزة الافتراضية مباشرةً على العتاد الفعلي. الجهاز الافتراضي virtual machine الجهاز الافتراضي هو المحاكي المكافئ لنظام الحاسوب الذي يعمل على نظام آخر، ويمكنه الوصول إلى أي عدد من الموارد، مثل القدرة على المعالجة computing power، وكذلك الوصول المحدود إلى وحدة المعالجة المركزية والذاكرة في الجهاز المضيف، كما يمكنه استخدام واحد أو أكثر من أجهزة أقراص التخزين المادية أو الافتراضية، والوصول إلى واجهة شبكة افتراضية أو حقيقية، بالإضافة إلى أي أجهزة، مثل بطاقات الفيديو أو أجهزة USB، أو أي عتاد آخر مشترك مع الجهاز الافتراضي، ويشار إلى تخزين الجهاز الافتراضي على قرص افتراضي باسم صورة قرص disk image، وقد تحتوي على ملفات تشغيل الجهاز الافتراضي، أو على أي متطلبات محددة للتخزين. الحاوية container تحتوي الحاويات في نظام لينوكس التطبيقات وتعزلها عن النظام المضيف الذي تعمل عليه، كما تسمح للمطور بتجميع التطبيق مع كل الأجزاء التي يحتاجها، مثل المكتبات والاعتماديات الأخرى، وإرسالها كلها مثل حزمة واحدة، وقد صمِّمت لتسهيل تقديم تجربة متسقة، حيث ينقل المطورون ومسؤولو النظام التعليمات البرمجية من بيئات التطوير إلى بيئة الإنتاج بسرعة مع القدرة على تكرارها. لن يحدِث وضع التطبيقات في حاويات تغيرًا كبيرًا في مؤسستك على الأرجح، إلا إذا غيرت طريقة نشر تلك الحاويات وإدارتها، لذلك يستخدَم نظام Kubernetes لتنظيم الحاويات وإدارتها في نظام لينكس، وهو نظام مفتوح المصدر لإدارة مجموعات من الحاويات، ويوفر أدوات لنشر التطبيقات وتوسيعها عند الحاجة، وإدارة تغيرات التطبيقات الموجودة في الحاويات، والمساعدة في تحسين استخدام العتاد الكائن وراءها، وقد صمم ليكون قابلًا للتوسع، بالإضافة إلى ميزة التسامح مع الأخطاء fault-tolerant، من خلال السماح لمكونات التطبيق بإعادة التشغيل والتنقل عبر الأنظمة حسب الحاجة. تضيف أدوات أتمتة تكنولوجيا المعلومات مثل Ansible، ومنصات مشاريع الخدمات مثل OpenShift، إمكانيات إضافيةً لتسهيل إدارة الحاويات. العديد من التقنيات التي تدعم الحاويات هي تقنيات مفتوحة المصدر، مما يعني وجود مجتمع واسع من المساهمين، مما يساعد على التطور السريع لنظام واسع من المشاريع ذات الصلة التي تلبي احتياجات المنظمات المختلفة، الكبيرة والصغيرة. الموازنة بين الجهاز الافتراضي والحاوية تتشابه الحاويات والأجهزة الافتراضية من حيث المفهوم، فكلاهما يستخدم لإنشاء بيئات افتراضية معزولة لاختبار البرامج وتطويرها، لكنهما يعملان بطريقة مختلفة، فالحاويات ليست أجهزةً مستقلةً تمامًا، وإنما هي مجرد عملية معزولة تشترك في نفس نواة لينكس kernel مثل نظام التشغيل المضيف، وكذلك الملفات والمكتبات اللازمة لتنفيذ البرنامج المشغَّل ضمن الحاوية، في واجهة شبكة غالبًا، مما يظهر الحاوية مثل جهاز افتراضي، إلا أنها تتصرف عكسه، فلا تنشئ نظام تشغيل افتراضي كامل، ولا تحتاج إلى نسخ نظام التشغيل كليًا، وإنما تنسخ المكونات التي تحتاجها للعمل فقط، مما أدى إلى تحسن كبير في الأداء، وتقليل حجم التطبيق، وتسريع العمل، لأن العملية تعمل على مضيفها مع طبقة حماية إضافية حولها. وتصمم الحاويات عادةً لتشغيل برنامج واحد، بدلًا من محاكاة خادم كامل متعدد الأغراض، وعلى عكس الأجهزة الافتراضية فهي لا تحتاج إلى تضمين نظام تشغيل ضيف في كل حالة. لم كل هذا الاهتمام بالحاويات؟ كان مشروع Docker مفتوح المصدر أحد أكبر أسباب الاهتمام بتكنولوجيا الحاويات مؤخرًا، وهو أداة سطر أوامر command line سهّلت على كل من المطورين ومسؤولي النظام إنشاء الحاويات والتعامل معها، على غرار الطريقة التي سهّل بها Vagrant على المطورين استكشاف الأجهزة الافتراضية. Docker هو أداة سطر أوامر لتعريف محتويات حاوية لينكس في تعليمات برمجية، والتي يمكن بعد ذلك إصدارها وإعادة إنتاجها ومشاركتها وتعديلها بسهولة، كما لو أنها شيفرة مصدرية لبرنامج. اهتمت الحاويات أيضًا ببنية الخدمات المصغرة microservice، وهو نمط تصميم لتطوير التطبيقات، تُقسم فيه التطبيقات المعقدة إلى أجزاء أصغر قابلة للتركيب وتعمل معًا، ويطوَّر كل مكون على حدة، ثم تجمع المكونات لتكوين التطبيق، ويمكن أن تعمل كل خدمة داخل الحاوية، كما يمكن توسيعها باستقلالية عن بقية التطبيق حسب الحاجة. المحافظة على أمان الحاويات تضيف الحاوية الأمان عن طريق عزل التطبيقات عن التطبيقات الأخرى الموجودة على نظام تشغيل مضيف، ولكن مجرد وضع أحد التطبيقات في حاوية لا يكفي لإبقائه آمنًا. يشرح Dan Walsh خبير أمن الحواسيب، والمعروف بعمله على SELinux، بعض الطرق التي يعمل عليها المطورون ليتأكدوا من ضمان Docker وأدوات الحاويات الأخرى لميزات الأمان، بالإضافة إلى ميزات الأمان الموجودة في Docker، مثل حماية ملفات النظام، وفضاءات الأسماء Namespace التي توفر بعض الأمان. ترجمة -وبتصرف- للمقالين What are Linux containers? وWhat is virtualization? من موقع opensource.com. اقرأ أيضًا الفرق بين Docker والأجهزة الافتراضية أبرز المفاهيم التي ينبغي معرفتها عن الحاويات مدخل إلى Kubernetes
  8. كانت مواقع الويب مجرد ملفات نصيةً موضوعةً في مجلد، وتُشارَك مع العالم، وتنزَّل وتُعرَض في متصفح الويب، وكان هذا كل ما يجري خلال المعاملة transaction، ولكن الأمور أصبحت أكثر تعقيدًا، وصارت المواقع الإلكترونية تُشغل نماذج من التعليمات البرمجية، مما مكّن المبرمجين من إعداد ما يسمى "بتطبيقات الويب Web Applications"، مثل عربات التسوق، وبوابات تسجيل الدخول، وعملاء البريد الإلكتروني على الإنترنت، ومحررات الصور وغيرها. ما إن بدأ تشغيل الويب للتطبيقات، حتى أدرك مهندسو النظم ومصمموها أن الشبكة كانت في الأساس حاسوبًا عملاقًا Supercomputer، وأنه يجب إدارة الموارد على عُقد هذا الحاسوب، تمامًا مثلما تُدار على حاسوب محمول عند تشغيل العديد من التطبيقات في وقت واحد. كان بإمكاننا نسبيًا توقع الوقت المستغرق للحوسبة في أيام الحواسيب المركزية mainframe، إذ حجزنا موعدًا لاستخدام الحاسوب حرفيًا، ووضعنا مبدأً لإدارة الموارد اعتمد على قاعدة "من يأتي أولاً يُخدم أولاً"، لكن هذا قطعًا لا يصلح عند التعامل مع مليارات المستخدمين، فقد يحتاج أي عدد منهم إلى كل قدرة المعالجة للحاسوب في أي لحظة، ثم اعتقدنا في وقت لاحق أن الحل هو التوسع، أي المزيد من الخوادم التي تُشغل المزيد من نسخ التطبيقات، مما يعني إمكانية استخدام هذه التطبيقات من قبل مزيد من الأشخاص في أي وقت، ولكن قد يكون تشغيل 100 خادم مكلفًا عندما تزيد حركة المرور traffic، لذا فالمشكلة ليست في كيفية إدارة موارد الخادم الذي يشغِّل تطبيقًا ما فقط، بل في كيفية إدارة هذه الموارد ديناميكيًا أيضًا، أي اعتمادًا على عدد الأشخاص الذين يطلبون الوصول للتطبيق. ما هو Kubernetes؟ Kubernetes (والذي يُشار إليه بالاختصار K8s) هو حل مفتوح المصدر لأتمتة النشر والتوسع الديناميكي للتطبيقات المغلفة في حاويات عبر الإنترنت، ويستخدم Kubernetes ما يسمى بالحاويات containers، وهي نظام في لينكس Linux يجمع التطبيقات في وحدات منطقية لتُدار بطريقة مركزية وآمنة، وهي مصممة لتكون سريعة الزوال، أي يمكن أن تتعطل الحاوية أو تتوقف دون فقد بيانات المستخدم، لأن البيانات تُحفظ خارج الحاوية، وتعدّ التطبيقات المعبأة في حاويات تطبيقات قابلةً للتخلص منها، ويمكن لمجموعة من الخوادم إطلاق نُسخ جديدة من التطبيق عندما يحتاج إليها الكثير من المستخدمين، أو تشغيل نُسخ أقل عندما يحتاج إليها بضع مئات من المستخدمين فقط، ويستطيع مسؤول النظام تنفيذ ذلك يدويًا أو من خلال كتابة سلسلة من السكربتات لمراقبة حركة المرور والاستجابة، لكن Kubernetes يجعل ذلك آليًا. يمكن تثبيت Kubernetes للاختبار أو للإنتاج، فإذا كان الهدف تعلمه أو تجربة إنشاء تطبيق قائم على السحابة فقط، فيمكن تشغيل Kubernetes أو OpenShift أو OKD محليًا على حاسوبك، أما للمشاريع الجادة فيمكن بناء عنقود cluster خاص بك، وللبيئات الإنتاجية الكبيرة يمكن تثبيت OKD أو Kubernetes. صمم Kubernetes لعمليات النشر الكبيرة، لذلك ربما لا تحتاج إلى استخدامه إلا إذا كان لديك الكثير من المستخدمين الذين يزورون تطبيقاتك على الويب مما يؤثر سلبًا على الأداء، لكن يمكنك تشغيله في المنزل (عبر خادم محلي تضبطه عبر راسبيري باي في المنزل)، ويسهل ذلك كلما ازدادت شهرة Kubernetes. يسهّل Kubernetes إدارة الحاويات، إلا أنه عبارة عن مجموعة أدوات تصنعها بنفسك غالبًا، ويمكن تنزيله وتشغيله تمامًا مثلما طوِّر، ولكن ذلك يعني أنك ستطور أدواتك الخاصة لدعم عناقيدك فيه، وتوجد بعض الأدوات التي تساعد في ذلك، مثل Kubash وهي واجهة سطرية تفاعلية لعنقودك للمساعدة في إنشاء صور الحاويات وتوفير المضيفين، وKonveyor وهي سلسلة أدوات كاملة للمساعدة في ترحيل مجموعتك وتحسينها، وHelm وهو مدير الحزم، وغيرها الكثير. ما هي OpenShift و OKD؟ OpenShift هي منصة لتطبيق Kubernetes مبنية للسحابة، بينما OKD هو المشروع الأولي له، وهو مفتوح المصدر. تتجه البنية التحتية الحديثة إلى تعدد السحابات Multicloud والسحابة الهجينة hybrid cloud، لذا احتاج مسؤولو النظام والمطورين إلى منصة مستقرة وقابلة للتنبؤ، ويوفر OKD المرونة للمهندسين عند اختيار السحابة التي تعمل عليها بنيتهم التحتية، كما توفر للمسؤولين وصولًا سهلًا إلى إدارة المستخدمين والموارد، وتتيح للمطورين تطوير تطبيقات knative (أي أصيلةً مع "Kubernetes") وجاهزة للنشر على السحابة، كما أنها لوحة تحكم وطبقة تجريد abstraction وسلسلة أدوات في آن واحد. OpenShift وOKD هي توزيعات Kubernetes، ويمكن للمسؤولين تشغيلها مع الاستمرار في استخدام جميع أوامر Kubernetes الأكثر شيوعًا، مثل kubectl وkubeadm وما إلى ذلك، ويمكن للمسؤولين استخدام جميع أوامر لينكس المألوفة لديهم لإدارة نظام التشغيل المضيف، لأن Kubernetes يعمل ويتفاعل مباشرةً مع نظام لينكس Linux وحاوياته. كيف يعمل نظام Kubernetes؟ تعمل التطبيقات الموجودة على السحابة داخل حاويات، والحاويات ليست أشياءً ماديةً، بل هي مفهوم برمجي يعني تجميع العمليات الجارية على الخادم معًا لتتشارك في موارد معينة، وتشغَّل الحاويات عادةً بواسطة CRI-O أو Podman أو LXC أو Docker. يُطلق على وحدة التنظيم الرئيسية في Kubernetes عند تشغيل التطبيقات اسم pod، وهي عبارة عن مجموعة من الحاويات، تُدار معًا على نفس الجهاز أو الجهاز الافتراضي أو العقدة، وهي مصممة لتتواصل مع بعضها البعض بسهولة، ويمكن تنظيم عدد منها في خدمة، وهي مجموعة pod تعمل معًا، وتُنظم بواسطة نظام من العناوين labels، مما يسمح بتخزين البيانات الوصفية حول كائنات مثل pods في Kubernetes. يمكن تنظيم كل هذه الأجزاء بطريقة متوافقة، ويمكن التنبؤ بها من خلال واجهة برمجة التطبيقات API، أو من خلال OpenShift أو OK أو تعليمات محددة مسبقًا أو باستخدام أوامر طرفية. ترجمة -وبتصرف- للمقال ?What is Kubernetes من موقع opensource.com. اقرأ أيضًا مدخل إلى Kubernetes تعلم أساسيات Kubernetes مدخل إلى Helm: مدير حزم Kubernetes كيفية إعداد مكدس السجلات EFK على Kubernetes
×
×
  • أضف...