Русский
Русский
English
Статистика
Реклама

Ecommerce

Каким бывает фрод в маркетплейсе, как его вычислять и предотвращать. Доклад Яндекса

13.11.2020 10:21:32 | Автор: admin
Прежде чем строить антифрод, надо понять, каким на сервисе бывает фрод какие методы злоумышленники выбирают, чтобы получить выгоду и навредить пользователям. Алексей Савостин поделился опытом Яндекс.Маркета в исследовании способов фрода, рассказал о целях (порой изощрённых), которые преследуют фродеры, и о данных, по которым можно определять подозрительную активность.

Всем привет, меня зовут Алексей Савостин. Я занимаюсь направлением антифрода в Яндекс.Маркете и сегодня расскажу, как мы строили антифрод для маркетплейса Беру, который с октября стал частью Маркета. (...)

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

Расскажу подробнее о том, какие направления есть у фрода маркетплейса и какие источники убытков существуют.



Самое крупное направление реселлеры, дальше идут магазины конкурентов, пункты самовывоза и кардеры.

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

Фрод скидок и бонусов. Реселлеры, нарушая правила сервиса, регистрируют большое количество аккаунтов и пытаются разбить заказы на очень мелкие, выкупая товары с максимальными скидками, маркет-бонусами (это акции, привязанные к конкретному заказу) и используя различные кэшбэк-сервисы.

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

Резерв стоков. Были случаи, когда товары попадали в акцию с большой скидкой, реселлеры без оборотных средств делали закупки с разных аккаунтов, используя ПВЗ Маркетплейса либо партнеров как склады.

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

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

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

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

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

Как ведут себя фродеры по этим трем направлениям? Практически все они ведут себя примерно схоже и пытаются спрятаться одинаково, за исключением реселлеров. Но реселлеры в нашем конкретном кейсе используют эмуляторы Android и вторые пространства Android, чтобы получить больше бонусов. Это скорее наш внутренний кейс. Чтобы получить бонус, надо скачать наше приложение. Фактически все остальные направления у всех видов фродеров одинаковые они пытаются регистрировать очень много новых аккаунтов, представляясь разными лицами; использовать VPN, режим инкогнито, вымышленные имена и адреса доставки.



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

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

Что мы делаем, чтобы противоборствовать фродерам?

Мы используем скоринг пользователей. В процессе скоринга мы собираем все данные об активности и те, которые нам доступны на момент создания аккаунта, проведения авторизации и всего остального. Склеиваем все эти данные и объединяем их в кластеры.



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

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

Как это выглядит на схеме:



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

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

Если это злонамеренные действия и мы определили фрод, возможно применение мер противодействия, таких как блокировка аккаунта и отмена заказов, которые созданы с нарушением правил сервиса и в будущем повлекут убытки для наших партнеров либо для маркетплейса.

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

В своем развитии антифрод может не только выступать как ограничитель, но и улучшить пользовательский опыт доверенным пользователям. Новые и не доверенные пользователи у нас совершают покупки с 3-D Secure, а те, кто уже совершал покупки, становятся доверенными, и мы для их заказов с известными историческими данными можем предоставлять больше инструментов лояльности. Например, давать возможность провести оплату без 3-D Secure для больших сумм. При этом мы не несем рисков при приходе кардеров.



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

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

Близость телефонных номеров и почтовых адресов. Фродеры часто используют одни и те же адреса, потому что эти ПВЗ для них удобны, они делают много заказов на один адрес либо на очень близкие. А так как товарные категории тоже будут близки, это можно достаточно просто обнаружить.

Как я уже сказал в предыдущем пункте, смотрите на всплески по редким товарам.

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

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

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

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

Это всё. Спасибо, что прочитали или прослушали мой доклад.
Подробнее..

Перевод Введение во Vue Storefront

11.09.2020 16:15:38 | Автор: admin

Добрый день, меня зовут Андрей Солдатов, мы в команде Россельхозбанка разрабатываем новые интересные проекты, связанные с сельским хозяйством. В качестве фронтального решения для некоторых из них мы решили использовать интересное open source решение Vue Storefront. В этой статье вы можете ознакомиться с ключевыми возможностями и особенностями этого решения. Статья является переводом статьи из официального блога Vue Storefront, оригинал доступен по ссылке.

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

Что такое Vue Storefront?

Vue Storefront это backend-независимое PWA (веб)приложение для электронной коммерции, написанное на Vue.js. То, что он использует headless-архитектуру, позволяет Vue Storefront работать с любой eCommerce платформой, он может выступать в качестве PWA для Magento, Shopify, BigCommerce, WooCommerce и других.

Это очень популярный open source проект с сильным и развивающимся сообществом.

Ключевые особенности Vue Storefront:

  • Кроссплатформенность

  • Фокус на производительность

  • Принцип mobile-first

  • Передовые технологии

  • Нет ограничений в стилистике тем и кастомизаций

  • Открытый исходный код с лицензией MIT

  • Сообщество опытных разработчиков

  • Серверный рендеринг из коробки (для SEO)

  • Offline режим

Тут вы найдете сайт Vue Storefront, а здесь GitHub репозиторий.

Как это связано с серверными платформами?

Vue Storefront является backend-независимым благодаря vue-storefront-api и отдельным API-коннекторам для eCommerce backend-платформ. Формат данных в vue-storefront-api всегда одинаков для любой платформы. Это означает, что независимо от того, какую eCommerce платформу вы используете, ваш веб-интерфейс остается без каких-либо изменений.

Это отличная стратегия, так как вы легко сможете переходить с одной платформы на другую (или с одной версии на другую, например, Magento 1 -> 2), не трогая ваш frontend.

Коннектор API работает в два этапа:

  • data pump (на рисунке mage2nosql) извлекает статические данные (каталог, заказы и т.д.) из вашей eCommerce платформы во Vue Storefront ElasticSearch и изменяет формат на тот, который используется vue-storefront-api. После получения данных вы можете отобразить ваш каталог продуктов во Vue Storefront. После загрузки данных в ElasticSearch они будут синхронизироваться с изменениями на стороне backend-платформы и обновлять контент.

  • worker pool это синхронизация так называемых динамических вызовов (пользовательских сессий, правил корзины и т.д.), которые не могут быть сохранены в базе данных и должны вызываться vue-storefront-api напрямую с backend платформы.

Управляя этими двумя этапами интеграции, Vue Storefront может работать с вашей backend платформой.

Некоторые из популярных backend платформ уже имеют готовые интеграции (Magento 2, Magento 1, CoreShop, BigCommerce, WooCommerce), но вы можете легко создать свою собственную с помощью шаблона.

Синие элементы на рисунке отвечают за автономный кеш, о них будет рассказано позже.

Как это работает?

