В статье рассматриваются проблемы администрирования ресурсов и выявляются пути их решения.
Ключевые слова:веб-ресурс, административная панель, перспективы веб-разработки.
Разработка веб-ресурсов различного наполнения и назначения в настоящее время является одним из актуальных направлений развития IT-индустрии. Такие ресурсы, как правило, строятся на основе систем управления контентом. Количество таких систем огромно и постоянно увеличивается, причем у каждой из них есть свои уникальные особенности. Отследить все такие особенности не всегда возможно, но можно учесть недостатки различных систем, предложить для них решение и получить таким образом надстройку над стандартным набором инструментария.
По обилию блогов и форумов разработчиков веб-ресурсов в сети Интернет становится ясно, что документации к вышеуказанным системам не являются исчерпывающими. Таким образом, напрашивается вывод, что усовершенствованная система управления контентом не обязана быть уникальным продуктом, но должна быть интуитивно понятна и удобна для решения задач, относящихся к предметной области.
Выделим направления развития такой системы. Возможности большинства современных административных панелей позволяют лишь наполнять веб-ресурс картинками и текстом, даже загрузка видео-контента начинает вызывать трудности.
Полезным для разработчиков станет и реализация функционала для получения и возможности изменения конфигурации файла php.ini:
- включение/выключение безопасного режима;
- отображение в адресной строке идентификатора текущей сессии;
- возможность изменения имени GET-параметра для сессии;
- отображение значений переменных, например, возможность использования глобальных переменных.
При этом, единственным необходимым условием для реализации таких возможностей станет наличие php интерпретатора, так как для получения и изменения настроек php необходимы функции cfg_get_var($param) и cfg_set_var($param,$value).
Кроме того, желательна также будет реализация полнотекстового поиска по именам, вывода дополнительной информации об оборудовании, установленном на сервере, и диаграммы с количеством материалов на сайте и процентом количества продвигаемых страниц.
Упрощение системы маршрутизации и адресации также можно отнести к перспективным направлениям совершенствования технологий администрирования веб-ресурсов. Роутинг — процесс определения маршрута следования, определения URL-адресов в системе для доступа к информации. Во многих CMS, в том числе и наиболее популярных open source системах, таких как Joomla и Wordpress, гибкое управление такими адресами отсутствует.
Часто в системах управления контентом отсутствует также многосайтовость и многоязычность «из коробки». Обеспечение данного функционала сводится к установке дополнительных модулей, либо к еще более узкому решению под конкретную ситуацию, а также требует дополнительных работ.
Кроме того, необходимо усовершенствовать возможности проверки работоспособности реализации продукта. Конечно, можно запускать сценарий несколько раз и анализировать результаты всех попыток. Однако, на деле необходим более серьезный подход, позволяющий проверить приложение на всех этапах его работы.
Отметим, что когда в продукте появляются инструменты отладки приложения — это безусловный знак зрелости. При этом понятно, что надежность и производительность разработанной системы зависит не только от продукта, но и от разработчиков, которые создают компоненты и программируют бизнес-логику сайта.
Проведение тестов реализуется с помощью методов из установленных дополнительных пакетов, таких как PHPUnit. При этом желательно составлять наборы тестов еще до построения системы (см., например, [1], [2], [3]), но так как даже скелет будущих проектов уже запрограммирован, возможным к реализации остается только пост-тестирование. А значит, если это новый функционал, актальным для него представляется возможность создания своего набора тестов. Таким образом, получим экспериментальную проверку правильности решений, принятых на этапах построения дополнительной функциональности, перед ее внедрением. Данная возможность также становится актуальной при отсутствии тестовой площадки.
Подчеркнем, что в заявленных условиях не должны вводится ограничения на наборы тестов. Тесты могут быть на получение, запись, поиск информации, создание и изменение таблиц. Для подобных тестов более безопасным будет использовать временные тестовые таблицы вместо основных, используемых в проекте.
После проведения тестов стоит сохранить их результаты в журнал. Помимо результатов тестов, часто из вида упускаются ошибки и предупреждения, записываемые в лог-файл — стоит организовать удобный способ чтения лог-файла и рекомендации по устранению ошибок.
При оптимизации сайтов полезным оказывается набор функций, который позволяет:
- проводить тесты на устойчивость кода;
- отображать иерархию классов посредством UML;
- проводить или указывать на типовые SEO работы (seohide, удаление циклических ссылок для правильного распределения ссылочного веса и т. п.).
На настоящий момент большинство систем работает с табличными моделями хранения данных, однако, для расширения проекта и проектирования систем с трудно структурируемыми данными, следует перейти на больший уровень абстракции и сбросить важность технологии, с помощью которой реализуется доступ к информации, будь то реляционная модель или ORM.
Сильнейшим ограничением систем, на которых строится большинство веб-ресурсов являются базы данных, которые решают достаточно большой спектр повседневных задач администрирования сайтов. Так, наиболее часто используемая MySQL поддерживает 2 типа таблиц: транзакционные (InnoDB) и без поддержки транзакций, которые используются по умолчанию (MyISAM). Преимуществами первых являются надежность хранения информации при сбоях, возможность отката изменений, объединение нескольких запросов в один. К преимуществам второго типа можно отнести скорость и малый объем занимаемых записей.
Тем не менее, некоторые задачи MySQL реализовать не может, причем это также касается и хостеров, которые ожидают стандартный круг задач от клиентов и предлагают в качестве базы только MySQL.
MySQL, например, не способен на внешнее объединение таблиц при выборке данных, и для реализации данной задачи приходится прибегать к альтернативным конструкциям.
Иногда даже настройками предусмотрено открытие только одного соединения с базой, и если написать плагин с открытием соединения, работой с таблицами и далее закрытием соединения, то вся последующая динамическая информация не выведется. При этом если соединения не закрывать, то при исчерпании лимита на открытые соединения невозможно будет создать новые соединения или зайти на сайт, что является весомым минусом.
Все узкие места необходимо учитывать и предпринимать шаги к их разрешению: так, следует вновь созданные таблицы помещать не в новую базу данных, а в уже имеющуюся, и уникализировать данные таблицы с помощью префиксов в имени.
Шардинг — разделение информации, для хранения в нескольких базах данных. Применяя его, получаем кластер из баз данных. Хостинговый план может быть минимальным и позволять использование только одной базы с данными, или база разрастается до таких размеров, что получение из нее данных достаточно объемно по времени. В этом случае нужно разделить хранимую информацию — кэшировать часть данных, увеличить количество баз данных, часть информации хранить в файлах или оперативной памяти при использовании NoSQL решений.
Многие функции для разных баз данных похожи, и в общем случае для открытия и прерывания соединения имеют вид *_connect, *_close (например, pg_close — функция закрытия для PostgreSQL). Для абстрагирования от конкретной базы данных можно было бы ввести конструкцию, позволяющую подставлять вместо «*» строку, соответствующую используемой базе данных, однако, это оказывается трудоемкой и рискованной задачей. Для подобных целей был придуман программный интерфейс ODBC, который вводит дополнительный уровень абстракции между контроллером (логикой сайта) и моделью (базой данных).
Но, даже если переписать обращения к базе данных с использованием такого инструмента, как ODBC, сторонние модули по-прежнему будут использовать функции, зависимые от базы, поэтому в полной мере избавиться от зависимости от конкретной базы данных не получится.
Таким образом, инструментарий администрирования веб-ресурсов, разработанный в качестве средства решения вышепоставленных задач, имеет широкие возможности практического использования и дополнительного совершенствования.
Литература:
1. Мерсер Д., Кент А., Новицки С. PHP5 для начинающих. — М.: Вильямс, 2011. — 848 с.
2. Петин В. Сайт на AJAX под ключ. — СПб.: БХВ-Петербург, 2011. — 427 с.
3. Hypertext Preprocessor // [Электронный ресурс] / URL: http://php.net/ (Дата обращения: 08.03.2015).