Где живут ваши объявления?
Мы открываем техно-блог компании Avito. Многие знают бренд, но не так много тех, кто знает, как сервис устроен с технической стороны. В своём блоге мы приоткроем завесу неизвестного и расскажем о технической кухне сервиса.
Начнем с небольшой истории о том, что проект представляет из себя сегодня, чем занимается команда инженеров, и что мы планируем делать в ближайшем будущем. Еще мы собрали в этом посте множество ссылок на уже опубликованные материалы, доклады и презентации нашей команды, которыми давно хотели поделиться. Хотите знать, где живут ваши объявления? Добро пожаловать под кат!
Начало
Очень сложно начинать короткий рассказ о компании с насыщенной историей так, чтобы ничего не забыть и не сильно вдаваться в детали. Детали оставим для будущих статей, в которых постараемся подробнее раскрыть те или иные вопросы. Если у вас есть особые или интересные темы, о которых вы бы хотели услышать от разработчиков Avito, пишите о них в комментариях — мы обязательно затронем эти вопросы.
Как и в случае многих больших проектов, история Avito начиналась с небольшой команды. Первая версия сайта была запущена в 2007-ом году, и первые шаги были полны проб и ошибок. В текущем виде сайт сформировался лишь два года спустя. Сервис начинал создаваться силами всего 4 разработчиков, которые занимались абсолютно всем, от инфраструктуры до клиентской части. Сайт 2009-го года вряд ли можно было бы отправить на конкурс «Лучший сайт чего-бы-то-ни-было». Но этот результат до сих пор вызывает чувство ностальгии у причастных к нему. Как и определенную гордость, ведь это было сделано малым количеством ресурсов, но достаточно для того, чтобы заявить о себе и заложить фундамент успешной компании.
Сложно представить, но до 2012-го года размер команды разработки практически не менялся. Однако проект становился все больше, и это стало необходимостью. Так с 2012-го команда начала активно расти, увеличиваясь в разы. Появилось деление на специализации, направления, проекты, команды, группы. Сейчас над Avito трудится технический департамент из более чем 250 специалистов.
Avito сегодня
Сегодня Avito стабильно входит в топ-5 площадок рунета, топ-3 мировых классифайдов по версии различных источников. Ежемесячно через web и мобильные приложения сервис обслуживает более 35 миллионов пользователей, которые ежедневно публикуют около миллиона новых объявлений (в “бэк-офисе” их накопилось уже более миллиарда), совершают более 100 тысяч сделок. По данным Яндекса, в некоторых городах России (например, в Москве), по числу просмотров страниц Avito опережает всех, включая социальные сети.
Avito является высоконагруженным проектом. Немного цифр, чтобы оценить масштаб: 300+ серверов, 10TB в postgres, 270TB картинок, 13Gbit/s трафика вечером в пике, около миллиона запросов к бекенду в минуту. Поэтому экспертиза в области обработки данных является одной из самых критичных для наших бизнес-процессов. При этом стоит понимать, что такие объемы данных нужно не только накапливать и хранить, но и обрабатывать, фильтровать, классифицировать и обеспечивать поиск по ним. Эффективно справляться со всеми задачами не может один-единственный инструмент, потому используется ряд решений, таких как: PostgreSQL, Tarantool, Vertica, MongoDB, Redis и прочие системы хранения. Мы обязательно поделимся рассказами про особенности архитектуры в будущих статьях. Пока же можно ознакомиться с докладами, в которых наши коллеги делятся своим опытом:
Много данных — это хорошо для сервиса, но большая проблема для пользователя – как найти нужное? В этом помогает систематизация объявлений и поиск по ним. Поиск — наиболее сложная задача. И проблема здесь не столько в объемах данных, сколько в человеческом факторе. Дело в том, что пользователи постоянно ошибаются, как в описании объявлений, так и в поисковой строке. Одна из основных задач — нивелировать ошибки в описании и понять, что же имел в виду пользователь.
Для устранения ошибок в описаниях используются различные справочники и алгоритмы коррекции, а так же более продвинутые подходы вроде компьютерного зрения. Последнее, например, с очень высокой вероятностью (по некоторым категориям более 95%) определяет, правильно ли пользователь выбрал категорию. Кроме того, Avito регулярно привлекает специалистов по машинному обучению для участия в конкурсах (на платформах machinelearning.ru, boosters и kaggle), целью которых является поиск наиболее эффективных алгоритмов для решения различных прикладных задач.
Для полнотекстового поиска используется Sphinx, и мы регулярно делимся опытом его использования, активно участвуем в развитии технологии.
Минутка рекламы… а точнее, поговорим о ее показе. Экономические и этические вопросы оставим для других блогов. Здесь же интересна техническая составляющая этого вопроса. Дело в том, что рекламодателям и площадкам интересна только целевая аудитория. Для ее определения используется сегментирование аудитории. Проблема в том, что пользователей и их запросов огромное количество, а чтобы определить категорию пользователя, необходимо учитывать множество критериев. При этом время на определение категории ограничено, ведь дальше она будет передана рекламным площадкам, между ними состоится аукцион и только тогда определится рекламный блок к показу. Все это связано с большим количеством данных и требованием, чтобы все происходить за доли секунды. Подробнее мы об этом уже рассказывали на конференциях и митапах.
Какие бы сложные задачи не решались на стороне сервера, это все скрыто от обычного пользователя. А то, что видят пользователи, работая с сервисом, делается силами фронтенд команды. Изначально сайт создавался на традиционных для того времени технологиях, серверный рендеринг и jQuery. Но не так давно мы полностью отказались от jQuery в пользу браузерных API и небольших библиотек, решающих конкретные задачи. Фронтенд-разработка старается идти в ногу со времени, использовать актуальные технологии и подходы. Например, новая версия JavaScript используется с момента утверждения спецификации (сейчас используется ECMA2016). Помимо этого появляются все больше веб-приложений (SPA), которые реализуются на React и basis.js. Фронтенд-разработчики так же участвуют в open source проектах (таких, например, как CSSO), создают инструменты и делятся своим опытом на конференциях:
Обе команды, и iOS, и Android, используют самый современный стек технологий. Во-первых, это Swift и Kotlin, которые уже практически полностью заменили в наших продуктах тяжелое наследие Java и Objective-C. Во-вторых, это инвестирование в развитие и продвижение инженерных практик — CI, CD, Code Review, автоматизация тестирования. В-третьих, это чистая и масштабируемая архитектура, которая позволяет нескольким группам разработчиков развивать крупный проект без возникновения коллизий и оперативно реагировать на нужды пользователей.
Дизайнеры не только рисуют макеты, но и пишут собственные приложения, плагины, разрабатывают сложные интерактивные прототипы, участвуют в разработке дизайн-платформы. На некоторые каверзные вопросы ребята ответили в статье на vc.ru.
Тестирование в Avito появилось не сразу, первые QA-специалисты присоединились к команде в 2012-ом году. Сегодня в ней более 40 специалистов, треть из которых — автоматизаторы. Набор инструментов достаточно стандартный: PHP + PHPUnit, Selenium, Selendroid. Для организации взаимодействия между тестировщиками и разработчиками используется самописный инструмент “Avito.Cthulhu”, который позволяет хранить тест-кейсы, распределять задачи и отслеживать те, что вернули на тестирование.
Вот так выглядит разработка Avito, если рассказывать кратко. Конечно, многое ещё осталось за кадром. Постараемся в скором времени исправить этот недостаток!
Путешествие внутрь Avito: платформа
Мы уже рассказали вам о хранилище Avito, картинках, медиапикере, но главный вопрос так и оставался нераскрытым: какая она, архитектура платформы, из каких компонентов состоит и какой стек использует. Вы просили рассказать об аппаратной составляющей Avito, используемой системе виртуализации, СХД и так далее — ну что же, отвечаем.
Аппаратная часть
Долгое время наши серверы стояли в датацентре Basefarm в Швеции, но в январе-феврале прошлого года мы справились с масштабной задачей по переезду в московский датацентр Dataspace. Про миграцию, если это будет интересно, расскажу в отдельной статье (про перенос базы мы уже рассказывали на Highload 2016).
Переезд был вызван несколькими причинами. Во-первых, нашумевшим законом №242-ФЗ о хранении персональных данных граждан РФ. Во-вторых, мы получили больше контроля над своим железом — не всегда расторопные работники шведского датацентра могли выполнять простейшие заявки по несколько дней; здесь же персонал делает всё быстро, да и в любом случае мы всегда можем лично приехать в ДЦ и поучаствовать в решении возникших проблем.
Серверы
Серверы разделены на несколько функциональных групп, в каждой группе своя конфигурация железа. Например, серверы для PHP-бекэнда выполняют также роль первого уровня хранилища картинок (про картинки подробнее ниже), на них немного оперативной памяти, небольшие диски, но производительные процессоры. На серверах для Redis-кластера, наоборот, много оперативной памяти, а процессоры не такие мощные, и так далее. Такие специфические конфигурации позволили нам заметно снизить стоимость серверов по сравнению с тем, что было раньше, когда многие серверы были универсальной конфигурации, и какие-то ресурсы в них всегда были не утилизированы.
Наша сеть построена по классической двухуровневой схеме: ядро плюс уровень доступа. Для отказоустойчивости каждый коммутатор уровня доступа подключается по оптике к двум разным корневым коммутаторам; поверх этих двух линков делается LACP-линк (один виртуальный линк поверх нескольких физических, позволяет полностью утилизировать все физические линки и добавляет устойчивость к отказу физических линков).
Программная часть
Виртуализация
Аппаратная виртуализация как таковая у нас не используется, а вот виртуализация на уровне операционной системы (aka контейнеры) — очень даже. В основном это LXC (когда-то давно использовалась OpenVZ), но сейчас мы с интересом смотрим на Docker (с Kubernetes) и потихоньку перебираемся на него, а новые микросервисы запускаем сразу в кластере Kubernetes.
О том, как мы используем Kubernetes, мы рассказывали на профильном митапе и Codefest 2017:
Хранилище картинок
в пять раз меньше) серверов с дисками большого объёма.
Все необходимые разрешения картинок генерируются на бэкэнде при загрузке. Картинки некоторых непопулярных размеров не хранятся на серверах, а генерируются nginx’ом на лету. Аналогично с ватермарками: для большинства разрешений они накладываются бекэндом сразу же, но некоторые разрешения мы отдаём партнёрам без ватермарок (а на сайт — с ватермарками), поэтому они накладываются nginx’ом на лету.
Если вдаваться в подробности, то у нас есть по 100 виртуальных картиночных нод первого и второго уровня, которые равномерно раскиданы по физическим серверам соответствующих уровней. Привязка виртуальных нод к физическим регулируется с помощью CNAME-записей в DNS и, в случае с первым уровнем, внешних IP на серверах.
Для снижения нагрузки на наши серверы и экономии трафика и электроэнергии мы используем CDN, однако наша платформа обладает достаточными ресурсами для того, чтобы работать самостоятельно, и мы не завязаны на конкретном провайдере.
Устройство платформы
Входящий трафик балансируется на разных уровнях: L3, L4, L7.
Внутреннее устройство платформы можно описать как “находится в процессе перехода с монолита на микросервисы”. Функциональность поделена на куски, которые мы называем “сервисами” — это ещё не микросервисы, но уже не монолит.
Устройство сервиса типовое: фронтенд на nginx, бекэнд — собственно сервис, и некоторый набор прокси до всех необходимых источников данных — БД, кэшей, других сервисов.
Некоторые подробности об используемых прокси можно узнать из моего выступления на Highload Junior 2016.
Заключение
Часто от высоконагруженных проектов ждут сложной архитектуры, пятиэтажных решений, требующих непрерывной поддержки. Это неправильно — чем сложнее система, тем больше неприятностей может породить самый незначительный баг. Поэтому мы за простоту. Мы придерживаемся принципа KISS, не плодим сущности и не усложняем то, что должно быть простым — и в разработке, и в поддержке, и в администрировании.
Такое устройство платформы позволяет нам легко её масштабировать, а значит избегать множества проблем. Сейчас мы находимся в переходном возрасте периоде и обратили свой взгляд на современные и удобные вещи: Docker и микросервисы. Скоро расскажем, что из этого получится.
История Авито простым и доступным языком
История Авито простым и доступным языком.
Авито калечная, но очень расскрученная доска объявлений заточная под Россию. Предназначена для продажи квартир, машин, носков и прочего барахла, коим завалены шкафы и комоды россиян, а также любимое место поиска работы водителей маршруток и грузчиков.
Основана в 2007 году потомками викингов, шведскими бизнесменами Йонасом Нордландером и Филипом Энгельбертом.
Дизайн Avito также по-деревенски прост и незатейлив, возможно его рисуют его в Ворде. Сайт не изобилует тенями, градиентами и прочими СSS-3 изысками, зато сразу дает понять, где «илита» объявление VIP (красные), где мажоры (желтые), а где те, кто не прошли фэйс-контроль, а потому ничем не будут выделятся. До 2014 года, платными были только такие цветные объявления, сейчас-же, платными становятся почти все категории: «Недвижимость», «Работа», «Услуги», «Животные» и т.д.
По причине платы за объявления на модераторов льются тонны дерьма от разъяренных пользователей обвиняя Авито в мошенничестве. Надо отметить, что дерьмо лилось и раньше, но только от мажоров купивших VIP. Претензии, как правило одни и те же: доверчивый юзер платит деньги, а его объявление удаляется, как не прошедшее модерацию, либо как дубль. Причина до конца не известна, но коммерческий директор Авито Игорь Шелеметьев в интервью передачи «Моё дело» упомянул, что объявления модерируют 70 менеджеров из Украины. Отсюда можно предположить, что разорении россиян – целенаправленный план Киевской хунты, под руководством пиндосов. Россияне пытаются сопротивляться: создают группы в «вконтакте», жалуются друг-другу в «одноклассниках», но противостоять SkyNet очень непросто.
2006 г. Как Йонас кинул Мильнера
2007 г. Столкновение с бездной
В начале 2007 года он познакомился со своим будущим подельником, тоже шведским бизнесменом Филипом Энгельбертом и вместе они, обжигая пальцы об клавиатуру – замутили свой первый сайт! Это был онлайн-аукцион «avitok.ru». По европейскому образцу стали ставить рекламные баннеры, на улицах появились агрессивные школьники раздающие рекламные буклеты Avitok, в газетках фото счастливых людей сорвавших безумный куш на чудо аукционе!
2008-2009 г. На краю пропасти
До 2009 года шведы продолжали спускать деньги на рекламу через поисковики, баннеры, листовки, рекламные акции и к декабрю аудитория доросла до 3,4 млн. уников/17% узнаваемости.
Для сравнения (в тот же период) у ближайших конкурентов:
irr.ru – 3,8 млн. уников/29%
slando.ru – 2,4 млн. уников/26%
Деньги были на кармане и с января 2010 года была принята новая маркетинговая стратегия и на 8 телеканалах, включая «Первый», «ТНТ», «СТС» стартовала реклама под лозунгом «Сколько стоит твой беспорядок», реклама была разработана агентством «Practica», только на телерекламу в 2010 году было потрачено 116 млн. рублей ($3,9 млн. по курсу 2010 г.). Пацаны решили мочить всех и сразу!
С осени 2010 года к телерекламе добавилась реклама через печать, наружную рекламу и радио в крупных городах России. Тогда же Авито достигло 6 млн. уников обогнав главного конкурента irr.ru с 4,2 млн. уников (на тот период). Рекламная компания в 16 раз превысила число просмотров сайта (до 479 млн в месяц, по данным LiveInternet). В 7 раз увеличила количество размещенных объявлений (до 1,8 млн.), а узнаваемость увеличилась до 60%.
Тут Йонас и Филип поняли, что останавливаться нельзя – остановятся, то медленно скатятся опять вниз. Дальнейшая история avito.ru будет по сути копировать 2010 год.
45% выручки от рекламы, 55% от объявлений продвигаемых в топ.
Компания работает в убыток.
По следующим годам сухие цифры статистики, которые скажут сами за себя:
Число рекламных выходов по ТВ, радио и прессе увеличилось в 2 раза. Рекламные расходы выросли до 243 млн. рублей ($8,1 млн. по курсу 2011 г.).
Компания всё еще работает в убыток.
2012 г. Тайна пирамид
Расходы на рекламу составили уже 568 млн. рублей ($18,3 млн. по курсу 2012 г.).
Выходы рекламы: 82,5 тыс. раз
Компания все еще работает в убыток.
В Avito вливаются Slando и OLX (российские версии).
Задавив конкурентов Avito снижает затраты на рекламу:
Выходы рекламы: 16,9 тыс. раз (в 5 раз меньше чем в 2012 г.)
Компания получила первую прибыль в размере 679 млн. руб. ($21,2 млн. по курсу 2013 г.).
2014 г. Размножение
Выходы рекламы увеличились: 48,7 тыс. раз (в 3 раз больше чем в 2013 г.)
Пользовательские платежи составляют 59% от выручки или 2,5 млрд. рублей:
— Продвижение объявления в категории «Детские игрушки»: 229-822 руб.
— Продвижение объявления в категории «Недвижимость»: 739-2,6 тыс. руб.
Весной 2014 г. Авито размножился и на его базе создан ресурс Domofond.ru (80% принадлежит Avito, 20% компании Korbitec – дочки Naspers) сразу же началось его продвижение по ТВ: 98,6 тыс. показов
Осенью 2014 г. введено платное размещение в «Недвижимости»
Годовое размещение витрины стоит 35 тыс. рублей, этим сервисом пользуются примерно 12 тыс. компаний, они принесли Авито 244 млн. руб ($6,4 млн. по курсу 2014 г.).
Вся выручка составила 4,3 млрд. рублей
Размер аудитории: 25 млн.
Размещенных объявлений: 33 млн.
Введено платное размещение в разделах «Работа», «Услуги», «Животные»
Авито купило логистическую платформу-агрегатор CheckOut, позволяющую доставлять товары по всей стране.
Запуск контекстной рекламы на сайте.
Интересный факт: в интервью РБК, один из их русских партнёров шведских бизнесменов посетовал, что за 10 лет бизнеса в России Йонас и Филип не выучили почти ни одного слова на русском — знают лишь базовые слова вроде «привет» и «спасибо».
Avito X: люди — людям
В этом году Avito исполнилось 10 лет. Возможно, кто-то из вас заметил нашу большую рекламную кампанию под слоганом «Люди — людям». А может быть, даже видел результаты юбилейного конкурса объявлений, когда художники рисовали самые оригинальные объявления в режиме онлайн. Это всё — та часть праздника, которую можно было увидеть снаружи. А что же внутри? Если хотите заглянуть за кулисы и узнать немного подробностей о жизни ведущего классифайда в России — жмите на кат!
Начало истории Avito
Avito основали два предпринимателя из Швеции. Йонас Нордландер впервые приехал в Россию в 2006 году после того, как продал корпорации eBay свой проект, онлайн-аукцион Tradera.com. На тот момент за его плечами был успешный проект Bilannonser.se, который был также продан eBay. В 2007 они стали партнёрами с Филипом Энгельбертом — тогда он инвестировал в шведский холдинг Kontakt East Holding (KEH), который купил знаменитый оффлайн-справочник «Желтые страницы». Вместе они придумали Avito.
Сегодня на вопрос о том, как появилось название компании, основатели отвечают — случайность.
«Хорошие домены тогда скупали и перепродавали за огромные деньги. Например, вам нравится название, вы звоните и спрашиваете про него, а вам отвечают:
— Так значит, вам нравится torg.ru, хотите его купить?
— Да, нравится.
— Миллион долларов!
Тогда мы решили найти название доступное и короткое».
Так начался путь Avito.
Хронология
В этом разделе коротко рассказывается об основных вехах развития Avito.
2007 — 2008
Первая версия Avito, запущенная 15 октября 2007 года, предусматривала возможность размещения не только частных объявлений, но и аукционов частных продавцов.
В 2009 году от аукционов было решено отказаться и сфокусироваться на работе с объявлениями.
В 2010 году на телевидении стартовала масштабная рекламная кампания Avito со слоганом «Сколько стоит ваш беспорядок?». Ежемесячная аудитория увеличилась до 10 млн уникальных посетителей. Тогда же появилась модерация объявлений. Avito стало можно просматривать с мобильного телефона.
Были запущены мобильные приложения и сервис «Магазины», позволяющий профессиональным продавцам создавать собственные витрины с товарами. Avito вошел в ТОП-5 самых посещаемых ресурсов Рунета.
В 2012 году появился специальный раздел Личного кабинета, обеспечивающий быстрый доступ к оплате дополнительных услуг Avito и истории операций — Avito Кошелёк.
Бизнес компании рос, и в 2013 году произошло слияние Avito и конкурирующих сайтов объявлений OLX.ru и Slando.ru под брендом Avito. После сделки сайт вошел в тройку крупнейших онлайн-классифайдов в мире. Внутри Avito начала расти “грибница” DWH.
В 2014 году открылся проект Domofond.ru, появился PRO-кабинет для профессиональных пользователей, начала работу Автозагрузка. Произошёл редизайн сайта.
В 2015 году произошло важное событие — контрольный пакет акций Avito был продан южноафриканскому холдингу Naspers. Начал работу сервис Avito Контекст, в состав компании вошел проект Checkout, появилась возможность переписки на сайте с помощью Avito Мессенджер. На рынок вышли сервисы для профессионалов — ActiAgent и ActiDealer.
В 2016 появилась Autoteka — сервис по проверке автомобиля по VIN и Avito Подписки — сервис, в котором мы объединили наш Avito Магазин с возможностью размещать объявления из автоматически возобновляемого пакета размещений.
В 2017 году обновился поиск на Avito. Появился публичный профиль — это персональная страница пользователя сайта Avito, доступная для всех посетителей, на которой есть информация о продавце и его объявлениях. В мобильных приложениях прибавилось много крутых фич: поиск объявлений по фото товара, Vision для скрытия лиц и номеров авто на подаче объявлений, Voice Over, 3D Touch.
Avito сегодня
Байки: не только про технологии
Развитие каждого проекта связано с разными историями: увлекательными, смешными, или драматичными. Вот некоторые из них.
Поддержка настолько сурова
Специалисты поддержки пользователей Avito настолько суровы, что женятся и празднуют свадьбу, не отрываясь от работы! 2011 год.
О первых рекомендациях на Avito
Игорь К., один из первых разработчиков Avito: «Было время, когда мы начали делать баннер рядом с кнопкой «подать объявления» на всем сайте, а я в тот момент продавал на Avito свою белую эппловую мышку. Некоторое время тестовый баннер рекламировал именно ее 🙂 Жалко, фоток не осталось».
Как закалялся мессенджер
Александр М., руководитель группы тестирования: «Запуск мессенджера состоялся под самый Новый год — овертаймили все, требования собирали всем техотделом».
Виталий Л., руководитель разработки серверной части: «Так node.js пришел в Avito. В 2017 он из Avito ушел, т.к. мессенджер переписали на Golang».
Про суперменов
Александр О., разработчик систем тестирования: «Был человек, которого все звали Супермен — он знал ответы на все вопросы. Сейчас таких суперменов больше, но тогда он был один и «ламповый»».
Изменения в стандартах
Виталий Л., руководитель разработки серверной части: «Контекст, который появился в 2015 году, стал вторым большим проектом с сервисной парадигмой. Это был «макро»-сервис, со своей кодобазой, своими БД и сфинксами на своих серверах. Он общался с Avito по API (синхронное по HTTP и асинхронное через rabbit).
Примерно в это же время мы решили следовать стандартам кодирования PSR2, внедрили проверки CodeSniffer’ом и стали причесывать код. Код причесывается до сих пор, зато у нас есть стандарт и мы ему следуем».
О профессиональных вызовах
Денис К., руководитель системного администрирования Avito: «Первый профессиональный вызов — это миграция оборудования, всей платформы, в шведский дата-центр из московского. А спустя несколько лет вступил в силу закон о хранении персональных данных на территории России, и нам нужно было срочно мигрировать платформу обратно. К тому моменту она выросла в десятки раз. И речь шла не столько о количестве серверов, а о тех параметрах, которые определяют сложность и запутанность систем. Сложность задачи, думаю, придавала дополнительные силы многим».
О процессах в работе
Виталий Л., руководитель разработки серверной части: «За эти годы процессы менялись много раз — это приходится делать с ростом команды. Те процессы, которые работают в команде из 10 человек, перестают работать в команде из сотни человек. Один из самых важных моментов, как мне кажется, это параллельное движение технологий в сторону микросервисов и команд в сторону кросс-функциональных юнитов. И с т.з. технологий, и с т.з. команд мы идем к автономности и децентрализации, что полностью согласуется с законом Конвея и что позволяет командам не сбавлять темпы, несмотря на увеличение их на порядки».
О выросших «детях» и доверии команды
Денис К., руководитель системного администрирования Avito: «Первые годы в Avito у нас было не так много опыта, как сейчас, мы не так устойчиво и надёжно строили свои системы. И нам приходили тревожные SMS от нашей системы мониторинга по пять раз за ночь. Приходилось вставать, включать ноутбук и разбираться, что там случилось. Моя будущая жена говорила тогда, что у нас как будто маленький ребенок: успокаиваешь его, и потом снова можно немного поспать.
Многие годы я был единственным системным администратором. Сейчас это — целый юнит. В последние пару лет меня вообще не тревожили в нерабочее время: прошли годы, ребёнок вырос. В целом могу сказать про работу в Avito, что я всё это время несу в себе ощущение того, что мне доверяют. Мне говорили: “Денис, это на тебе, я в тебя верю”. И я не мог подвести команду, находил способы сделать всё, чтобы решить задачу».
KISS: Keep It Short & Simple
Виталий Л., руководитель разработки серверной части: «Базовые технологии, подходы и решения кардинально не менялись. Мы всегда следуем принципу KISS и стараемся делать простые, но эффективные технические решения. Мы использовали и используем PostgreSQL, т.к. умеем его готовить. Мы использовали и используем PHP, т.к. он позволяет легко решать наши бизнес-задачи. Мы использовали и используем Sphinx для поиска, т.к. его легко настроить под наши бизнес-задачи и под наши нагрузки. Наша система хранения пользовательских файлов работает практически без изменений с самого своего появления (на Хабре рассказывали). Фундамент, который заложили много лет назад, продолжает работать сейчас, когда нагрузки и сложность проекта увеличилась в разы».
На первой линии
Василий Ч., юнит-лидер, менеджер продукта Автозагрузка: Сейчас в Avito идет программа стажировки в службе поддержки. Разработчики приезжают в Питер и сами работают вместе с поддержкой пользователей. Можно сказать, что наша команда была в авангарде этой стажировки — за полгода до начала всеобщей программы мы съездили в Питер всей командой, чтобы проникнуться духом, побыть ближе к клиентам, почувствовать на себе многие вещи.
Результатов было много. Абсолютно все члены команды сказали, что это было круто. Одно дело — когда ты человека лично никогда не видел и для тебя это просто строчка в Slack и аватарка, другое дело — когда ты пообщался с человеком, в том числе неформально. Это совершенно разная эффективность взаимодействия. Во-вторых, наши ребята стали гораздо лучше понимать, что в Питере происходит, ведь там — наш фронт-офис, где люди непосредственно общаются с клиентами. У нас была экскурсия по всем отделам: были в продажах, модерации, саппорте частников, про-саппорте, обошли все, что можно, выясняли, как они все работают».
Дмитрий К., разработчик серверной части: «Мы не только познакомились, посмотрели как они работают, но и попили пива с ними вечером. Теперь за каждым сообщением от поддержки в чате стоит реальный человек».
Как (почти) утопить техлида, чтобы вам все завидовали
Олег Б., ведущий разработчик серверной части: «У нас был яхтенный корпоратив, на котором мы чуть не утопили яхту и техлида. Как-то мы накрутили и навертели с этими верёвками, что яхта накренилась на 90 градусов, и парус оказался в воде. Забавным было то, что в начале регаты наш техлид сказал, что не хочет во всем этом участвовать, поэтому посидит с телефончиком на краешке, никому не мешая».
Дмитрий З., техлид юнита Автозагрузка: «Я на самом деле пожертвовал своим местом в кокпите в пользу ребят. Они никогда не ходили под парусом, а я — уже. Так было более справедливо».
Олег Б., ведущий разработчик серверной части: «Конечно, в воде оказался именно тот край яхты, где был он. Дима искупался с головой, но телефон спас — успел поднять его над собой.
Регату мы, конечно, не выиграли, но нам все завидовали, потому что больше ни у кого такого экстремального приключения не было. За такое короткое время почти потопить яхту (которая позиционировалась как практически непотопляемая) не каждому дано»!
Александр О., разработчик систем тестирования: «А мы на своей яхте чуть не врезались в них. Я помогал держать парус, наш капитан в это время разговаривал по телефону: видим — на нас несётся яхта, он, не отрываясь от разговора, начал резко разворачивать яхту, давая мне задания натянуть трос или ослабить. Резко развернулись, немного обмакнув край яхты, на самом пике разворота я стоял, но был расположен перпендикулярно борту яхты. Остальные члены команды вцепились в края и всё обошлось. Когда наш капитан закончил разговор, он сказал только:
— Мы, кажется, тут чуть не врезались. Ну хорошо, что обошлось».
Что это за сайт avito.ma?
И почему они скопировали у нас название? Иногда такие вопросы задают новички в нашей команде. Avito.ma — проект, который наша команда начинала развивать в Марокко в начале 2010-х. Но потом мы решили сосредоточиться на российском рынке. Сайт до сих пор существует и занимает второе место среди классифайдов в Марокко. А у нас на память есть несколько фотографий с тимбилдинга, который проходил там.
Avito.ma был в том числе на арабском (справа налево) и благодаря ему мы провели всей компанией несколько дней в Марокко. Ещё благодаря этому в Sphinx появилась поддержка арабского. А картины, написанные на мастер-классе, до сих пор украшают офис.
Смотрим в будущее
Сегодня Avito — самый популярный сайт объявлений в России. У нас десятки тысяч rps к бэкенду, сотни миллионов объявлений в базе, терабайты картинок в хранилище и мощная система автоматизированной модерации на базе машинного обучения. Каждый месяц проектом пользуется четверть населения России. А чтобы просмотреть все активные объявления о товарах и услугах, понадобится 441 день!
Что будет дальше? Одно можно сказать точно: мы будем продолжать работать для того, чтобы предоставить миллионам наших пользователей удобную и надёжную площадку для обмена информацией. А в этом блоге расскажем, как мы это делаем и какие технологии для этого используются.








