Это довольно необычная статья, поскольку исходит напрямую от автора профессиональной CMS (Content Management System - система управления контентом), а именно, вашего покорного слуги, Кристофера и, соответственно, продукта CMS Platinum.
Предпосылки для написания собственной CMS, а на это нужно было действительно решиться и потратить не один месяц плотного проектирования/кодинга/тестирования, были очевидными: нужно было написать собственный движок для высоконагруженного сайта интернет-гипермаркета с большим количеством современных "наворотов", специфичных для современной интернет-торговли, высокими требованиями к безопасности и стабильности работы, удобству обслуживания, и что я впоследствии реализовал, но не вставил в CMS Platinum - масштабировании базы данных гипермаркета на несколько десятков сайтов-сателлитов. Планируемое количество товаров - около 15.000, разделов товаров (категорий и подкатегорий) - до 90, посещаемость - до 15000 уникальных посетителей в сутки, скорость загрузки страницы с 75 товарами на главной (30 - обычный вывод, 15 - слайдер хитов продаж, 15 - слайдер новинок, 15 - слайдер рекомендуемых) плюс баннеры не должна превышать 1,5-2 секунд.
Интернет-торговля, как и реализация всевозможных интернет-сервисов в Беларуси, других странах СНГ, во всем мире, растет со скоростью накатывающегося снежного кома. Работа в этом направлении мне показалась перспективной, и, отвлекшись от своих экспериментов с программированием искусственного интеллекта, я сразу переключился на эту нишу.
Нужно отметить, что перед тем как заняться непосредственно разработкой собственной CMS, я загрузил и запустил у себя на Денвере в общей сумме около 150 различных CMS. Внимательно рассмотрел каждую из них, записывая себе в блокнот их плюсы и минусы. Естественно, дополнительно внимательно изучил и собрал информацию о том, как и на базе каких технологий работают гранды рынка, начиная от eBay и Amazon, и заканчивая популярными сток-сайтами (stock - продажа фото, видео, программ и т.п. через интернет). Также огромным подспорьем оказался просмотр многочисленных видеоуроков, в которых демонстрировались разные методики и способы решения типовых ситуаций. К сожалению, забыл сейчас имя того датчанина, уроки которого мне понравились больше всех за простоту и емкость используемых им алгоритмов. В общем, все было очень интересно. После такого подробного изучения, я уже примерно представлял то, что хочу сделать и, главное, как.
Многие могут спросить, почему не Joomla, WordPress, Drupal и пр.? Ведь по такому пути идет множество программистов, особенно начинающих и начитавшихся в интернете о том, как "за 5 минут создать интернет магазин и построить успешный бизнес". Не хочу вдаваться в дискуссии - эта тройка точно не подходит, тяжелый неоптимизированный код тому основная причина. Тем более, что требуемый функционал можно легко программировать самостоятельно на PHP, вместо того, чтобы искать какие-то плагины и модули.
Второе, от чего я отказался - использование фреймворков и всевозможных шаблонизаторов типа smarty. Дело в том, что их, равно как и вышеназванные Joomla, WordPress, Drupal, нужно подстраивать под свои задачи, они не выдерживают конкуренции по производительности по сравнению с тем, что написано с пониманием и под конкретные задачи в нативном коде. Это мне напомнило те времена, когда я сталкивался в современном геймдеве с тем фактом, что игры, разрабатываемые на каком-нибудь супер-дупер популярном "движке" или ох-какой-технологии еле выводили визуализацию спрайтов на компьютерах, которые могли запускать последние TES или Risen. Конечно, сам пример обобщенный, но яркий. В общем, ничего никому доказывать не хочу, тем более поднимать тему, мое решение было одно - нативный PHP, программирование в редакторе sCite (эта программа является альтернативой Notepad++).
CMS Platinum 1.2
Сейчас уже 2013 год, и в мае появится CMS Platinum 1.2, которая разделена на две модификации - обычную и Pro. Версия Pro предназначена для высоконагруженных ресурсов, оптимизирована за счет использования кэширования на стороне сервера (обычное кэширование, memcashed), использования Cron и множества собственных ноу-хау, улучшающих производительность.
Для тестирования системы на высоких нагрузках разработан специальный модуль с отдельным бэк-эндом администрирования и статистики производительности. Подключая его, администратор может увидеть соответственно всю статистику по производительности, количеству и скорости выполнения запросов к БД, и в дальнейшем принимать решения по оптимизации (предлагаются готовые варианты на выбор). Бэк-энд производительности подключается опционально через основную панель администрирования, например, на сутки или неделю для сбора статистики. Администратор уже видит наглядно проблемные места, и в случае необходимости, может, например, переключить проблемный запрос к базе данных на вариант Cron+memcahed, указав частоту обращений (одно из решений). После внесенных изменений, вся система (сайт) переключается на новый режим работы, и бэк-энд производительности теперь можно отключить.
Второе отличие версии Pro от обычной заключается в большем количестве предлагаемых модулей, таких как, например, ротатор баннеров/контента (случайная выборка периодически кэшируется на стороне сервера, а не производится прямым обращением "пользователя" к БД), и прямой сервисной поддержкой для случаев, когда владельцы CMS Platinum Pro хотят добавить новый функционал. Если он (этот функционал) способствует дальнейшему улучшению CMS Platinum, то разработка с нашей (или моей) стороны будет бесплатной.
И третье ключевое отличие версии Pro - реализация отдельных субдоменов для поставщиков/продавцов, которые в рамках собственных админ-интерфейсов могут самостоятельно добавлять свои товары, информацию об услугах и так далее. Чтобы было более понятно, скажу, что этот функционал сродни тому, что вы можете увидеть у ресурсов shop.by или deal.by.
Если говорить об общем сравнении версий CMS Platinum 1.0 и 1.2, то в 1.2 основной упор был сделан на улучшение характеристик производительности, добавление функционала, а также создание CSS3-альтернатив элементам, написанным на JavaScript (jQuery). И еще одна новинка CMS Platinum 1.2 - модуль калькулятора. Он написан на JavaScript/XHTML. Содержит чекбоксы, комбобоксы, поля ввода количества с подсчетом суммы в реальном времени и кнопкой отправки заказа на e-mail. Для этого модуля написано подробное руководство на доступном понятном языке, поэтому изменять его можно по своему усмотрению.
Для справки
CMS Platinum - это собственная разработка, стартовавшая в 2012 году и уже опробованная в нескольких крупных проектах - интернет-магазинах. Именно для них и на их базе она создавалась изначально. Проект развивается поэтапно, при этом каждая версия CMS является законченным продуктом, готовым к работе сразу после установки.
Основными заказчиками CMS Platinum являются студии веб-дизайна и владельцы интернет-магазинов.
CMS Platinum не(!) предназначена для совсем новичков и представляет собой базовый конструктор, включающий БД (MySQL) с готовой структурой, панель администрирования, основной дизайн-шаблон, набор модулей и рабочую документацию.
Какие планы развития у CMS Platinum?
На данный момент проводятся работы по переводу CMS Platinum, документации и т.п. на английский язык. Лично же я, как автор этой CMS, сейчас решаю вопрос написания чат-сервера (собственный вариант онлайн-консультанта). Меня когда-то подначили языком программирования Erlang, поэтому попытаюсь реализовать изначально что-то на нем. В целом, сайт проекта - www.igd.by, там вся текущая информация.
Кристофер,
www.igd.by
Комментарии
Для меня, как потребителя, любая самодельная CMS есть зло. Я так понимаю, что подобные самоделки есть ничто иное, как инструмент привязки заказчика к конкретному разработчику сайта, и этот инструмент входит немалым куском в стоимость разработки. Не нравится разработчик сайта, хочешь уйти - пожалуйста. Однако новому исполнителю надо начинать всё сначала, админский иструментарий CMS предыдущий разработчик имеет право не давать. Или же новый разработчик имеет свою самоделку, которую вам придётся купить, иначе никак. А это новые пустые траты.
Поэтому я всегда выбираю исполнителя со стандартными, переносимыми CMS, пусть они в чём-то хуже, но в итог есайт получается и дешевле, и качественнее. Да и не надо каждый раз переучиваться на новую CMS.
По-моему так.
Уф-ф, ну, это извечная проблема. Посмотрите на рынок, что там происходит, сравните цены/возможности, скорости загрузки, удобство обслуживания. Документация, хорошо откомментированный код — присутствуют. Причем сейчас на CMS Platinum работает 18 магазинов, 10 из которых были переведены с других CMS'ок. В общем, время покажет:). Спасибо за мнение.
В целом делать самому - подход правильный, код пишется зачастую быстрее чем поиск модуля для друпал и его настройка. Вот только с шаблонизаторами не согласен, тот же smarty достаточно быстр и гибок, а с 2010 года в php всем правит twig, чья нагрузка по ресурсам во время выполнения близка к нулю.
Планируется ли у вас демо вресия лайт? Просто для любопытных и возможных будущих клиентов.
andrew12> тот же smarty достаточно быстр и гибок
Скорее всего, тут многое зависит от программирования, потому как, например, я однажды делал работу над переходом со smarty на чистый нативный PHP, причем имел дело с довольно популярным движком. В результате производительность (скорость загрузки страниц и обработки данных) увеличилась на 80%. Но это все при том, что были самостоятельно проработаны вопросы кэширования, оптимизации запросов к БД, структуры БД и так далее. В целом, каждый случай нужно рассматривать в отдельности.
andrew12> Планируется ли у вас демо вресия лайт? Просто для любопытных и возможных будущих клиентов.
В ближайшее время не планируется. На поддомене сайта www.igd.by мы поместим тестовый интернет-магазин и админ-панель для него. Это будет после выхода версии 1.2, которая сейчас на бета-тестировании. К ней сейчас пишется адд-он — возможность опционального включения в шаблон семантической микроразметки Schema.org.