При работе с Vue Storefront необходимо ознакомиться с тремя концепциями:

  • Vue Storefront Core (/core(http://personeltest.ru/aways/github.com/DivanteLtd/vue-storefront/tree/master/core)) является связующим звеном для всех его функций, которые позволяют Vue Storefront работать. Он содержит все необходимые для работы приложения: SSR, билды, встроенные библиотеки и хелперы. Не следует трогать эту папку при создании собственных решений, для того, чтобы продолжать получать обновления.

  • Vue Storefront Modules (/core/modules и /src/modules) - это eCommerce модули. Каждый модуль представляет собой одну функцию (например, корзина, wish list, каталог, сторонние интеграции). Вы можете добавлять / удалять / редактировать эти модули по своему усмотрению и использовать только те функции, которые вам нужны. Они же используются и для сторонних расширений.

  • Vue Storefront Themes (src/themes) - это реализация вашего сайта. В темах вы можете использовать и расширять всю логику из зарегистрированных модулей/ядра и добавлять свою HTML-разметку и стили. Vue Storefront из коробки предоставляет полностью надстраиваемую тему по умолчанию.

Подводя итог: ваш сайт это в основном Vue Storefront Themes, в котором используются функции, предоставляемые Vue Storefront Modules. Vue Storefront Core склеивает это все воедино.

Понимание этих трех аспектов позволит вам работать с Vue Storefront и создавать собственные сайты на нем.

Полезные материалы: структура проекта Vue Storefront.

Установка Vue Storefront

Есть три варианта:

Это все, что нужно чтобы VS заработал с нашим демо-бэкендом.Это все, что нужно чтобы VS заработал с нашим демо-бэкендом.
  • Вы можете подключить свой frontend к нашей демо backend-платформе (лучший вариант, чтобы попробовать Vue Storefront).

  • Вы можете настроить frontend с вашим собственным vue-storefront-api и базой данных, выгруженной из демо-версии.

  • Вы можете настроить frontend с помощью vue-storefront-api, подключенного к вашему eCommerce backend.

Чтобы сделать что-то из этих вариантов, просто введите "yarn installer" в корневом каталоге проекта и ответьте на вопросы в консоли. После завершения установки для запуска проекта введите команду "yarn dev" (по умолчанию на 3000 порту). Независимо от того, что вы выберете, вы сможете изменить настройки в файле конфигурации.

Конфигурационный файл Vue Storefront

Большая часть конфигурации Vue Storefront (например, активная тема, адреса внутреннего интерфейса API, настройки магазинов и т.д.) выполняется через файл конфигурации, который можно найти в папке "/config". Файл default.json содержит все настройки по умолчанию.

Для вашей реализации вы должны создать файл local.json и включить поля из default.json, которые вы хотите переопределить. Эти два файла будут объединены с приоритетом local.json в процессе сборки. Если вы используете инсталлятор для установки своего инстанса Vue Storefront, он сам сгенерирует корректные файлы конфигурации.

Создание тем в Vue Storefront

При создании тем в Vue Storefront в большинстве случаев все, что вам нужно это создать собственную HTML и CSS разметку. Вся необходимая бизнес-логика находится в ядре с его основными модулями и может быть легко внедрена в любой из компонентов темы.

Бизнес-логика из основных компонент может быть легко внедрена в любые темы с использованием Vue.js миксин Бизнес-логика из основных компонент может быть легко внедрена в любые темы с использованием Vue.js миксин

Механизм внедрения основной бизнес-логики в темы очень прост. Мы используем Vue.js миксины для сохранения возможности обновления основной бизнес-логики. Таким образом, предполагая, что у нас есть, например, ядро Microcart с такой бизнес-логикой (слева на рисунке), мы можем легко внедрить его в любой из наших компонентов темы (справа), просто импортировав его и добавив в качестве mixins: [Microcart]. Это все, что вам нужно, чтобы использовать основной бизнес-логику в вашей теме. При таком подходе мы можем легко обновлять все основные компоненты, не ломая сайт.

Самый простой способ создать свою тему - это создать копию темы по умолчанию, изменить её имя в package.json, выбрать активную тему в config/local.json и запустить yarn, чтобы сделать Lerna линкование (которое используются для monorepos).

Автономный режим и кеш

Vue Storefront продолжает работать, даже когда пользователь не в сети. Нам удалось это сделать с помощью активного использования кеша браузера.

  • Для статик ресурсов (только для prod) мы используем плагин sw-precache (конфигурацию можно найти в /core/build/webpack.prod.sw.config.js). Они кэшируются в Service Worker и могут быть проверены на вкладке браузера Application.

Здесь вы можете найти статик ресурсы. Обратите внимание, что Service Worker работают только в prod режиме.Здесь вы можете найти статик ресурсы. Обратите внимание, что Service Worker работают только в prod режиме.
  • Для кэша каталога и данных мы используем IndexedDB и Local Storage. Мы также предварительно выбираем товары из посещенных категорий, поэтому, как только вы посетите одну из них, все ее продукты будут доступны вам в автономном режиме. Механизм автономного кэширования находится в папке /core/lin./storage.

Мы используем некоторые из закэшированных данных, даже когда пользователь находится онлайн, это нужно для мгновенного отображения контента. Вот почему Vue Storefront такой быстрый.

Что еще?

Можете мне не верить, но это все, что вам нужно знать, для начала работы с Vue Storefront! После изучения основ просто посмотрите нашу документацию и посетите сообщество, чтобы глубже погрузиться в проект.

Полезные ссылки

Видео с обучением

Также вы можете посмотреть видео с 4го Vue Storefront хакатона с ознакомительным обучением.

Подробнее..

Мозг, видео, фото, VR, 3D и конверсия будущее визуализации в интернет-торговле

23.11.2020 14:22:47 | Автор: admin
Условия постоянного роста рынка интернет-коммерции обостряют конкуренцию. Сегодня зарабатывают лишь те, кто очень давно на рынке, либо те, кто способен привлечь клиента уникальным предложением. Прошли времена, когда можно было заработать на товарах, снятых ушлым дядей Васей на калькулятор из условного магазина кампуктер.ру. Вылизанный до блеска и существенно приукрашивающий действительности старый добрый маркетинг тоже мало интересен современному потребителю. При этом наиболее перспективным способом донести информацию о товаре до потенциального клиента становится визуальный контент. Под катом рассуждаем почему это так и какие средства визуализации будут определять конверсию в ближайшем и отдаленном будущем.



Почему мозг любит глазами


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

К настоящему моменту сформировался ряд тенденций в визуализации товаров в интернет торговле. Именно эти тенденции, очевидно, станут будущим этой отрасли и уже приобрели значительный вес:

  • Видеообзоры;
  • Рост разрешения фотографий и увеличение их количества;
  • Трехмерный контент (360 photo, 3D обзоры);
  • Эксперименты с VR.

Ритейлеры отмечают, что следование одному или нескольким трендам визуализации из описанных выше, кроме, пожалуй, использования VR-контента, уже сегодня повышает продажи. Например, Pult.ru делают ставку на многообразие фото и видео обзоры значимых товаров, а Связной провёл A/B тестирование 3D-обзоров, получил в результатах 7% рост конверсии от трехмерного контента. Можно констатировать, что в будущем именно визуальный контент будет определять продажи и именно в него будут интегрированы текстовый и аудиальный.

Видео


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

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

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

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

Разрешение, HDR, количество


Растут требования к традиционным фото. Для современной ecommerce постепенно минимальным приемлемым разрешением фото товара становится FullHD. Высокое разрешение позволяет рассмотреть товар в деталях, что значимо для потенциального потребителя. Также имеет значение динамический диапазон, особенно в случае многообразия оттенков у товара, как правило, приемлемое качество достигается с применением технологии HDR.

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

Встречается мнение о том, что через 10 лет двухмерный контент вымрет под натиском более информативных форматов. Я категорически не согласен с этой позицией, хотя бы в силу того, что наиболее простые решения являются одними из самых эффективных. У меня есть предположение, что он несколько видоизменится, например, получит элементы интерактивного взаимодействия наподобие тех, которые есть в 3D-обзорах.

360 photo и 3D обзоры


Созданы для трехмерной визуализации объектов. Можно вертеть во все стороны, рассматривая нужный товар. Первое пришествие этих технологий визуализации пришлось на середину-конец нулевых и провалилось. Низкие скорости передачи данных и несовершенство веб-технологий отображения, в частности Adobe Flash, убили желание интернет ритейлеров первой волны использовать трехмерный контент. Сегодня скорости выросли, технологии изменились и 360-градусные панорамные снимки высокого разрешения, а также полноценные трехмерные модели товара (3D-обзора, в технологии компании REVIEW3) отвоевывают утраченные позиции.

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

Недостатки также ощутимы, в случае с 360 photo это стоимость, которая многократно превышает стоимость стандартных фото. В случае же 3D-обзоров их количество ограничено тем, что продает по подписке единственная в мире компания REVIEW3, которая создает исключительно модели электроники и выбирает лишь флагманы и массово продающиеся. Тем не менее, интерес российского и зарубежного рынка онлайн-ритейла к данным технологиям активно растет с момента наступления пандемии и повсеместного ухода магазинов в онлайн. Поэтому стоит в ближайшие годы ожидать экспоненциальный рост количества 3D-объектов на сайтах интернет-магазинов совершенно разной направленности: от привычных уже магазинов электроники до ювелирных онлайн-бутиков.

VR в ритейле


Виртуальная реальность, пусть и отдаленное, но будущее интернет ритейла, особенно это касается одежды и носимой электроники. На текущий момент ограничения VR-технологий, как коммерческих, связаны с относительной ресурсоемкостью и малой распространенностью соответствующих периферийных устройств. Однако, как мы хорошо знаем, со временем и ростом технологичности стоимость любой электроники уменьшается, а возможности увеличиваются. Таким образом через 5 7 лет настанет момент, когда VR-очки станут такой же частью обыденной действительности, как смартфон. С этого момента интернет-ритейл начинает активнейшим образом использовать трехмерный VR-контент. Рискну предположить, что в основу лягут всё те же 360 photo и 3D-обзоры. Единственным значимым недостатком VR-решений сегодня является низкая распространенность устройств виртуальной реальности.

Итог


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

Использовано изображение
Подробнее..

Умные кассы для ВкусВилла

10.11.2020 14:15:42 | Автор: admin
С точки зрения пользователя процесс онлайн-покупки продуктов у ВкусВилла выглядит просто открыл приложение (самого ВкусВилла или партнеров доставки и агрегаторов), выбрал нужные товары, оплатил, дождался, получил. В этом посте мы немного расскажем о том, как работают кассы ВкусВилла изнутри, как они участвуют в процессе онлайн-заказа и как они связаны со всей остальной экосистемой магазина.

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



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

Для начала расскажем про архитектуру нашего кассового решения. С точки зрения взаимодействия решение имеет клиент-серверную архитектуру. С точки зрения развертывания оно ближе к десктопному, т.к. обе части (и клиент, и сервер) располагаются локально, на каждой отдельно взятой кассовой машине. Ядро написано на Java, а фронт на JavaScript (React). Для хранения данных используется PostgreSQL. Если говорить про обвязку, то всё, что касается оборудования, написано на Go, API на Python.

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

image

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

Стек технологий, который мы использовали при реализации, позволил нам сделать кроссплатформенное решение. И на большинстве точек в качестве ОС используется Linux Ubuntu, что позволяет дополнительно экономить на лицензиях.

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

Адаптация кассы для работы с заказами


Для того чтобы понять объем доработок на кассе, нужно рассмотреть процесс онлайн-заказа покупателя.

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

Вот как это выглядит на схеме:



1. Оформление заказа покупателем

Содержимое заказа попадает на отдельный сервер ВкусВилла, в котором под запрос доставки была изменена структура БД. Когда заказ оформлен, после попадания на сервер его данные аккуратно раскладывается в БД.

2. Отображение заказов на кассе

Для вывода данных о заказах на кассе был реализован особый режим отображения, со скрытым доступом от покупателей. Это особенно актуально для касс самообслуживания, т.к. обычный покупатель в магазине не должен иметь возможности зайти в заказы и произвести какие-либо действия с ними. При переходе в данный режим касса забирает информацию о заказах с сервера и выводит её продавцу. В этом случае касса выступает в роли терминала обслуживания на стороне магазина: она видит, какие заказы поступили от клиентов в данный магазин, приоритезацию этих заказов, на периодической основе обновляет список заказов и отображает данные по ним.

3. Печать сборочного чека

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

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

После подтверждения сборки касса возвращает на сервер статус заказа ГОТОВ, и наступает очередь курьеров. Пеший курьер или таксист могут видеть заказы ещё на этапе сборки и заранее забронировать их под себя для доставки. После перевода заказа в статус ГОТОВ они могут брать данный заказ в работу. Если же покупатель решил забрать заказ самостоятельно, то он на этом этапе получает уведомление о готовности.

5. Выдача заказа

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

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

Списывать сразу сумму набранной пользователем корзины нельзя каких-то товаров может не оказаться, а от каких-то пользователь откажется сам. Это как раз те случаи, когда вы заказываете во ВкусВилле еду через приложение, а вам перезванивают и уточняют, что каких-то позиций нет, кефира осталось всего 4, а вы по случаю личного праздника хотели 7, а у хлеба срок годности через 2 дня закончится.

В таких случаях сборщик согласует всё с покупателем, а потом финализирует заказ в соответствии с полученными данными. А касса, видя расхождения между первоначальным заказом и финальным, выдает предупреждение, и сборщик должен указать причину для каждого товара почему так произошло, и подтвердить результат. Только после этого сборка заказа считается завершенной.

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

Умные тележки


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

image

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

Но сначала расскажем, как в принципе происходит авторизация покупателя на кассе с помощью QR-кода.

  1. Покупатель подходит к кассе и нажимает Сгенерировать код.
  2. Касса отправляет запрос на центральный сервер ВкусВилла и сообщает свой уникальный номер и запрос на регистрацию нового QR-кода.
  3. На сервере регистрируется этот код, в таблице БД создается соответствующая запись, что в таком-то магазине создан такой-то QR-код.
  4. Покупатель видит сгенерированный QR-код на мониторе кассы, сканирует его с помощью мобильного приложения.
  5. Приложение (в котором пользователь уже залогинен) распознает зашитый в QR-код номер и посылает запрос на сервер.
  6. На сервере запись с распознанным QR-кодом дополняется данными о покупателе из приложения.
  7. Касса всё это время мониторит эту таблицу на предмет изменений и появления новых данных. Как только замечает их выдает оповещение на мониторе об успешной авторизации.
  8. При этом, если за 30 секунд касса так и не обнаружила информацию о покупателе в таблице, то выводит сообщение об ошибке авторизации.

Так вот, авторизация тележек на кассах работает примерно так же, но со своими особенностями.

Теперь расскажем непосредственно о тех вариантах интеграции тележек с кассами, которые мы реализовали.

1 попытка. QR-коды


У тележек есть встроенный сканер штрих-кодов, с помощью которого покупатель сканирует товары. Это же сканер решено было использовать для того, чтобы считывать QR-код, выдаваемый кассой для авторизации покупателя. Касса в этом случае точно так же, как и покупателя, авторизует конкретную тележку, но в качестве информации о пользователе подхватывает список покупок, которые уже добавлены в тележку.

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

Поэтому решили попробовать вариант с RFID-метками.

2 попытка. RFID-метки


К кассе подключен считыватель RFID-меток. На каждой телеге закреплена собственная метка.
Когда покупатель подъезжает с тележкой к конкретной кассе, касса замечает метку и принимает данные с этой тележки, выдавая на экран список покупок.

Тут проблема была в том, что тестировалось это всё в условиях, близким к идеальным. На деле же тележку можно не очень ровно подвезти к кассе, особенно, когда посетителей много. Или в магазине кассы могут стоять чуть ближе друг к другу, и пользователь должен подъезжать к нужной кассе максимально близко. В условиях деятельности нормального магазина это работает с перебоями уже при средней загруженности.

3 попытка. Авторизация с ручным вводом номера телеги


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

Поэтому, когда тележка передает данные о списке товаров на сервер, она передает еще и этот номер например, тележка номер 33782 из такого-то магазина и список просканированных товаров.

Далее покупатель идет к кассе и выбирает опцию загрузки товаров из телеги, вводя лишь номер своей тележки. И всё, с кассы уходит запрос на сервер, а там уже есть данные о списке товаров в тележке с этим номером. Всё это выводится на экран кассы.

Конечно, покупатель может ввести номер тележки какого-то другого покупателя, стоящего рядом в очереди, и получить список его товаров. Это возможно, если мы говорим о кассе самообслуживания в случае с кассиром подобное исключается.

О сложностях


Может показаться, что реализация кассового решения проста прокачал основную логику, поддерживаешь API, и всё как-то работает само собой. Но всё немного не так.

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

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

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

Затем допилили оплату бонусами. На кассе при покупке в магазине человек же может использовать бонусы с карты лояльности или промокоды. При онлайн-заказах через приложение такого не было. Значит, что? Верно, надо сделать.

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

Обычно кассовое решение поставляется в комплексном виде: вот оборудование, а вот ПО для него. Перед нами же стояла задача создать ПО под оборудование, которое не специфицировано в одном ключе: описание того, сколько на устройстве памяти и сколько ядер, плавает от магазина к магазину, у каждой модели свои особенности. Где-то стоит моноблок одного производителя, а где-то системник и тач-монитор от другого.

Планы развития


Параллельно мы готовим запуск касс самообслуживания нового поколения, оснащенных мультитач-экраном, 2D-сканером для распознавания штрих-кодов, стереодинамиками, микрофоном для звуковых приложений и голосовых сервисов, а также 3D-камерой и другими системами помощи покупателям.

Кстати, мы сейчас активно расширяем команду, все описанные кейсы, доделки, работоспособность систем и интеграций ее работа. Планируем использовать максимально свежие решения и идеи, добавлять новые возможности как в приложение для покупателей, так и во внутренние системы. А вот тут можно посмотреть полный перечень вакансий hh.ru / наш карьерный сайт.

Буду рад ответить на ваши вопросы.
Подробнее..

Из песочницы Как сэкономить на разработке мобильного приложения

04.10.2020 16:16:23 | Автор: admin
image

Привет, я Евгений Бойченко сооснователь студии, которая разрабатывает мобильные приложения. За 10 лет работы вопрос Почему так дорого? я слышу чуть ли не ежедневно. Для многих клиентов мы искали возможности безболезненно снизить цену разработки, и в итоге у меня накопилось некоторое количество кейсов, которые решают проблему высокой стоимости мобильного приложения. В этом треде я призываю комьюнити делиться знаниями о том, как удешевить разработку мобильного софта без потерь. Начну с себя и своих секретиков, а вы присоединяйтесь в комментариях вместе создадим гайд по экономичной разработке, который будет полезен обществу.

Предисловие: как понять, что мобильное приложение вам нужно


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

  • Моя ниша достаточно велика?
  • Приложение решит мои бизнес-задачи?
  • Будет ли у меня такой поток клиентов, который оправдает вложения?
  • В насколько близких отношениях мои клиенты с мобильными технологиями?

Ответ нет хотя бы на один из этих вопросов повод задуматься о необходимости приложения. Мало времени и денег ещё два предупредительных выстрела. И того, и другого будет уходить много.

Сколько времени уходит на мобильную разработку


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

Сколько денег уходит на мобильную разработку


Готовы потратить семизначную сумму? Начинайте разработку смело. Не готовы? Читайте статью дальше.

MVP приложения


MVP (Minimum Viable Product минимально жизнеспособный продукт) пилотная версия приложения. Она нужна чтобы понять, как продукт или услуга заходит аудитории, при минимальных затратах на создание. Ей не требуются функциональные и дизайнерские украшательства всё, что там будет, работает строго на бизнес-цель продукта.

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

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

image

Проектирование, аналитика и техническое задание


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

Если вы ещё не выяснили, кто ваши потенциальные пользователи, как проект будет реализован, сколько он стоит и есть ли у вас конкуренты, сделать это можно на этапе бизнес-аналитики.

Суть кратко: системный аналитик собирает ваши требования к проекту и переводит их на язык разработки. Он выясняет:

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

Что при этом происходит:

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

Эта работа поможет вам отмести нежизнеспособные идеи и сэкономить деньги и время. Она будет стоить до 10% от общей цены разработки приложения. Аналитики укажут на точки роста и помогут сделать его лучше, а вы поймете, какие функциональные возможности в будущем продукте самые важные. В этом и есть смысл этапа проектирования. Оно подтверждает или опровергает идею о том, что ваш продукт нужен людям. Без этого этапа можно получить неожиданно маленькое количество установок, нулевые продажи и нулевой доход.

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

iOS или Android: что лучше выбрать для разработки мобильного приложения


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

Есть несколько причин для того, чтобы начать с создания приложения для владельцев айфонов:

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

Но окончательный выбор платформы зависит от цели приложения и его аудитории. Хотите зарабатывать и делаете ставку на платёжеспособных пользователей? Выбирайте iOS. Создаёте продукт, нацеленный на массы или регионы, жители которых не привыкли или не могут платить за цифровые продукты? Делаете сервисное приложение для курьеров и торговых представителей и не можете позволить себе дорогой парк устройств? Выбирайте Android. Хотите захватить мир? Выбирайте обе платформы.

image

Как сэкономить на дизайне мобильного приложения


Чтобы не переплатить за дизайн, нужно помнить минимум о двух условиях:

  1. Дизайн это сумма функциональных и графических решений, которые помогают приложению выполнять свою цель, а не впечатляющий внешний вид. Ничто не должно мешать интерфейсу быть практичным и понятным. Иначе говоря, хороший дизайн это как можно меньше дизайна.
  2. До появления вашего приложения пользователи уже работали с десятками других и привыкли к внешнему виду и расположению элементов, последовательности действий и реакции приложения на те или иные действия. Это паттерны, и пользователи ждут, что они будут повторяться всегда и во всех приложениях для конкретной платформы отталкивайтесь от этого.

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

Допустим, стоит задача разработать для обеих платформ внешне одинаковое приложение. Поэтому нужно сделать какой-то элемент не таким, каким он обычно выглядит в своей ОС. Например, мы пытаемся повторить тулбар iOS в Android-версии. Это значит создание элемента с нуля, что дольше и дороже. В совокупности такие изменения сильно повлияют на стоимость проекта.

С анимациями похожая история: чем они сложнее и круче, тем больше времени и бюджета требуют.

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

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

Кроссплатформенные приложения: что это и как экономит деньги


Подход к разработке приложения может быть нативным и кроссплатформенным.

Нативные приложения создаются на конкретном языке программирования для конкретной платформы: языки Java и Kotlin для Android, а Swift не ниже третьей версии для iOS.

Достоинства:

  • мгновенная реакция на действия пользователей;
  • прямой доступ к аппаратной части устройства;
  • привычный для пользователей платформы интерфейс.

Недостаток: высокая стоимость разработки и поддержки из-за привлечения минимум одного разработчика для каждой платформы.

Кроссплатформенные разработка мобильных приложений осуществляется с помощью веб-технологий (HTML, CSS и JavaScript) инструментами Cordova, Xamarin, React Native и Flutter и работают сразу на iOS и Android. Чтобы написанный код заработал на мобильных устройствах, его нужно либо перевести на понятный им язык, либо сделать прослойку, которая работает на устройстве и переводит обращения к функциям устройства с непонятного для них языка на понятный.

Достоинство: низкая стоимость разработки и поддержки из-за привлечения одного веб-разработчика.

Недостатки:

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

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

image

Как сэкономить на бэкенде


Большая часть приложений работает с данными: принимает от пользователя, отдаёт на сервер, возвращает и т. п. Для этого нужна бэкенд-разработка, расходы на которую занимают солидную часть бюджета. Как же можно сэкономить на серверной разработке?

  1. Хранить данные на стороне клиента, то есть в устройстве. В таком случае для работы приложения не нужен интернет, но так оно лишается интерактивности, а новый контент будет появляться только с новой версией приложения в сторе.
  2. Использовать бессерверную архитектуру приложений Serverless. Это решение не требует ни особых знаний для развёртывания и поддержки, ни ощутимого бюджета всю поддержку берёт на себя тот облачный сервис, на котором вы построите архитектуру. Много возможностей для этого имеют AWS, Azure и Firebase.
  3. Работать с данными через интеграции с бесплатными инструментами. Вместо хитрых кастомных форм можно использовать Google-форму, данные собирать не в административную панель, а в Google-таблицу, а вместо приложения использовать Telegram-бота.
  4. Использовать SaaS-сервисы. В приложении есть типовые функции, создание и поддержка которых не только дороги, но и отягощают клиента бумажной волокитой. Поэтому их разработка с нуля редкость. Один из примеров такой функции оплата, и стандарт де-факто использовать платёжный шлюз какого-нибудь банка.

И это касается массы других возможностей приложения. Нужны чаты или push-уведомления? Их дешевле брать готовыми, в виде SaaS (Software-as-a-Service программное обеспечение как услуга). В среднесрочной перспективе это дешевле и надёжнее, чем писать свою платформу. Вы тем самым избегаете всех грабель, которые собрали разработчики платформы до того, как она заработала.

Фриланс или агентство: выбираем разработчиков


Фрилансер это вольнонаёмный специалист, с которым вас будут связывать только деловые отношения. Так как фрилансер работает вне штата, он будет с вами только на время работы над проектом или его этапом, и ничто не помешает ему заниматься основной работой или другими проектами.

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

Минусы:

  • Отношения с фрилансером основаны на взаимном доверии, и всегда есть риск наткнуться на недобросовестного исполнителя. Кроме того, без тестирования и code review со стороны профессионалов не факт, что проект будет реализован без багов и другие специалисты смогут его поддерживать, если вы решите сменить исполнителя.
  • Срывы дедлайнов и растягивание задач частая ситуация в работе с фрилансерами. Если он работает над несколькими проектами, в первую очередь он будет решать задачи на горящих. Фрилансер может и вовсе перестать выходить на связь и пропасть.
  • Исключительно материальная заинтересованность фрилансера в вашем проекте и полное безразличие к его дальнейшей судьбе могут дать плохой результат. Включённость в проект важна, и от того, каких специалистов вы подберёте и как построите взаимодействие, будет зависеть успешность проекта.

Нанимать фрилансеров стоит при явно ограниченном бюджете, но от вас требуется богатый опыт в управлении проектами и готовность тратить много времени на общение с подрядчиками. Самое главное просчитывать риски и всегда иметь под рукой план Б.

Региональные студии или столичные: кому доверить проект


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

Начните поиск студии с рейтингов. Их изучение даст вам представление о количестве студий в России, стоимости их услуг и их положении в отрасли. Ориентироваться стоит на четыре рейтинга:

  • Тэглайн самый авторитетный рейтинг разработчиков мобильных приложений на российском рынке. Учитывает годовую выручку студии, количество сотрудников, качество сайта студии и её узнаваемость среди коллег по цеху.
  • Рейтинг Рунета главные критерии попадания в него количество выпущенных приложений и их средняя оценка в сторах, поэтому вам не придётся выбирать среди псевдостудий, сделавших два давно мёртвых проекта.
  • Clutch рейтинг из США. Позиции студий зависят от реальных отзывов и оценок от уже работавших с ними клиентов.
  • Ruward агрегатор других рейтингов. Учитывает позиции студий в Тэглайне, Рейтинге Рунета, Clutch Russia и ряде второстепенных рейтингов.

Теперь посмотрите на географическое положение каждой студии в этих рейтингах. Если не в первой десятке, то уж точно в двадцатке будут соседствовать столичные и региональные студии. Это наглядно доказывает, что дислокация не показатель: сибирская команда способна решать задачи на том же уровне, что и московская или питерская. При этом почасовая ставка из-за разницы в уровнях жизни будет наверняка ниже.

На что ещё обратить внимание при выборе студии мобильной разработки:

  • Студии с маленьким штатом редко способны выдать результат высокого уровня из-за банальной нехватки рук.
  • Студия, работающая на рынке от двух лет и более, уже имеет и опыт, и портфолио.
  • Портфолио скажет вам о многом: какого масштаба клиенты доверились этой студии, насколько хорошо студия делает свою работу, а главное создавала ли она ранее продукт, похожий на ваш. Если да, то вам повезло, ведь студия уже понимает ваши проблемы и проблемы рынка, а работа над проектом пойдёт быстрее на всех этапах.

image

Экономия с помощью конструкторов мобильных приложений


Растущий рынок мобильных приложений в какой-то момент не мог не предложить малому и среднему бизнесу создавать приложения в конструкторах и генераторах.

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

Зачем нужно приложение на конструкторе? Чтобы осмотреться в мобильной среде, увидеть востребованность бизнес-идеи в ней, а если она есть, то это будет зелёным светом к разработке приложения с нуля.

Конструкторы для создания мобильных приложений делятся на два типа:

  1. Такие, в которых люди без знаний о дизайне и разработке смогут что-то сделать самостоятельно.
  2. Такие, в которых создатели этих конструкторов работают сами, собирая приложение под определённого клиента.

Признаемся, что автор не знает ни одного конструктора первого типа, на котором собрали бы приложение, пользующееся спросом и решающее реальные проблемы миллионов. Если вы не знакомы со своей аудиторией, слабо понимаете, что такое пользовательский опыт, то вам будет сложно получить достойно выглядящий, удобный и приносящий деньги результат. У таких конструкторов нет поддержки дизайнеров и разработчиков, а значит, вы будете сами себе аналитиком, UX/UI-дизайнером и маркетологом, то есть сами поведёте свой продукт к успеху. Чем это закончится вопрос риторический.

Но если вы собрали приложение самостоятельно, воспользовавшись одним из таких конструкторов, и всем довольны, то напишите об этом в комментариях мы хотим узнать об этом опыте.

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

Есть множество индустрий, где конструкторы второго типа хорошо решают задачу. Среди них рестораны и кафе, на создание приложений для которых заточен конструктор WelcomeApp, службы доставки еды, решение для которых поставляет DeliveryApp, массовые мероприятия и корпоративные приложения, с которыми рады помочь такие конструкторы, как Eventicious и EventPlatform, и другие индустрии. Находятся даже платформы для массового выпуска приложений с программой лояльности и студии, которые готовы сделать клоны хоть твиттера и eBay, хоть уберы для любых специалистов.

Политика мобильных сторов в отношении шаблонных и сгенерированных приложений неустойчива. В августе 2017 года компания Apple добавила в инструкцию по публикации приложений в App Store пункт, гласящий, что модераторы не будут пропускать такие приложения. В июле 2019 компания пошла на уступки: такие приложения нельзя подписывать в App Store именем клиента, данные каждого клиента должны храниться на отдельном бинарном файле, а сам конструктор приложения должен предоставлять инструменты для создания приложений с уникальным пользовательским опытом. К таким инструментам и относятся профессиональные конструкторы.

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

Сэкономить на мобильной разработке с помощью маркетплейсов


Молодому бизнесу, решившему зайти на территорию мобайла, порой разумнее не делать приложение, а подключиться к маркетплейсу. Например, ресторан или кухня могут не делать своё приложение, а завести аккаунт на Яндекс.Еде, а производитель обуви в маркетплейсе Bringly или Беру. Став партнёром, магазин платит площадке комиссию с каждой продажи. Если продажи через маркетплейс есть и имеют тенденцию к росту и возврату клиентов, то можно подумать об инвестициях в собственное мобильное приложение.

Пионерами и лидерами в этой нише остаются Amazon, eBay, Alibaba и Ozon, где большинство из нас что-то покупали хотя бы раз в жизни, а в России, по данным сайта Shopolog, существует несколько десятков маркетплейсов.

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

Мобильное приложение или PWA


А нужно ли вообще делать приложение? Если у вас есть адаптивный сайт и веб-разработчик, то несколько манипуляций и вы получаете PWA (Progressive Web App). Это не просто сайт: он всё ещё открывается в мобильном браузере, но уже может работать офлайн, посылать push-уведомления, иметь доступ к некоторым аппаратным частям устройства и открываться с рабочего стола через клик на иконку. При этом места на устройстве он занимает меньше.

Понятие PWA появилось в 2015 году на фоне популяризации принципа mobile first. Принцип гласит, что, поскольку мобильный интернет-трафик сравнялся с десктопным (а впоследствии и обогнал его), то дизайнеры и разработчики теперь должны делать сайты в первую очередь для пользователей смартфонов, то есть быстрыми, удобными и полезными. По релевантным запросам такие сайты идут в мобильной поисковой выдаче выше конкурентов.

За эти годы появилось уже достаточно кейсов, подтверждающих, что PWA играют на руку бизнесу: пользователям нравится тот опыт, который они получили от приложения, и они продолжают им пользоваться, нести трафик и покупать товары. От скорости загрузки PWA-версий сайта выиграли Lancome, Tinder, Uber, Pinterest и другие известные продукты.

Установить на своё устройство PWA-приложение пользователь мог только тогда, когда он работал с мобильным сайтом, и их нельзя было найти в магазинах приложений. Но в феврале 2019 с выходом браузера Chrome 72 и появления функции Trusted Web Activity в его Android-версии возможность скачать PWA из стора получили как минимум пользователи ОС Android.

Экономия на поддержке


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

Заключить договор о поддержке это уже само по себе экономия, но есть несколько способов сократить расходы и на неё:

  1. Сократите количество часов. За несколько месяцев работы продукта может выясниться, что вам будет много даже половины купленного на поддержку времени.
  2. Откажитесь от поддержки по SLA. В этом случае ваши задачи лишаются разделения по критичности, и насколько бы проблема ни была серьёзной, её никто не будет решать в срочном порядке в нерабочее время. Осторожно предположим: если у вас не DATA-центр, то вряд ли вам нужна незамедлительная реакция отдела поддержки.
  3. Сделайте легкоподдерживаемый продукт. Не пренебрегайте документацией, code review, подготовкой автотестов, проработкой архитектуры, рефакторингом вложенные в них средства оправдают себя позже. Хорошо задокументированный проект позволит разобраться в нём даже тому разработчику, который видит проект впервые.

image

Модели оплаты


Если вы создаёте приложение совместно со студией, то в зависимости от целей проекта работа и оплата ведутся по одной из двух моделей:

  • Fixed price. Модель предполагает, что за утверждённый бюджет в утверждённые сроки студия создаст то, что оговорено в техническом задании.
  • Time & Materials. Модель предполагает, что клиент платит постфактум за те человекочасы, которые команда потратила на решение отдельных задач.

Кажется, что FP выгоднее: ведь исполнитель назвал цену на берегу, а по T&M стоимость может оказаться непрогнозируемо больше. Так и есть, когда стоит цель сделать проект к конкретной дате или когда проект небольшой и не предполагает доработок. Но в случае с проектами посложнее исполнитель закладывает в оценку по FP максимум рисков, которые заказчик вынужден оплатить, даже если они не проявились. Так что с работой по T&M стоимость может стать непрогнозируемо меньше. Но всё же существуют оптимальные условия для такой модели:

Предстоит работать над стартапом среднего или большого размера


Рынок, на котором стартап хочет занять место, может быстро измениться, а вместе с ним поменяются и требования к продукту. Но при работе по FP клиент уже описал в техническом задании функциональность, которую исполнитель сделает при любых обстоятельствах даже если функциональность больше не нужна. Мало того, что он её описал, так он за неё ещё и заплатил. И если результат оказался не пригоден для рынка, придётся платить за доработку или замораживать проект. Модель Time & Materials даёт возможность быстро пересматривать и кардинально менять приоритеты.

У клиента есть время на регулярную коммуникацию с командой


Fixed Price освобождает клиента от необходимости отслеживать течение проекта: студия получает деньги и называет сроки, а клиент в это время занимается своими делами и ждёт результата. При работе по Time & Materials клиент это соучастник, напрямую влияющий на проект. Кстати, это самое соучастие и экономит бюджет, потому что требования к продукту не составляются в функциональное задание, а уточняются напрямую, и можно быстро обсудить возможные решения, их плюсы и минусы, а потом выбрать самый короткий путь реализации. На Fixed Price же студия должна заложить время на отработку рисков в оценку и нести за них ответственность сама. Под рисками мы имеем в виду неверно истолкованные части ФЗ, что вызывает неожиданный, мягко говоря, результат, недовольство клиента и переделки.

Нет чётких дедлайнов


Амбициозный проект трудно создавать в рамках строгих сроков и функциональности. Строгость черта модели Fixed Price. Но если риски вылезают наружу, то разработчик приходит к клиенту и говорит, что задача оказалась сложнее, чем предполагалось, и придётся упрощать разработку, чтобы уложиться в сроки. Модель Time & Materials позволяет избежать связанной с этим неловкости: оплата по факту выполнения задачи даёт возможность обсуждать её столько, сколько нужно, и работать без нервов.

Блок для тех, у кого мало времени: как сделать приложение и не попасть в долговую яму кратко


  1. Начинайте с MVP-версии. Она поможет вам оценить востребованность приложения у целевой аудитории минимум киллер-фич, только лаконичный дизайн и полезная функциональность.
  2. Не жалейте времени и денег на бизнес-аналитику. Этот этап поможет вам выбрать правильную стратегию для развития приложения, отметёт нежизнеспособные идеи и сэкономит ваши деньги в долгосрочной перспективе (особенно на этапе поддержки).
  3. Сделайте как можно меньше дизайна. В помощь гайдлайны от Google и Apple и UI-киты.
  4. Если в приложение закладывается простая функциональность сделайте его кроссплатформенным. Разработку сложных приложений можно начинать с одной платформы iOS или Android. Когда показатели конверсии оправдают себя, то смело принимайтесь за вторую.
  5. Храните данные на стороне клиента, не прибегая к бэкенду или используйте бессерверную архитектуру.
  6. Работайте с данными через интеграции с бесплатными инструментами (например, от Google) вместо таблиц и хитрых кастомных форм.
  7. Вместо разработки типовых функций с нуля используйте SaaS-сервисы и библиотеки.
  8. Выбирайте разработчика, который будет заинтересован в жизнеспособности вашего проекта. Не ориентируйтесь на столичные студии разработки, а найти хорошего исполнителя помогут рейтинги.
  9. Если бюджет совсем маленький, используйте конструктор приложений приложение, разработанное на конструкторе, поможет вам прощупать почву в мобильной среде и понять, нужно ли начинать полноценную разработку.
  10. Не начинайте с eCommerce-приложения станьте партнером маркетплейса, если хотите сначала протестировать спрос на ваши товары.
  11. Если у вас уже есть сайт и свободный веб-разработчик, создайте PWA вместо приложения. PWA-сайт построен на технологиях, которые позволяют ему работать как мобильное приложение: быть нативным, присылать пуши, быстро отвечать на запросы пользователя.
  12. Сократите расходы на поддержку приложения: не покупайте много часов заранее, откажитесь от поддержки по SLA, создайте понятную документацию, в которой разработчики смогут быстро и легко ориентироваться.
  13. Выбирайте работу по схеме Time & Materials, чтобы минимизировать расходы на риски.

Поделитесь своим опытом снижения цены мобильной разработки


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

Перевод Как локализовать онлайн-магазин? 13 шагов на пути к идеальному e-commerce сайту

28.10.2020 12:04:04 | Автор: admin
Изображение создано компанией AlconostИзображение создано компанией Alconost

Сегодня рынок электронной коммерции растт с беспрецедентной скоростью. В 2019 году объм продаж в сфере e-commerce во всм мире составил 3,53 триллиона долларов США. А уже к 2022 году эта цифра может увеличиться до 6,54 триллионов долларов США.

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

Такой стремительный переход мира к онлайн-продажам означает ещё больше возможностей для выхода компаний на международные рынки. Ведь в Интернете не существует географических границ. Это позволяет развивать бизнес быстрее и легче.

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

Что такое локализация контента?

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

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

Можно выделить три уровня: простой перевод, локализация и адаптация контента под местные культурные особенности. Последний термин адаптация контента под местную культуру это самый сложный способ подстройки, в то время как перевод это самый лёгкий способ.

В общем, говоря о локализации для e-commerce бизнеса, мы имеем в виду адаптацию контента. Именно максимальная проработка контента поможет сделать интернет-магазин понятным и релевантным на зарубежных рынках.

Почему онлайн-магазинам нужна локализация?

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

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

У локализованных веб-сайтов больше шансов привлечь внимание зарубежных покупателей. Потому что понятные местной аудитории сайты улучшают опыт взаимодействия пользователя.

А ещё локализация поможет избежать парочки неловких ситуаций. Один из популярных казусов в локализации произошл со скандинавским производителем пылесосов Electrolux. Компания использовала вот такой слоган на американском рынке: Nothing Sucks like an Electrolux. В переводе это должно было звучать как Ничто не всасывает пыль лучше, чем Electrolux. Но в итоге буквальный перевод фразы на английский означает Нет ничего хуже, чем Electrolux, причём в достаточно грубой форме.

Как сделать качественную локализацию онлайн-магазина

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

1. Проведите маркетинговое исследование рынка

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

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

2. Выберите контент, который стоит локализовать

Скорее всего, вам не нужно будет локализовывать весь контент вашего онлайн-магазина, потому что вряд ли вы будете продавать все свои товары на новом рынке (особенно сначала).

Кроме того, для начала можно локализовать примерно 10% контента основные разделы и страницы. Это поможет в целом понять, работает локализованный контент или нет. И когда вы увидите, что у зарубежной аудитории есть интерес, можно приступить к локализации всего контента онлайн-магазина.

3. Без SEO-оптимизации не обойтись

Профессиональная SEO-оптимизация поможет увеличить вовлеченность, трафик и конверсии на локализованном сайте.

Для начала необходимо подобрать ключевые слова, которые часто используются в новом регионе и по которым вы хотите, чтобы вас находили. Вы можете это сделать с Планировщиком ключевых слов от Google, о котором мы говорили раньше.

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

И нужно будет не только подобрать релевантные "ключи", но и внести их на сайт, обновить все URL-адреса согласно региону, изменить заголовки и подзаголовки, а также обновить все метатеги.

4. Думайте креативно, но не забывайте о местной культуре

А ещё надо подумать о рекламных кампаниях для нового рынка. Конечно, сайт придётся продвигать, иначе как о вас узнает новая аудитория? Очень важно, чтобы реклама была максимально нативной, чтобы привлечь как можно больше людей и сконвертировать их в реальных покупателей.

Согласно исследованию локализованная реклама работает намного лучше, чем реклама на иностранном языке. Результаты сравнения двух таких кампаний на Facebook впечатляют: у объявлений, в которых использовался локализованный текст, CTR (click-through rate, показатель кликабельности) выше на 22% среди женщин и на 87% среди мужчин, чем в аналогичной нелокализованной рекламе.

Изображение с сайта adparlor.comИзображение с сайта adparlor.com

5. Проверьте культурный контекст

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

Чрная пятница и Киберпонедельник стали чуть ли не самыми важными днями для e-commerce в США, Великобритании и даже России. Но, например, в Китае существует своя версия этого дня День холостяков, который празднуют 11 ноября. Интересно, что кроме китайского бизнеса в этот день скидки активно предоставляют и многие западные компании, которые работают в китайском сегменте. Так что если вы выходите на иностранный рынок, не забудьте адаптировать и промо-акции.

А ешё, к примеру, если вы продаёте товары и в России, и в США, стоит учитывать, что Рождество в России не такой популярный праздник, как в Америке. В российских реалиях Новый Год важнее. Поэтому локализуйте контент с учётом этих особенностей: в США вы можете устроить распродажу на Рождество, а в России будет логичнее предложить новогодние скидки.

6. Валюта, единицы измерения и размеры одежды

Для онлайн-магазинов цены это первое, о чм следует подумать при локализации. Очевидно, что пользователям привычнее и удобнее видеть цены в своей местной валюте. Либо можно указать две цены: в оригинальной и местной валютах.

При локализации валют используйте соответствующие символы для обозначения валюты. А ещё обратите внимание на то, что некоторые символы валюты указываются перед ценой, например $ и , а некоторые после, например . Для обозначения десятичных знаков используются разные разделители: в одних регионах это запятые, а в других точки.

Не забудьте локализовать единицы измерения. К примеру, в Европе и США температура обозначается по-разному C и F соответственно.

Если вы продаете одежду, подумайте о локализации размеров, указанных на сайте. Европейские размеры обуви обычно выглядят так: 34, 35, 36 и т.д. А в США размерный ряд начинается с 5,6, 7, 8 и т.д.

7. Локализованная корзина покупок

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

Так что корзину покупок нужно адаптировать под местный рынок и сделать её удобной и понятной для пользователей в новом регионе. И не забудьте переключить корзину на местную валюту и добавить популярные способы оплаты.

8. Проверка терминов

Не секрет, что даже у одного языка может быть множество диалектов. Возьмём, к примеру, английский язык. Британский и американский английский значительно отличаются между собой.

Например, elevator и lift означают одно и то же лифт, но первое слово используется в американском варианте, а второе в британском. То же самое можно сказать о словах vacationи holiday. На такие детали стоит обращать внимание, чтобы звучать по-настоящему аутентично на зарубежном рынке.

Очевидно, что если терминология отличается даже в одном и том же языке, она будет отличаться и в двух совсем разных языках.

9. Формат времени и даты

Это важно, потому что неправильный формат может ввести в заблуждение зарубежных клиентов. Предположим, вы продаёте из России в США. Покупатель в Америке указывает дату 02.03.2020. Для вас, в России, это означает 2 марта. В США это же значит 3 февраля. Наверное, покупатель будет разочарован, получив свой заказ на месяц позже... Поэтому не забудьте поменять форматы даты под разные рынки.

В большинстве стран в формате даты день стоит первым, а год последним ДД/ММ/ГГГГ. Однако в некоторых странах, таких как Китай, Корея и Иран, используются такой формат даты: ГГГГ/ММ/ДД. Формат времени может быть 24-часовым или 12-часовым. В США обычно используется формат AM/PM, а в Европе более распространён 24-часовой формат.

10. Правовые нормы и законы

Для юридической защиты своего бизнеса в Интернете, нужно знать и соблюдать правовые нормы региона, в котором вы собираетесь работать.

Убедитесь, что ваши товары абсолютно легальны на данном рынке. К примеру, однажды, не проверив все юридические моменты, Kinder Surprise хотели выйти на рынок США. И вдруг они обнаружили, что шоколадные яйца с игрушками внутри являются незаконными там, хотя соседние Канада и Мексика разрешают их продажу на своей территории. Наверное, никто не хотел бы оказаться в ситуации, когда вы потратили много денег на запуск продукта и вдруг понимаете, что вы вообще не имеете права продавать его в данном регионе.

Локализуя свой интернет-магазин, не забудьте о "Политике конфиденциальности" и "Условиях использования", которые обязательно должны быть на сайте любой компании. Если вы не уверены, что нужно включить в эти документы для нового региона, то лучше проконсультируйтесь с юристом, чтобы не получить потом штраф или вообще запрет на работу в стране.

11. Региональная служба поддержки

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

Кстати, хорошая идея сделать раздел F.A.Q. на сайте наиболее часто задаваемые вопросы (frequently asked questions). Можно разместить заготовленные ответы на самые распространённые вопросы, и пользователи сами найдут эту информацию, когда она понадобится. Это частично позволит сократить затраты на команду поддержки в новом регионе.

12. Изображения, соответствующие местной культуре

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

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

Изображение взято с сайта www.gilt.comИзображение взято с сайта www.gilt.com

13. Локализованные соцсети

Без социальных сетей сегодня не может существовать ни один бизнес.

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

Локализованные социальные сети дадут местной аудитории более персонализированный опыт взаимодействия с вашим брендом. Посмотрите, как, например, у McDonald's выглядят разные аккаунты в Instagram для разных стран.

Аккаунт McDonalds в Канаде в InstagramАккаунт McDonalds в Канаде в InstagramАккаунт McDonalds в России в InstagramАккаунт McDonalds в России в Instagram

Полезные советы по локализации интернет-магазинов

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

Непрерывная локализация

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

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

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

Локализационное тестирование

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

Подытоживая, настоятельно рекомендуем обратить внимание на следующие нюансы локализации контента:

  • Целевая аудитория и исследование рынка

  • Культурный контекст

  • Правовые нормы и законы

  • Маркетинг в популярных социальных сетях

  • Правильный перевод всех описаний

  • Правильные форматы времени, даты, валюты, размеров одежды и т.д.

  • Локализация корзины покурок

  • Региональная служба поддержки

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

О нас

Alconost профессионально занимается локализацией приложений, игр и сайтов на более 70 языков. Лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджмент проектов 24/7, любые форматы строковых ресурсов. Мы также делаем видеоролики.

Подробнее..

Кто вы, мистер архитектор?

28.05.2021 12:18:53 | Автор: admin

Привет, меня зовут Алексей, я системный архитектор e-commerce платформы Lamoda, и в этом посте мое представление о том, чем на самом деле занимается ИТ-архитектор, какие вопросы решает в ежедневной работе и за что несет ответственность.

Сцена из фильма "Начало"Сцена из фильма "Начало"

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

Чем мы вообще тут занимаемся?

Этот риторический вопрос я иногда задаю своей команде, выдергивая их из привычного потока мыслей и рутинных задач. А занимаемся мы перекладыванием JSON-ов, вот чем! сам же и отвечаю. Выражения лиц меняются с задумчивых на изумленные. Этой провокацией я делаю акцент на том, что происходит в программах, если убрать удобные абстракции привычных фреймворков и библиотек. Именно передача и координация являются нетривиальными задачами, хотя часто разработчики видят сложность совсем в других местах.

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

JSON-ы принято обрабатывать: сериализовывать для передачи по сети и десериализовывать в модели для удобства обработки. Модели принято хранить в структурах данных в памяти и на диске для оптимизации операций записи и чтения. Все становится интереснее, когда мы хотим обрабатывать одновременно не один, а два JSON-а. Тут придется озаботиться, чтобы они друг другу не мешали и не нарушали задуманный порядок вещей. Задача перекладывания JSON-ов не является тривиальной, но должна оставаться простой.

Что важнее: доступность или согласованность

Опытные инженеры, среди которых есть и архитекторы, ежедневно работают для того, чтобы круглосуточно на отправленный запрос в нашу систему выдавался верный JSON за приемлемое время. Например, создание заказа. Для e-commerce это критичное место: нужно провалидировать соответствие всех условий, корректно зарезервировать товары и оповестить все заинтересованные стороны о новом успешном заказе. Все это должно происходить за доли секунды и отвечать ожиданиям кастомера.

Между кликом и созданием заказа проходит меньше секунды. Клиент получает уведомление, что всё прошло успешно. И менее, чем через минуту, заказ уже собирается в фулфилмент центре Lamoda.Между кликом и созданием заказа проходит меньше секунды. Клиент получает уведомление, что всё прошло успешно. И менее, чем через минуту, заказ уже собирается в фулфилмент центре Lamoda.

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

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

Еще один пример. В Lamoda, как и в любой крупной e-commerce компании, существует большая система обработки заказов. За более чем 10 лет домен нашей системы вырос и многократно усложнился, как и ее ответственность за все ту же согласованность и доступность. Сама система и ее сложность появилась не просто так и не была результатом проектирования архитектора-маньяка. Ее создали люди, которые приняли сотни решений, а эти решения привели к тем результатам, которые мы видим сейчас. Нужно отдать должное этим людям, так как система выполняет возложенные на нее требования. Проблема только в одном вносить изменения стало крайне проблематично. И решение этой проблемы нельзя назвать тривиальным, но оно должно быть простым. Как и в задаче с обработкой JSON-ов.

Какую задачу решает архитектор

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

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

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

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

Как развивалось понимание архитектуры и обязанностей архитектора

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

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

Примерно в 2010 году, отчасти из-за стремления фокусироваться на ценностях бизнеса, к что и как добавляется для чего. Цель архитектуры улучшить контроль над рисками и стоимостью, поэтому архитектор отвечает за это не только на стадии проектирования, но в процессе реализации своего решения.

Но есть условие, без которого архитектор не может выполнять свои обязанности правильно это понимание контекста, т.е. знание заинтересованных сторон, их потребностей и окружения, в котором нужно реализовать решение.

За что отвечает современный архитектор

Таким образом, обязанности архитектора заключаются в том, чтобы:

  • понимать контекст;

  • принимать решения;

  • создавать модели;

  • валидировать дизайн;

  • реализовывать и поставлять решения.

При этом одни пункты из этого списка влияют на выполнение других. Например:

  • моделирование и принятие решений без понимания контекста приводит к построению неадекватных моделей;

  • моделирование фактически подразумевает принятие решений (о декомпозиции, взаимосвязях);

  • без моделирования и решений нечего валидировать;

  • реализация и поставка не валидированных решений приводит к проблемам.

Т.е. самого по себе выполнения описанных обязанностей недостаточно. Они должны выполняться согласованно между собой.

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

Один из ярких примеров The Waterfall Wasteland, когда архитектурная команда занимается дизайном в отрыве от проектной и не вовлекается в ежедневные активности, в результате чего растет время между проектированием и доставкой в продакшен. Совместная работа с проектной командой дает важную обратную связь, без которой легко оказаться в Башне из слоновой кости (The Ivory Tower Architect).

С другой стороны, есть пример The Agile Outback, когда в страхе перед Ivory Tower проектирование считается излишней практикой или даже контрпродуктивной. Вместо этого команда получает фидбэк от реализованных ошибок. Такой подход может быть выгодным в начале, но вскоре приводит к серьезным затруднениям.

Как я решаю свою задачу через призму этих обязанностей

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

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

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

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

Я большой фанат подходов Domain Driven Design и того, как они развиваются последние несколько лет (DDD Europe, etc). В частности bounded contexts, поскольку именно они помогают определить транзакционные границы сервиса и то, как лучше настроить оркестрацию взаимодействий. Чтобы избежать единой точки отказа, оркестраторы у нас являются частью сервиса и контекста соответственно. Т.е. исполнением саги занимается исключительно ответственный за это сервис внутри контекста, а не отдельный инфраструктурный сервис, который исполняет саги по запросу.

a) исполнение саги локальным оркестратором; b) использование отдельного сервиса оркестратора для исполнения саги; с) вариант хореографии событий;a) исполнение саги локальным оркестратором; b) использование отдельного сервиса оркестратора для исполнения саги; с) вариант хореографии событий;

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

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

