2018-12-04 Молчаливые Ошибки

Постановка задачи: Добавить опцию в продукт Reductor, которая включает экспериментальные модули ядра.

Проблема: Выяснилось, что модули несовместимы с некоторыми версиями ядра.

Ошибка: Добавили код с анализом версии ядра и если версия не подходит - функционал не активируется, о чем пишется в вывод загрузки Reductor. Благодаря этому Reductor сможет загрузиться и работать как будто эта опция не установлена.

В чем ошибка: Продукт сконфигурирован определенным образом и не выполняет требований - это ошибка в продукте. Об ошибке продукт должен проинформировать, вариант с выводом в консоль - пользователь не увидит. Ошибка должна быть исправлена либо возвращением к совместимой конфигурации, либо устранением несовместимости в продукте. Текущий вариант приведет к тому, что опция со временем перестанет работать и ни кто не заметит, также опция не будет развиваться.

Как нужно: Продукт должен сообщать об ошибке, и делать это так, чтобы пользователь это увидел. Сделать это можно несколькими способами:

  1. падать при старте Reductor (редуктор не запустился после изменения конфигурации или после обновления ядра → пользователь увидел; сработали тесты мониторинга)
  2. слать ALARM в систему мониторинга, явно сообщающую об ошибке конфигурации и что Reductor работает не так, как должен

В этих случаях ошибка конфигурации будет явно заметна, нельзя будет ее проигнорировать.

P.S. отдельно стоит отметить пользу этого подхода к продуктовой разработке: если опция важна (а неважную опцию не стали бы реализовывать), значит ее нужно поддерживать. Заявка от клиента о несовместимости или ALARM заявка с ошибкой - будут сигнализировать, что нужно выделить время для работы над этим функционалом. Причем она просигнализирует ровно в тот момент, когда в этом возникнет реальная необходимость.

~~OWNERAPPROVE~~

Прочитал правила разработки 2018-12-04 крикливые ошибки
Yes(1) No(0) Clear

Yes:
,

No:

Ваш комментарий. Вики-синтаксис разрешён: