Например, у вас есть сервис, написанный на Django, с базой данных в виде SQLite, который посещает 10 человек в месяц. К вам приходят и спрашивают: «Сколько будет добавить поле в таблицу?». Вы должны сказать, что из-за нагруженности системы это сделать будет непросто, нужно будет написать миграцию для базы данных, провести полное регрессионное тестирование, обеспечить даунтайм в день для того, чтобы все смогло развернуться. Плюс ко всему, в сервисе реализована подсистема работы с кластерными базами данных, обеспечивающая отказоустойчивость в момент, когда кластер баз данных отказал, причём с двумя слоями кеширования запросов, потому что кластер Redis тоже может отказать. Кроме того, у вас там развитая система логирования, которая в том числе обеспечивает логирование всех транзакций, чтобы можно было в случае отказа кластера базы данных, кластера кеширования, кеширования в ОЗУ, восстановить данные по логу транзакций. Работа предстоит сложная и займёт 1-2 месяца. Запомните, сложную работу нельзя сделать быстро.
Комментарий недоступен
Я понимаю, что нормальные разработчики не пишут специально «плохой код». Иногда мы имеем дело с техническим долгом, когда что-то делалось быстро, жертвуя качеством. Где-то без костыля было просто не обойтись. На каких то проектах/продуктах через два года выяснилось, что требования изменились и теперь старая архитектура просто не подходит, после чего приходится жить с тем, что есть.
Что говорить, у нас самих есть опыт, когда Identity Management System на многие десятки миллионов пользователей начала валиться под нагрузкой, которая на продуктиве скачком увеличилась раз в пять выше, чем критическая (и согласованная). Причём, не просто валиться, а с угрозой потери пользовательских данных.
Мы её спасали, аварийно закрывали бреши, попутно переписывая функционал на очень смелые архитектурные решения. Сейчас система плавно переписывается от аварийной версии к нормальной. Но если взглянуть на тот код, что там есть сейчас, то останется только удивляться и удивляться.
Но статья именно об осознанном поведении разработчиков. Такое мы встречали не раз, в том числе и сами пару раз нанимали таких людей, приходилось с ними расставаться.
Что до нейминга… Ну, так получилось в истории компании, при образовании компании взяли уже имеющиеся юридическое лицо, которое изначально создавалось под другие цели. А дальше оно пошло, как пошло. )))
Спасибо за статью! Про Django, с базой данных в виде SQLite улыбнуло! Статья про жизнь. Всё понятно и простыми словами. Надеюсь никто не применит как личное руководство к действию :))
А мне показалось, что речь о том, что нужно проверять, нет ли возможности сделать проще. Просто потому, что тебе же потом если править.
Тут скорее речь про, пусть даже не осознанное, но специальное усложнение. Это не когда код устаёт сам по себе, это когда его злонамеренно делают непередаваемым.
Хорошая статья. Спасибо!
Комментарий недоступен