Как формируем команды

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

Исходя из этого мы формируем команды, которые должны:

  • погрузиться в контекст;

  • иметь экспертизу в легаси-стеке;

  • иметь возможность адаптироваться к новому стеку;

  • принять необходимые технологии и практики;

  • получить экспертизу в домене;

  • принимать решения самостоятельно.

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

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

Выстраиваем взаимодействия через единый нарратив

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

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

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

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

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


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

Что еще почитать

Подробнее..

Что помогло нам быстро перестроиться на онлайн-торговлю в новых условиях

16.09.2020 16:23:32 | Автор: admin

Привет!

Меня зовут Михаил, я заместитель директора по ИТ в компании Спортмастер. Я хочу поделиться историей о том, как мы справились с трудностями, возникшими во время пандемии.

В первые дни новых реалий привычный формат офлайн-торговли Спортмастера замер, и нагрузка на наш онлайн-канал, в первую очередь в части доставки на адрес клиенту, возросла в 10 раз. За несколько недель мы трансформировали гигантский по объему офлайн-бизнес в онлайн, адаптировали сервис под потребности наших клиентов.

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

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

В процессе трансформации у нас возникли две основные проблемы. Во-первых, ощутимо возросла нагрузка на наши онлайн-ресурсы (как мы боролись с этим, расскажет Сергей). Во-вторых, поток редких (до COVID) операций многократно возрос, что в свою очередь потребовало большого объема быстрой автоматизации. Чтобы решить эту проблему, нам пришлось оперативно перебросить ресурсы с направлений, которые были раньше основными. Как мы справились с этим расскажет Елена.

