Если вы хотите выйти на рынок электронной коммерции, но при этом не производите товаров и услуг — эта статья для вас. Генеральный директор ADCI Solutions Александр Кузнецов рассказывает о сайтах для сравнения цен от и до: начиная с истории развития, принципов их работы и монетизации и заканчивая ключевыми моментами дизайна и разработки.
Допустим, вы планируете запустить новый eCommerce-сайт. Вы изучили нишу, составили список конкурентов, рассмотрели их со всех сторон и поняли, что ещё один онлайн-магазин мобильных телефонов не сделает лучше ни мир, ни чью-то жизнь. Вы разочарованы и думаете, что теперь о рынке онлайн-торговли можно забыть? Ошибаетесь. Вы провели аналитику — это большая работа, благодаря которой вы не вложили деньги в убыточное дело. Теперь ищите себе подходящую веб-студию и пишите техзадание на разработку сайта для сравнения цен. А мы вам поможем: расскажем о том, что это такое, каким должен быть интерфейс и как заработать, сравнивая цены на продукцию из разных магазинов.
Что такое сайт для сравнения цен и зачем он нужен
Спасибо развитому капитализму за невероятный ассортимент товаров и услуг. Нет единого для всех телефона, ноутбука, стиральной машины, электромобиля, газированной воды, шоколада, одежды, салона красоты, книжного магазина, такси — сложно найти нишу совсем без конкуренции.
Конкуренция — признак того, что продукт или услуга достаточно популярны среди разных социальных групп, каждая из которых ждёт СВОЕГО предложения. Телефон нужен плюс-минус всем, но одни могут позволить себе модель за 30$, a другие готовы отдать все 800$ за новый айфон.
Уже много лет потребители устраивают перед покупкой небольшой рисёрч, узнают, что, где и сколько стоит, и делают выбор с холодной головой. Сайты для сравнения цен берут эту работу на себя. Принцип работы прост: пользователь выбирает на сайте желаемый товар, а сайт сопоставляет его стоимость в разных магазинах и выдаёт пользователю результат сравнения. Интересовать может не только цена: средняя оценка товара, его цвет, материал и т. п. — тоже важные для потребителя качества.
Первые сайты для сравнения цен появились немногим позже интернета. Сайт BargainFinder от Andersen Consulting (ныне Accenture) был запущен в 1995 году и сравнивал цены на компакт-диски из восьми магазинов. Авторы проекта хотели протестировать идею, а потому не стали уведомлять магазины о своей инициативе. Разумеется, для сайтов с высокими ценами это было неприятным сюрпризом: их потенциальные покупатели узнали, что где-то есть диски подешевле. Но эксперимент был вдохновляющий — следующий подобный проект, браузерный плагин Jango от сиэтлского стартапа Netbot, появился в 1997 году и принёс своим создателям миллионы; впоследствии он стал частью Amazon.com.
Как работает сайт для сравнения цен
Мы уже описали работу сайта для сравнения цен с позиции пользователя: найти желаемый товар, кликнуть по нему, посмотреть цены и другие параметры в разных магазинах, сделать выбор. Но перед этим сервис и его разработчики уже провели кое-какую работу: собрали базу сайтов и подготовили данные о ценах на них.
Есть несколько способов собрать базу и данные для сравнения. Они в разной степени сложные, целесообразные и одобряемые.
Веб-скрейпинг
Веб-скрейпинг — это технология для автоматизированного извлечения нужных данных со страниц сайтов. Специальный алгоритм собирает на страницах нужную информацию и готовит её в формате, понятном для пользователей интернета.
Плюсы:
быстрый способ собрать базу;
не нужно спрашивать разрешения у онлайн-магазинов;
скрипт можно написать самому.
Минусы:
база будет собрана не самым честным путём;
без договорённостей с онлайн-магазинами сайт для сравнения цен нельзя монетизировать;
некоторые сайты защищают контент от скрейпинга;
нельзя быть уверенным в актуальности собранных данных.
Покупка данных у третьих лиц
В ответ на возрастающий спрос компаний на персонализированные данные рынок IT-продуктов предложил моделью дистрибуции данных под названием Data-as-a-Service (DaaS). Владельцы инструмента, работающего по такой модели, выступают подрядчиками по сбору, управлению и хранению информации, которая нужна сайтам для сравнения цен.
Плюс:
экономия денег и времени на разработке и внедрении собственной технологии по сбору данных.
Минус:
зависимость от добросовестности и ценовой политики стороннего сервиса.
Сбор через API магазинов
Дальновидные владельцы онлайн-магазинов понимают, что ваш сайт — потенциальный источник трафика и покупателей, поэтому разрабатывают API для передачи данных. Потоки данных — так называемые фиды — передают файлы в форматах .csv или .txt со всей необходимой и, что главное, регулярно обновляющейся информацией о товарах.
Плюсы:
взаимовыгодное сотрудничество сторон;
регулярное получение актуальных данных;
возможность монетизации сайта для сравнения цен.
Минусы:
привлечение к разработке сайта для сравнения цен дорогостоящих профессионалов;
сложная и дорогая разработка API, если у онлайн-магазина его нет.
Ручное добавление данных представителем магазина
Подход используется в том случае, если владельцы онлайн-магазина не хотят или не могут сделать свой API, но в то же время понимают выгоду от работы с вами. Для таких есть два сценария: либо заносить в базу данных информацию о ценах самостоятельно, либо готовить .xml или .csv-файлы.
Плюсы:
экономия времени на разработку и внедрение движка для сбора данных;
одобряемый способ получения данных.
Минусы:
трата времени на ручную работу или денег на найм персонала под эту задачу;
необходимость разрабатывать интерфейс, через который представитель ритейлера будет вносить данные.
Данные по запросу
Некоторым специфическим товарам и услугам нельзя назначить конкретную стоимость, а потребителю, кроме разницы в цене, могут понадобиться дополнительные комментарии от производителя. В таких случаях вы собираете запрос от потребителя через форму, рассылаете его по производителям и позднее приводите данные в понятный человеку вид, чтобы помочь ему сделать выбор.
Плюсы:
не требует технически сложных решений.
Минусы:
требует человеческого участия;
получаются уникальные результаты сравнения, которые нельзя переиспользовать регулярно.
Как зарабатывают на сайте для сравнения цен
Отношения между вами и компаниями, производящими какие-то ценности, нужно описывать через понятие аффилированного маркетинга. В них вы выступаете аффилиатом — посредником между покупателем и производителем или поставщиком товаров или услуг. Разумно рассчитывать на прибыль за эту услугу, и вы её получите: за переход на сайт компании, покупку товара или иное целевое действие.
Также существуют партнёрские программы (affiliate networks), которые сводят друг с другом сайты для сравнения цен (publishers) и бренды (advertisers) и дают инструменты для контроля эффективности перформанса.
Итак, по какой модели вы можете монетизировать свои услуги и окупить затраты на разработку и поддержку вашего сервиса:
Cost-per-click или pay-per-click. Вы получаете деньги за каждый переход по реферальной ссылке с вашего сайта на сайт компании.
Pay-per-order. Вы получаете от производителя или поставщика процент за покупку, сделанную после перехода с вашего сайта на сайт компании.
Платное размещение. Если ваша площадка пользуется популярностью и гарантирует переходы и покупки, то компании готовы оформить регулярный платёж за сам факт размещения своих ссылок.
Реклама брендов. Бренды готовы платить вам за то, что вы разместите их на верхних позициях результатов сравнения, но только в случае, если у вас репутация популярной площадки с высоким трафиком и потенциалом приводить лидов.
Таргетированный маркетинг. Если ваши пользователи оставляют после себя достаточно данных для анализа их предпочтений, вы можете показывать им те бренды и товары, которые они теоретически хотели бы увидеть.
Каким должен быть лучший сервис для поиска самых низких цен
Чтобы пользователи возвращались на ваш сайт и рекомендовали его другим, обсудите с UX/UI-дизайнером, как будет выглядеть и работать обязательная функциональность. На примере Drupal-сайта для сравнения цен на товары для скалолазов и альпинистов WeighMyRack, который поддерживает команда ADCI Solutions, мы покажем, как она выглядит, и расскажем некоторые подробности о её работе.
UX/UI-дизайн
Поиск и фильтрация
Включите в фильтр все параметры, которые важны потребителям при выборе товара. Пользователи WeighMyRack разбираются в альпинистском снаряжении и знают, что от правильного подбора по параметрам может зависеть их жизнь. У карабинов такими параметрами могут быть форма, тип замка, расстояние, на которое открывается карабин (gate opening) и др., у верёвок — длина, стандарт (type), тип сухой обработки (dry treatment) и др. Данные по таким параметрам площадка получает из фидов онлайн-магазинов, а мы с помощью Drupal-модуля Facet API настроили фильтры, учитывающие эти параметры.
Поиск и фильтры в Weigh My Rack
Информативные листинги
Листинги — это перечни товаров, сгруппированные по определённым параметрам и облегчающие сравнение позиций друг с другом.
Листинги в Weigh My Rack
Обзоры на товары и услуги
Сообщение об изменении цены на желанный товар в выгодную для пользователя сторону.
Их можно присылать через пуш-уведомления, по SMS, на имейл или в один из мессенджеров.
Программа лояльности (бонусы, скидки, подарки и т. п.).
Сканирование штрих-кода или QR-кода для возможности сравнивать цены на товар в телефоне.
Веб-разработка
Цена, фирма-производитель, цвет, вес и прочие параметры сотен и тысяч товаров, важные для покупателя — это данные, к огромному потоку которых должен быть готов ваш сайт. В ходе работ по улучшению WeighMyRack нашим разработчикам нужно было уделить внимание трём сторонам: работе двух серверов, максимальной свежести данных и устойчивости сайта к кибератакам.
Работа серверов
Чтобы сайт быстро загружался, ему потребуется два сервера. Первый будет обрабатывать запросы от пользователь, а второй — импортировать данные; сервера WeighMyRack получили названия, соответственно, main и sync.
Почему двумя задачами не мог заниматься один сервер? Оба этих сервера имеют разную нагрузку, которая по характеру конфликтует между собой. Sync-серверу не требуются большие мощности — его монотонная работа упирается в интерфейсы ввода вывода (I/O). Main-серверу же необходима быстрая система и незанятый I/O, чтобы пользователи получали ответ от него как можно скорее.
Main-сервер может держать в кэше процессора и оперативной памяти всю необходимую информацию, что сильно увеличивает производительность. Если добавить сюда-работу sync-сервера, то несколько процессов будут бороться за процессорное время и мешать main-серверу отдавать данные пользователям. Кроме того, постоянные обращения к интерфейсам ввода/вывода будут тормозить работу системы и забивать каналы. В итоге, даже небольшая нагрузка sync-сервера может драматически сказаться на производительности и добавить времени ожидания пользователю.
Поэтому один сервер нужно было занять монотонной вычислительной работой, а другой — работой с пользователями.
Задача контент-менеджера вашего сайта — создавать на main-сервере страницы с товарами, следить, чтобы информация была актуальной, и прописывать уникальные идентификаторы товара, благодаря которым можно соотнести строчки из фидов со страницами товаров на сайте. В то же время на sync-сервере может происходить импорт. И то, и другое меняет базу данных, и вам как разработчику нужно сохранить все изменения. А если какой-то из серверов упадёт, важно иметь максимально свежие данные.
До нашего участия в развитии WeighMyRack на сайте за ежедневные бэкапы отвечал модуль backup_migrate, а за еженедельные — хостинг Digital Ocean. Но этого было мало, и, чтобы заставить два сервера работать в унисон с базой данных, мы написали скрипт, который делает ежедневные бэкапы данных перед началом очередного импорта и записывает их в бэкап-хранилище на удалённом сервере с отладочным сайтом.
Это дало нам уверенность, что обновленная информация появится на рабочем сайте. И если основной сайт упадёт, у нас всё равно будет бэкап менее, чем 12-часовой давности.
Обновление данных
В первое время WeighMyRack работал с данными только из двух фидов. Система импорта представляла собой скрипт для каждого фида, который вытаскивал из них информацию. Скрипты запускались последовательно, и как только оба импорта заканчивались, обновлённая информация о товарах на sync-сервере и возможные изменения на main-сервере объединялись. В среднем эти два канала обновлялись 3-5 часов. Но клиенту нужно было развивать бизнес и увеличивать число магазинов.
При последовательном импорте дополнительных фидов время полного импортирования превысило 24 часа, что противоречило идее ежедневного обновления и с чем нельзя было мириться.
Снизить время помог параллельный импорт данных: несколько запросов пытаются одновременно получить доступ к одной и той же информации.
Для описания многопоточности напрашивается аналогия с библиотекой. Посетитель просит книжку, но оказывается, что она есть в одном экземпляре, который кто-то забрал. Придётся ждать, пока книгу вернут. В этой аналогии книга — это страница товара, в которую пишутся данные, а посетители библиотеки — потоки, которые хотят писать данные.
Но Drupal не ждёт, когда вернут книгу, а идёт домой к человеку, который её читает, и не просто садится читать рядом, но и дописывает что-то в неё. В этом и был конфликт: невозможно предугадать, чьи изменения сохранятся. А нам нужно было сохранить каждое.
Когда мы тестировали обновление для 1000 продуктов, обновлялись только 500-600. В поисках решения мы встроили lock mechanism — «замок», позволяющий контролировать данные и не дающий вмешаться другим процессам, пока данные зависят от текущего.
Рассмотрим абстрактный пример работы lock mechanism. P1 и P2 — это процессы, вносящие изменения в файл.
Работа без lock mechanism. На этапе 3.2 P2 не знает об изменениях со стороны P1, поэтому во время сохранения переписывает изменения, внесённые P1. Проще говоря. без lock mechanism невозможно предугадать, чьи изменения сохранятся.
Работа с lock mechanism. Пока один процесс пишет изменения, второй ждёт своей очереди.
Защита от DDoS-атак
Суть DDoS-атак — в огромном количестве запросов, под натиском которых база данных не справляется со своей работой, и не рассчитанный на такую нагрузку сайт падает. За время нашей работы на проекте WeighMyRack его атаковали 3-4 раза. Чтобы не допустить этого впредь, мы установили систему для мониторинга и возобновления процессов Monit. Благодаря ей тот или иной процесс или сервис перезапускается спустя 3 минуты после того, как MySQL, Apache или httpd перестают отвечать, и сайт продолжает работать нормально — это удобно, если сайт упадёт ночью.
Заключение
Кому и чем полезен сайт для сравнения цен? Если не брать в расчёт DaaS-платформы, то у нас есть три стороны, заинтересованные в таком инструменте: компании-производители, потребители и вы. Давайте опишем выгоды для всех, чем подытожим вышесказанное.
Потребители:
не тратят время на самостоятельное сравнение цен на товары и услуги;
не переплачивают за товар или услугу;
знакомятся с новыми компаниями и их предложениями.
Компании:
получают дополнительную точку контакта с клиентами;
привлекают на свой сайт трафик, улучшающий показатель ранжируемости сайта в поисковых системах.
Владелец сайта для сравнения цен
запускает eCommerce-проект, не производя при этом товаров;
монетизирует свою услугу одним из нескольких способов;
развивает высококонкурентные рынки.
Но перед тем, как задуматься о доходах и своём влиянии на мир, выберите нишу, в которой вы разбираетесь и в которой работает достаточное количество компаний, чтобы сравнение стоимости их товаров друг с другом было возможным. Не менее важна команда, которая будет делать дизайн интерфейса и писать код, который заставит интерфейс работать. Правило поиска команды номер один: ищите в её портфолио проекты, похожие на ваш. Желаем удачи!