Лого AliExpress Россия
0
Обложка: Великий шёлковый путь, или локализация AliExpress Россия. Часть 1: Frontend, Backend и мобильные приложения

Великий шёлковый путь, или локализация AliExpress Россия. Часть 1: Frontend, Backend и мобильные приложения

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

С чего всё началось

Делать хорошие локальные продукты из глобального офиса очень сложно. Почему? Представьте, что ваша компания открыла офис в Северной Африке, и там работает примерно 0,2-0,4% от общего числа ваших сотрудников. И в один прекрасный день они говорят, что ваш продукт не подходит для региона. Ни один человек из глобального офиса, который даже не является пользователем продукта для Северной Африки, сделать с этим ничего не сможет. Очевидное решение — локализация.

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

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

А теперь давайте подробнее.

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

Сейчас в сторах только локальное приложение, разработанное для пользователей из России и стран СНГ. Но долгое время приложений AliExpress в сторах было два.

Почему мы решили писать своё?

Во-первых, в приложении, куда контрибьютят команды из 8 стран, сложно вносить изменения. Всё согласовать, встать в очередь, успеть до код-фриза (а они сопровождают каждую из 4 распродаж + новогодние каникулы) — долго, сложно, демотивирующе.

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

Немного о технологиях Alibaba

У приложений Alibaba есть много общих компонентов, которые позволяют экономить силы на разработку и не писать одно и то же несколько раз. Среди них несколько Backend Driven UI фреймворков разной степени специализированности.

Ещё есть движки типа React-native. Например, собственный open source движок Weex. Он позволяет с помощью команд бэкенда собрать нативную форму, с которой можно дальше работать. Это крутая технология, и она пользуется популярностью, потому что позволяет уменьшить приложение.

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

Что делаем мы

При локализации мы постепенно переписываем кусочки кода — в основном на Swift и Kotlin, а не на Objective-C и Java, как в Китае. Так уже переписано примерно 80% user journey (это основные экраны, которые юзер проходит для совершения покупки: главный экран, поиск, страница товара, корзина, чекаут и список заказов).

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

Из последнего: приложение AliExpress Россия релизится раз в неделю. В оригинальном так не получится, потому что нам надо согласовывать все изменения с огромным количеством команд.

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

Frontend

Следующая важная часть, которую нужно локализовать — фронтенд. Что тут нужно учитывать?

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

Во-вторых, у любого интернет-магазина в России есть два очень важных клиента — это Яндекс и Google. Они приносят площадке трафик, и, разумеется, ожидают, что сайт будет быстрым, чтобы можно было одновременно загрузить много вкладок. Кроме того, им нужен Service Side Rendering.

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

  • React + TypeScript, Node.js для SSR;
  • Микрофронтенд, компонентная архитектура с изолированными виджетами;
  • Backend driven design с помощью единой технологии — Mixer (9-й по счету);
  • Метрики и разметка для аналитики встроена в платформу.

Лучше остановимся на итогах.

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

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

Backend

Идея довольно проста: нам нужно контролировать разработку и функциональность.

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

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

Подход к локализации бэкенда у нас довольно простой. Сперва мы быстро делаем Fork/Redeploy, при этом правим зависимости и забираем на себя ответственность за продукт.

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

Backend-технологии Alibaba

Большая часть технологий доступна в Alibaba Cloud. Есть небольшая неразбериха, связанная с тем, что технологии часто называются не так, как обозначено во «внутренностях» компании, но это не критично.

Наш внутренний кластер снаружи называется Alibaba Cloud Container Service for Kubernetes, и все приложения там живут в собственном контейнере, который называется Pouch.

Ещё есть две очень крутые технологии: RTP (Prediction Engine) и TPP (Taobao Personalization Platform) — которые доступны только внутри компании. По виду — это serverless приложения, где ты просто деплоишь абстрактный алгоритм и абстрактные данные, и они как-то сами расползаются по кластеру. Ничего похожего вне Alibaba мы не видели.

Основной протокол общения серверов — это HSF (High-speed Service Framework). Это сильно поправленный open source, внутри которого можно условно поставить галочку, и он опубликуется наружу с помощью протоколов Top/Mtop (B2B и B2C соответственно).

Что используем мы

Здесь всё довольно просто: K8S, микросервисы, GRPC. Языки мы используем практически все (Kotlin, Java, C#, Go и так далее), потому что так проще нанимать людей.

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