Эксплуатация онлайн-сервисов

Колесников Сергей, отвечает за эксплуатацию интернет-магазина и микросервисов

С того момента, как наши розничные магазины начали закрываться для посетителей, мы начали фиксировать рост таких метрик, как количество пользователей, количество заказов, оформляемых в нашем приложении, количество реквестов к приложениям.

Количество заказов с 18 по 31 мартаКоличество заказов с 18 по 31 мартаКоличество запросов к микросервисам онлайн-оплатыКоличество запросов к микросервисам онлайн-оплатыКоличество оформленных на сайте заказовКоличество оформленных на сайте заказов

На первом графике мы видим, что прирост составил примерно 14 раз, на втором 4 раза. Наиболее показательной при этом мы считаем метрику времени ответа наших приложений.

На этом графике мы видим ответ фронтов и приложений, и для себя мы определили, что как такового роста мы не заметили.

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

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

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

В какой-то момент мы подумали и решили, что хватит это терпеть нам нужна единая система, чтобы видеть всю картину полностью. Основные технологии, которые входят в наш стек, это Zabbix как центр алертинга и хранения метрик, Prometheus для сбора и хранения метрик приложений, Stack ELK для логирования и хранения данных всей системы мониторинга, а также Grafana для визуализации, Swagger, Docker и другие полезные и знакомые вам штуки.

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

