Интернет-аукцион Yahoo
Крупнейший в мире онлайн-агрегатор японских товаров
10 лет работы и 150 000 активных зарегистрированных пользователей
Болеe 500 000 посылок по всему миру
Сервис InJapan — посредник в сфере интернет-шопинга, который занимается осуществлением покупок и доставкой приобретенной продукции с японского веб-аукциона Yahoo и различных японских интернет-магазинов.
injapan.ru
Задачa
Перед командой стояла глобальная задача — автоматизировать все бизнес-процессы сервиса, большинство которых выполнялись вручную сотрудниками компании.
«Мы должны не просто подарить новую жизнь сервису, мы должны создать отлаженный механизм ежедневной коммуникации сотрудников и сотен тысяч клиентов по всему миру»
Сергей Шитиков,
Технический директор MediaSoft
Решение
Идеальным решением задачи стала параллельная разработка новой платформы с богатым функционалом и множеством внутренних сервисов с дальнейшей интеграцией необходимых решений на сайт InJapan.ru путем замены прежних сервисов, работа которых выполнялась вручную, новыми — автоматизированными и не зависимыми от человека.
Автоматизация взаимодействия с почтой Японии
Первоочередная задача, которая стояла перед нашей командой, — с минимальными трудозатратами разработать сервис, который бы автоматизировал бизнес-процесс оформления почтовых отправлений.
Проблематика:
Часть приобретенных пользователями товаров отправляются почтой Японии. В соответствии с требованиями, каждое почтовое отправление должно быть оформлено определенным образом — с регистрацией на сайте почты Японии, генерацией специального бланка, накладной и покупкой конвертов, продажа которых осуществляется исключительно почтой Японии.
Указанные действия производились вручную, что занимало достаточно большое количество времени, т. к. в процессе регистрации приходилось заполнять большое количество полей, для которых необходимо было копировать данные из внутренних сервисов (приложений). Кроме заполнения формы регистрации почтового отправления, сотруднику необходимо внести информацию в локальное приложение о трекинг-номере оформленной посылки, т. к. данная информация необходима для внутренних бизнес-процессов компании.
Данный формат работы достаточно неудобный и приводит к дополнительным трудозатратам со стороны сотрудников для выполнения однотипных действий в нескольких приложениях. Также при выполнении большого количества однотипных действий повышается влияние человеческого фактора, что может привести к возникновению ошибок, которые в свою очередь негативно влияют на уровень оказываемого сервиса.
Для решения указанных проблем и сокращения трудозатрат было принято решение автоматизировать данный процесс.
Решение:

Сервис должен был предоставлять API для интеграции с внутренним ПО компании. В зависимости от выполняемого сценария в ответе от API должны возвращаться: трекинг-номер посылки и бланк с информацией об отправлении в формате PDF либо накладная в формате PDF.

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

Разработка данного функционала была произведена в короткие сроки — 1,5 рабочих дня. Решение этой задачи позволило сократить избыточные трудозатраты на оформление почтовых отправлений через почту Японии и в целом облегчить работу сотрудников компании.
Для реализации поставленной задачи был выбран фреймворк Lumen и Selenium.
На базе Lumen было разработано:
  • RESTful API для обращения к сервису из внутреннего ПО компании.
  • Сценарии для выполнения действий на сайте почты Японии.
  • Балансировщик, который выбирает случайным образом один из свободных Selenium-серверов.
Окружение виртуальных машин для выполнения сценариев:
  • Centos
  • Selenium server
  • Xserver
  • xvfb
  • Mozilla Firefox
Управление переводами
На текущий момент ведется разработка собственного переводчика текстов с японского на русский язык, который будет иметь направленность на аукционную тематику.

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


Для решения поставленной задачи были выбраны:

  • Фреймворк — Laravel 5
  • СУБД — Postgres
  • Интерфейс построен на базе twitter bootstrap

Реализованный функционал:

  • Импорт базы предложений, подлежащих переводу, в Postgres
  • Система управления пользователями
  • Функционал для «потокового» перевода предложений:
    - Реализованы блокировки данных для исключения возможности выдачи одного и того же предложения различным пользователям.
    - Реализован интерфейс, в котором отображаются возможные варианты перевода данного предложения на русский и английский языки (перевод осуществляется с использованием внешних сервисов), поиск по БД переведенных предложений и отображение контекста, в котором используется данное предложение.
  • Вывод статистических данных, которые также используются для оплаты услуг переводчиков.

Автоматизация развертывания сервисов на Ansible
Подготовка окружения сервера к развертыванию проекта выполнялась вручную. В связи с этим было принято решение написать сценарии Ansible для автоматизации настройки окружения и развертывания внутренних сервисов.
«Мы только в начале пути и у нас грандиозные планы, поэтому работы для InJapan продолжаются в ежедневном режиме. На сегодняшний день мы реализовали лишь 10% того, что будет в финале. Очень многое находится в стадии активной разработки. Мы ежедневно следим за поведением наших пользователей и оперативно вносим соответствующие корректировки — это позволяет быстро реагировать на результаты внедренных изменений и стремительно двигаться вперед»
Максим Гашков,
Технический директор InJapan.ru