Технически любая функциональность может быть реализована как на CMS, так и на фреймворке. Однако некоторые проекты проще сделать на CMS, а некоторые — на фреймворке.
По сути, любой сайт или веб‑приложение можно разрабатывать при помощи одного из трёх подходов:
CMS, фреймворк или всё писать «с нуля»?
Если провести аналогию со строительством дома, то подходы выглядят так:
- CMS: Вы покупаете готовый типовой дом, а потом его незначительно достраиваете и делаете внутреннюю отделку.
- Фреймворк: Вы покупаете кирпичи и доски, а затем приступаете к строительству дома по своему собственному проекту, используя лучшие архитектурные практики.
- «C нуля»: Вы полноценно осваиваете технологии производства строительных материалов, находите и разрабатываете месторождение глины, делаете из неё кирпичи в самостоятельно построенной печи, параллельно с этим вырубаете лес для изготовления досок... Наверное, можно не продолжать.
Разработку «с нуля» стоит сразу отбросить, так как этот подход может быть правильным только в том случае, если создание проекта — это ключевая задача компании, времени под этот проект выделено крайне много, бюджет серьёзный и в команде проекта есть очень компетентные разработчики. Хорошие проекты «с нуля» пишутся очень долго, хотя этот подход позволяет создавать очень крутые решения.
CMS или фреймворк?
Писать что‑то на чистом языке программирования без использования платформ — это редко целесообразно по экономическим соображениям. Поэтому рассмотрим только варианты создания сайта на базе платформ.
Обзор вариантов
Разработка на CMS — наиболее правильный подход, если проект достаточно типовой. То есть в CMS уже есть все нужные вам модули, а те процессы, которые встроены в CMS, почти полностью соответствуют вашим ожиданиям.
Под CMS тут мы имеем в виду обычные коробочные системы управления сайтами, а не Headless CMS, разработка на которых по принципам ближе к фреймворкам, о которых ниже.
разработка на фреймворке — наиболее правильный подход, если ваше видение проекта не особо укладывается в возможности и процессы присутствующих на рынке CMS. То есть тогда, когда в случае использования CMS её придётся существенно дорабатывать.
Если возвращаться к приведенной выше аналогии, то «производство стройматериалов» — удел немногих, «покупка готового дома» оптимально подойдёт тем, кому эти готовые дома изначально нравятся, а «строительство из готовых материалов» лучше всего для тех, кто хочет что‑то особенное. То есть нерационально как покупать готовый дом и разбирать его на стройматериалы, так и собирать из стройматериалов то, что на рынке уже есть в готовом виде.
Критерии выбора
Выбор стоит делать на основании экономической составляющей разработки. Ниже приведены некоторые критерии, которые позволят принять обоснованное решение по этому вопросу.
- Функциональность, которая встроена в CMS, на фреймворке реализовывать дороже и дольше. Но разработка сложных функций на CMS или переписывание базовых процессов CMS стоят дороже и занимает больше времени, чем та же работа выполненная сразу на фреймворке.
- Добиться от сложного проекта на CMS высокой скорости работы стоит дороже, чем сделать это на фреймворке. Аналогично обстоят дела и с масштабированием. То есть при высоких требованиях к устойчивости к нагрузкам, производительности или к отказоустойчивости выбирайте решения на фреймворках или закладывайте стоимость работ по оптимизации CMS в бюджет проекта.
- Запуск первой пилотной (неполной) версии проекта на CMS всегда быстрее, чем запуск аналогичной версии на фреймворке. Если проект сложный, а сроки запуска «горят», то лучше либо выпускать «пилот» на CMS, а затем его затратно дорабатывать или параллельно с этим разрабатывать решение на фреймворке, либо расставлять приоритеты между сроками разработки и сложностью проекта (либо отказываться от сложных функциональных возможностей, либо увеличивать сроки).