А ещё мы стараемся делать систему мониторинга доступной для команд, чтобы они могли самостоятельно хранить свои метрики и работать с ними, в том числе настраивать алертинг в каких-то узких метриках, имеющих значение не самое широкое применение.

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

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

Технические испытания

Орлов Сергей, руководит центром компетенции веб- и мобильной разработки

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

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

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

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

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

Второй аспект это тестирование. Мы очень серьезно относимся к этому моменту: пишем и классические юниты, интеграционные, нагрузочные тесты и многие другие для каждой системы. Ещё мы пишем стратегию тестирования, и при этом стараемся довести уровень тестирования до того, чтобы ручные проверки нам больше не были нужны.

Третий кит это CI/CD Pipeline. Процессы сборки, тестирования, развертывания приложения должны быть максимально автоматизированы, здесь не должно быть ручных вмешательств. Тема CI/CD Pipeline достаточно глубока, и я затрону ее только вскользь. Стоит упомянуть только, что у нас есть чеклист CI/CD Pipeline, по которому с помощью центров компетенции проходит каждая продуктовая команда.

А вот и чеклистА вот и чеклист

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

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

Во-первых, надо выбирать специализированные инструменты под конкретные задачи. Да, звучит очевидно, и понятно, что гвозди забивать стоит молотком, а наручные часы разбирать специальными отвертками. Но в наш век многие инструменты стремятся к универсализации, чтобы охватить максимальный сегмент пользователей: базы данных, кеши, фреймворки и остальное. Вот, например, если взять базу данных MongoDB, она работает с мультидокументарными транзакциями, а база данных Oracle работает с json-ми. И казалось бы, что все можно использовать для всего. Но если мы ратуем за производительность, то нам нужно четко понимать сильные и слабые стороны каждого инструмента и использовать нужные нам для нашего класса задач.

Во-вторых, при проектировании систем каждое повышение сложности должно быть обоснованным. Мы должны постоянно держать это в голове, принцип low coupling всем известен. Я считаю, что его нужно применять и на уровне конкретного сервиса, и на уровне всей системы, и на уровне архитектурного ландшафта. Также важна способность к горизонтальному масштабированию каждого компонента системы на пути нагрузки. Если обладать этой способностью, масштабирование не составит никакого труда.

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

Кеши

Необходимо осознанно подходить к выбору локальных и распределенных кешей. Иногда имеет смысл использовать и те, и другие в рамках одной системы, Например, у нас есть системы, в которых часть данных по сути является витринным кешем, то есть источник обновлений находится за самой системой, и системы эти данные не меняют. Для такого подхода мы используем локальный Caffeine Cache.

А есть данные, которые система активно изменяет в процессе работы, и тут мы уже применяем распределенный кеш с Hazelcast. Такой подход позволяет нам использовать преимущества распределенного кеша там, где они действительно нужны, и минимизировать сервисные расходы по циркуляции данных кластера Hazelcast там, где мы можем без этого обойтись. Про кеши мы много писали здесь и здесь.

Кроме того, смена сериализатора на Kryo в Hazelcast дала нам неплохой прирост. А переход от ReplicatedMap к IMap + Near Cache в Hazelcast позволил нам минимизировать движение данных по кластеру.

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

Реактивный стек

Мы используем реактивный стек в уже достаточно большом количестве систем. В нашем случае это Webflux или Kotlin с корутинами. Особенно хорошо реактивный стек заходит там, где мы ожидаем медленные input-output операции. Например, вызовы медленных сервисов, работа с файловой системой либо системами хранения.

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

Старайтесь обращать ошибки в собственные runtime exception. Реальный поток выполнения программы отходит к реактивным фреймворкам, выполнение кода становится нелинейным. Как следствие, очень сложно диагностировать проблемы по стек-трейсам. И решением здесь будет создание понятных объективных runtime exception-ов на каждую ошибку.

Elasticsearch

При использовании Elasticsearch не выбирать неиспользуемые данные. Это, в принципе, тоже очень простой совет, но чаще всего именно про это забывают. Если надо за раз выбрать больше 10 тысяч записей, нужно использовать Scroll. Если проводить аналогию, это немного похоже на курсор в реляционной базе данных.

Не используйте postfilter без необходимости. При больших данных в основной выборке эта операция очень сильно грузит базу данных.

Используйте bulk-операции там, где это применимо.

API

При проектировании API закладывайте требования к минимизации передаваемых данных. Особенно это актуально на связке с фронтом: именно на этом стыке мы выходим за каналы наших ЦОДов и уже работаем на канале, связывающего нас с клиентом. Если на нем есть малейшие проблемы, слишком высокий трафик вызывает негативный user experience.

И, наконец, не вываливайте всю кипу данных, четко подходите к контракту между потребителями и поставщиками.

Организационная трансформация

Ерошкина Елена, заместитель директора по ИТ

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

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

По счастливой случайности основная часть таких продуктовых команд у нас как раз находилась в области онлайн и омниканальных сервисов. Это позволило нам в кратчайшие сроки (серьезно, буквально за два дня) перейти в режим удалённой работы без потери эффективности. Настроенный процесс позволил быстро адаптироваться к новым условиям работы и выдержать достаточно высокий темп поставки новой функциональности.

Кроме того, у нас возникла необходимость усилить те команды, которые находятся на фронтире онлайн-бизнеса. В тот момент стало понятно, что мы можем это сделать только за счет внутренних ресурсов. И порядка 50 человек за две недели сменили область, где они работали до этого, и встроились в работу над новым для них продуктом.

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

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

Ясное дело, что при удалённой работе и высоком темпе изменений, когда от участия каждого зависят бизнес-показатели, нельзя полагаться только на внутренние ощущения из серии А всё ли у нас идёт хорошо? Да вроде неплохо. Необходимы объективные метрики производственного процесса. Такие у нас есть, они доступны каждому, кто интересуется метриками продуктовых команд. Прежде всего самой команде, бизнесу, смежникам и руководству.

Раз в две недели с каждой командой проводится статус, где в течение 10 минут анализируются метрики, выявляются узкие места производственного процесса и вырабатывается совместное решение: что можно сделать для того, чтобы эти узкие места устранить. Здесь же можно сразу попросить помощи у руководства в случае, если какая-то выявленная проблема находится вне зоны влияния команд, или экспертизы коллег, которые, возможно, уже сталкивались с похожей проблемой.

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

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

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

Выводы

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

Люди. Это то, на чем всё и держится. Сотрудники должны получать удовольствие от работы, понимать цели компании и цели продуктов, которыми они занимаются. И, конечно же, могли профессионально развиваться.

Технология. Необходимо, чтобы компания зрело подходила к работе со своим технологическим стеком и наращивала компетенции там, где это действительно необходимо. Звучит очень просто и очевидно. И очень часто игнорируется.

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


В общем, примерно так и выжили. Основной тезис современности подтвердился ещё раз, звонко щелкнув по лбу

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

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

Подробнее..

Применение предобученной модели VGG16 для рекомендаций на основе изображений товаров

04.03.2021 02:16:58 | Автор: admin

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


Отдельно хочу сказать, что это мой первый опыт создания более-менее серьезного проекта в сфере Data Science, поэтому если кто-то из более опытных коллег увидит, что еще можно улучшить, то буду только рад за советы.

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

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

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

А теперь перейдем непосредственно к поиску похожих товаров.

Для данного магазина я сделал два варианта поиска схожих товаров (опять же, классика A/B-тестирования) - рекомендации просто по схожим характеристикам; рекомендации, которые включали в себя первым слоем схожесть изображения, а вторым - схожесть характеристик.

С поиском схожих просто по характеристикам дело ясное. Перейдем к поиску схожих по изображениям.

Для начала подгружаем необходимые библиотеки:

!pip install theano%matplotlib inlinefrom keras.models import Sequentialfrom keras.layers.core import Flatten, Dense, Dropoutfrom keras.layers.convolutional import Convolution2D, MaxPooling2D, ZeroPadding2Dfrom keras.optimizers import SGDimport cv2, numpy as npimport osimport h5pyfrom matplotlib import pyplot as pltfrom keras.applications import vgg16from keras.applications import Xceptionfrom keras.preprocessing.image import load_img,img_to_arrayfrom keras.models import Modelfrom keras.applications.imagenet_utils import preprocess_inputfrom PIL import Imageimport osimport matplotlib.pyplot as pltimport numpy as npfrom sklearn.metrics.pairwise import cosine_similarityimport pandas as pdimport theanotheano.config.openmp = True

Дальше мне необходимо отсортировать изображения (так как они у меня названы исходя из индексов товаров в датафрейме, то я их отсортирую по алфавиту):

import redef sorted_alphanumeric(data):    convert = lambda text: int(text) if text.isdigit() else text.lower()    alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ]     return sorted(data, key=alphanum_key)dirlist = sorted_alphanumeric(os.listdir('images'))r1 = []r2 = []for i,x in enumerate(dirlist):    if x.endswith(".jpg"):        r1.append((int(x[:-4]),i))        r2.append((i,int(x[:-4])))extid_to_intid_dict = dict(r1)intid_to_extid_dict = dict(r2)

Задаем некоторые параметры:

imgs_path = "images/"imgs_model_width, imgs_model_height = 224, 224nb_closest_images = 3 # количество ближайших изображений (для тестирования вывода)

Загружаем саму модель (уже предобученную):

vgg_model = vgg16.VGG16(weights='imagenet')

Удаляем последний слой (следний слой даюет на выходе вероятности каждого из 1000 классов ImageNet - нам это не нужно в данном случае. Нам нужен просто 4096-мерный вектор для каждого из изображений, по которым мы потом будем искать с помощью простой косинусной метрикой).

Как найти имя слоя это отдельный анекдот, поэтому я смотрел в исходники модели.

Итак:

feat_extractor = Model(inputs=vgg_model.input, outputs=vgg_model.get_layer("fc2").output)

Если кому интересно, можно вывести на экран список слоев CNN и посмотреть. Но в целом это никак не относится к коду, который ищет схожие изображения:

feat_extractor.summary()

Далее я иду в каталог заранее подготовленных изображений товаров (то есть, я беру xml каталога интернет-магазина, прохожусь по урлам, которые нашел для товаров, и скачиваю их в папку; ниже покажу код, который делает эту работу):

files = [imgs_path + x for x in os.listdir(imgs_path) if "jpg" in x]print("number of images:",len(files))

Дальше мне необходимо отсортировать изображения по названиям для более аккуратной работы с ними в последующем:

import redef atof(text):    try:        retval = float(text)    except ValueError:        retval = text    return retvaldef natural_keys(text):    '''    alist.sort(key=natural_keys) sorts in human order    http://nedbatchelder.com/blog/200712/human_sorting.html    (See Toothy's implementation in the comments)    float regex comes from https://stackoverflow.com/a/12643073/190597    '''    return [ atof(c) for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text) ]files.sort(key=natural_keys)

Далее загружаю изображения в специальный PIL формат:

original = load_img(files[1], target_size=(imgs_model_width, imgs_model_height))plt.imshow(original)plt.show()print("image loaded successfully!")

Конвертирую PIL изображения в numpy array:
в PIL формат данных - width, height, channel
в Numpy - height, width, channel

numpy_image = img_to_array(original) # сырое изображения в вектор

Конвертирую изображения в batch format.
expand_dims добавит дополнительное измерение к данным на определенной оси

Мы хотим, чтобы входная матрица в сеть имела следующий формат - batchsize, height, width, channels. Таким образом, мы добавляем дополнительное измерение к оси 0.

image_batch = np.expand_dims(numpy_image, axis=0) # превращаем в вектор-строку (2-dims)print('image batch size', image_batch.shape)

Подготавливаем изображение для VGG:

processed_image = preprocess_input(image_batch.copy()) #  библиотечная подготовка изображения

Теперь нам необходимо получить как бы особенности данного вектора (вытащить признаки):

img_features = feat_extractor.predict(processed_image)

То есть это будет векторочек признаков для данного изображения:

print("features successfully extracted!")print("number of image features:",img_features.size)img_features

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

importedImages = []for f in files:    filename = f    original = load_img(filename, target_size=(224, 224))    numpy_image = img_to_array(original)    image_batch = np.expand_dims(numpy_image, axis=0)        importedImages.append(image_batch)    images = np.vstack(importedImages)processed_imgs = preprocess_input(images.copy())

Вытащим все особенности изображения:

imgs_features = feat_extractor.predict(processed_imgs)print("features successfully extracted!")imgs_features.shape

Ну и дальше посчитаем уже косинусную схожесть между изображениями:

cosSimilarities = cosine_similarity(imgs_features)

Сохраним результат в pandas dataframe:

columns_name = re.findall(r'[0-9]+', str(files))cos_similarities_df = pd.DataFrame(cosSimilarities, columns=files, index=files)cos_similarities_df.head()

Дальше получилась такая ситуация. В каталоге товаров данного магазина около 6000 SKU. После всех манипуляций выше получилась матрица размером 6000 * 6000. В каждом пересечении строк и столбцов находилось число формата float от 0 до 1 с 8 знаками после нуля, которое показывало схожесть. Когда я пробовал сохранить эту матрицу как есть в файл для дальнейшего применения в сервисе рекомендаций, то у меня получался файл весом около 430 мегабайт (хотя в оперативной памяти такая матрица занимала около 130 мегайбайт). Для меня это было не приемлемо. Хотя бы по той простой причине, что мне нужно было как-то выкладывать этот файл в GitHub, а дальше автоматома деплоить на сервер. GitHub не позволяет грузить файлы больше 100 мегайбат (или во всяком случае я не знаю как это делать). Да и в целом мне казалось, что это какой-то неприлично большой файл. Поэтому я начал думать :) И придумал вот что - мне по-большому счету не важно сколько знаков после запятой будет здесь - мне главное просто сравнивать цифры между собой. Поэтому я сделал следующее:

cos_similarities_df_2.round(2) # cos_similarities_df_2 - название датафрейма с косинусными метриками, которые сохранил выше

То есть, для начала я просто взял и отсек лишние цифры. Но формат колонки все равно оставался float. А в pandas float может быть минимально float16 - много.

Тогда я решил перевести эти значения в int:

cos_similarities_df_2.apply(lambda x: x * 100)cos_similarities_df_2.apply(lambda x: x.astype(np.uint8))

После этих манипуляций размер матрицы в оперативке уменьшился до 31 мегабайта. Это уже радовало.

Ну и дальше я сохранил этот файл в h5:

cos_similarities_df_2.to_hdf('storage/cos_similarities.h5', 'data')

