Большинство Web-серверов, лидирующих ныне в своих областях, когда-то были простыми домашними страничками. Ежедневное паломничество конкурентов на сайты друг к другу создавало вполне приличный трафик. В 1996 г. лидеры российского Интернета имели посещаемость всего в несколько сот человек в день!

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

В этой статье мы будем наблюдать эволюцию некоего гипотетического сайта — от маленького персонального сервера до крупного Интернет-проекта. Рассмотрим процесс роста изнутри — с точки зрения программного обеспечения сайта.

Опубликовав свои творения, какие бы они ни были, непременно хочется узнать, прочитал ли их хоть кто-нибудь? Поэтому первая программа, которую осваивает создатель сайта, — анализатор лог-файлов.

Рис. 1. Список ссылающихся сайтов в анализаторе статистики Wusage

Это ПО занимается регулярным анализом лог-файлов и построением на его основе статистических отчетов и графиков. Такие программы указывают направление движения подобно компасу и рассказывают о текущем положении дел. Анализатор строит множество отчетов, например:

  • О посещаемости (по посетителям, хитам, хостам, файлам и т. д.). Хороший анализатор статистики помнит все цифры за все время своей работы и строит графики изменений всех этих параметров.
  • О составе посетителей, их географии (чем лучше анализатор, тем подробнее), с информацией о ядре постоянных посетителей, его изменениях и т. д.
  • Об источниках посетителей, поисковых машинах, ссылающихся серверах, фразах, по которым нашли этот сайт, и т. д.
  • Технические - например, списки ошибок на сайте или наиболее посещаемые разделы и т. д.

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

