Плюсы и минусы готовых и самописных CMS

Плюсы и минусы готовых и самописных CMS

Оговорюсь, что "самописной" чаще всего называют систему с довольно простым функционалом, плохо структурированную, соответственно, не совсем полноценную и годную к расширению. Из-за чего слово "самописная" приобрело несколько уничижительный оттенок.

В контексте данной статьи в качестве самописных CMS рассматриваются системы, разработанные "с нуля" как таковые. Насколько грамотно подобные CMS могут быть реализованы – это вопрос к квалификации программиста, а никак не к самому подходу в разработке web-ресурса в целом.

Часто на всевозможных форумах, где идёт речь о создании интернет-магазина, да и вообще любого сайта, подразумевающего наличие CMS (Content Management System – система управления контентом сайта) можно встретить мнение о том, что пользовательские (они же кастомные, они же самописные) CMS, то есть написанные самостоятельно, “с нуля” – зачем они, в общем-то, нужны? Если существует масса готовых CMS на рынке web-программирования – это и WordPress, и Joomla, и масса, масса других…

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

Итак, рассмотрим плюсы готовых CMS:

1. Готовый продукт

Это самый главный безусловный плюс всех готовых CMS: не нужно ничего писать с нуля – всё уже написано за Вас. Вам нужно только взять это и использовать. То есть если стоит приоритетная задача очень быстро развернуть свой сайт: интернет-магазин, либо портал, либо что другое – неважно что именно – под любую задачу есть конкретные готовые CMS и это очень удобно: буквально несколько минут – и у Вас есть уже готовый шаблонный сайт. Хотя ради справедливости следует сказать: если за несколько минут, то Ваш сайт будет лишен уникальности – быстро используются дефолтные шаблоны или шаблоны из сети под данную CMS.

2. Простота и быстрота установки

Практически любая готовая CMS очень легко и быстро устанавливается. Вся установка заключается в том, что Вы заливаете файлы на сервер хостера, после этого запускаете файл инсталляции, где (чаще всего) вводите настройки Вашего сайта, а именно: настройки подключения к серверу Базы Данных, имя сервера, логин, пароль и т.д. И после это этого Ваш сайт готов, что называется, к употреблению. То есть CMS сама создаст необходимую БД, необходимые таблицы в этой БД, заполнит их какими-то тестовыми данными и, собственно, всё что Вам останется – приступить к наполнению данного сайта конкретным контентом.

3. Стремление к универсальности

Любое готовое решение (готовая CMS в данном случае) создают с прицелом на будущее. То есть туда, в любую готовую CMS стараются запихнуть как можно больше функционала с тем, чтобы с помощью этого функционала можно было решить как можно больше задач. Исключение составляют только целевые CMS, которые заточены под какое-то конкретное решение. Но в основной своей массе любая готовая CMS стремится к универсальности, то есть, повторюсь, её разработчики напихают её как можно большим количеством функционала с тем, чтобы можно было решить наибольшее количество задач.

4. Открытый исходный код

Тоже некоторый плюс , потому что если Вам нужно что-то доработать, то Вы, соответственно, можете с лёгкостью это сделать. Если изучите код данной CMS.

5. Документация

Безусловный плюс, особенно если документация мультиязычная. Документация подскажет, как использовать данную CMS.

Например, в том же WordPress просто шикарная документация: это и официальный сайт WordPress с его Кодексом, и всевозможные сообщества, и форумы в сети.

6. Обновления

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

7. Поддержка

Некоторые CMS предоставляют какую-то поддержку: или платную, или бесплатную. Есть CMS, распространяющие версии двух видов: бесплатная – с ограниченным функционалом и платная – с полным функционалом и, естественно, с поддержкой.

8. Дополнения.

Если существуют задачи, которые нельзя решить с помощью какой-то готовой CMS (несмотря на её универсальность – как бы разработчики к этой универсальности не стремились, чего-то да будет не хватать!), приходят на помощь дополнения в виде плагинов, позволяющих решить какую-то задачу. Также дополнения выпускают для закрытия дыр основной версии данной CMS.

НО! Но часть этих плюсов влекут за собой определённые минусы. Теперь давайте выделим минусы готовых CMS по данным пунктам.

1. 2. Что касается первых двух пунктов: Готовый продукт и Простота и быстрота установки то здесь, бесспорно, только плюсы.

3. Но вот Стремление к универсальности порождает, наверное, самый большой минус готовых CMS. Со стремлением к универсальности запихивание разработчиками как можно большего количества функционала в готовую CMS превращает эту CMS в эдакого большого неповоротливого монстра. То есть: чем универсальнее готовая CMS, тем медлительнее она будет. В реальности под выполение необходимых задач задействуется примерно 20% функционала готовой CMS – остальные 80 лежат мёртвым грузом.

Поэтому любая пользовательская (она же кастомная, она же самописная) CMS будет работать на порядок быстрее, чем какая-либо готовая CMS. Для забывших элементарную математику напомню: на порядок – это в 10 раз быстрее.

И, кстати, поисковики не любят медленные сайты. Яндекс и Google заботятся в первую очередь о том, чтобы сайты несли пользу людям. Поэтому, если страница быстро не загружается, то они считают, что она не нравится посетителям. А поскольку сайты, блоги, интернет-магазины на готовых движках медленными и являются (и никаким сверхбыстрым хостингом этого не перекрыть), то...   Выводы делайте сами.

4. Открытый исходный код готовых CMS влечёт за собой следующую проблему: есть такая группа людей, называемых хакерами и вот этот самый открытый исходный код весьма способствует лёгкости взлома Вашего интернет-магазина. Конечно, когда какой-то компанией пишется готовая CMS, то, разумеется, стараются написать её без всяких уязвимостей, но, тем не менее, это не всегда получается. Ошибки бывают у всех, бывают всегда, их, конечно же, стараются оперативно закрывать выпуском новых версий, но… сами понимаете – идеального в природе ничего не существует и что сделано одним человеком, может быть понято и использовано в своих целях другим. Хакером в данном случае. Да, так вот этот самая открытость исходного кода у готовых CMS – одна из причин почему их проще взломать.

5. 6. 7. 8. Это всё здорово, за исключением того, что пользовательские CMS в этом как бы и не нуждаются. И насчет Дополнений можно сказать следующее: бывают качественные, а бывают и не очень качественные: со всеми теми же уязвимостями готовой CMS, касающимися открытости исходного кода. И, кстати, если Вы используете готовую CMS и дополнения к ней, то лучше скачивать их с официального сайта. Чем некоторые пренебрегают в силу того, что некоторые CMS платные.

Теперь давайте рассмотрим плюсы и минусы пользовательских CMS

Такая CMS пишется под конкретного заказчика, под конкретный проект, соответственно:

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

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

- уникальность дизайна.

- пользовательская CMS легко расширяема.

Из минусов разработки проекта "с нуля" можно назвать следующее:

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

- разработка такого проекта стоит дороже.

Отдельным вопросом стоит разработка приложения с использованием какого-либо фреймворка или CMF вроде MODX. Конечно, и в этом случае можно превратить проект в нечто невообразимо неповоротливое ("талантов" хватает), тем не менее, использование фреймворка позволяет значительно снизить количество времени/усилий разработчика для достижения результата должного качества. Но это уже тема отдельной статьи...