Сегодня мы кратко расскажем о подходах, стеке, фреймворках и облачных решениях, на которых построена наша технологическая платформа. Передаем слово Юрию Буйлову, техническому директору «СберАвто». Последние несколько лет на автомобильном рынке сложная ситуация: цены растут, хороших автомобилей все меньше, а недобросовестных продавцов больше. Проблемы с логистикой и санкции ситуацию не улучшают. Процесс покупки авто часто непрозрачен и требует временных затрат. Нужно найти подходящий экземпляр, осмотреть и проверить его, договориться с продавцом. Если авто в другом городе, то покупатель вынужден на свой страх и риск искать специалиста, который поможет с оценкой. Многие подборщики сотрудничают с перекупщиками и салонами — в таком случае сложно рассчитывать на объективность. Но даже если покупателя все устраивает, часто ему приходится рисковать деньгами и временем и ехать в другой регион на подписание договора. Чтобы покупателю не приходилось ездить по продавцам или салонам, нанимать подборщиков, которые зачастую не несут никакой ответственности, нужны новые игроки рынка, меняющие сложившийся уклад. Это уже делают онлайн-маркетплейсы, позволяющие приобрести автомобиль так же легко, как любой товар в интернете. Например, в США работает сервис Carvana, который известен своими многоэтажными «вендинговыми автоматами» с транспортом. В Европе аналогичные услуги предлагает Cazoo — за первый год работы компания продала 10 тыс. автомобилей. Есть еще европейская Carvago, британская Carwow. В 2019 году наша команда «СберАвто» сделала российский сервис, который перевел процесс продажи авто в онлайн. Машину можно выбрать на сайте или в приложении, там же заказать независимую оценку, оплатить одной кнопкой, получить кредит, оформить страховку. И всё это можно сделать прямо в чате. За автомобилем не нужно никуда ездить — мы доставим его в назначенное место. Разработка MVP заняла у нас три месяца и потребовала гибкой ИТ-инфраструктуры — далее расскажу подробнее. В основе технологической культуры «СберАвто» лежит Cloud Native подход, микросервисная архитектура на бэкенде и полностью удаленная работа с первого дня и для всех. У нас небольшая, но эффективная распределенная команда в пяти часовых поясах и гибкие процессы, которые с одной стороны позволяют соответствовать высоким стандартам банка, а с другой создают благоприятную среду для роста и развития. Сервис «СберАвто» развивался по принципу Mobile First, то есть первым делом мы запустили мобильное приложение для iOS и Android, а уже потом опубликовали web-витрину как основной канал для performance-маркетинга. Наша фронтальная система — это продуктовая полка с предложениями дилерских и партнерских автомобилей и персонализированным набором сопутствующих сервисов — кредитные программы, страхование, подбор и трейд-ин. Центральное место в процессе онлайн-покупки авто занимает ML/DataDriven система бэк-офиса с асинхронной коммуникацией в чате. Клиент привычно пишет в чат в приложении, ему автоматически назначается личный помощник, который максимально подходит его профилю и условиям сделки. Полноценный виртуальный колл-центр с распределенными сотрудниками, но вместо звонков по телефону весь процесс происходит в чате — от выявления потребности клиента до оплаты и организации доставки. На бэкенде микросервисная архитектура, сервисы на Golang с использованием Open Source решений: go-kit и вполне стандартным набором инструментов — Jaeger, Prometheus, Kibana + Grafana. Для работы с базами данных MySQL и PostgreSQL используем GORM (все – OSS) — ORM-библиотеку для Golang. Все сервисы развернуты Helm-чартами в кластере Kubernetes (OSS) и коммуницируют по gRPC. Для управления релизами мы используем методологию CI/CD и Gitlab CI в частности. На фронтенд-части приложения используем React. На клиентском сайте – NextJS, для отрисовки Server-Side Rendering (SSR), а для управления состоянием – Redux (все три – OSS).  В качестве фреймворка под мобильную разработку выбрали React Native. Для управления состоянием используем Redux, а для его сохранения в файловой системе — библиотеку Redux Persist (тоже OSS). Навигация идет через React Native Navigation (OSS). С технической точки зрения ReactNative — это кроссплатформенное решение, но иногда нам приходится погружаться в код для iOS и Android. Например, для интеграции с нативными библиотеками и расширениями внутри фреймворка. Проект «СберАвто» был построен с нуля. Чтобы ускорить разработку на старте, в качестве sandbox-платформы мы тестировали сервисы нескольких российских и зарубежных облачных провайдеров. Нам было важно, чтобы провайдер мог оперативно решать вопросы, связанные с надежностью, обеспечением SLA и масштабированием. По результатам пилотного запуска сервиса Cloud Container Engine было принято решение мигрировать на облачную платформу Advanced. Мы перенесли инфраструктуру на платформу, при этом оставили в старом облаке резервные копии и реплики баз данных. Мы изначально проектировали «СберАвто» как Cloud Native приложение, поэтому с переездом особых проблем не возникло. Главное — мигрировать объектное хранилище и данные, а развертывание необходимых сервисов не занимает много времени. Нам был нужен целый набор инфраструктурных компонентов для контейнеризации, виртуализации, коллаборации. Также было важно настроить системы для мониторинга, логирования и работы с данными. Они поступают из различных источников, их нужно как-то валидировать и где-то хранить. Для каждой задачи у облачного провайдера есть готовое решение. В итоге мы использовали Cloud Container Engine  (сервис на основе Kubernetes) для управления контейнерной инфраструктурой. Развертывание и масштабирование кластеров автоматизировали через него же. Для работы с данными используем Object Storage Service — в нем лежит более 12 млн изображений автомобилей — и набор управляемых сервисов Advanced (базы данных и брокеры сообщений). Кстати, команду Advanced вдохновил опыт миграции клиентов, и сейчас они запустили большую акцию «Переезжай совсем»: предлагают гранты на миграцию в облако на выгодных условиях. За прошлый год число пользователей нашего сервиса выросло больше, чем в пять раз. Приложение «СберАвто» даже заняло второе место по числу скачиваний в России с 1,02 млн загрузок. В будущем мы планируем расширять пользовательскую аудиторию и арсенал инструментов на базе систем AI и платформы ML Space. Модели машинного обучения уже помогают анализировать маркетинговые кампании и продажи. В перспективе мы продолжим развивать интеллектуальные решения для сопоставления менеджеров и клиентов, а также для семантического анализа чатов с потенциальными покупателями. Сейчас для каждого менеджера, используя данные его продаж за прошлые периоды, мы считаем AffinityIndex [это мера соответствия целевой аудитории] с учетом доли в продажах новых авто, распределения продаж по ценовым сегментам машин, по их маркам, по гендерному признаку, возрасту покупателей и регионам их присутствия. Соответствующие модели строим в Jupyter Notebook, а для развертывания в продакшн используем fastAPI. Все модели перед запуском проходят оценку эффективности и A/B-тестирование. За пару лет мы пробежали почти весь путь, который автомобильные классифайды проходили десятилетия, и теперь действительно умеем продавать автомобили онлайн. Естественно, не без помощи современных технологий и подходов, которыми мы можем и дальше с вами делиться. Пишите, о чем вам хочется узнать подробнее и как вы в целом относитесь к онлайн-покупке авто? Что еще есть у нас в блоге: Как облако оптимизирует CI/CD ритейлера одежды Как и для чего мы построили ML Space Как и зачем команда Aitarget Tech обучала трансформационную ML-модель  Редактор Cloud.ru