Не каждый байт должен спрашивать разрешения.
Я тут поймал себя на забавной мысли. Раньше на архитектурное «а вдруг?» мне хотелось ответить ещё одним механизмом контроля.
Заранее выделить. Зарезервировать. Согласовать. Проверить, что все согласились. На случай, если не согласились, тоже что-нибудь построить.
И в какой-то момент пользователь просто хочет сохранить файл, а у меня для этого должно состояться заседание распределённого правительства.
Ну охуеть. Зато архитектура строгая :D
Самое неприятное — каждый отдельный механизм можно вполне убедительно объяснить. Вот здесь защищаемся от гонки, здесь от рассинхронизации, здесь ещё подстрахуемся. Но потом смотришь на всё целиком и спрашиваешь: мы вообще делаем систему надёжнее или просто увеличиваем количество условий, при которых она согласится работать?
И вот от этого желания держать за горло каждый переход состояния я постепенно отхожу.
Мне всё ближе lazy-подход: делать работу тогда, когда она действительно нужна. Не поднимать полмира ради возможности когда-нибудь им воспользоваться. Не заставлять обычное действие проходить через всю систему только потому, что нам так удобнее поддерживать красивую модель.
С квотами похожая история. Я больше не считаю, что самый жёсткий лимит автоматически означает самое правильное решение. Где превышение допустимо и понятна его цена — можно выбрать soft quota. Где оно недопустимо — нужна настоящая жёсткая граница, а не обещание, что очередной контроллер всё вовремя заметит.
И нет, я не пришёл к «да похуй, потом починим». Потерянные данные, двойные списания и дырявая изоляция от слова lazy приемлемыми не становятся.
Просто теперь мне мало объяснения, зачем нужен очередной предохранитель. Я ещё хочу понимать, сколько новых способов сломаться он принёс с собой. Что будет без него. И действительно ли мы защищаем важный инвариант, а не моё архитектурное чувство прекрасного.
Я не стал меньше требовать от системы. Я стал больше требовать от каждого усложнения.
Мне всё ещё нужна архитектура, которую трудно сломать. Просто я больше не хочу, чтобы ради этого ею было трудно пользоваться.
Post #44
27
