# براونوت (هندسة البرمجيات)

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

## مراجع

* ↑ Cristian Klein, Martina Maggio, Karl-Erik Årzén, and Francisco Hernández-Rodriguez. 2014. Brownout: building more robust cloud applications. In Proceedings of the 36th International Conference on Software Engineering (ICSE 2014). ACM, New York, NY, USA, 700–711. دُوِي:10.1145/2568225.2568227. نسخة محفوظة 2 أكتوبر 2018 على موقع واي باك مشين.
* ↑ Gabriel A. Moreno, Javier Cámara, David Garlan, and Bradley Schmerl. 2015. Proactive self-adaptation under uncertainty: a probabilistic model checking approach. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2015). ACM, New York, NY, USA, 1–12. دُوِي:10.1145/2786805.2786853. نسخة محفوظة 25 يوليو 2020 على موقع واي باك مشين.
* ↑ Nah, F. F. 2004. A study on tolerable waiting time: How long are Web users willing to wait? Behaviour & Information Technology, 233, 153–163. دُوِي:10.1080/01449290410001669914.
* ↑ Daniel Fleder, Kartik Hosanagar, and Andreas Buja. 2010. Recommender systems and their effects on consumers: the fragmentation debate. In Proceedings of the 11th ACM conference on Electronic commerce (EC '10). ACM, New York, NY, USA, 229–230. دُوِي:10.1145/1807342.1807378
* ↑ Cristian Klein, Alessandro Vittorio Papadopoulos, Manfred Dellkrantz, Jonas Dürango, Martina Maggio, Karl-Erik Årzén, Francisco Hernández-Rodriguez, and Erik Elmroth. 2014. Improving Cloud Service Resilience Using Brownout-Aware Load-Balancing. In Proceedings of the 2014 IEEE 33rd International Symposium on Reliable Distributed Systems (SRDS '14). IEEE Computer Society, Washington, DC, USA, 31–40. دُوِي:10.1109/SRDS.2014.14. نسخة محفوظة 15 أغسطس 2017 على موقع واي باك مشين.
* بوابة برمجيات