В итоге получился файл весом 40 мегбайт. Это уже во-первых, удовлетворяло моим требованиям для хранения в GitHub, а во-вторых, в целом уже не так пугало своим размером :)

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

import re# function to retrieve the most similar products for a given onedef retrieve_most_similar_products(given_img):    print("-----------------------------------------------------------------------")    print("original product:")    original = load_img(given_img, target_size=(imgs_model_width, imgs_model_height))    original_img = int(re.findall(r'[0-9]+', given_img)[0])    print((df_items_2.iloc[[original_img]]['name'].iat[0], df_items_2.iloc[[original_img]]['pricer_uah'].iat[0], df_items_2.iloc[[original_img]]['url'].iat[0]))       plt.imshow(original)    plt.show()    print("-----------------------------------------------------------------------")    print("most similar products:")    closest_imgs = cos_similarities_df[given_img].sort_values(ascending=False)[1:nb_closest_images+1].index    closest_imgs_scores = cos_similarities_df[given_img].sort_values(ascending=False)[1:nb_closest_images+1]    for i in range(0,len(closest_imgs)):        original = load_img(closest_imgs[i], target_size=(imgs_model_width, imgs_model_height))        item = int(re.findall(r'[0-9]+', closest_imgs[i])[0])        print(item)        print((df_items_2.iloc[[item]]['name'].iat[0], df_items_2.iloc[[item]]['pricer_uah'].iat[0], df_items_2.iloc[[item]]['url'].iat[0]))        plt.imshow(original)        plt.show()        print("similarity score : ",closest_imgs_scores[i])kbr = '' # напишите сюда название товараfind_rec = int(df_items_2.index[df_items_2['name'] == kbr].tolist()[0]) # df_items_2 название моего базового датафрейма, куда я скачал каталог товаровprint(find_rec)retrieve_most_similar_products(files[find_rec])

Вот и все :)

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

А теперь еще покажу как я спарсил изображения, если это кому-то будет полезно:

Для начала создам необходимые мне директории, куда все буду складывать:

import osif not os.path.exists('storage'):    os.makedirs('storage')if not os.path.exists('images'):    os.makedirs('images')

Не буду показывать код, который делает подготовительну работу по созданию данных из xml магазина - это просто и не интересно.

А код, который забирает изображения, вот:

# importing required modulesimport urllib.requestimage_counter = 0error_list = []# Функция для загрузки изображения в нужную мне директориюdef image_from_df(row):    global image_counter        item_id = image_counter        filename = f'images/{item_id}.jpg'    image_url = f'{row.image}'    try:      conn = urllib.request.urlopen(image_url)           except urllib.error.HTTPError as e:      # Return code error (e.g. 404, 501, ...)      error_list.append(item_id)    except urllib.error.URLError as e:      # Not an HTTP-specific error (e.g. connection refused)            print('URLError: {}'.format(e.reason))    else:      # 200      urllib.request.urlretrieve(image_url, filename)      image_counter += 1

Теперь я беру мой сформированный датасет товаров из xml, и начинаю идти по каждой строчке и забирать изображения:

df_items_2.apply(lambda row: image_from_df(row), axis=1)

Попадаются товары, у которых нет изображений. Тогда я их просто удаляю из датафрейма и не буду для них делать рекомендации. Обратите на это внимание в своих работах. Я попался на эту тему, так как сначала мне отдавали xml с товарами, которые все имели изображения. А когда после очередного запуска скрипта он упал, то потратил пару часов, чтобы понять, что не все товары имеют изображения и пришлось уже писать как положено для тех случаев, когда не уверен в том, что данные прийдут как положено.

for i in error_list:  df_items_2.drop(df_items_2.index[i], inplace = True)  df_items_2.reset_index(drop=True, inplace = True) print(f'Удалил строки без изображений: {error_list}')print(len(error_list))

Собственно говоря, вот и все. Надеюсь, это кому-то будет полезно! )

А если нет, то не судите строго - хотел как лучше )

P.S. Кстати, недавно открыл для себя следующую вариацию VGG - VGG19. Судя по тестам, эта версия дает еще более лучшие предсказания.

P.S.S Отдельно хочу выразить большую благодарсть людям, без которого я бы не смог все это реализовать: это мой брат, Senior JavaScript Developer (помогал мне написать js для сайта и обходить CORS-политики); это Костя Дедищев, Senior Python Developer и Senior Engineer (помогал мне заворачивать все в Docker и настраивать CI/CD pipeline); это Екатерина Артюгина из SkillFactory, которая три месяца возилась со мной и с другими ребятами с рамках SkillFactory Accelerator (это курс я взял специально для того, чтобы создать свой первый реальный Data Science проект под присмотром более опытных ребят); это и Валентина Бабушкина (ментор, который помогал понять суть A/B-тестов и включить их в проект); это Валентин Малых (еще один ментор, который помогал с разумением NLP проблем и в частности работы опечаточников при создании чат-ботов (еще второй проект, над которым я работал в рамках акселлератора и о котором я может быть расскажу чуть позже); это Эмиль Маггерамов (ментор, который в целом курировал мое продвижение в акселлераторе по созданию данного проекта); это одногруппники Valery Kuryshev и Георгий Брегман (регулярно раз в неделю созванивались и делились полученным за неделю опытом).

Подробнее..

Сколько стоит создать и запустить дропшиппинг-магазин на Shopify в 2021 году

05.05.2021 16:05:29 | Автор: admin

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

Несмотря на привлекательность бизнес-модели, для старта необходимо иметь бюджет, который позволит качественно собрать и запустить интернет-магазин. Конкуренция в сфере растет, и вслед за ней увеличивается размер необходимого бюджета на полноценный запуск дропшиппинг-магазина. В данной статье мы рассмотрим все необходимые статьи расходов и ответим на вопрос: Сколько же стоит запустить свой магазин на Shopify в 2021 году?.

Что формирует итоговую стоимость магазина?

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

  • Доменное имя

  • Хостинг

  • Тема

  • Стоимость разработки сайта

  • Приложения и дополнительные сервисы

  • Маркетинг

  • Рекламный бюджет

  • Прием платежей

  • Запас на кассовый разрыв

  • Дополнительные / непредвиденные расходы

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

1. Доменное имя

Стоимость: $10 / год


У вас не может быть сайта без доменного имени. Это постоянный адрес вашего магазина, поэтому выбирать его нужно с умом. Стоимость доменного имени также будет варьироваться и зависеть от двух основных факторов:

  • Компания-регистратор доменных имен (рекомендуемnamecheap.com);

  • Доменная зона (.com наиболее предпочтителен, но и чаще всего обойдется дороже).

Стоимость домена варьируется в районе $8-15 у таких регистраторов, какGoDaddyилиNamecheap.

2. Хостинг

Стоимость: $29 / месяц


Домен и хостинг это базовые услуги, без которых невозможно создать ни один сайт. Если домен это онлайн-адрес сайта, то хостинг это пространство, на котором он живет. Чтобы создать сайт, нам необходимо воспользоваться хостингом.

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

В данной статье мы сфокусируемся на наиболее популярной на сегодняшний день платформе Shopify одном из лидеров рынка конструкторов интернет-магазинов. Стоимость хостинга наряду с другими функциями уже включена в тарифные планы Shopify. У вас есть три варианта на выбор:

Для начала рекомендуем остановиться на тарифе Basic за $29. Вы можете воспользоваться бесплатным14-дневным пробным периодом, чтобы протестировать все возможности Shopify.

3. Тема

Стоимость: $0-180


У платформы Shopify естьмагазинс большим количеством как бесплатных, так и платных тем. В случае, если вы только начинаете свой путь в электронной коммерции, для создания тестового магазина рекомендуем использовать бесплатные темы:

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

В магазине тем Shopify шаблоны в среднем стоят $180, что является значительным расходом в случае, если вы создаете свой первый магазин. В качестве альтернативной площадки можно рассмотреть каталог платных темthemeforest.net, где можно приобрести качественные адаптивные темы за $50-100.

4. Разработка сайта

Стоимость:$0-300 и до бесконечности:)

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

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

Если вы хотите сэкономить время, минимизировать риски возникновения серьезных ошибок в работе сайта, то команда Ecom Today поможет вам в создании и настройке магазина.

5. Приложения и дополнительные сервисы

Стоимость: $50-80 / месяц


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

Магазин приложений Shopify это сокровищница функциональности, которой вы можете и должны пользоваться для оптимизации интернет-магазина. В магазине приложений Shopify представлено более 1500 приложений на любой вкус и цель.

Приложения Shopify бывают как платными, так и бесплатными. Многие приложения предоставляют пробный периоды от 7 до 30 дней. Не следует загружать магазин большим количеством приложений, так как это скажется на скорости загрузки сайта и ваших расходах. Мы рекомендуем установить следующие приложения (либо их аналоги):

  • Abandonment Protector отправка серии писем тем, кто бросил корзину;

  • Loox Reviews импорт отзывов с Aliexpress к товарам в вашем интернет-магазине;

  • Vitals увеличении конверсии и среднего чека.

6. Маркетинг

Стоимость: $0-70


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

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

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

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

В среднем, стоимость создания видеокреативов для одного товара варьируется от $40 до $70.

7. Рекламный бюджет

Стоимость: $1000 и больше


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

  • ваши навыки настройки рекламы;

  • гео вашей целевой аудитории;

  • качество креативов;

  • конверсия сайта;

  • средний чек товаров на сайте.

В связи с пандемией коронавируса и не только, наблюдаетсястремительный рост сферы e-commerceпо всему миру, из чего следует увеличение количества рекламодателей на всех площадках, в частности, в Facebook. Теперь, чтобы показать рекламное объявление своей целевой аудитории и получить переход на сайт, приходится платить больше, поэтому $100 не достаточно для того, чтобы определить потенциал выбранного товара. Мы рекомендуем иметь минимум $200-250 на тест одного товара, чтобы иметь возможность получить достаточное количество данных и сделать вывод касательно товара продолжать работать с ним дальше или переходить к другому товару.

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

8. Платежная система

Стоимость: $0-149

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

Наиболее оптимальным вариантом является платежная система Stripe, которая, к сожалению не работает с бизнесами из СНГ. Среди возможных вариантов подключения Stripe для приема платежей: аренда / покупка аккаунта или регистрация компании за рубежом. Более подробно рассказано в статьеСпособы подключения Stipe в СНГ в 2021.

В дальнейшем при работе со Stripe необходимо учитывать комиссию 2,9% + $0,30 за транзакцию.

9. Запас на кассовый разрыв

Стоимость: $100-200

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

Вдохновившись первыми продажами в своем магазине, многие забывают о том, что новичкам чаще всего недоступен мгновенный вывод средств. Момент ожидания может длиться до 7 дней, поэтому, для оплаты новых заказов вам обязательно нужно иметь резервные $100-200, в зависимости от стоимости закупа товаров.

10. Дополнительные / непредвиденные расходы

Стоимость: $100 $500

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

Необходимо учитывать следующие аспекты:

  • Возвраты покупателям стоит допускать, даже если у вас абсолютно "белый" бизнес;

  • Комиссия Shopify 2% с каждой транзакции на тарифе за $29;

  • Комиссия Stripe 2,9% + $0,30 с каждой транзакции;

  • Дополнительные возможные комиссии при выводе средств;

  • Социальные аккаунты и бизнес-менеджеры Facebook;

  • Оплата дополнительных возможных услуг;

  • Платные обучающие материалы;

  • Прокси / VPN;

  • Налоги.

Общий бюджет для запуска дропшиппинг-магазина

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

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

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

И еще кое-что...

Мы новенькие на Хабр, но у нас уже достаточно внушительный опыт в сфере eCommerce, которым мы с удовольствием готовы делиться. Наша команда действительно старается публиковать самые интересные и актуальные материалы , которые помогут вам быть в курсе текущих трендов и новостей в сфере eCommerce. Мы всегда рады новым читателям и с радостью продолжим делиться своими наблюдениями и наработками. Если статья была полезна, то мы будем благодарны, если вы поддержите наш канал комментарием.

Подробнее..

Как AR-технологии могут повлиять на продажи товаров на маркетплейсах и как бренды используют их в России? И надо ли это?

18.05.2021 16:06:28 | Автор: admin

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

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

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

Дополненный рынок

Рынок AR стремительно растет. Это логично, поскольку смартфоны и гаджеты, которые поддерживают данную технологию или могли бы с ней работать сегодня есть практически у всех. AR, в какой-то степени проще дышится среди потребителей. Технология нетребовательна к оборудованию - пройтись по дополненной реальности, в той или иной степени, может каждый. Мы нашли данные зарубежных исследований под авторством Engine creative в которых прогнозируется, что уже в этом году количество мобильных пользователей AR вырастет до 811 миллионов человек. И если на время отвлечься от продаж и пристально посмотреть в сторону самой технологии, то можно узнать, что доход от AR c каждым годом растет и в 2021 году может достигнуть 3,1 млрд долларов, а к 2024 - 3,78 млрд долларов.

Данные исследований агенства Engine creativeДанные исследований агенства Engine creativeДанные исследований агенства Engine creativeДанные исследований агенства Engine creative

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

- 69% покупателей ждут, что бренды дадут им возможность взаимодействовать с товаром посредством AR и выпустят мобильные приложения;

- 76% уверяют, что делали бы больше покупок при условии, что смогли бы если бы заранее осматривать товары с помощью дополненной реальности;

- 42% покупателей считают, что использование дополненной реальности помогает принять решение о последующей покупке.

Данные исследования агенства Engine creativeДанные исследования агенства Engine creative

Эксперты также уверены, что использование AR может не просто повысить продажи, но и с большей вероятностью довести определенные группы товаров до конечного клиента. Об этом в своем исследовании заявили ученые Городского университета Гонконга и Сингапурского университета управления. Они пришли к выводу, что AR перспективнее всего применять там, где высока неопределенность, связанная с товарами. То есть в тех случаях, когда покупатель просто не может оценить продукт (размеры, детализацию, актуальность товара для его стиля или интерьера) находясь на расстоянии от витринной полки. Исходя из этого ученые прижил к выводу, что дополненную реальность лучше всего использовать в нескольких случаях:

- при продаже продвижении малоизвестных товаров и брендов;

- для увеличения продаж дорогостоящих товаров;

- для стимуляции перехода офлайн-клиентов в онлайн-каналы продаж (например, с рекламного баннера со ссылкой на приложение или сайт).

Согласитесь, что такие выводы звучат очень логично. Если покупатель маркетплейса заказывает упаковку стирального порошка или корм для домашних животных - он имеет хотя бы примерные представления о том как будет выглядеть физический продукт и его упаковка. Когда речь идет о необычной детской игрушке, новом гаджете или дизайнерском кресле - представить, например, их габариты и внешний вид крайне сложно. Да, все подробности о товарах можно прочитать в их описаниях и характеристиках. Но покупатели - занятые, а иногда и ленивые люди, которые редко взаимодействуют с текстом и принимают решения на основе изображений товаров.

Как в таком случае быть покупателям, которые не могут оценить товар просто по фотографиям в карточке маркетплейса. С каждым днем количество товаров на таких площадках растет, а отличать предложения честных продавцов от мошенников становится все сложнее. У покупателя есть два варианта - отказаться от заказа непонятно, неизвестного товара или заказать и вернуть, в случае, если он не оправдает их ожиданий. Как в таком случае быть продавцам? Они постоянно рискуют тем, что их товары будут путешествовать по стране от склада до склада, потому что покупатели продолжать оформлять возвраты. Либо получат сотни недовольных отзывов от тех, чьи ожидания не оправдались. Кажется, пора находить какие-то решения.

Точки отсчета

