Чем отличается Фреймворк от CMS? Что выбрать для разработки и какие недостатки и преимущества у Фреймворков и CMS.

Что такое Фреймворк?

Фреймворк (framework) -  набор отлаженного кода, библиотек, инструментов для решения конкретных задач, которые чаще всего стоят перед разработчиками. 

Вместо написания всего кода с нуля на каком либо языке программирования, разработчик собирает проект на готовых блоках (кирпичиках), которые уже кем-то хорошо продуманы и дописывает только часть кода.

Фреймворки созданы для всех языков программирования. Наиболее популярные представители: Yii, Zend Framework, Symfony2, Laravel, Phalcon, Codeigniter, Kohana.

Что такое CMS?

CMS - системы управления контентом, на профессиональном жаргоне CMS также называют «движок». CMS это система обеспечивающая возможность создавать и редактировать содержимое сайта без необходимости редактирования кода. 
CMS бывают бывают как платными, так и бесплатными. 

Наиболее популярные CMS: WordPress, Joomla, Drupal, OpenCart, 1C-Битрикс, MODx.

На чем разрабатывать?

Рассмотрим, в каких случаях есть смысл создавать сайт на массовой CMS, а когда лучше пойти по пути разработки на Фреймворке.

CMS

CMS стоит выбрать если вам нужен достаточно типовой корпоративный сайт, блог, простой интернет-магазин с шаблонными решениям стоит смотреть в сторону выбора готовой CMS с уже построенной архитектурой и экосистемой. 

Плюсы:

  • Легко запустить. Максимально быстрое развертывание проекта из "коробки". Простая настройка типового проекта, весь код уже написан, от вас требуется только контент и оформление;
  • Готовые решения. На многие типовые решения есть модули, которые можно установить и расширить функционал CMS;

Минусы:

  • Ограничение в свободе действий. Шаг влево, шаг вправо не предусмотрен. У каждой CMS своя специализация и есть свой функционал. Который, иногда, можно расширить за счет плагинов или "костылей" в обход структуры, но это может сильно сказаться на производительности.
  • Невысокая производительность. В CMS заложено очень много функций, которые часто не используются, что дополнительно нагружает сервера.


ФРЕЙМВОРК

Фреймворк стоит выбрать если же вам нужно построить сложную систему/веб-сервис, нешаблонный проект, вам важна высокая производительность, проект планируется сильно масштабироваться, а функционал наращиваться.

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

Плюсы:

  • Гибкость/масштабирование. На Фреймворке можно спроектировать и разработать любой функционал, решить любые задачи; Проект на Фреймворке может бесконечно развиваться, а функционал расширятся.
  • Безопасность. У Фреймворка есть нулевая защита. Все исполняемые файлы лежат на уровень выше чем у веб-сервера. Хороший способ защититься от нежелательных атак;
  • Производительность. Так как вся структура и функционал разработаны исключительно под вашу задачу, вы получаете максимально высокую производительность;

Минусы:

  • Сложность разработки. Нужно понимать, что разработка на Фреймворках гораздо сложнее, чем на готовой CMS. Требует высокой квалификации разработчиков и большего бюджета на разработку.
  • Сроки разработки. В отличии от CMS, в Фреймворках функционал проектируется и разрабатывается с нуля, требует тестирования и отладки каждого элемента. Нужно понимать, что сроки будут большими;

Итог

Для типовых и шаблонных задач, типа блога, сайта визитки, простого интернет-магазина без высокой нагрузки - CMS будет более чем достаточно. Если же вам нужно реализовать нестандартную задачу/проект, требуется производительность и возможность масштабирования стоит выбрать Фреймворк. Делайте выбор осознанно, тщательно оценив риски, сроки и бюджет.


На чем разрабатываем мы?

Мы специализируемся на разработке нестандартных веб-сервисов, занимаемся разработкой для IT-стартапов, поэтому с CMS практически не пересекаемся, хотя опыт работы с многими из них имеем.

Основную разработку мы ведем исключительно на Фреймворках. Мы отдаем предпочтение Фреймворкам Yii2 (PHP) и Laravel (PHP),  Jango (Python). 

Если вам нужно разработать веб-сервис на Фреймворке, оставьте заявку здесь, мы обсудим ваше ТЗ и пришлем коммерческое предложение.