Собственная CMS с нуля или Готовая?
Меня периодически спрашивают, мол Рома скажи какая система для управления контентом сайта лучше, та что написана самостоятельно или готовая. Например какая нибудь из популярных: Joomla, WordPress? На что я однозначно ответить не могу, т.к. у этих двух вариантов есть свои плюсы и минусы, что вполне естественно. Но тем не менее давайте немного поразмышляем, раз уж такой вопрос стоит.
И так, преимущества готовой популярной CMS (буду перечислять в виде списка, дабы так удобнее)
1) Достаточно продвинутая админская зона сайта, богатый функционал
2) Гарантированная разработчиком безопасность, стабильность и надежность
3) Доступность инструкций, помощи и техподдержке по работе с CMS
4) Большое разнообразие уже готовых шаблонов, модулей и плагинов для выбранной вами системы.
5) Постоянное обновления и дополнение тех или иных функций, а так же средств защиты от атак и устранение разных уязвимостей.
На ряду со всеми плюсами, есть и весомые минусы, поехали:
1) Часто разработчики пытаются оснастить свою CMS всем, чем только можно, это могут быть и библиотеки работы с графикой для разных PHP модулей, различные текстовые редакторы WISIWIG, занимающие огромное количество пространства на сервере. Перегружают интерфейс админки Ajax, Jquery, JS, Mootool и прочими библиотеками. В результате движок становиться очень тяжелым и не поворотным, часто тормозящим на слабом хосте или при сильных нагрузках (посещаемости).
2) Безопасность хоть и гарантированна, но ввиду того, что исходных код зачастую доступен каждому, в том числе и злоумышленнику, становиться уже серьезной проблемой. Т.к. популярные системы и их устройство изучают все кому не лень, находят там дыры, и тут же спешат воспользоваться ими.
3) Модули и прочие компоненты которыми завален весь интернет, зачастую написаны без соблюдения рекомендаций разработчика, студентами и просто школьниками. О их стабильности порой и речи быть не может.
Как видно, часть преимуществ готовой CMSки, тут же опровергалась.
Давайте теперь подумаем о преимуществах самописного движка:
1) Высокая скорость работы, за счет откидывания всего не нужного функционала, и затачивания движка под конкретные условия.
2) Как правило безопасность таких систем (если разрабатываются они грамотным программистом) очень высока, ведь все возможные дыры и уязвимости ни кто не знает кроме разработчика. Т.к. исходники не доступны общественности.
3) Документация в таких случаях просто ненужна, ведь CMS пишется с нуля, и соответственно тот кто ее пишет знает все до мелочей.
4) Скорость разработки дополнительного не стандрастного функционала, очень высока. Соответственно гибкость и масштабируемость самой системы упирается лишь только в вашу фантазию.
5) Солидность, как не крути, а этот плюсик для кого-то основной.
Недостатки у такого подхода будут следующие:
1) Привязка заказчика к непосредственно разработчику, т.к. не всегда сторонний программист может разобраться в написанном коде, да еще если он на каком нибудь необычном мало кому известном фреймворке.
2) Длительность разработки. Т.к. многие функции реализуются с нуля.
3) Опять же если вы пишите такую CMS не сами, а заказываете программисту, стоимость работ значительно выше, нежели при использовании готовой.
Окончательный выбор: все же за вами, а лично я считаю, что для быстрого создания малых коммерческих проектов лучше использовать уже готовую и популярную CMS. Но при этом в арсенале держать самописную, для решения каких либо специфических задач.

Автор:







Здравствуйте, я бы выбрал лучше готовую CMS, но создавая свой движок Вы наберетесь опыта в программировании!
Я для небольших проектов использую готовую CMS, а для своих задач пишу свою с нуля под конкретную задачу.
Хотелось бы иметь «каркас», который потом наращивать в зависимости от задач, чтобы постоянно не писать его с нуля) Если есть такая возможность, то было бы хорошо узнать ее)) Про сохранение файлов конфига и функций, то такое, это минимум)) И у меня все функции хранятся в отдельном файле, который подключается к файлам.
Еще была практика в том, чтобы сделать систему с разными стилями. То есть, например для изменения стиля всего проекта на новый, при этом оставить доступный старый и переключаться между ними. Работает, но очень сложно было ее обслуживать, особенно, если сделал систему, она работает и нужно добавить какой-то модуль после нескольких месяцев) Приходится снова вспоминать, что, где и как взаимодействует и работает)) То я решил отказаться от этой идеи со стилями и писать систему под конкретную задачу со своим одним стилем.