Точки отсчета
Как можно использовать дополненную реальность в реальности? Недавно компания-разработчик PHYGITALISM опубликовала в сети большой кейс-исследование в котором собрала всю актуальную информацию об AR и рассказала о возможных механиках ее использования. Получилось внушительный список из следующих пунктов:

Данные исследования компании PHYGITALISMДанные исследования компании PHYGITALISM

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

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

Есть примеры использования дополненной реальности для конкретных брендов и товаров. Тут уже не важно, где именно они продаются - в офлайне или онлайне, поскольку особенности самого товара требуют знакомства с ним вне торговой зоны, например дома или в офисе. В первую очередь, такой подход идеально ложиться на мебель и крупную бытовую технику. Два примера ниже отлично демонстрируют как покупатель может познакомиться с товаром, даже если никогда не видел его лично. Здесь технология не просто помогает покупателю рассмотреть товар, но и решить важный вопрос - "поместится ли?".

Но что делать напрямую с онлайн-торговлей? Может ли AR помочь продавцам интернет-магазинов и маркетплейсов стать ближе к пользователям и подарить им новый опыт от взаимодействия с товарами? Примеры тоже есть. В 2019 году Lamoda запустила виртуальную примерочную для покупателей кроссовок, доступную владельцам устройство под iOS, в 2020 расшарила эту же возможность для пользователей Android. Примерить с помощью дополненной реальности можно не все, а лишь 100 оцинкованных моделей кроссовок. Но на самом деле, чтобы найти доступ к самой виртуальной примерочной нужно поломать, если не ноги, то голову. Поэтому сама история с запуском такой примерочной выглядит скорее как маркетинговый ход, нежели желание помочь покупателем с выбором товара.

Вместе с тем, одежда и обувь выглядит как еще одна категория товаров, которая очень сильно напрашивается на дружбу с дополненной реальностью. Тут есть свои плюсы и минусы. Очевидно, что принять решение о покупке или понять, что вещь визуально не подходит покупателю можно еще до момента заказа. С другой стороны, очень частой причиной возврата одежды и обуви является другой фактор - размер, удобство посадки или колодки. С этим покупателю не поможет ни AR, ни личная консультация продавца в онлайне. В этом случае узнать "поместится ли?" просто невозможно.

Есть дополнения?

Очевидно, что силами маркетплейсов оцифровать весь ассортимент товаров невозможно. С другой стороны, они могут стимулировать продавцов к использованию технологий. Также как они предлагают селлерам дополнять товарные карточки панорамными фотографиями и запускать живые стримы с презентациями товаров. Например, условный Wildberries может давать продавцам возможность добавления объемных моделей в карточку товара, а покупателям сообщать, что они могут просмотреть определенные позиции в дополненной реальности не выходя из приложения или не покидая сайт маркетплейса. Ozon в этом плане уже продвинулся гораздо дальше. Например, совместно с LG запускал тестирование дополненной реальности прямо в карточке товара.

Тестовая карточка товара маркетплейса OzonТестовая карточка товара маркетплейса Ozon

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

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

Карточка товара с дополненной реальностью бренда Mr. Puzz на маркетплейсе WildberriesКарточка товара с дополненной реальностью бренда Mr. Puzz на маркетплейсе Wildberries

Заметьте, что первый производитель использует для погружения потребителя в AR свой аккаунт в Instagram - оживить собранные пазл он предлагает с помощью масок в социальной сети. Это, с одной стороны, удобно - пользователю не нужно скачивать и устанавливать дополнительные предложения. С другой стороны, именно в этом примере мы рассматриваем детские товары. Насколько верно и позволительно предлагать покупателям передавать детям для игры свой смартфон с открытым аккаунтом в Instagram?

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

Выпадает из реальности

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

А может и не нужны продавцам новые технологии и достаточно постоянно нагружать рынок новыми предложениями, выдумывать, производить и продавать все новые и новые товары?

Подробнее..

HR-автоматизация за один день как экономить 8 часов в неделю на рекрутинге

15.12.2020 18:16:33 | Автор: admin
Привет, Хабр. Меня зовут Шагане Мирзоян, я отвечаю за продуктовую аналитику в СберМаркете. Мы с командой следим за тем, что происходит с нашим пользователем на сайте и в приложении, и ищем в этом процессе точки роста. Сегодня я расскажу, как мы пережили рост сервиса в 15 раз за 2020 год, а рост команды с 6 до 29 человек за 6 месяцев.

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

Почему у нас нет стартового собеседования с рекрутером? Обычно такие нужны при поиске ребят младших позиций и призваны для того, чтобы отобрать самых классных. Мы решаем эту задачу иначе и отбираем самых мотивированных ребят тестовым заданием, которое помогает экономить время HR и ускорять подбор. Так ни нам, ни кандидату не придется ожидать свободного слота в календаре менеджера по персоналу.

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





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

  • Все в одном месте.
  • Любой член команды аналитики может просмотреть CV и дать фидбек.
  • Push-уведомления при новых откликах мы всегда в курсе, что происходит.
  • Когда в команду требуется 2-3 новых члена в год, это очень удобно. Но если количество коллег растет по экспоненте (в какой-то момент мы стали получать по 1000 писем в неделю), общая почта сплошной бардак
  • Отклики на разные вакансии перемешиваются (теперь все в одном месте не такой уж и плюс).
  • Google очевидно завидует вашему кратному росту и ругается, когда в аккаунт пытаются зайти с десятка разных устройств. В итоге получение доступа к почте становится квестом.
  • Кто-то может случайно открыть чужое письмо и отклик потерян, а по ту сторону экрана грустит расстроенный кандидат.




Просуммирую: так историю изменений непросто найти, а кандидатов легко потерять. Хочется, конечно, наоборот.

Автоматизация на коленке


Решить проблему нам помогли два облачных сервиса: конструктор баз данных Airtable и Zapier, клей для наших костылей. Если вы зерокодер, то вы наверняка про них слышали.

В Airtable можно создать view по определенным условиям, например, показать только те записи, которые были созданы вчера. Zapier умеет в качестве триггера принимать появление новой записи в отдельном view. Таким образом, мы можем построить цепочку Если произошло событие Х, то нужно сделать действие Y.
Кастомизировать эти истории под себя можно сколько угодно этим мы и занялись. Теперь у нас появилась своя CRM-ка с кандидатами. Соискатели и их тестовые задания лежат в одном месте с привязкой к вакансии и статусу. Отклики приходят не на почту в Google, а в таблицу, как и любят все аналитики :). Бонусом буквально в пару кликов с помощью такого же принципа можно настроить пуши в Slack. Это помогает нам следить за прогрессом и вовремя отвечать соискателям. Бот тэгает только ownerа вакансии и не отвлекает остальных членов команды.

Airtable стал рабочей средой, в которой мы управляем наймом: держим все тестовые задания, контакты и имена, ведем резерв кандидатов и видим открытые вакансии. Zapier помог с переадресацией писем и автоматической отправкой заранее написанных ответов. Их, кстати, можно персонализировать, но об этом ниже.



Как это выглядит на примере воронки джуна



  1. Общая форма для всех вакансий. Кандидат выбирает, на что хочет откликнуться, пишет короткое сопроводительное письмо, прикрепляет CV.
  2. Ответ после отклика уходит автоматически это красивое сверстанное письмо с приветствием, ссылкой на тестовое и кнопкой отправить работу. Ссылка на задание вставляется динамически и может отличаться для разных вакансий. Кнопка с сабмитом тоже хитрая, об этом ниже.
  3. В Airtable появляется карточка со всеми данными по отклику.
  4. В наш канал в Slack падает уведомление о новом кандидате и тегом owner-а вакансии (я знаю, что вы уже догадались, что тег тоже подтягивается динамически). В один клик мы можем получить об отклике всю доступную информацию.




Фронт и бэк откликов :)

5. После того, как кандидат сделал тестовое, он отправляет его через форму из письма. Тестовые задания лежат в другой таблице, но мы научились связывать их с помощью prefill_ тегов в URL, которые заботливо добавляем кандидатам в адрес формы на шаге 2.



Для каждого отклика у нас есть SLA-отбивка. Например, мы обещаем вернуться с фидбеком на тестовое задание в течение трех рабочих дней. Мы создаем ожидания у кандидатов и должны им соответствовать, поэтому в тот же Slack приходят автоматизированные алерты для ownerа вакансии, если тот опаздывает с ответом Оговорюсь, что иногда мы все-таки факапим: теряем кандидатов или отвечаем позже обещанного срока. Здесь всегда есть человеческий фактор, но автоматизация позволила значительно его снизить и ошибаться реже.

Оговорюсь, что иногда мы все-таки факапим: теряем кандидатов или отвечаем позже обещанного срока. Здесь всегда есть человеческий фактор, но автоматизация позволила значительно его снизить и ошибаться реже.



Для каждой вакансии есть шаблон письма: заскриптованные комментарии по типичным ошибкам и наблюдениям от тестовых заданий. Если нужно, я дописываю в нем что-то прямо в Airtable: например, могу указать джуну на конкретные ошибки или похвалить за удачные решения.



Результат 8 свободных часов в неделю



Это достаточно усредненная цифра. Она зависит от вашего количество откликов, но оценить его просто. Минимум 5 минут с каждого отклика уходит на переключение контекстов и интерфейсов (со вкладки с тестовым кодом в gmail, с отвеченного письма на неотвеченное и так далее). Когда у тебя 100 тестовых заданий, эти минуты превращаются в часы.

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

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



Для этого поста мне даже не пришлось считать воронку. Все можно сделать силами того же Airtable

P.S.
А ещё мы продолжаем расширять команду Data & Growth СберМаркета и ищем новых коллег! Наши вакансии:

Middle Product Analyst
Middle/Senior DS на персонализацию сервиса
Marketplace Efficiency Analyst
Junior Finance Analyst
Middle Finance Analyst
Подробнее..

Лучшие data-продукты рождаются в полях

08.07.2020 16:06:56 | Автор: admin

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



image

Меня зовут Марина Калабина, яруководитель проектов вЛеруа Мерлен. Пришла вкомпанию в2011 году. Первые пять лет открывала магазины (когда япришла, ихбыло 13, сейчас 107), потом работала вмагазине вкачестве руководителя торгового сектора ивот уже полтора года занимаюсь тем, что спозиции Data-продакта помогаю магазинам организовывать операции.


Леруализмы


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


  • Сток запас товаров вмагазине.
  • Доступный для продажи сток количество товара, свободное отблокировок ирезервов для клиента.
  • Экспо витринный образец.
  • Артикулы товары.
  • Оперативная инвентаризация ежедневный пересчет 5 артикулов вкаждом отделе каждого магазина.

Гарантированный сток


Возможно, вынезнаете, нокогда выоформляете заказ вЛеруа Мерлен, в98% случаев онприходит вмагазин исобирается изторгового зала.


Представьте себе огромные 8000 кв. ммагазина, 40000 артикулов изадачу собрать заказ. Что может произойти сартикулами вашего заказа, которые ищет сборщик? Товар может быть уже вкорзине клиента, который ходит поторговому залу, или даже может быть продан между тем моментом, когда выего заказали, итем, когда сборщик пошел заним. Насайте товар есть, авдействительности онлибо где-то спрятан, либо его уже нет, каким-нибудь батарейкам приделали ноги. Бывает иобратная ситуация, когда товар вмагазине есть, анасайте покаким-то причинам неотображается.


Из-за этого мынеможем собрать заказ, теряем товарооборот страдает наша репутация ипоявляются недовольные клиенты.


Для того чтобы бороться сразными проблемами, ивтом числе сэтой, впрошлом году вкомпании было запущено подразделение Data Accelerator. Его миссия привить data-культуру, чтобы принимаемые вкомпании решения были data-driven. ВData Accelerator было заявлено 126 идей, изних было выбрано 5 иодна изэтих идей это тот продукт Гарантированный сток, окотором ябуду рассказывать.


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


Унас была классная команда: Data Scientist, Data Engineer, Data Analysis, Product Owner иScrum-мастер.


Целями нашего продукта были:


  • сократить количество несобранных заказов, при этом неповредив количеству заказов впринципе (чтобы оно несократилось);
  • сохранить товарооборот вeCom, поскольку мыбудем меньше показывать товаров насайте.

Вобщем, при прочих равных сделать лучше.


Бюро расследований


Когда проект стартовал, мыпоехали вмагазины, клюдям, которые каждый день работают сэтим: мысами пошли собирать заказы. Оказалось, что наш продукт настолько интересен инужен магазинам, что нас попросили запуститься нечерез 3месяца, как было запланировано вначале, авдва раза быстрее, тоесть через 6 недель. Это, мягко говоря, было стрессом, нотем неменее


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


Например, смеситель утаких товаров всегда есть образец взале. Более того, мынеимеем права продать экспо, потому что онможет быть уже поврежден игарантия нанего нераспространяется. Мынаходили такие товары, укоторых непроставлен витринный образец, адоступный сток для продажи показан 1. Но, скорее всего, это тот самый экспо, который мынесможем продать. Аклиент может его заказать. Это одна изпроблем.


image

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


image

Валидация


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


Что касается примеров, когда мынаходили слишком большое количество витринных образцов, практически в60% случаев мыбыли правы, предполагая ошибку. Акогда мыискали недостаточное количество экспо или ихотсутствие, тобыли правы в81%, что, вобщем-то, очень хорошие показатели.


Запуск MVP. Первый этап


Поскольку нам надо было уложиться в6 недель, мызапускали proof ofconcept вот стаким линейным алгоритмом, который находил аномальные значения, делал поправку наэти значения перед тем, как публиковать насайт. Иунас было два магазина, вдвух разных регионах, чтобы мымогли сравнить эффект.
Кроме того, был сделан дашборд, где, содной стороны, мымониторили технические параметры, асдругой показывали нашим заказчикам, посути магазинам, как отрабатывают наши алгоритмы. Тоесть мысравнивали, как они работали дозапуска икак стали работать после, показывали, сколько денег позволяет заработать использование этих алгоритмов.


Правило -1. Второй этап


Эффект отработы продукта быстро стал заметен, инас стали спрашивать, почему мыобрабатываем такое маленькое количество артикулов: Давайте возьмем весь сток магазина, изкаждого артикула вычтем одну штуку, и, может быть, это нам позволит решить проблему глобально. Кэтому моменту мыуже начали работать над моделью машинного обучения, нам казалось, что подобная ковровая бомбардировка может навредить, новозможность такого эксперимента упускать нехотелось. Имызапустили тест на4магазинах для того, чтобы проверить эту гипотезу.


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


ML-модель. Третий этап


Итак, мысделали ML-модель, запустили еевпрод в6магазинах. Какая унас получилась ML-модель?


  • Модель реализована спомощью градиентного бустинга наCatboost, иэто дает предсказание вероятности того, что сток товара вданном магазине вданный момент является некорректным.
  • Модель была обучена нарезультатах оперативной иежегодной инвентаризаций, ивтом числе наданных поотмененным заказам.
  • Вкачестве косвенных указаний навозможность некорректного стока использовались такие признаки, как данные опоследних движениях постоку данного товара, опродажах, возвратах изаказах, одоступном для продажи стоке, ономенклатуре, онекоторых характеристиках товара ипрочем.
  • Всего вмодели использовано около 70 фичей.
  • Среди всех признаков были отобраны важные сиспользованием различных подходов коценки важности, втом числе Permutation Importance иподходов, реализованных вбиблиотеке Catboost.
  • Чтобы проверить качество иподобрать гиперпараметры модели, данные были разбиты натестовую ивалидационную выборки всоотношении 80/20.
  • Модель была обучена наболее старых данных, апроверялась наболее новых.
  • Финальная модель, которая витоге пошла впрод, была обучена наполном датасете сиспользованием гиперпараметров, подобранных спомощью разбиения наtrain/valid-части.
  • Модель иданные для обучения модели версионируются спомощью DVC, версии модели идатасетов хранятся наS3.

