Некоторые считают, что народ занимается ерундой и ленится только тогда, когда ему нечего делать. Проблема лентяйства решается просто: загрузить работой. В результате програмисты всегда имеют несколько срочных задач, из-за которых им некогда уделять внимание таким интересным и полезным ресурсам, как собственный баг трекер.
Нашли с коллегой в своей багзилле старый баг, суть такова. Есть демон, который может быть параллельно запущен на нескольких серверах. Каждый запущенный экземпляр записывает в базу данных информацию о себе, регулярно обновляет дату последней активности и удаляет все устаревшие записи (такие, которые не обвновлялись дольше определённого промежутка времени), считая, что другой экземпляр мог самоубиться и не почистить за собой.
И вот, значит, формулировка бага: «демон с какого-то момента начинает обновлять свои записи не каждую минуту, а раз в две с половиной минуты (вот вам логи), а другие экземпляры считают его записи устаревшими и удаляют их». Правильное решение проблемы: заставить техподдержку и тестировщиков выяснить, в чём причина задержек, найти виновного и заставить его исправить ошибку/устранить проблему.
Но высоконагруженный программист вместо этого добавляет конфигурируемый параметр: теперь таймаут устаревания записи можно настраивать самостоятельно. То есть получаем следующий нюанс: демон начинает произвольным образом забывать/опаздывать обновлять записи о том, что он ещё не умер, а техподдержка подстраивает под него таймауты в настройках. Образец стройности архитектуры, нечего сказать.
Самое главное в итоге, конечно, это не то, что архитектура получилась неочевидная. Главное, что техподдержка без работы не останется. Руководство одобряет такой подход, ибо техподдержка у нас платная.
Нашли с коллегой в своей багзилле старый баг, суть такова. Есть демон, который может быть параллельно запущен на нескольких серверах. Каждый запущенный экземпляр записывает в базу данных информацию о себе, регулярно обновляет дату последней активности и удаляет все устаревшие записи (такие, которые не обвновлялись дольше определённого промежутка времени), считая, что другой экземпляр мог самоубиться и не почистить за собой.
И вот, значит, формулировка бага: «демон с какого-то момента начинает обновлять свои записи не каждую минуту, а раз в две с половиной минуты (вот вам логи), а другие экземпляры считают его записи устаревшими и удаляют их». Правильное решение проблемы: заставить техподдержку и тестировщиков выяснить, в чём причина задержек, найти виновного и заставить его исправить ошибку/устранить проблему.
Но высоконагруженный программист вместо этого добавляет конфигурируемый параметр: теперь таймаут устаревания записи можно настраивать самостоятельно. То есть получаем следующий нюанс: демон начинает произвольным образом забывать/опаздывать обновлять записи о том, что он ещё не умер, а техподдержка подстраивает под него таймауты в настройках. Образец стройности архитектуры, нечего сказать.
Самое главное в итоге, конечно, это не то, что архитектура получилась неочевидная. Главное, что техподдержка без работы не останется. Руководство одобряет такой подход, ибо техподдержка у нас платная.
Комментариев нет:
Отправить комментарий