Przerwa w działaniu (inżynieria oprogramowania)
Brownout w inżynierii oprogramowania to technika polegająca na wyłączeniu niektórych funkcji aplikacji.
Opis
Brownout służy do zwiększenia odporności aplikacji na niedobory mocy obliczeniowej . Jeśli zbyt wielu użytkowników uzyskuje jednocześnie dostęp do aplikacji hostowanej online , podstawowa infrastruktura obliczeniowa może zostać przeciążona , co spowoduje, że aplikacja przestanie odpowiadać. Użytkownicy prawdopodobnie porzucą aplikację i przestawią się na konkurencyjne alternatywy, ponosząc w ten sposób długoterminową utratę przychodów. Aby lepiej radzić sobie w takiej sytuacji, można dodać aplikacjom możliwość zaciemnienia: Aplikacja wyłączy niektóre funkcje – np. sklep internetowy nie będzie już wyświetlał rekomendacji powiązanych produktów – aby uniknąć przeciążenia. Chociaż ograniczenie funkcji ma generalnie negatywny wpływ na krótkoterminowe przychody właściciela aplikacji, można uniknąć długoterminowej utraty przychodów.
Technika ta inspirowana jest przerwami w dostawie prądu w sieciach elektroenergetycznych , polegająca na obniżaniu napięcia sieci elektroenergetycznej w przypadku, gdy zapotrzebowanie na energię elektryczną przewyższa produkcję. Niektórzy konsumenci, na przykład żarówki, będą ściemniać – stąd pochodzi termin – i pobierają mniej energii, pomagając w ten sposób dopasować popyt do produkcji. Podobnie aplikacja typu „blackout” pomaga dopasować swoje wymagania dotyczące mocy obliczeniowej do tego, co jest dostępne w infrastrukturze docelowej.
Brownout uzupełnia elastyczność . Ta pierwsza może pomóc aplikacji wytrzymać krótkotrwały niedobór pojemności, ale robi to bez zmiany pojemności dostępnej dla aplikacji. Natomiast elastyczność polega na dodawaniu (lub usuwaniu) pojemności do aplikacji, najlepiej z wyprzedzeniem, tak aby całkowicie uniknąć niedoboru wydajności. Te dwie techniki można łączyć; np. zanik napięcia jest wyzwalany, gdy liczba użytkowników nieoczekiwanie wzrasta, aż do wyzwolenia elastyczności, która zwykle wymaga kilku minut, aby pokazać efekt.
Brownout jest stosunkowo nieuciążliwy dla programisty, na przykład można go zaimplementować jako poradę w programowaniu aspektowym. Jednak sąsiednie komponenty, takie jak moduły równoważenia obciążenia, muszą być świadome utraty zasilania, aby odróżnić przypadki, w których aplikacja działa normalnie, od przypadków, w których aplikacja utrzymuje niski czas odpowiedzi, wyzwalając utratę zasilania.