Итоговые метрики полученной модели навалидационном наборе данных:


  • ROC-AUC: 0.68
  • Recall: 0.77

Архитектура


Немного про архитектуру как это унас реализуется впроде. Для обучения модели используются реплики операционных ипродуктовых систем компании, консолидированные ведином DataLake наплатформе GreenPlum. Наоснове реплик рассчитываются фичи, хранящиеся вMongoDB, что позволяет организовать горячий доступ кним. Оркестрация расчета фичей иинтеграция GreenPlum иMongoDB реализована сиспользованием opensource-стекаApache-инструментами Apache AirFlow иApache NiFi.


Модель машинного обучения представляет собой контейнеризованное Python-приложение, развернутое вKubernetes. Приложение работает наоснове информации отекущем состоянии стока, поступающей изразличных бизнес-систем враспределенный брокер сообщений Apache Kafka, данные изкоторого модель считывает, корректирует иотправляет насайт компании сиспользованием шины набазе Apache Kafka.


image

Результаты


Унас было 6магазинов ирезультаты показали, что изплановых 15% мысмогли сократить количество несобранных заказов на12%, при этом унас выросли товарооборот E-com иколичество заказов. Так что, мыненавредили, акак раз улучшили качество сборки заказов.


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


p.s.Статья написана по выступлению на митапе Avito.Tech, посмотреть видео можно по ссылке.

Подробнее..

Перевод Как e-commerce бизнесу выйти на новые рынки? 6 важных шагов на пути к локализации интернет-магазинов

04.12.2020 12:06:11 | Автор: admin

В 2020 Covid-19 сделал интернет-продажи ещё популярнее и ускорил выход магазинов в онлайн. Мировой объём розничных онлайн-продаж составил 3,53 триллиона долларов США в 2019 году. И планируется, что к 2022 году эта цифра вырастет до 6,54 триллионов долларов США.

Многие владельцы бизнесов осознали, насколько важно присутствие онлайн. В апреле 2020 года число новых интернет-магазинов увеличилось в два раза по сравнению с предыдущим месяцем и в полтора раза по сравнению с апрелем 2019 года.

Коронавирус по-настоящему оживил отрасль электронной коммерции. Поэтому выход на рынки новых стран и поиск способов для удовлетворения потребностей местных покупателей стали как никогда важны. Но с чего же начать?

Источник: freepik.comИсточник: freepik.com

Какие рынки лидируют в e-commerce?

Компания Goldman Sach Group в докладе, опубликованном в конце июля 2020 года, заявила, что рост доли онлайн-покупок в объёме всей розничной торговли достигнет 19% в 2020 году по сравнению с ранее прогнозируемыми 16%. Это обусловлено высокими темпами роста e-commerce бизнеса в США, Западной Европе, Бразилии и большинстве стран Азиатско-Тихоокеанского региона, говорится в докладе. Ожидается, что онлайн-продажи займут около 22% рынка розничных продаж к 2023 году.

Пандемия COVID-19 увеличила долю онлайн-продаж на рынке розничной торговли по всему миру, причём наибольший рост произошёл в следующих категориях: домашние развлечения, инструменты повышения производительности труда и доставка продуктов.

Сегодня 85% мировой покупательской способности находится за пределами США. Китай крупнейший в мире рынок электронной коммерции, где ежегодный оборот от онлайн-покупок оценивается примерно в 672миллиарда долларов США. За Китаем следует США с оборотом в 340миллиардов долларов, и незначительно от них отстают Великобритания, Япония, Германия, Франция, Южная Корея, Канада, Россия и Бразилия.

Что такое рост и расширение бизнеса?

Расширение в глобальном смысле означает увеличение числа рынков сбыта, и соответственно, увеличение числа клиентов. Но не всё так просто: для достижения успеха потребуется поработать с каждым из рынков в отдельности. Невозможно придумать единую стратегию развития для всех рынков одновременно.

Покупатели со всего мира хотят, чтобы процесс покупки был им понятен и знаком. Что же для этого нужно?

Правильный ответ локализация онлайн-магазина.

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

Локализация онлайн-магазина: процесс от А до Я

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

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

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

1. Локализация взаимодействия с пользователем

User experience (UX) это то, как пользователь взаимодействует с продуктом и то, какие эмоции он от этого испытывает. Даже если интерфейс сайта или приложения полностью соответствует культурным нормам страны, он может показаться странным для пользователей. Приведём несколько примеров.

  • Информация о покупателе при оформлении покупок в корзине. В некоторых регионах, например, в России, традиционно используются три поля: имя, фамилия и отчество. Но в других регионах, таких как Азия или Америка, пользователи ожидают увидеть только два поля: имя и фамилия. Более того, для жителей некоторых восточноевропейских стран привычнее вначале увидеть поле для ввода фамилии, а не имени. Покупатели могут прийти в замешательство (или даже отказаться от использования сайта или оформления покупок), если увидят непривычную форму заказа.

  • Длина слов и размер шрифта. Слова на различных языках часто сильно отличаются по количеству букв. Например, слово пользователь на английском, русском и немецком выглядят так User, Пользователь и Benutzer соответственно. Игнорирование размера слов может негативно сказаться на дизайне сайта и читабельности.

  • Направление текста. Не все языки читаются слева направо, как русский или английский. В зависимости от направления текста может изменяться и последовательность действий пользователей. К примеру, на экране русскоязычного сайта кнопки Назад и Далее будут расположены слева и справа соответственно. Но на сайте на иврите кнопки должны находиться на противоположных сторонах.

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

Вид сайта может сильно отличаться в зависимости от географического положения пользователей. Представим, что вам нужно купить кондиционер для дома. Результаты выдачи на англоязычном сайте Amazon будут сильно отличаться от результатов на сайте Amazon Japan, локализованном для японского рынка.

Сайт Amazon (США)Сайт Amazon (США)Сайт Amazon (Япония)Сайт Amazon (Япония)

Вот несколько очевидных отличий:

  • В английской версии сайта функции товара изображены на иконках вместо длинного описания.

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

  • Названия английских товаров выделены жирным чёрным шрифтом.

  • Японские названия, похоже, ничем не отличаются от остальной части описания товара (используется такой же синий шрифт).

2. Локализация корзины

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

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

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

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

Источник: проект 2Chekout по стратегии адаптации корзины для Visicom MediaИсточник: проект 2Chekout по стратегии адаптации корзины для Visicom Media

Как правило, для оформления заказа в корзине используется либо одностраничный, либо двустраничный шаблон. Если используется двустраничный шаблон, то за общим перечнем расходов и оформлением заказа следует страница с общей информацией. У одностраничного шаблона такая страница отсутствует.

Популярность шаблонов варьируется в различных регионах: например, в США пользователям нравится одностраничный шаблон, тогда как покупатели из Европы предпочитают двустраничный шаблон, в котором есть страница со сводной информацией по заказу.

На самом деле предпочтения пользователей могут различаться даже в странах из одного региона: по данным платформы 2Checkout пользователи из Германии предпочитают одностраничный шаблон, а во Франции двустраничная версия даёт больше конверсий.

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

3. Локализация цен на товары

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

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

4. Локализация способов оплаты

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

Источник: 2CheckoutИсточник: 2Checkout

Согласно статистике, предпочтения по платёжным системам широко варьируются от региона к региону.

Хотя около 86% мировых онлайн-платежей осуществляются с помощью кредитных карт и PayPal, в Китае 79% онлайн-заказов совершаются с использованием Alipay или WeChatPay. Поэтому при выходе на китайский рынок советуем предложить эти два варианта покупателям, чтобы получить более высокий коэффициент конверсии. В Бразилии очень популярны Boleto и карты с возможностью оплаты в рассрочку: на их долю приходится более 50% онлайн-заказов. В Европе востребован SEPA Direct Debit, а японские покупатели предпочитают Konbini.

Конечно, настроить различные платёжные системы под каждую страну, где вы продаёте товары, достаточно сложная задача. Если вы планируете расширить свою деятельность в различных регионах, предпочтительнее использовать международную систему электронных платежей, к примеру, 2Checkout.

Такая система даёт ряд преимуществ:

  • Интеллектуальная маршрутизация платежей позволяет перенаправлять платежи между различными платежными шлюзами. Она служит в качестве механизма переключения при сбое и повышает скорость авторизации карт.

  • Система Account Updater, разработанная совместно Visa и MasterCard, которая автоматически обновляет номера и срок действия карт клиентов на основании информации от банка-эмитента.

  • Логика повторных попыток позволяет свести к минимуму сбои и восстановить до 20% неудачных транзакций;

  • Управление возвратными платежами и возмещением средств поможет уменьшить число таких случаев, обеспечивает точные и своевременные платежи, а также соответствие всех сумм списания денежных средств фактической стоимости товаров.

5. Локализация в соответствии с нормативно-правовой базой и налоговой системой страны

Независимо от того, где вы находитесь: в России, США или любой другой стране, вам придётся платить налог на добавленную стоимость (НДС) по каждой транзакции и другие налоги. Ситуация усложняется ещё тем, что по отношению к потребителям и бизнесу применяются различные правила.

Вы должны взимать правильную сумму налога для каждого рынка, а затем перечислять эти налоги соответствующим налоговым органам. К счастью, этот процесс можно автоматизировать: это легко сделать, если вы пользуетесь системой GeoIP, определяющей автоматически местоположения пользователя. А налоговые калькуляторы помогут немного разобраться в области налогообложения.

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

Нормативно-правовое соответствие это ещё один важный пункт для компаний, которые выходят на мировой уровень.

Генеральный регламент ЕС о защите персональных данных (GDPR), Закон штата Калифорния о защите конфиденциальности потребителей (CCPA), Федеральный закон О персональных данных это лишь примеры законодательной базы, которая регулирует порядок сбора, хранения и использования компаниями личных данных потребителей в различных странах.

Источник: 2CheckoutИсточник: 2Checkout

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

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

6. Локализация службы поддержки пользователей

Естественно, когда клиент разочарован или имеет претензии к качеству вашего продукта, он предпочтёт пообщаться с представителем службы поддержки на своём родном языке. Заранее позаботьтесь о локализации справочной документации и различных руководств для пользователей. Служба поддержки на родном языке и локализованная документация помогут сформировать положительный образ вашего продукта или услуги в новом регионе.

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

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

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

Заключение

В 2020 году стало очевидно, что потенциал e-commerce рынка невероятно большой. Для предприимчивых бизнесменов сейчас сложились идеальные условия, чтобы вывести продукт или услугу на новые рынки и увеличить свой доход. И качественная локализация это один из ключей к успеху на мировом рынке.

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

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

Каждый бизнес по-своему уникален: тестируйте различные подходы к клиентам, чтобы понять, что лучше всего сработает для вас.

О переводчике

Перевод статьи выполнен в Alconost. Alconost занимаетсялокализацией игр,приложений и сайтовна более 70 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.

Мы также делаем рекламные и обучающие видеоролики, продающие, имиджевые ролики, тизеры, эксплейнеры, трейлеры для Google Play и App Store.

Подробнее..

Как сохранить социальное доказательство при настройке новых объявлений в Facebook Adsс помощью Post ID?

04.04.2021 14:14:58 | Автор: admin

На сегодняшний день Facebook Ads это самый эффективный инструмент для привлечения потенциальных клиентов и генерации продаж. Это, в свою очередь, приводит к росту конкуренции на рекламной площадке, а также к росту стоимости размещения объявления. Теперь чтобы показать рекламное объявление своей целевой аудитории и получить переход на сайт, приходится платить больше.

Отличным способом повысить эффективность рекламной кампании является социальное доказательство или social proof. О том, что это такое, и как использовать его для улучшения показателей рекламных кампаний в Facebook, расскажем в данной статье.

Социальное доказательство что доказывает и кому?

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

Зачастую признание другими людьми побуждает покупать сильнее, чем конкретные аргументы и рациональная выгода. Именно поэтому Social proof является распространенным инструментом, который активно используют маркетологи и продавцы.

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

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

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

Почему социальное доказательство важно для Facebook?

В прошлом году Facebook пересмотрел показатели измерения эффективности рекламной кампании. Теперь релевантность рекламного объявления определяется тремя показателями, среди которых значится коэффициент вовлеченности (Engagement Rate).

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

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

Facebook использует этот показатель наряду сконверсиейикачествомобъявления, чтобы убедиться в пользе рекламы для пользователя. Если все показатели в норме, то стоимость показа рекламы ЦА будет снижена. Социальное доказательство, в свою очередь, помогает поддерживать эти показатели на высоком уровне. Далее расскажем, как этого добиться.

Как сохранить социальное доказательство на всех рекламных объявлениях Facebook?

При создании рекламы в Facebook Ads Manager, платформа присваивает каждому объявлению уникальный идентификатор post ID.

Если вы решите продублировать одно из успешных объявлений, то ему будет присвоен новый идентификационный номер. Таким образом, все лайки, репосты, реакции (элементы социального доказательства) не будут перенесены на новое объявление.

Хорошая новость заключается этом, что способ сохранить накопленные социальные доказательства при дублировании объявления все же есть, что можно сделать, связав новое объявление с исходным.

Стандартная структура рекламной кампании с несколькими группами объявлений выглядит следующим образом:

В одной кампании у вас есть несколько групп объявлений. В каждой группе объявлений как минимум одно объявление (с уникальным идентификатором). Не смотря на то, что объявление может быть абсолютно одинаковым во всех группах, для каждого адсета в ленте Facebook создается отдельный пост.

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

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

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

Структура кампании будет выглядеть следующим образом:

4 шага для сохранения накопленной статистики объявления

Стоит отметить, что данный метод применим только для новостной ленты Facebook и Instagram, где и вовлеченность можно увидеть в форме реакций: лайки, репосты, комментарии.

Итак, переходим непосредственно к механике. Откройте свой Facebook Ads Manager и следуйте простым указаниям:

Шаг 1: Выбираем объявление

Вам необходимо заранее найти объявление с наибольшим количеством показов и самым высоким CTR, которое вы хотите использовать повторно. Выберите объявление, на которое вы хотите направить все рекламные объявления и нажмитеEdit.

Шаг 2: Получаем ID объявления


В разделеAd Previewнажмите кнопкуShare Preview, затем Facebook Post with Comments.(Есливы размещаете объявление в Instagram, то нажмитеInstagram Post with Comments).

После загрузки объявления в новой вкладке вы получите URL-адрес. Выделите и скопируйтевторую часть цифр после /posts/.

При работе с объявлением в Instagram, у вас будет всего одна последовательность цифр, которую нужно будет также выделить и скопировать.

Шаг 3: Применяем ID объявления

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

НажмитеEdit, а затем вместо Create Ad нажмите наUse Existing Post.

НажмитеEnter Post IDи вставьте ID объявления из Шага 2.

НажмитеSubmitи необходимое вам объявление загрузится в новую группу объявлений.

Шаг 4: Дублируем группы


Теперь дублируем новую группу с нужным нам объявлением и меняем разные настройки таргетинга при необходимости. Таким образом вы быстро создадите несколько групп с одним и тем же объявлением (с одним и тем же Post ID). Если вы сделали все верно, то вы увидите то самое объявление с уже накопленными показами и реакциями.

Используйте копирование Post ID для сохранения вовлеченности объявлений

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

И еще кое-что...

Мы новенькие на Хабр, но у нас уже достаточно внушительный опыт в сфере eCommerce, которым мы с удовольствием готовы делиться. Наша команда действительно старается публиковать самые интересные и актуальные материалы , которые помогут вам быть в курсе текущих трендов и новостей в сфере eCommerce. Мы всегда рады новым читателям и с радостью продолжим делиться своими наблюдениями и наработками. Если статья была полезна, то мы будем благодарны, если вы поддержите наш канал комментарием.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru