Menu Close

CMS, CMF или Full custom?

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

Что же такое CMS и CMF, а также в чем отличия, казалось бы, очень схожих аббревиатур латинского алфавита. Несмотря на больш’ую похожесть, понятия эти весьма разные. CMS — это Content Managment System, то есть такая система, которая предоставляет средства управления контентом в автоматизированном режиме. Такие системы уже содержат множество полезных модулей и плагинов, таких как файловый менеджер, система редактирования контента в реальном времени, модули создания различных меню, модули, которые позволяют подключить популярные платежные системы и многое другое.

Однако стоит отметить, что бо’льшая часть CMS создана на платформе PHP, некоторые из них также могут быть написаны на довольно старых версиях данного языка, что иногда не позволяет использовать последние возможности данной программной платформы. Еще одной особенностью CMS является то, что большинство из них требуют систему управления реляционными базами данных MySQL, которая имеет определенные особенности как в возможных режимах работы, так и в плане SQL синтаксиса, который имеет характерные особенности по сравнению с другими СУРБД, такими как PostgreSQL или, к примеру, Oracle.

Среди наиболее популярных CMS можно назвать свободно распространяемые WordPress, Joomla, OpenCart, Drupal, ModX, а также платные 1C-Битрикс, Magento. Для всех из них существует большое количество модулей, плагинов и шаблонов, однако вносить изменения в код любой из CMS бывает довольно времязатратно и трудоемко, в ввиду как слабого использования возможностей объектно-ориентированного программирования, так и в целом довольно запутанным, иногда даже legacy-кодом, то есть тем, который может использовать как устаревшие синтаксические конструкции, так и устаревшие функции.

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

CMF — это Content Managment Framework, то есть набор библиотек и функций, который уже позволяет производить разработку сложных систем, подключать дополнительную обвязку, такую как системы распределенного кэширования, очереди, noSQL базы данных, системы сбора различных метрик, систему распределенной аутентификации и многое другое.

Использование CMF, в отличие от использования CMS уже требует высококвалифицированных специалистов, поскольку без фундаментальных знаний программирования и большого опыта создать приложение с правильным использованием всех возможностей CMF будет задачей крайне сложной. На сегодняшний день значительная часть CMF также представлена на базе PHP. Таким образом использование отличных языков, таких как Java, Python, C# обычно подразумевает разработку с нуля. Данное понятие не означает что указанные языки не предлагают своих библиотек и даже фреймворков, но говорит о том, что «базового фундамента» на начальном этапе разработки будет существенно меньше, чем при использование альтернативных вышеуказанных подходов. Несмотря на то, что на ранних этапах разработки будет затрачено чуть больше времени на создание «боеспособного каркаса» приложения, дальнейшая разработка будет существенно упрощена из-за полной кастомизации кода именно под специфику и задачи конкретного приложения.

Кроме того, такая разработка не будет сопряжена с вопросами обновления платформы в будущем, поскольку в отличие от CMS и CMF весь код будет хорошо известен разработчикам, что позволит свести к минимуму процент потенциально устаревающих программных компонентов и библиотек. Отдельно хочется выделить возможность любой технологии для создания front-end-а приложения. Некоторые подходы, такие как RESTfull-сервисы, уже неоднократно доказавшие свои преимущества, часто вообще могут быть созданы исключительно при разработке не подразумевающей использование готовых систем управления контентом. Подключение партнерских и сторонних API также будет существенно упрощено при подходе full custom разработки.

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

Специалисты Creative Lab имеют большой опыт разработки систем любой сложности. Больше информации о нас можно получить на главной странице.