> Оптимизация запросов — это уже «волшебное умение»?
Или мы просто сдались?
Работая с легаси и проводя рефакторинг, часто вижу, как впустую растрачиваются ресурсы инфраструктуры из-за плохого кода или незнания основ. Самое банальное — неоптимизированные запросы к БД, где тонны бесполезных данных гоняются туда-сюда в надежде, что ORM «как-нибудь справится», без малейшего понимания того, что происходит «под капотом».
В комментариях к моему прошлому посту прозвучал комментарий Анна Ракета , который меня одновременно и порадовал, и заставил задуматься:
> Слууушай, я не могу не восхитититься тем, что в наши времена кто-то (ты) оптимизирует запросы и нагрузку на инфру. Это прямо волшебное умение! А то поставила себе крошечное приложение и 1 Гб памяти сказал “пока” 😅
Мне безумно приятно слышать такую высокую оценку моего труда! Но «режет слух» сама посылка: *«в наши времена»*. Почему оптимизация стала экзотикой?
Синдром «Просто докупите сервер»
Оглядевшись, вижу пугающую тенденцию. Программы разрослись до невероятных размеров, а об экономии ресурсов думают в последнюю очередь.
Самый частый запрос, с которым ко мне приходят на консультации: «Нам тут сказали: нужно просто докупить ресурсов, и всё будет летать!»
Докупить-то можно. Только сколько продлится такой «полёт»? День? Месяц? А когда ресурсы снова упрутся в потолок, что тогда? Снова платить? Мне приходилось работать с проектами, где у хостинг-площадки банально заканчивались доступные тарифы для масштабирования, а сам проект был, мягко говоря, «не фонтан». Железо не резиновое, а плохой код масштабируется катастрофически.
Уроки из 90-х: от 1 CD до 4-х
Помню, в конце 90-х играл в Fallout. Сначала игра продавалась на одном CD. Потом версия расширилась до двух дисков. А *Fallout Tactics* в конце концов занимал уже 4 CD!
Да, часть этого можно списать на маркетинг и деньги (больше дисков = выше цена). Мы тогда в компании шутили по этому поводу, предсказывая: *«Скоро поставишь крошечное приложение, и 1 Гб памяти скажет “пока”»*.
Современные браузеры и тяжеловесные Electron-приложения — прямое тому подтверждение. ((%
Кто заставляет проекты жиреть?
Что происходит с проектами сейчас? Кто заставляет даже небольшие приложения тащить тонны npm-зависимостей, забывая, что оптимизация — это не пустой звук?
Думаю, причина в массовой вовлечённости людей в «программирование». Инструменты стали доступнее, появились «ремесленники», которые решают задачи массовостью и скоростью, а не качеством.
И да, нужно признать: эти услуги востребованы, потому что бизнесу это «прокатывает» здесь и сейчас. Заказчики платят за быстрый результат, закрывая глаза на технический долг. Но у всего есть границы. Однажды придётся принять решение: «переписать всё с нуля» или провести глубокий рефакторинг с пониманием существующей действительности. Тем более, что инструментов для этого сейчас масса (о чём писал ранее).
Ловушка ИИ и «врач из анекдота»
С другой стороны, повышать квалификацию таким «ремесленникам» необходимо как никогда. И здесь кроется новая ловушка: **Искусственный Интеллект**.
ИИ уже генерирует массу подобного «раздутого» кода. Если неумелые руки скармливают нейросетям плохие промпты, они получают тонны неоптимизированных решений, которые снова отжирают гигабайты памяти.
А ИИ, напомним, обучается на существующих данных. Происходит отбор решений. Не хотелось бы оказаться в ситуации из анекдота про ИИ-врача, который лечит не то, что нужно пациенту, а то, что статистически вероятнее для его алгоритма. (Кстати, в том же Fallout на этом построены гениальные каламбуры и сценки с роботами-медиками Auto-Doc).
Главный вывод
Давайте всё-таки уважать себя и своё время. Тратить его на образование, на понимание того, как работают наши инструменты, и на написание лучшего кода.
Создавайте себе меньше проблем в будущем, а не плодите их ради сиюминутной выгоды. Чистый код и оптимизация — это не магия. Это профессионализм.
«А как у вас с оптимизацией? Сталкивались с подходом «просто купите сервер помощнее» вместо рефакторинга? Делитесь в комментариях! 👇»
· 17.07
Мне близка мысль: оптимизация - это не магия, а дисциплина измерений. Обычно самый дорогой запрос - тот, который никто не профилировал до продакшена. Я бы ещё проверял планы и cache hit rate до «купим сервер». Вы у себя ловите это на code review или уже в мониторинге?
ответить
коммент удалён
· 17.07
В моей практике при разговоре про "докупим" часто не показывают планы и тем более нечему делать ревью кода. (%
Согласен, в идеале нужно делать комплекс мер и предлагать решение не однобокое - что и делаю со своей стороны. А вот, решение за Владельца принимать не могу, это его выбор.
А разработке сам стараюсь использовать Чистую архитектуру, где получается и тем самым оперативно реагировать на изменения и новые вызовы.
ответить
ответ удалён