Насколько оправдано использование framework'ов в серьезных проектах?
Всем привет!
Интересно услышать ваше мнение.
Мне кажется, для создания простого интернет-магазина/CRM/форума "под ключ" (сделал - сдал - забыл) очень удобно использовать связку из популярных PHP, JS, CSS framework'ов. Вам всё равно, что будет с проектом через 1-2 года, кто и как его будет поддерживать. Вам важно, как можно меньше времени потратить на его разработку, потому чтобы не делать свои велосипеды, вы используете готовые решения.
Но, совсем другое дело, когда вы работаете над проектом несколько лет. Вот допустим, сегодня вы берете связку Laravel + Angular + Bootstrap. Что будет через 3-5 лет с этими framework'ами? Изменятся парадигмы, подходы, вы по ходу работы над проектом будите вынуждены модифицировать какие то части framework'а. В итоге вы не сможете обновиться до Laravel 2020 потому что у вас уже свой велосипед. Окажется, что от использованных framework'ов у вас осталась только структура.
Вы скажите "что за бред?". А вот 5 лет назад был codeigniter, а 2 года назад он был почти мертвый, его разработку прекратили. Разработку возобновили, а сам codeigniter уже стал другим.
Или мои рассуждения в отношении долгосрочных проектов в принципе не верны и framework'и мы берем как основу, которую в любом случае будем пилить под себя. В током случае дальнейшая поддержка нас волновать не должна?
Фреймворки используются в больших компаниях и в больших проектах. Тот же яндекс и мейл ру используют и Django и perl Фреймворки.
Ваш велосипед будет устаревать точно так же или еще быстрей, чем любой другой Фреймворк.
Если проект большой, то на нем работает команда, которая и поддерживает проект в актуальном состоянии. Устарел Фреймворк, команда начинают миграцию на другой Фреймворк или же на обновленную версию текущего.
Даже если, текущая парадигма MVC смениться к 2020 году, на какую либо другую вы так же будите свой велосипед переписывать.
Изменятся парадигмы, подходы, вы по ходу работы над проектом будите вынуждены модифицировать какие то части framework'а
Никто не может меня вынудить ничего модифицировать на сервере.
И я не стану это делать, пока заказчик мне именно это не оплатит.
А если он оплачивает не то, что надо, то это его проблемы, а не фреймворков.
Если в обязанности входит поддержка кода в актуальном состоянии, то хоть чужой, хоть свой велосипед надо поддерживать. Разницы в этом плане никакой нет.
По поводу "Написал и забыл" - есть отдельный котёл.
По поводу парадигмы - MVC жил, жив, и будет жить. Остальное не так важно. Вот вам и каркас.
По поводу больших проектов - очень больших проектов не бывает. Любой большой проект разбит на микросервисы, которые не заметны обычным пользователям. У вас каждый сервис может быть написан на разных платформах, но общаться они будут на одном языке. JSON, XML - им лет да лет, но они живы, и их никто не отменял. И да. Вы всегда сможете переписать микросервис на новую платформу, если у вас возникнет желание или возникнут проблемы.
По поводу своего фреймверка - я склоняюсь к тому, что собрать фреймверк из разных частичек - всё же лучше. Эти частички будут обновляться, как это делается в Laravel, и не будет дыр в безопасности. За всем вы не сможете уследить.
Короче микросервисы будут в моде!
Исходить нужно из того, что чем больше частей кода нашего приложения поддерживается community или другой фирмой (за деньги) тем меньше нам работы.
Если бы ты сам полностью писал бы код, то тогда бы вся поддержка сразу бы с первого дня была на тебе. Да, твоего кода было бы меньше чем кода чужого фреймворка, так как он был бы узкозаточенным. Но его в любом случае было бы значительно больше, если бы ты вообще не использовал бы фреймворки и библиотеки других автором.
Так и живут. У меня знакомый до сих пор делает новые проекты на yii1 потому что неохота было переходить на yii2 и куча проектов было уже написано на yii1.
Есть другой подход: взять только каркас, основу, накинуть на него свои наработки. Получится свой фреймворк/микрофреймворк, тогда хотя бы обновлять ничего не надо будет, но зато много документации писать если другим разработчикам надо будет отдавать проект.