Внутренняя кухня крупнейшего классифайда: как работает Avito Tech
Avito Tech — это внутреннее технологическое подразделение компании Авито, которое выступает в роли центра компетенций и разработчика всех цифровых продуктов платформы. Оно объединяет тысячи инженеров, аналитиков и специалистов по данным, обеспечивая работу сервиса для более чем 100 миллионов пользователей ежемесячно. Главная задача подразделения — создание отказоустойчивой микросервисной архитектуры, внедрение машинного обучения для модерации контента и поддержка высокого темпа разработки новых функций.
В отличие от классических аутсорс-команд, Avito Tech глубоко интегрирован в бизнес-процессы маркетплейса, отвечая за вертикали «Недвижимость», «Авто», «Работа» и «Товары». Инженеры здесь не просто пишут код, а решают задачи масштабирования под экстремальные нагрузки, разрабатывают собственные алгоритмы ранжирования и строят системы безопасности, предотвращающие мошенничество в реальном времени.
Ключевой факт: Платформа обрабатывает пиковые нагрузки, сопоставимые с крупными мировыми маркетплейсами, при этом 99% процессов модерации объявлений полностью автоматизированы благодаря собственным ML-моделям.
Организационная структура и принципы работы
В основе организации труда в Avito Tech лежит принцип кросс-функциональных команд. Вместо жесткого деления на отделы фронтенда или бэкенда, специалисты объединяются вокруг конкретных продуктовых гипотез или сервисов (например, команда «Поиск», команда «Чаты», команда «Оплата»). Это позволяет сокращать время доставки фич (Time-to-Market) и избегать бюрократических задержек, характерных для монолитных структур.
Каждая команда обладает полной автономией в выборе инструментов в рамках общего технологического гайдлайна. Такой подход, часто называемый «You build it, you run it», означает, что разработчики сами отвечают за стабильность своего кода в продакшене, участвуя в дежурствах и анализе инцидентов. Это формирует высокую культуру ответственности и качества кода.
Основные направления деятельности подразделения включают:
- Разработку ядра платформы: Создание и поддержка микросервисов, обеспечивающих базовый функционал (регистрация, публикация объявлений, личные сообщения).
- Data Science и ML: Построение моделей для умной выдачи, персонализированных рекомендаций и детекции подозрительной активности.
- Инфраструктуру и DevOps: Обеспечение бесперебойной работы тысяч серверов, настройка балансировщиков нагрузки и систем мониторинга.
- Мобильную разработку: Создание нативных приложений для iOS и Android, которые являются основным каналом взаимодействия пользователей с площадкой.
Технологический стек: чем работает платформа
Стек технологий Avito Tech сформировался исторически и эволюционировал вместе с ростом нагрузки. Компания делает ставку на проверенные, производительные решения, способные масштабироваться горизонтально. Выбор инструментов диктуется конкретными задачами: где нужна скорость разработки — используют скриптовые языки, где критична производительность — компилируемые.
Бэкенд и серверная логика
Фундаментом серверной части являются два основных языка программирования: Python и Go (Golang).
- Python доминирует в задачах, связанных с бизнес-логикой, быстрой разработкой прототипов, интеграцией со сторонними сервисами и, конечно же, в области машинного обучения и анализа данных. Богатая экосистема библиотек делает его незаменимым для Data Science команд.
- Go активно применяется для создания высоконагруженных микросервисов, где важны низкая задержка (low latency) и эффективное использование ресурсов. На Go написаны многие критические компоненты системы обработки сообщений, шлюзы и сервисы реального времени.
- В отдельных случаях, особенно в унаследованных системах или специфических инфраструктурных задачах, может встречаться Java или Kotlin, но вектор развития явно смещен в сторону связки Python + Go.
Совет для разработчиков: Если вы планируете карьеру в подобных высоконагруженных проектах, глубокое понимание многопоточности в Go и асинхронного программирования в Python будет вашим главным преимуществом на собеседовании.
Фронтенд и мобильные приложения
Веб-интерфейс Авито — это сложное одностраничное приложение (SPA), построенное с использованием современных фреймворков. Основным инструментом является React, который позволяет создавать динамичные интерфейсы с быстрым откликом. Для управления состоянием приложения и серверного рендеринга (SSR) используются соответствующие экосистемные решения, обеспечивающие хорошую SEO-оптимизацию страниц.
В мобильной разработке компания придерживается стратегии нативной разработки:
- iOS: Swift.
- Android: Kotlin.
Такой выбор обусловлен необходимостью максимального использования возможностей операционных систем, работы с камерой, геолокацией и сложной анимацией, что критично для пользовательского опыта в приложениях с миллионами установок. Кроссплатформенные решения используются точечно, там, где это экономически оправдано и не жертвует производительностью.
Хранение данных и поиск
Управление данными в таком масштабе требует комбинации различных типов СУБД.
| Тип данных | Технология | Назначение |
|---|---|---|
| Реляционные данные | PostgreSQL | Хранение профилей пользователей, транзакций, структурированных параметров объявлений. Основная рабочая лошадка. |
| Документоориентированные | MongoDB | Хранение гибких структур, логов, черновиков объявлений и данных, не требующих жесткой схемы. |
| Кэширование | Redis | Сессионные данные, временное хранение результатов тяжелых запросов, очереди задач, счетчики. |
| Поисковый движок | Sphinx / Elasticsearch | Полнотекстовый поиск по объявлениям. Собственные доработки движка позволяют учитывать сотни факторов ранжирования. |
Особое внимание уделяется поиску. Стандартные решения дорабатываются инженерами компании для учета географической близости, релевантности текста, поведения пользователя и свежести объявления. Поиск должен выдавать результат за миллисекунды даже при одновременной работе миллионов людей.
Инфраструктура и потоковая обработка
Для оркестрации тысяч микросервисов используется Kubernetes. Контейнеризация через Docker стала стандартом де-факто, позволяя упаковывать приложения вместе со всеми зависимостями и развертывать их в любом дата-центре компании.
Обработка событий в реальном времени (просмотры, клики, отправка сообщений) построена на базе брокеров сообщений, таких как Apache Kafka. Это позволяет реализовывать архитектуру, близкую к Lambda-архитектуре: данные параллельно идут в хранилище для долгосрочной аналитики (Batch) и обрабатываются в реальном времени (Speed layer) для мгновенного обновления статистики и триггеров безопасности.
Мониторинг осуществляется с помощью стека Prometheus + Grafana, supplemented внутренними дашбордами, которые отображают здоровье сервисов, метрики бизнес-логики и уровень ошибок (SLA/SLO).
Архитектурные вызовы и решения
Масштаб Авито накладывает уникальные требования на архитектуру. Простое увеличение количества серверов не решает всех проблем; необходима грамотная организация взаимодействия компонентов.
Микросервисная архитектура позволяет изолировать сбои. Если падает сервис «Избранное», пользователи все еще могут просматривать ленту и писать продавцам. Коммуникация между сервисами происходит преимущественно через легковесные протоколы gRPC (для внутреннего взаимодействия с высокой производительностью) и REST API (для внешних клиентов).
Автоматизация модерации — один из самых сложных технических вызовов. Ежедневно на платформу загружаются миллионы новых объявлений и фотографий. Проверять их вручную невозможно. Система компьютерного зрения анализирует изображения на наличие запрещенного контента, дублей и несоответствий категории, а NLP-модели проверяют текст на спам и мошеннические схемы. Ручная модерация требуется лишь в спорных случаях, доля которых сведена к минимуму.
Отказоустойчивость обеспечивается за счет гео-распределения дата-центров и механизмов автоматического переключения трафика (failover). Регулярно проводятся учебные тревоги (Chaos Engineering), когда инженеры искусственно отключают части инфраструктуры, чтобы проверить готовность системы к реальным авариям.
Частые ошибки при проектировании подобных систем
При попытке воспроизвести архитектуру уровня Avito Tech начинающие архитекторы часто допускают ряд типичных ошибок:
- Преждевременная оптимизация: Попытка сразу внедрить сложные распределенные системы там, где достаточно монолита или простой базы данных. Это усложняет поддержку без реальной пользы на старте.
- Игнорирование идемпотентности: В распределенных системах запросы могут дублироваться из-за сетевых сбоев. Если сервис оплаты или списания средств не учитывает это, возможны финансовые потери.
- Слабая стратегия кэширования: Отсутствие четкого понимания, какие данные можно кэшировать, а какие должны быть всегда актуальными, приводит либо к устаревшей информации у пользователей, либо к перегрузке баз данных.
- Отсутствие наблюдаемости (Observability): Внедрение микросервисов без налаженного логгирования, трассировки запросов и метрик делает систему «черным ящиком», в котором невозможно быстро найти причину сбоя.
Часто задаваемые вопросы (FAQ)
Какой язык лучше учить для работы в Avito Tech? Наиболее востребованы Python и Go. Python нужен для бэкенда общей логики и машинного обучения, Go — для высокопроизводительных сервисов. Знание обоих языков сделает вас универсальным кандидатом.
Используют ли они облачные провайдеры? Avito Tech исторически развивался на собственной инфраструктуре (On-premise) для полного контроля над данными и производительностью, однако современные практики активно внедряют гибридные подходы и контейнеризацию, что сближает их процессы с облачными стандартами.
Как устроено тестирование? В компании принят подход к автоматизированному тестированию на всех уровнях: от юнит-тестов, которые пишут разработчики, до интеграционных и нагрузочных тестов, запускаемых в CI/CD пайплайне перед каждым релизом.
Есть ли у них открытые проекты? Да, команда регулярно выступает на конференциях, ведет технический блог и поддерживает ряд Open Source проектов, связанных с их внутренними инструментами и библиотеками.