Как правило, хостинг-провайдер уже установил на ваш сайт один или несколько анализаторов статистики (это своего рода бесплатное приложение). Вот некоторые продукты, осуществляющие анализ лог-файлов (большинство из них бесплатны):

  • AWStats (http://awstats.sourceforge.net/) - на мой взгляд, наилучший (самый удобный и функциональный);
  • Wusage (http://www.boutell.com/wusage/) - эта система сохраняет данные за все время работы, но предоставляет, к сожалению, только небольшую часть информации (лучшие ссылающиеся сервера, лучшие браузеры, лучшие маршруты по сайту, но далеко не все);
  • The Webalizer (http://www.webalizer.com/) - довольно примитивный анализатор;
  • WebTrends Log Analyzer (http://www.netiq.com/products/log/default.asp) - платный, работающий на серверах под управлением ОС Windows. Отчеты впечатляют, но стоит это удовольствие 499 долл.

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

Такая вот небольшая проблема обновления! Конечно, можно нанять десяток кодеров, которые будут вручную поддерживать актуальность вашего сайта, но дешевле и проще приобрести систему управления контентом.

Ядро большинства современных сайтов — Web-сервер с работающим на нем движком, контент-менеджером. Это первичное средство автоматизации, позволяющее решить следующие задачи:

  • Обновление сайта, в том числе и автоматическое. Контент-менеджеры обычно предоставляют нечто вроде редакторского интерфейса. С его помощью сонмы редакторов могут править содержание сайта, не прибегая к html-кодированию и программированию, а лишь изменяя формы в браузере.
  • Автоматическая генерация страниц по запросу пользователя, хранение и ведение архивов, списков, обновление индексных страниц и т. д.
  • Соблюдение дизайна сайта и освобождение дизайнера от программирования и редактирования. Вообще хорошая система управления содержанием решает задачу разделения программирования, дизайна и редактирования.
  • Создание на сайте интерактивных сервисов (чатов, гостевых книг, форумов, опросов). Управление и модерация этих сервисов с помощью WWW-интерфейса.

Трудоемкая работа по обновлению сайта превращается в заполнение Web-формы: внесли информацию, нажали на кнопку, и сообщение появилось на сайте в положенном месте, при этом все списки, индексные страницы и проч. обновились автоматически.

В большинстве случаев эта программа пишется с нуля программистами сайта (пока гром не грянет, мужик не перекрестится). У крупных дизайн-студий есть свои наработки в этой области. Например, Imprimatur студии Артемия Лебедева (http://www.artlebedev.ru) или DGCA у компании D-Group (http://www.e-soft.ru/dgroup/). Из предлагаемых на рынке отдельных полноценных продуктов я бы выделил несколько:

  • Optimizer компании ООО "Гарант-Парк", http://www.optimizer.ru - хорошо разработанный контент-менеджер стоимостью от 800 до 1100 долл. (в зависимости от комплектации). Есть возможность взять его в аренду;
  • Saitistika (http://www.saitistika.ru) - одна из самых старых систем. На мой взгляд, наиболее проработанная и качественная. Большое количество модулей (форумы, чаты, списки рассылки, баннерная система, новости, поиск, голосование и т.д.). Стоимость Saitistika - 2000 долл.;
  • Dynasite от компании "Рексофт" (http://www.dynasite.ru) - очень дорогая и мощная система (на ней, в частности, работает крупнейший в Рунете магазин Ozon. Минус - для работы необходим предустановленный сервер приложений ColdFusion, очень высокие требования к конфигурации компьютеров;
  • платформа Communiware (http://www.communiware.ru) - крупный и сложный для освоения программный продукт, однако с точки зрения программирования один из самых перспективных и правильных.
Рис. 2. Редактирование структуры сайта в контент-менеджере Saitistika

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

Обычно рано или поздно (тем раньше, чем лучше сайт) владельцу ресурса удается найти рекламодателя — человека, который за совершенно символическую сумму готов выкупить некоторое количество баннерных показов. Первый раз разместить баннеры заказчика можно, вручную отредактировав страницы. Но когда ручеек рекламодателей превратится в поток, размещение баннеров вручную (так же как и подготовка статистических отчетов) станет невозможным. Вот тогда придется покупать баннерный движок.

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

  • упростить установку и управление баннерами, сведя этот процесс к выбору рекламной площадки из списка с помощью удобного Web-интерфейса без каких-либо технических изменений в программном коде или дизайне сайта;
  • предоставить клиентам и владельцам сайта доступ к автоматически собираемой статистике по показам и результатам рекламы, составу и техническому описанию аудитории и т. д.

Локальная баннерная система — сложный технический проект со своими особенностями. Это объясняется очень высокими требованиями к скорости работы такой системы. Например, на одной странице Интернет-сайта Gazeta.ru в среднем бывает расположено четыре баннера. При ежедневном количестве обращений около 150 тыс. получается до 600 тыс. показов баннеров в сутки. Учитывая неравномерность распределения трафика в течение дня и его пиковый характер, Gazeta.ru должна обрабатывать до 40 запросов в секунду.

Для выполнения этой задачи баннерная система создается, как правило, из нескольких частей: сервер, отдающий баннеры и обрабатывающий нажатия на них; фоновые программы, обрабатывающие статистику; сервер, предоставляющий доступ к статистике, и т. д. Объем информации, обрабатываемой и хранимой таким комплексом, очень велик и подразумевает использование базы данных (обычно SQL).

Наиболее серьезные продукты в Рунете:

  • Rotabanner студии Артемия Лебедева (http://www.rotabanner.com) - очень качественный, но весьма дорогой продукт. На нем реализовано два десятка как крупных баннерных сетей, так и локальных баннерных движков. Стоимость от 5 до 15 тыс. долл. в зависимости от комплектации. На таком движке не совсем разумно держать только один сайт, лучше покупать его в складчину на несколько серверов.
  • TBE - значительно менее мощный, но куда более доступный по цене движок на PHP (http://www.native.ru/products/tbe/). Среди использующих его вы не найдете крупных сайтов, но для небольшого проекта это то, что нужно. Стоимость всего 100 долл.
Рис. 3. Добавление сайта в редакторском интерфейсе AdRiver

Кроме того, подобную систему можно взять в аренду. В данном случае вы просто устанавливаете на свои страницы код сторонней баннерной сети и управляете некоторым ее виртуальным сегментом, в котором создаете учетные записи для рекламодателей, получаете статистику и т. д. Такие сервисы предоставляют, например, БаннерБанк (http://www.bb.ru), AdRiver (http://www.adriver.ru) и «Крутилка.Ру» (http://www.krutilka.ru).

Итак, мы имеем уже достаточно крупный сайт, со своим баннерным движком, системой управления содержанием, постоянными авторами и аудиторией. Все хорошо. Но когда все действительно хорошо, то посещаемость сайта продолжает расти. И вот уже написанный на языке Perl поисковый скрипт, который вы когда-то загрузили с общедоступного сервера, начинает серьезно подтормаживать. Если при этом пользователи шлют вам письма с сообщением, что они не смогли найти на сайте описание языка запросов к поисковой системе, это значит, что сайт дорос до локальной поисковой системы.

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

То же касается и поискового модуля.

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

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

Из представленных в России продуктов я бы выделил только Яndex.Site (http://company.yandex.ru/programs/site/), осуществляющий полнотекстовый поиск с учетом морфологии русского языка. На пробу можете загрузить Яndex.Lite и установить его на своем сайте (объем индексируемого текста не должен превышать 5 Мбайт). В случае, если вы хотите снять это ограничение, придется купить лизенцию, стоимость которой зависит от объема сервера (от 400 долл. за 10 Мбайт до 15 тыс. долл. за версию без ограничений). Зато потом вы сможете с гордостью написать внизу поисковой страницы «Powered by Yandex».

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

Персонализация — это динамическое подстраивание внешнего вида и содержания сайта под нужды и предпочтения каждого конкретного посетителя. С помощью подобной системы вы сможете:

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

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

Внутри многих контент-систем или баннерных движков имеются модули персонализации (тот же Dynasite), но они, как правило, не являются сколько-нибудь серьезными разработками. Хорошая система персонализации способна по действиям пользователя построить его психологический портрет, на основе которого можно предсказать его дальнейшее поведение и предпочтения. Для примера посмотрите возможности системы персонализации Iqrate.com (http://www.iqrate.com). Кстати, эта система используется в магазине Ozon, работающем на движке Dynasite, но эта интеграция очень поверхностна и осуществлена фактически на уровне ссылок.

Отдельной, далеко не тривиальной, задачей является интеграция и совместное использование вышеописанного программного обеспечения.

Почти все перечисленные системы представляют собой достаточно крупные и весомые программные продукты. Некоторые из них предоставляют некое подобие API, но ни одна не умеет использовать данные другой. Действительно, совместная работа систем персонализации, контент-менеджера, баннерных движков и поисковых систем разных производителей — пока дело будущего.

На этой стадии сайту уже мало обычного тарифного плана вашего провайдера. Конечно, состав требований у каждого из рассмотренных продуктов разный, но в одном они практически сходятся — для нормальной работы им требуется отдельный выделенный сервер с базой данных. Вы можете использовать collocation или рассмотреть другой подобный вид хостинга. Если учесть стоимость упомянутых в статье продуктов, то цена за выделенный сервер покажется самым маленьким вложением.

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

Об авторе

Олег Бунин — специалист по разработке ПО для крупных Интернет-проектов, сотрудник компании «Рамблер», vbob@aha.ru