Фреймворк или CMS. Что выбрать и каком случае. Объяснение для заказчиков -- НЕ программистов

Что есть что

Сразу скажем что принято выделять следующие типы движков:

  1. CMS (читается "сиэмэс", по русски "система управления контентом", самые известные: Wordpress, Drupal, Joomla, ModX, 1C-Битрикс) - тут для простого блога (или какого-то "типового" сайта, без изменения дизайна) можно обойтись вообще без программирования, просто получив решение "из коробки".
  2. Фреймворки (по-русски это переводится как "каркасы", самые известные: Symfony, Yii, Laravel и т.д.) -- на фреймворке нельзя получить "из коробки" вообще ничего, задача его, как и следует из названия - обеспечить удобную основу (каркас) для создания сложного приложения
  3. CMF (читается "сиэмэф", по русски "каркас для управления контентом") -- название употребляется для некоторых CMS, которые претендуют на универсальность. Самое название получено скрещиванием слов CMS и Framework.
    Наиболее известной бесплатной CMS претендующей на этой звание является Drupal, но существуют и другие системы подобного типа, в т.ч. коммерческие.

Что и когда выбирать

Случаи когда все понятно:

  • Используйте CMS, если у вас "стандартный сайт" с простой структурой вывода данных (вроде блога), многое вы получите сразу установив CMS
  • Используйте Фреймворк - если решение нестадартное и потребует в дальшем каких-то доработок. Большинство крупных сайтов дописывают и переписывают постоянно, особенно если их функционал как-то завязан на бизнес, например есть какие-то сложные личные кабинеты пользователей и т.д. Если поддержка проекта важна и у вас много разных ролей пользователей - то в конечном итоге разработка на фреймворке куда более оправдана (а значит и дешевле в конечном итоге), чем на CMS.
  • CMF -- компромиссный вариант, подойдет если ваша ситуация не вполне совпадает с каким-то из предыдущих пунктов.
    Также стоит отметить, что обычно CMF неплохо "закрывают" и первый вариант с простым стандартным сайтом, так как CMF - это прежде всего некая CMS с чертами фреймворка, т.е. с заложенной разработчиками возможности к удобному (а значит более дешевому по затратам времени и средств) расширению/модификации проекта.

Также учитывайте следующие моменты (полезно в неясных ситуциях):

  • Если ваши траты на сайт не планируется измерять "миллионами" (в этом случае CMS брать вообще опасно, рано или поздно разработчикам придется переделывать архитектуру CMS, чтобы нормально развивать проект, вместо того, чтобы просто заниматься вашими задачами), но и вроде как проект не очень стандартный, то дать однозначный ответить на вопрос о том, что вам нужно нельзя. Причины попытаемся изложить в пунктах ниже.
  • Основной плюс фреймворка - удобство работы программиста (или целых команд разработчиков на крупном проекте), т.е. простой сайт на фреймворке сделать будет дороже чем на CMS, а вот сложный по структуре данных сайт с разными ролями пользователей наоборот: на фреймворке дешевле и быстрее чем на CMS.
  • CMS плохо работают с нестандартными задачами, модифицировать их под эти задачи обычно намного сложнее, чем написать чистый и ясный код "с нуля" с использованием фреймворка.
  • Немного об исполнителях (важно):

  • Если вы выбрали исполнителя (конкретного), то в непонятной ситуации оптимальнее будет использовать то решение, с которым этот исполнитель лучше знаком (меньше будет потрачено времени).
  • При выборе исполнителя обращайте внимание также на его надежность -- так кампании часто надежнее, чем разработчики-одиночки, фрилансеры (хотя, конечно бывают исключения), просто потому что кампания в случае какой-то ситуации может оперативно заменить исполнителя).
    Надежность и навыки исполнителя важны, так как работа системы все-таки обычно определяется не основой (тогда бы программисты были вообще не нужны), на которой она делается (CMS/CMF или Framework), а именно той "надстройкой" над этой основой, которая, опираясь на возможности основы, и будет работать для вас в качестве сайта (веб-приложения).

Используйте эти тезисы, чтобы выбрать подходящее вам решение.