Мода на веб-фреймворки - тезисы — различия между версиями
Материал из YourcmcWiki
м (→Можно… ⌘⌘ %%) |
м (→ЭТАЛОН УЖОСА: ⌘⌘) |
||
Строка 118: | Строка 118: | ||
<big>{{green|'''Но я так делать не буду'''}}</big> | <big>{{green|'''Но я так делать не буду'''}}</big> | ||
− | ==== ЭТАЛОН | + | ==== ЭТАЛОН УЖОСА ⌘⌘ ==== |
[[File:1cbitrix.svg]] | [[File:1cbitrix.svg]] | ||
+ | |||
+ | 1С БИТРИКС | ||
=== Фреймворки (PHP) ⌘⌘ %% === | === Фреймворки (PHP) ⌘⌘ %% === |
Версия 01:06, 21 сентября 2012
- Автор
- Виталий Филиппов
- Дополнительный нижний колонтитул
- Мода на коробки и фреймворки в вебе - доколе?
Содержание
Название доклада
«Мода на коробки и фреймворки в вебе — доколе?» (ликбез для менеджеров)
Тезисы
- Как часто для разработки веб-проекта (не самого простого!) выбирается коробочная CMS, а потом, пока программисты яростно пытаются совладать с её недостатками, а за хостинг каждый месяц отстегиваются миллионы, менеджеры, несмотря ни на что, продолжают защищать свой выбор, аргументируя это тем, что «инструмент отличный» и его всего-то надо «немного подкрутить, и цель точно будет достигнута»?
- А как часто выбирается жирный фреймворк (что, конечно, лучше CMS), который сразу начинает неудержимо обрастать костылями, потому что цели, под которые он разрабатывался, не совсем соответствуют целям проекта?
- Что общего в этих подходах? Во-первых, оба подхода рождаются из одного желания — желания создать (а зачастую и продавать!) продукт, который Вроде-Бы может решить… абсолютно ВСЕ задачи. А во-вторых, и то, и другое настолько «вошло в моду», что люди почти не задумываются о куче проблем, которые получат с выбором таких инструментов.
- Соображения именно об этой моде и о типичных проблемах, получаемых людьми вместе с ней, и хотелось бы донести в рамках доклада.
План
- Титульный слайд
- О чём эта презентация?
- Нужно сделать сайт. Варианты: CMS, фреймворки, кастом.
- Что вы выберете? CMS? FW? А кастом — «Фууу, лунапарк с БДж&Ш??!», да?
- ⇒ 1 и 2 вошли в моду, зачастую люди не думают о последствиях.
- А истина в том, что каждый инструмент имеет область применения. У CMS она дико завышена, у FW частично тоже.
- CMS
- Что такое CMS? + Примеры.
- Минусы (очень много) и плюсы (очень мало), область применения (узкая)
- Пример: пройтись огнём по битриксу (жесть жестяная).
- Фреймворки
- Что такое фреймворк? + Примеры.
- Сначала общие плюсы (мало) и минусы (много), идентичны оным Opensource-фреймворков.
- Доп. минусы платных фреймворков (коих под PHP почти нет)
- Доп. минусы внутренних фреймворков
- Область применения
- Специализированная разработка на основе библиотек
- Однако плюсы!
- Выводы
Презентация
Мода на коробки и
фреймворки в вебе — ДОКОЛЕ?! ⌘⌘ %%
(ликбез для менеджеров)
Виталий Филиппов, CUSTIS
Допустим, вам нужно создать интернет-проект ⌘⌘ %%
Что вы выберете?
Проблема моды ⌘⌘
- «Писать самим? Да вы что? Всё уже написано до вас!»
- Есть же коробочные CMS! Поставил, и сайт готов! Супер-поддержка от компании-изготовителя!
- А также куча модных фреймворков! Zend, CI, Yii! Паттерны, все и разом!
А потом… ⌘⌘
- «Хостинг стоит миллионы!»
- «Сайт тормозит!»
- «Медленно внедряются доработки!»
- «Надо ещё чуть-чуть докрутить, и цель будет достигнута!»
- «Фреймворк оброс костылями!»
- …
Надо было думать, когда выбирали! ⌘⌘ %%
…а не слепо следовать моде.
CMS
Что такое CMS? ⌘⌘ %%
Что такое CMS? ⌘⌘
- Content Management System
- Движок (ПО) сайта
- ;-) …На котором можно сделать ЛЮБОЙ сайт
- ;-) …Причём без единого гвоздя (строчки кода)
- ;-)
Смысл именно в общности применения ⌘⌘
Например,
- MediaWiki, MoinMoin и т. п. — не CMS, а вики-движки (хотя сайт на них сделать можно)
- PhpBB, IPB — движки форумов
Однако,
- WordPress — был движком для блогов, а стал CMS
- osCommerce, Magento — спец. CMS, движки интернет-магазинов
- Joomla, Drupal, MODx, NetCat, Битрикс, UMI.CMS — это всё CMS
Стандартная фраза: ⌘⌘ %%
«…это программный комплекс, позволяющий создавать веб-сайты любого уровня сложности…»
Можно… ⌘⌘ %%
…Говорить и о «специализированных CMS».
…И вообще любой движок сайта называть CMS.
Но я так делать не буду
ЭТАЛОН УЖОСА ⌘⌘
1С БИТРИКС
Фреймворки (PHP) ⌘⌘ %%
Мысли
Общность:
- ЛЕНЬ! Вечное желание получить результат, ничего не делая.
Что такое CMS?
- Движок, на котором «можно сделать всё», причём в идеале «без единого гвоздя» :)
- Смысл именно в спозиционированной общности применения.
- Скажем, MediaWiki — не CMS, хотя сайт на ней сделать тоже можно. WordPress — когда-то тоже не был CMS, а сейчас уподобился битриксу.
Минусы CMS:
- Монстр — Сложная и Неэффективная
- => Плохо подходит для посещаемых сайтов
- И посещаемый сайт сделать на CMS можно, но геморроя не оберёшься. Будут тормоза, будет дорогой хостинг, будут простои, будут падения при внесении доработок и даже, например, сбросе кэша.
- Сложность программной системы растет нелинейно при увеличении размера => отсюда все эти SOA и т. п.
- => Плохо подходит для посещаемых сайтов
- И вы оплачиваете её неэффективность!
- Деньгами хостингу серверов.
- Деньгами продавцу коробки.
- Деньгами подрядчикам, её дорабатывающим.
- Дешёвым — обычно несколько раз
- Некрасивая архитектура, оптимизированная под «общий случай». То есть, не оптимизированная ни подо что вообще.
- Простейший пример — EAV[1].
- Расчёт на доработку дешёвыми подрядчиками (и, похоже, дешёвыми программистами самой CMS)
- Как они там в битриксе параметры научиться экранировать не могут.
- Нормальный, уважающий себя, разработчик в ЭТО потом вообще не полезет.
- Вы оплачиваете и её сложность!
- +++ Проституточная суть платного/закрытого.
- Зачастую полезный функционал погребён под бесполезным и усугублён кривыми архитектурными решениями
- Примеры:
- Битрикс (должен быть стоп-словом)
- «БИТРИКС ДЕТЕКТЕД» — вполне катит для отдельного раздела на говнокод.ру.
- Битрикс можно снести с серверов, но нельзя убрать из головы.
- («Можно вывезти девушку из деревни, но нельзя вывести деревню из девушки»).
- WordPress — внутри тот же битрикс, только открытый и менее коробочный.
- Любые движки интернет-магазинов с EAV.
- http://ru-anticms.livejournal.com/3931.html
- http://ru-anticms.livejournal.com/
- Битрикс (должен быть стоп-словом)
Что такое фреймворк?
- Как и библиотека, набор заранее написанного функционала…
- Но фреймворк отличается от библиотеки повсеместным применением IoC.
Минусы веб-фреймворков:
- Почти все нужные абстракции в PHP уже есть => фреймворк даёт мало полезного функционала
- Зачастую «умного» функционала, который мог бы быть очень полезен, как раз и нет, а есть только совсем шаблонные решения. Обёрнутые в классы, фабрики и фабрики фабрик.
- Паттерн «Фабрика проблем».
- If you have a Problem and decide to use Java, now you have Problem, ProblemImpl, ProblemException and ProblemFactory.
- http://habrahabr.ru/post/141477/
- Жирная зависимость => для библиотек не подходит. Библиотека под фреймворк — уже не библиотека, а плагин.
- Простые проекты усложняет => для простого не подходит.
- В сложных проектах жмёт => для сложного тоже не подходит.
- Остаются «средние» проекты… (а это вообще что? обреченные проекты без развития?).
- Вам могут тупо не понравиться практики, принятые во фреймворке, а от них никуда не деться.
- Одни фреймворки более пермиссивные, чем другие, и в них этот минус частично сглаживается.
- Дополнительный источник багов и дыр.
- Глобальные перетрахивания фреймворка, происходящие при обновлении языка (например php4 -> php5, неймспейсы) => возможно, придётся перетрахивать и ваш код
- Очень обидно, если для переопределения чего-то нельзя обойтись без патчинга фреймворка — а такое бывает!
- «Автобусный фактор» разработки некоторых фреймворков.
- Внутрикорпоративные фреймворки — вообще отдельная песня. С ними решение — либо выводить в опенсорс, либо не особо сильно на них полагаться. Либо и то, и другое.
- Алиментщик, PHP Jihad, «не дай бог join в коде увижу!»
- Единственный плюс — для слабых разработчиков фреймворк может послужить:
- а) ограничителем применения бурной неокрепшей фантазии (но его нужно «правильно готовить»);
- б) подспорьем в обучении программированию при осмотре деталей реализации самого фреймворка.
- OpenX
Вывод:
- Всё как обычно с любой модой/предубеждением — «думай, прежде чем выбирать».
- Полезное применение фреймворков шире, чем у CMS, но всё же относительно узкое.
- Если фреймворк пермиссивный — возможно, он хотя бы не навредит.
- Главный плюс рукотворный: PHP-фреймворки — это мода, упрощающая продажу менеджерам, которые слышали buzzword, но не разбирались в вопросе.
- Плохо ли, что существуют CMS и фреймворки? Нет — это отражение прогресса. Хорошо хотя бы тем, что раз оно существует, его можно оценить и понять, нужно ли оно вам.