Главное Свежее Вакансии Образование
Выбор редакции:
2 962 12 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Какой фреймворк выбрать для веб сервиса

На чем лучше писать сайт? CodeInteger, Yii или другом фреймворке (далее Ф)? Мой ответ до этого был, однозначно на чистом пхп без фреймворка, но сейчас я понял- бесмысленно бороться с пропагандой вещающей, что "хороший продукт" должен быть написан не с нуля.

Один мой друг как то сказал, что любой программист рано или поздно хочет написать свою cms и свой фреймворк. Основные отличия по традиции: простота, много готовых модулей, высокая скорость работы.

b_547a0b0c73398.jpg

Типичные проблемы популярных фреймворков (по материалам http://we-love-php.blogspot.ru/2012/10/php-framewo... статья хоть и старая, но сейчас это уже статус кво):

Typical problems in frameworks

  • необходимо писать много кода который просто ничего не делает, но "нужен" (example)
  • Слишком много абстракций (example)
  • Невероятно огромное количество строк кода (e.g. ZF1 260,000, ZF2 146,000 loc, Symfony2 173,000 loc, Doctrine2 70,000 loc), очень сложно оптимизировать, сложно поддерживать
  • Осень много различных функций (e.g. ZF1 13,000, ZF2 7,800, Symfony2 9,500, Doctrine2 4,400), сложно для обучения (у php я использую не более 500).
  • Огромное количество переопределений переменных (когда одни и те же данные просто перемещаются в памяти) (e.g. ZF2 4,080, Symfony2 3,800 (analysis from nikic))
  • Тяжелая документация (e.g. ZF2 1000 pages and 500 examples)
  • Очень много include (example)
  • плохое форматирование кода (e.g. ZF2 echo StaticFilter::execute($str, "HtmlEntities", array("quotestyle"=>ENT_QUOTES)); echo (new Zend\Filter\HtmlEntities(array("quotestyle" => ENT_QUOTES)))->filter($str);)
  • навороченный код (например, чтоб сделать запрос к базе нужно писать несколько строк кода, хотя все что нужно это всего лишь знать SQL)
  • несовместимость различных версий одного Ф, если вы написали сайт знакомств на yii 1+, то уже сейчас вышла версия 2
  • постоянное желание разработчиков "написать все с нуля" или выпустить "другой более легкий фреймворк"

Тесты показывают, что тот же YII в самом базовом варианте потребялет (за один заход посетителя) не менее 3 мб. оперативной памяти, когда например сайт знакомств на чистом пхп 0.5 мб. Это значит, что где обычному пхп понадобится один сервер, фреймворк затребует не менее 6ти, тут уже встает вопрос экономической целесообразности: писать правильно и использовать 6ть датацентров или использовать 1 и нанять 100 индусов которые выдают результат ценой абсолютной нечитаемости кода (у меня нет опыта highload на 6ть датацентров, поэтому заранее признаю, что не прав если кто то возразит приложив пример из своей практики). Конечно можно и нужно использовать кэширование и оптимизацию, но и для фремйворка и для чистого пхп это будет внешнее решение, например memcache и nginx

Существует так же большое заблуждение, что большой плюс Ф уже сразу идет с валидацией форм, проверкой входящих данных, автоматически подключает jquery. jQuery уже давно подключают верстальщики прямо в верстку одной строчкой (о боже, верстальщики делают то, для чего программистам нужен фреймворк! я сваливаю). Валидация форм так же подключается одной строкой, а проверка на заполненность форм по стандарту HTML 5 уже давно выполняется самим браузером (то есть вообще ничего кодить не надо). Остается проверка входящих данных и прочая безопастность и защита.

Почему же Ф так популярны? Основная причина, в том, что люди ищут "золотую пулю", одним выстрелом убить всех зайцев и ускорить разработку, мой личный опыт говорит ровно об обратном. Кодер тратит в 5-10 раз больше времени на исправление глюков, 90% из которого вслепую блуждая по файлам Ф и документации пытаясь понять "почему он работает не так".

Я с удовольствием бы производил Full stack проекты. Только вот бизнес требует результат вчера, максимум готов терпеть до вечера, причем то, что вчера сделали не годится ибо пивот. И так уже 10 лет. Посоветуйте, что делать

+2
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Андрей Светличный
Не согласен. Фреймворки экономят кучу времени. А если у программиста уходит кучу времени на исправление ошибки - значит он плохо знает фреймворк. Работаю на yii и мне нравится что мне не нужно писать роутинг, MVC структуру, авторизацию, систему прав пользователей и многое другое. И вы говорите что нужно написать много кода, чтоб сделать запрос в БД. Хотя мне кажется наоборот. Например в том же Yii чтобы делать JOIN'ы достаточно один раз описать связь, дать ей имя и все последующие разы просто вызывать по имени. Да фреймворки медленнее но они экономят время.
Ответить
ubercrm
уберизация и локальные справочники
Саша Noxon
покажите чтоль последний проект свой
Ответить
Quescha - конструктор чат-ботов
Конструктор автоворонок, чат-ботов, записи на услуги, магазины в мессенджерах
Alex Piro
согласен. также считаю, что гораздо проще разбираться в низкоуровневом коде php, чем в его оболочках из придуманных классов и функций. но фреймворки это якоря, которые помогают подбирать проекту новых программистов с "нужными" скилзами, и да, в среднем они ускоряют разработку на старте, хотя, повторюсь, это иллюзия.
Ответить
ubercrm
уберизация и локальные справочники
Саша Noxon
первые два комента и два абсолютно противоположных мнения))
Ответить
Self.md
Мотивируем к достижению целей
Константин Чуйков
Я делал self.md сначала на codeigniter и jquery, но после того как был закончен прототип, я забэкапил его, и закинул подальше на жёсткий, чтоб не видеть этого ужаса. И начал с нуля изучать Phalcon PHP Framework, и AngularJS для фронда, одновременно. За 1 месяц я понял азы, и через 1,5-2 месяца у меня уже был готов прототип моей системы self.md, к слову, потребляет она максимум 1мб оперативной памяти, максимально 23 запроса в БД в профиле и в самой игре, без кеширования пока. В системе 9 модулей, 20 таблиц, 150 полей, размер чистого php + шаблоны, конфиги, и библиотеки порядка 1мб, остальные 10мб, картинки, js, и прочее.
Ответить
Дмитрий Комаров
Видел я эти самописные сайты. Обычно просто мрак.
Все проблемы с лаконичностью и абстракцией уже решены в RoR, просто смените плохой фреймворк на хороший.
Для макета подойдёт CMS, для первых 5 лет жизни - существующий фреймворк. Для сайта из ТОП-100 можно со знанием дела и задачи писать свои велосипеды.
Ответить
Юрий 6443
Интересное мнение, но я считаю + Ф в том, что есть правила, функции готовые... Зачем это нужно? Например, большая компания, где над проектом работаем 30 программистов, там распределение идет на микро процессы и потом с легкостью можно собрать все в единый обработчик, и если кто то заболел/ушел (еще часто бывает когда делегируют работу другому, так как первый замкнулся и не может решить проблему), следующий может сразу, не изучая все что он написал - продолжить работу...
Почему же нельзя так же делать на простом php без всяких Ф? Да просто любой процесс можно написать по разному, там построено все на логике одного человека и не всегда ее можно понять :)
Конечно кода ты работаешь один, не важно большой проект или нет, ты ориентирующийся в своем коде, надобность Ф кажется ненужной... Но взять любой самопис и попробовать что то дописать - замучаешься перебирать файлы... Но конечно в незнакомом фреймворке еще хуже, и как правило логика не и Ф не простая, обычно все запутано и имена функций не как не связаны с процессом, что сложнее запомнить...
Ответить
Юрий 6443
Конечно бывают еще исключения когда в команде логика разработчиков совпадает, это иногда бывает... Я например иногда при доработках сталкиваюсь с чувством как будто я его писал)
Но конечно мнение что "хороший продукт" должен быть написан не с нуля - не правильное, как по мне все зависит от разработчиков. Запороть проект можно и на Ф, и качество проектом не связано на прямую с Ф или его отсутствием :)
Вообще если присмотреться, сейчас дают советы и высказывают мнения на каждом шагу (на том же цукерберг позвонит), зачастую это люди которые пропиарились на работе скорее других инженеров и специалистов...
Ответить
Art-Booking
Платформа для организации мероприятий
Dmitriy Mandrika
Все зависит от проекта: если на кон поставлены сроки, то горизонтальное масштабирование по нынешней цене серверных мощностей не так уж то и затратно, однако же если срок позволяет, и есть возможность "написать под себя", то лучше воспользоваться этим и поработать над оптимальной архитектурой приложения.
Ответить
HellsHamsters
Команда разрабатывающая технологические проекты
Антон Пискунов
Да задолбали уже, пишите вы на чём угодно, лишь бы это было быстро. А разницу в потреблении памяти и CPU засуньте в ж... потому что один хрен как только ваш проект будет более менее посещаемый, то взлетят рейты по потреблению ресурсов не у вашего приложения, а у слоев баз данных и сети.

Детский сад эти ваши замеры. Если хотите выиграть в чём то, то выигрывайте в скорости разработки. Один хрен сэкономленные 200 мб за счёт отсутствия фреймворка сожрутся днём записи статистики с пользователя.
Ответить
HellsHamsters
Команда разрабатывающая технологические проекты
Антон Пискунов
А, ну и да, сейчас железо настолько дешевое что вместо того что бы тратить время разработчиков на оптимизации (напоминаю что час разработчика в среднем от 390 до 510 рублей по Питеру) подтыкайте серваки пачками.

А если у вас денег на это нет, то други мои, откуда же у вас тогда такой траффик и почему вы его так хреново монетизируете? :)
Ответить
ThemesAnytime
Качественные HTML шаблоны для стартапов
Соловьёв Павел
для веб сервиса нужно брать symfony2 если для программиста сложно разобраться в абстракциях, то ему ещё стоит развиваться, по поводу количества строк, на 1000 строк у тебя будет всего несколько методов, которые тебе нужно использовать, про остальное и не стоит парится, и чтобы написать на чистом пхп круче чем люди которые пишут фреймворки, то нужно быть круче них, потому что они пишут фреймворки, (не поверите!) тоже на чистом PHP.
Ответить
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.