Как устроена инженерия в Uber (Рубрика Engineering)
После воспоминаний про былые дни в Uber от Charles-Axel Dein я заинтересовался тем, а как сейчас устроена инженерная часть Uber и собрал примерно такую информацию.
Инженерное крыло компании насчитывает 4к+ инженеров (в 2023 их было 4k) и распределено по всему миру. Инженерные команды делятся на две категории: “program” и “platform". Program команды полностью владеют своей частью продукта (как клиентской частью в приложении, так и необходимым бэкендом) и метриками его успеха. В свою очередь Platform-команды специализируются на развитиии универсальных технологических компонентов и инфраструктуры, которыми пользуются все продуктовые группы.
В 2023 году в Uber были большие перемены в IT - были созданы отдельные ветки под эти program и platform направления
- Правин Нага стал CTO по направлениям Mobility и Delivery, который курирует развитие всех пользовательских продуктов и приложений Uber с
- Альберт Гринберг стал VP по платформенной инженерии (раньше он работал VP в Azure). Он отвечает за общую техническую платформу, инфраструктуру, данные и инструменты.
Если говорить про архитектуру и инфраструктуру, то уже к 2016 году ребята распилили монолит на множество микросервисов, каждый отвечающий за свою функцию (поиск автомобилей, расчёт цены, профили пользователей, платежи, карты, уведомления и т.д.). Такая распределённая архитектура позволила командам развивать разные части системы параллельно и масштабировать их независимо. Однако она же требовала передовых решений для оркестрации, хранения данных и мониторинга - они создавали собственный "облачный" стек внутри компании. Например, в том же 2016 году ребята рассказывали как они разработали "Schemaless" - свой datastore с использованием MySQL. Дальше часть сервисов мигрировала в облака, например, Fulfillment платформа к 2021 году переехала на движок хранения в виде Google Spanner в GCP.
До начала 2023 года 95% нагрузок жили inhouse, а дальше пошел масштабный переезд в публичное облако, что было анонсировано в результатах Q1 2023 для инвесторов. Uber заключил стратегические соглашения с Google Cloud и Oracle Cloud на 7 лет, чтобы перенести свои серверные системы в облака этих провайдеров. Такой мультиоблачный подход выбран для повышения надёжности и гибкости. Кстати, в Oracle облаке они поехали на ARM-процессоры Ampere для сокращения костов и уже к 2024 году тысячи сервисов Uber мигрировали на Arm-архитектуру в Oracle Cloud, что дало выигрыш в соотношении цена/производительность и снизило зависимость от x86.
Backend архитектура построена вокруг контейнеризации и оркестратора, что позволяет разработчикам деплоить обновления сотни тысяч раз в неделю без простоев. В ходе переезда в облако Uber заменил устаревшую самописную систему деплоя (µDeploy) на новую multicloud платформу под названием “Up”. Благодаря этому к 2022 году в облако переехало 2+ mln 2 ядер, а также большинство сервисных команд абстрагировались от низкоуровневых деталей (т.е. для разработчиков деплой микросервиса теперь одинаков вне зависимости от среды: inhouse или cloud).
Развитие AI можно разделить на эпохи (подробнее в статье 2024 года):
- Предиктивная ML (2016–2019) - упор на табличные задачи (ETA, риск, прайсинг) с XGBoost и зарождающиеся DL-кейсы (3D-маппинг, автопилот), запуск централизованной платформы Michelangelo и фичестора Palette
- Масштабирование deep learning (2019–2023) - переход к DL как first-class citizen, унификация инструментов в Michelangelo 2.0, рост использования DL моделей (1+ mln rps)
- Gen AI этап (с 2023) - LLM/GenAI для клиентского опыта и внутренней продуктивности, развитие LLMOps и GenAI Gateway с доступом к внешним и собственным моделям при сохранении единой платформы и MLOps-процессов.
В 2023 году компания запустила инициативу Uber AI Solutions, где предлагает своим корпоративным клиентам сервис по сбору и разметке данных для обучения моделей, а также тестированию AI-систем. А вот автономные машины Uber сам не развивает, а партнерится с внешними компаниями.
#Architecture #Management #Software #Leadership