جعل تطوير البرمجيات أكثر مراعاة للبيئة | الكمبيوتر الأسبوعية
إن متطلبات تطوير البرمجيات الحديثة تعني أنه يُطلب من المبرمجين كتابة المزيد من التعليمات البرمجية وتقديم وظائف جديدة بشكل أسرع من أي وقت مضى. لقد أعطى القول المأثور “عدم إعادة اختراع العجلة” العديد من الاختصارات التي يحتاجون إليها لتوصيل التعليمات البرمجية بسرعة وبشكل موثوق في معظم الحالات.
بدلاً من كتابة شيء ما من الصفر، يجب على مطور البرامج العثور على شيء مناسب في مكتبة البرمجة أو مستودع التعليمات البرمجية المصدر. وفي هذه الأيام، يتوفر للمطورين أيضًا خيار الاعتماد على القوة التي تشتمل عليها الخدمات الصغيرة.
الخدمات الصغيرة تتغير بشكل جذري العلاقة بين مطور البرنامج والكود المطلوب لتحقيق الوظيفة المطلوبة، كما يوضح شون أوميرا، كبير مسؤولي التكنولوجيا في Mirantis: “في الماضي، كان لديك عادةً مطور واحد أو فريق صغير من المطورين الذين قاموا بتطوير كل مكون من مكونات البرنامج. النظام، ويوافق كل منهم على العمل على مكونات مختلفة.
ويقول إنه كان على الفريق بناء كل شيء من الصفر، ولكن عندما أصبحت مكتبات البرامج متاحة، تمكن المطور من الاستفادة من الوظائف المعدة مسبقًا. التغيير الكبير في الخدمات الصغيرة هو أن عقلية مطوري البرامج قد تغيرت – فهم الآن قادرون على استهلاك العمل الذي طوره أشخاص آخرون ويمكنهم تحقيق مكاسب هائلة في الإنتاجية من خلال القيام بذلك.
ويقول إن التأثير هو أن التعليمات البرمجية التي تستخدم الخدمات الصغيرة تميل إلى استهلاك قدر أكبر من البنية التحتية لتكنولوجيا المعلومات مقارنة بالكود الذي تم تطويره بطريقة أكثر تقليدية.
ظهور عدم الكفاءة في الترميز
أصبح عدم الكفاءة أمرًا شائعًا الآن في تطوير البرمجيات. يقول آندي باول، كبير مسؤولي التكنولوجيا في جامعة كانتربري كرايست تشيرش: “الأدوات الحديثة جعلت الناس كسالى”. “عندما كنت أكتب مواقع الويب، كان هذا قبل ظهور .Net، وفي ASP الكلاسيكي [active server pages] – كان عليك أن تكتب كل الأشياء الخاصة بك.
عندما اعتاد الأشخاص على زيارة مواقع الويب عبر اتصال مودم ذي نطاق ترددي منخفض، يقول: “كان عليك أن تكون واعيًا بحجم الصورة، وأوراق الأنماط، وأحجام الصفحات؛ كان عليك أن تكون واعيًا بكمية البيانات التي ترسلها عبر الأنبوب لأن وقت التحميل كان مهمًا.
بالنسبة لباول، من منظور تطوير التطبيقات، كان هذا يعني أن المطورين أخذوا بعين الاعتبار كفاءة التعليمات البرمجية. “كان عليك أن تكون فعالاً حقًا في التعامل مع طبقة قاعدة البيانات وواجهة برمجة التطبيقات (API) الخاصة بك [application programming interface] طبقة “، كما يقول.
تمت كتابة الاستعلامات إلى أنظمة المعاملات بطريقة تعيد الحد الأدنى من البيانات القابلة للتطبيق، بينما الآن، كما يقول: “تحصل على 100000 سجل أو صف وتذهب بعيدًا، وتختار ما تريد من هذا [dataset] في الذاكرة لأن الذاكرة أصبحت رخيصة جدًا.
معالجة انتفاخ الكود
اليوم، يتعامل المطورون مع عرض النطاق الترددي كمورد غير محدود وقوة معالجة، كما أن الذاكرة والتخزين رخيصان ومتوفران. وقد أدى ذلك إلى تضخم التعليمات البرمجية، حيث لم يعد المطورون يركزون على كتابة البرامج التي تعمل بأكبر قدر ممكن من الكفاءة وتستخدم أصغر مساحة للتخزين والذاكرة وقوة المعالجة.
Mav Turner، كبير مسؤولي المنتجات والاستراتيجية في Tricentis، يشير إلى أن تضخم التعليمات البرمجية ينبع عادةً من عدة مصادر، مثل بناء الجملة المطول بشكل مفرط، والميزات المتكررة أو غير المستخدمة، ونقص التحسين أثناء التطوير. بالإضافة إلى ذلك، يقول إن قواعد التعليمات البرمجية القديمة قد تتراكم الديون الفنية بمرور الوقت، مما يؤدي إلى عمليات تنفيذ متضخمة ومعقدة.
ومع ذلك، كما يوضح تيرنر: “من خلال تبني ممارسات الترميز النظيفة ومبادئ التصميم المعياري وإعادة البناء المنتظمة، يمكن للمطورين التخفيف من تضخم التعليمات البرمجية والحفاظ على قواعد تعليمات برمجية أصغر حجمًا وأكثر قابلية للإدارة.”
يحتاج قادة تكنولوجيا المعلومات إلى النظر في العوامل والمحركات التي تجعل مطوري التعليمات البرمجية يكتبون بكفاءة أقل. “لا أحد ينوي أن تتضخم التعليمات البرمجية. يقول المطورون لا يحاولون تدمير البيئة موريس كالينوفسكي، مدير المنتج في شركة Qt.
ومع ذلك، كما يشير كالينوفسكي، هناك العديد من العوامل التي تسبب عدم الكفاءة غير المقصودة. على سبيل المثال، يقول: “في كثير من الأحيان، تنتهي النماذج الأولية في المنتج بسبب ضغوط الوقت التي تفرض دورات تسليم قصيرة على فرق التطوير. وهذا يؤدي إلى ديون فنية في وقت لاحق من دورة حياة التطوير، وهذا بدوره له تأثير غير مباشر يتمثل في الإضرار بالكفاءة.
وفقًا لكالينوفسكي، من المهم مراعاة مجال التطبيق وحالة الاستخدام للكود الذي يتم تطويره. “إذا كنت تقوم بتطوير تعليمات برمجية “لأغراض عامة”، فهل تحتاج البيانات المدخلة إلى فحص دلالي؟ هل يغطي الكود جميع السيناريوهات المحتملة، بما في ذلك السيناريوهات التي قد لا تحدث أبدًا؟
حتى التعليمات البرمجية عالية الكفاءة قد تتعرض لحالات استخدام إضافية تحتاج إلى فحص ومعالجة مختلفة. ويحذر كالينوفسكي من أن هذا يؤدي إلى المزيد والمزيد من الحالات التي تتم فيها كتابة التعليمات البرمجية لدعم هذه الاستثناءات. ومع تراكم هذه العناصر، تصل التعليمات البرمجية إلى نقطة قد يتم فيها فقدان فوائد الأداء التي تم تصميمها في الأصل.
يقول كالينوفسكي إن قادة تكنولوجيا المعلومات يجب أن يفكروا في إعادة هيكلة تلك الأجزاء المتضخمة من التعليمات البرمجية. “بالطبع، عليك أولاً أن تعرف أي من مشاريعك متضخم في المقام الأول. وهنا يأتي دور الكثير من أدوات المطورين، مثل تحليل التعليمات البرمجية الثابتة والديناميكية، والتوصيف، وأخذ العينات المحسنة.
عدم الكفاءة في الاختبار
يحث تيرنر من Tricentis صناع القرار في مجال تكنولوجيا المعلومات على اعتمادها التطوير القائم على الاختبار (TDD) باعتبارها منهجية تكنولوجيا المعلومات المستدامة. ومن خلال خبرته، يقدم TDD تقنية قوية يمكنها المساهمة بشكل كبير في إنشاء كود أخضر يتميز بجودة وكفاءة أعلى.
يقول تورنر: “من خلال التأكيد على إنشاء الاختبارات قبل كتابة التعليمات البرمجية، يضمن TDD أن المطورين لديهم فهم واضح للسلوك والوظائف المتوقعة للتعليمات البرمجية الخاصة بهم منذ البداية”.
وبالنظر إلى الاختبار أثناء تطوير التطبيقات، يقول فيد سين، رئيس قسم الابتكار في TCS UK وأيرلندا، إنه يجب على قادة تكنولوجيا المعلومات أيضًا أن يأخذوا في الاعتبار التأثير البيئي لاختبار الانحدار.
ويقول: “عندما تقوم بإجراء اختبارات الانحدار، ينتهي بك الأمر إلى اختبار الكثير من الأشياء مرارًا وتكرارًا، فقط لمعرفة ما إذا كان البرنامج سيتعطل أم لا”. “ولكن في كل مرة تقوم فيها بإجراء اختبار الانحدار، فإنك تستهلك المزيد من الموارد، وكل منها يولد القليل من البصمة الكربونية.”
وفقًا لسين، ينبغي أن يكون من الممكن بناء طرق أكثر ذكاءً للاختبار، بحيث لا يضطر المطورون إلى الاستمرار في اختبار حالة الاستخدام نفسها مرارًا وتكرارًا.
يشير سين إلى أنه إذا تجنب مطورو البرامج إجراء اختبار القوة الغاشمة، فيمكنهم تقليل تأثير اختبار تكنولوجيا المعلومات وبيئة التطوير بمقدار صغير، ولكن كبير، وهو ما يؤدي بشكل تراكمي إلى تأثير أكبر على جعل تكنولوجيا المعلومات أكثر خضرة وأقل كثافة في الكربون.
إلى جانب البرمجة، يمكن لقادة تكنولوجيا المعلومات أيضًا النظر في معالجة التأثير البيئي العام لبيئات تطوير البرمجيات واختبارها التي يحتاجها المطورون.
يتحدث في KubeCon + CloudNativeCon في باريس في شهر مارس، ناقش جوالتر بارباس بابتيستا، المستشار الرئيسي لتمكين المنصة واستراتيجيتها في شركة Deutsche Bahn، الجهود المستمرة التي يبذلها مشغل السكك الحديدية لرصد التأثير البيئي لتطبيقاته المستندة إلى السحابة وتقليله. تحدث بابتيستا عن تمكين المطورين، واصفًا مطوري البرامج بأنهم “صناع القرار اليومي بشكل فعال” فيما يتعلق بما يتم وضعه في البرامج.
ويقول: “إذا لم نشرك المطورين ونمنحهم الأدوات، فلن نتمكن من إحداث تغيير في الطريقة التي نطور بها التعليمات البرمجية والطريقة التي ندير بها البنية التحتية”.
على مدى السنوات القليلة الماضية، ركزت دويتشه بان على التقارب بين الشركات التابعة بأكملها لفرض التقييس. ويقول إن هذا يعني “أننا قادرون على الاستفادة من التأثيرات وتوفير مستوى أعلى من التوحيد القياسي”.
Kubernetes هي أداة بناء النظام الأساسي المستخدمة في Deutsche Bahn. تتيح المراقبة لمسؤولي تكنولوجيا المعلومات رؤية استخدام المعالج وضبط أحمال عمل الحاوية تلقائيًا، وتحسينها بما يتناسب مع احتياجات أحمال العمل.
يتم أيضًا استخدام الجدولة لمساعدة Deutsche Bahn على ضمان إمكانية وضع بيئات التطوير والاختبار في وضع السكون عندما لا يعمل المطورون، مما يوفر طاقة المعالجة.
تخضير الذكاء الاصطناعي
يتطور مشهد تكنولوجيا المعلومات باستمرار، مما يعني أن استدامة تكنولوجيا المعلومات هي هدف متحرك. في حلقة نقاش في حدث KubeCon + CloudNativeCon، حذر تشاك دوبوك، رئيس التسويق المباشر للمنتجات في OpenShift في RedHat، من ذلك الذكاء الاصطناعي (AI) يقود Kubernetes إلى مكان لم يسبق له مثيل.
وقال: “عندما تضيف الذكاء الاصطناعي إلى أحد التطبيقات، فإنك تزيد من استخدام الطاقة بمقدار 10 مرات”.
النظر في طرق جعل الذكاء الاصطناعي أكثر مراعاة للبيئة، أوليفر كينغ سميث، الرئيس التنفيذي لشركة SmartR AIيقول الباحثون إن الباحثين يطورون طرقًا فعالة لصنع واستخدام الذكاء الاصطناعي، مثل إعادة استخدام النماذج، ونماذج ReLora، وMixture of Experts (MoE)، والقياس الكمي.
عند مناقشة إعادة استخدام النموذج، يقول كينج سميث إن التقنية تتضمن إعادة تدريب نموذج تم تدريبه بالفعل لغرض جديد، مما يوفر الوقت والطاقة مقارنة بالتدريب من الصفر. ويقول: “لا يحافظ هذا النهج على الموارد فحسب، بل يؤدي أيضًا في كثير من الأحيان إلى نماذج ذات أداء أفضل”. “لقد كان كل من Meta وMistral جيدًا في إطلاق النماذج التي يمكن إعادة استخدامها.”
وبالنظر إلى ReLora وLora، يقول King-Smith أنهما مصممان لتقليل عدد الحسابات المطلوبة عند إعادة تدريب النماذج لاستخدامات جديدة. وهذا يوفر الطاقة ويتيح استخدام أجهزة كمبيوتر أصغر حجمًا وأقل استهلاكًا للطاقة. ويقول: “هذا يعني أنه بدلاً من الاعتماد على أنظمة كبيرة كثيفة الاستهلاك للطاقة مثل DGX من Nvidia، يمكن لبطاقة رسومات متواضعة أن تكون كافية في كثير من الأحيان لإعادة التدريب”.
تحتوي نماذج وزارة البيئة، مثل تلك التي أصدرتها شركة ميسترال مؤخرًا، على معلمات أقل من النماذج التقليدية. ويقول كينج سميث إن هذا يؤدي إلى عدد أقل من العمليات الحسابية ويقلل من استهلاك الطاقة. “تقوم نماذج وزارة التربية والتعليم بتنشيط الكتل الضرورية فقط عند الاستخدام، تمامًا مثل إطفاء الأضواء في الغرف غير المستخدمة، مما يؤدي إلى انخفاض بنسبة 65٪ في استخدام الطاقة.”
يصف كينج سميث التكميم بأنه تقنية تقلل من حجم نماذج الذكاء الاصطناعي. “من خلال قياس النموذج، يتم تقليل عدد البتات المطلوبة لتمثيل كل معلمة. وهذا يؤدي إلى تقليص حجم النموذج، مما يتيح استخدام أجهزة أقل قوة وأكثر كفاءة في استخدام الطاقة.
في حين أن القياس الكمي يمكن أن يكون له تأثير بسيط على دقة النموذج، إلا أن كينج سميث يدعي أنه بالنسبة للعديد من التطبيقات العملية، فإن هذه المقايضة ليست ملحوظة.
تساعد معالجة تضخم التعليمات البرمجية والمستويات غير الضرورية من اختبار الانحدار في جعل البرمجة أكثر مراعاة للبيئة. هناك أيضًا خيارات لاستخدام خدمات مصغرة أو خوارزميات أكثر كفاءة. لكن الإجماع العام بين خبراء الصناعة هو أنه من الصعب للغاية تغيير شيء اعتاد عليه مطورو البرمجيات.
ويرى أوميرا من شركة Mirantis فرصة لمعالجة تكنولوجيا المعلومات الخضراء في تطوير البرمجيات من منظور البنية التحتية لتكنولوجيا المعلومات. ويقول: “إذا تمكنا من إزالة التعقيد وتقديم مكونات البنية التحتية لتكنولوجيا المعلومات الضرورية فقط، فسنكون قادرين على إنشاء طبقة رقيقة عبر جميع البنية التحتية لتكنولوجيا المعلومات”.
يمكن أيضًا استخدام Kubernetes للتأكد من أن بيئات تطوير البرمجيات واختبارها لا تستخدم موارد تكنولوجيا المعلومات دون داع.
تسمح مثل هذه التقنيات للبنية التحتية لتكنولوجيا المعلومات بأن تكون خفيفة الوزن وموفرة للطاقة. يمكن استخدام تقنية مشابهة، كما يشير كالينوفسكي من شركة Qt، في البرمجة لتقليل عدد السيناريوهات المختلفة التي تؤدي إلى الاستثناءات التي يحتاج الكود الذي يتم تطويره إلى التعامل معها.