понедельник, 1 февраля 2010 г.

Cамо-тестирующееся ПО

Сегодня мой провайдер (Bigtelecom) оставил меня без доступа в Интернет из-за проблемы в системе биллинга. Несколько лет все работало без сбоев. Система исправно переносила остаток средств с предыдущего месяца в новый. А тут вдруг перестала. Оставив без доступа в Интернет всех своих клиентов. Естественно, клиенты ломанулись на сайт, проверять, в чем же дело и обрушили его в конец.

Давайте зададимся вопросом, почему так происходит? Почему сегодняшние программные системы не могут отслеживать свое собственное некорректное поведение и хотя бы по факту сообщить администраторам об аномалиях?

Неужели так сложно добавить проверку, что если система насчитала всем минусовой баланс, то что-то тут не то? Или более сложный вариант: сохранять историю своей работы и искать аномалии, сравнивая ее с текущим поведением. И тут все просто -- сохраняем два графика (процент задолжников/процент оплативших) и ищем аномальное поведение.

В обоих случаях это так называемое реактивное поведение. Еще более сложный и интересный случай -- проактивное поведение, когда система заранее (например, за неделю или после внесения изменений в настройки) осуществляет упреждающее само-тестирование и сообщает о будущих значительных изменениях в своем поведении.

Ничего сверхсложного нету. Более того, такие системы известны под названием self-* -- сокращение от self-monitoring, self-optimization, self-replication и т.п. И это не какие-то бесчеловечные эксперименты сумасшедших ученых. Такие системы уже есть на массовом рынке. Например, СУБД IBM DB2 осуществляет само-мониторинг, оптимизацию настроек в зависимости от особенностей использования и нагрузки.

Что такая автономная и самостоятельная система дает для бизнеса? Все очень просто и понятно:

"We only have 3 DBAs supporting over 100 instances of DB2. We didn't even consider Oracle for this application because administrative costs would be prohibitive... it takes 2 DBAs just to manage 3 instances of Oracle"

Кто же виноват в этой ситуации?
Подойдем к вопросу системно. Во-первых, виноваты недоросли-разработчики системы биллинга, которые не доросли до self* систем.



Во вторых, криворукие админы, не протестировавшие свои изменения в системе.



Ну и самый крайний тут -- самый большой начальник компании Bigtelecom, который не вызвал нерадивых админов в 01:00 ночи на работу для исправления багов.


А такое мероприятие оказало бы сильнейшее профилактическое и воспитательное действие на "человеко-машинную систему". Заставило бы админов каждый раз вручную выполнять операции по тестированию, которые не догадались автоматизировать разработчики системы. В результате, для конечного пользователя это выглядело бы как настоящая качественная self-* система :)

Да, совокупность железо-софт-администратор (или ПК-1С-бухгалтер) вполне можно считать единой человеко-машинной системой для добывания денег своему хозяину. Киборги уже среди нас! Это мы с вами, господа! :)



Что делать?
С вопросом "кто виноват?" разобрались. Теперь осталось понять, "что делать?" :)
Об этом -- в следующий раз.