Pull to refresh
31
0
Pavel Lakosnikov @MMgo

Team Lead Backend Engineer

Send message

Паттерны асинхронных обменов на платформе Авито

Reading time11 min
Views9.4K

Привет! Меня зовут Павел Агалецкий, я старший инженер в команде архитектуры. Одна из областей ответственности нашей команды — синхронное (RPC) и асинхронное взаимодействие между сервисами. 

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

Читать далее
Total votes 13: ↑13 and ↓0+13
Comments9

Почему Trunk Based Development – лучшая модель ветвления. Андрей Александров

Reading time10 min
Views89K


В State Of DevOps 2018 от DORA мы видим, что Нigh Performing компании используют Trunk Based Development. Разберемся, почему именно ее, какие ее преимущества и недостатки имеет эта модель.

Читать дальше →
Total votes 27: ↑18 and ↓9+9
Comments8

CI/CD монолита Авито: от коммита до моржа

Reading time8 min
Views7.9K

Всем привет, меня зовут Александр Данковцев, я lead engineer команды Antimonolith. В этой статье я расскажу, как построен CI/CD монолита Авито. Речь пойдёт про нашу архитектуру стейджинга, pre-receive хуки, то, что из себя представляет сборка и деплой, как устроен прогон автотестов и какие проверки происходят на merge. А ещё рассмотрим after-merge actions.

Читать далее
Total votes 19: ↑19 and ↓0+19
Comments4

Как превратиться в суперзвезду Zoom-звонков за 15 минут

Reading time10 min
Views39K

Я работаю продакт-менеджером двух команд в Wrike на удалёнке и каждую неделю провожу примерно 20 часов на созвонах. В таких условиях контекст часто теряется из-за отсутствия физического контакта, а если ещё и камера так себе, то вместо лица человека видишь «кашу» без эмоций. Особенно обидно видеть тренинги или выступления именитых спикеров со стандартной камерой в тёмной комнате на фоне обоев, в то время как стоимость подобных тренингов  в разы превышает стоимость нормального оборудования. 

Я решил использовать свой опыт фотографирования и работы со светом и потратить время, чтобы улучшить свои Zoom-звонки «по-быстрому». И теперь хочу научить этому вас! В этой статье попробуем разобраться, какие технические средства можно использовать, чтобы онлайн-встреча напоминала встречу вживую и радовала и вас, и собеседника.

Читать далее
Total votes 132: ↑124 and ↓8+116
Comments133

Заповеди тимлида Авито

Reading time6 min
Views23K

Мы уже публиковали свои внутренние документы с ожиданиями от инженеров и менеджеров продукта в плейбуке на Гитхабе. Пришло время поделиться ещё одним — кодексом тимлида.


Читать дальше →
Total votes 80: ↑79 and ↓1+78
Comments33

Разбор вызовов функций в PHP

Reading time15 min
Views40K
Этот пост посвящён оптимизации PHP с помощью профайлера Blackfire в PHP-скрипте. Нижеприведённый текст является подробным техническим объяснением статьи в блоге Blackfire.

Обычно применяется метод strlen:

if (strlen($name) > 49) {
...
}

Однако такой вариант примерно на 20% медленнее этого:

if (isset($name[49])) {
...
}

Выглядит неплохо. Наверняка вы уже собрались открыть ваши исходники и заменить все вызовы strlen() на isset(). Но если внимательно прочитать оригинальную статью, то можно заметить, что причина 20-процентной разницы в производительности — многократные вызовы strlen(), порядка 60-80 тысяч итераций.
Читать дальше →
Total votes 54: ↑52 and ↓2+50
Comments70

Как Авито выявляет мошенников и борется с фродом

Reading time11 min
Views181K

Привет, Хабр. Я Игорь, руководитель команды, которая борется с мошенниками на Авито. Сегодня поговорим про вечную битву с негодяями, которые пытаются и даже иногда обманывают интернет-покупателей с помощью доставки товаров.


Читать дальше →
Total votes 97: ↑94 and ↓3+91
Comments393

Что делать с легаси. Материалы с Badoo PHP Meetup #4

Reading time2 min
Views9K
Всем привет!

15 февраля в офисе Badoo прошла очередная встреча PHP-разработчиков, посвященная теме легаси. Целый день мы слушали рассказы об опыте крупных компаний, общались и делились болью.

Получилось рассмотреть проблему с нескольких сторон:

  • организация процессов разработки по избавлению от легаси;
  • тактика распила легаси-монолита на микросервисы;
  • способы организации API, которые позволяют держать под контролем рост устаревшего кода;
  • автоматические способы обнаружения «мёртвого» кода;
  • а еще попробовали поговорить как рефакторить легаси-код с помощью DDD подходов;

Под катом делюсь видео и слайдами с этой встречи. Конечно, очень много ценного осталось в кулуарах и не вошло в отчет, так что приходите в нашу уютную группу поболтать о тяжелой жизни пэхэпэшника, обсудить доклады или просто за советом :)


Total votes 32: ↑32 and ↓0+32
Comments3

Рекомендации на Avito

Reading time6 min
Views21K

В этой статье пойдет речь о том, как строятся персональные рекомендации на Avito. Исторически бизнес-модель Avito устроена так, что выдача объявлений в поиске происходит по времени их размещения. При этом пользователь может покупать дополнительные услуги для того, чтобы поднять свое объявление в поиске в том случае, если со временем объявление опустилось далеко в поисковой выдаче и перестало набирать просмотры и контакты.


В контексте данной бизнес-модели не очевидно, зачем нужны персональные рекомендации. Ведь они как раз нарушают логику сортировки по времени и те пользователи, которые платят за поднятие объявления, могут обидеться за то, что чье-то другое объявление мы «поднимаем» и показываем пользователю совершенно бесплатно только потому, что наша рекомендательная модель посчитала это объявление более релевантным для какого-то пользователя.


Однако сейчас персональные рекомендации становятся “must have” для классифайдов (и не только) по всему миру. Мы хотим помогать пользователю в поиске того, что ему нужно. Уже сейчас всё более значительная доля просмотров объявлений на Avito производится с рекомендаций на главной странице приложений или рекомендаций похожих объявлений на карточке товара. В этом посте я расскажу, какие именно задачи решает наша команда в Avito.


Читать дальше →
Total votes 25: ↑22 and ↓3+19
Comments25

Что нового в PHP 7.2?

Reading time14 min
Views85K

Несмотря на то, что мы активно работаем с Python и Go, всё же существенная часть нашего серверного кода написана на PHP. Поэтому мы внимательно следим за всеми нововведениями языка. Прошло меньше года после релиза предыдущей минорной версии, и вот уже последний бета-релиз запланирован на 17 августа. Его ещё не рекомендуется использовать в production, но уже можно скачать docker-образ. Пора разбираться, что изменилось в новой версии языка.


Читать дальше →
Total votes 79: ↑78 and ↓1+77
Comments68

Hack. Sleep. Repeat

Reading time10 min
Views13K
Привет. Меня зовут Дима, и я бэкенд-разработчик в Avito. Мне довелось поучаствовать в кучке хакатонов: мелких и крупных, российских и зарубежных, внешних и внутри компаний, удалённых, распределённых и классических. Хочу рассказать, как они помогли познакомиться с омским дедом, заразиться криптобактериями, запустить виртуальный космический корабль в эрланг-вселенную и спасти человечество от вымирания.


Читать дальше →
Total votes 39: ↑39 and ↓0+39
Comments4

Расставляем точки над микросервисами. Секция Avito на РИТ++ 2017 (Видео)

Reading time4 min
Views25K
Вот и подоспели материалы с фестиваля РИТ++ 2017. Мы выступили там с докладами по темам machine learning, front-end и mobile разработки и провели отдельный тематический блок, посвященный микросервисам. Под катом – видеозаписи выступлений на этой секции наших докладчиков и коллег из других компаний. Обязательно загляните, чтобы узнать о подходах к работе с микросервисами и интересных приемах, которые реально использовать для решения ваших задач.


Total votes 43: ↑43 and ↓0+43
Comments3

May the Code Review be with you

Reading time9 min
Views27K
Code review может быть большой болью для команды, которая только начинает его внедрять. Вы в любом случае наступите на много граблей: будете проводить ревью дольше, чем пишете код, устраивать смертельные споры про расположение скобочек и разбираться, можно ли сливать ветку в master до аппрува команды или нет. Я собрал ряд практик, которые помогут вам сделать процесс адаптации чуть менее болезненным — по крайней мере, мне они точно помогли.
 
Этот материал — краткая выжимка моего опыта, накопленного за несколько лет работы в крупных командах мобильной разработки. Опыт по большей части в мобильной разработке, что оказало влияние на используемые примеры и ссылки. Для тех, кто предпочитает не читать, а смотреть, в течение пары месяцев должно появиться видео с конференции Mobius, где я рассказываю доклад на эту же тему, но с кучей подробных практических примеров.
 

Читать дальше →
Total votes 61: ↑61 and ↓0+61
Comments16

Путешествие внутрь Avito: платформа

Reading time4 min
Views32K
image

Мы уже рассказали вам о хранилище Avito, картинках, медиапикере, но главный вопрос так и оставался нераскрытым: какая она, архитектура платформы, из каких компонентов состоит и какой стек использует. Вы просили рассказать об аппаратной составляющей Avito, используемой системе виртуализации, СХД и так далее — ну что же, отвечаем.
Читать дальше →
Total votes 57: ↑54 and ↓3+51
Comments33

Сатира с мозгами: в Москве впервые пройдёт фестиваль безумных научных теорий «Ну тоже наука»

Reading time2 min
Views7.7K
НИТУ «МИСиС», научно-популярный проект «Курилка Гутенберга» и движение The Brights при поддержке Министерства образования и науки РФ проведут первый в России фестиваль научного юмора – «Ну… тоже наука»! Такого вы ещё точно не видели: известные ученые и популяризаторы науки постараются при помощи абсолютно точных и верных фактов доказать самые завиральные теории.

Вас попробуют убедить в геометрической гипотезе возникновения теории разума, докажут, что мужчины всю жизнь ищут только «Ту Самую», удивят механизмом выживания крокодилов, найдут в теле человека новый орган и расскажут о планах смартфонов по захвату мозга человека. А также вывернут ваш мозг ещё несколькими способами.

image
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments19

Совместный просмотр Google I/O в офисе Avito

Reading time4 min
Views6.4K

image


17 мая стартует ежегодная конференция, проводимая компанией Google в Калифорнии. Она длится три дня, в течение которых будет проведено множество сессий по технологиям и проектам Google, ориентированных в первую очередь на разработчиков.


Трансляция KeyNote начнется в 20 часов по московскому времени. Если вы не хотите смотреть ее в одиночестве, а готовы сразу обсудить все новости и новинки с коллегами по цеху — приходите на коллективный просмотр к нам в Avito!


А в этом посте мы поделимся основными ожиданиями от конференции и догадками про анонсы новых продуктов.


Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments0

История хранилища картинок Avito

Reading time6 min
Views29K


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

Avito развивался стремительно с первых дней. Например, скорость загрузки новых картинок для объявлений выросла в первые годы в несколько раз. Это требовало от нас на начальном этапе решать вопросы, связанные с архитектурой, максимально оперативно и эффективно, в условиях ограниченных ресурсов. Кроме того, мы всегда отдавали предпочтение простым решениям, требующим мало ресурсов на поддержку. Принцип KISS («Keep it short and simple») — это до сих пор одна из ценностей нашей компании.
Читать дальше →
Total votes 64: ↑61 and ↓3+58
Comments70

Как искать в DataGrip

Reading time2 min
Views18K


В работе с любым инструментом важно легко находить то, что нужно. В DataGrip ищут:

Объекты базы данных: таблицы, представления, функции, колонки и т. д.
— Сами данные.
Код, например кусок кода в скрипте или исходнике объекта.
Другое: настройки, действия, файлы.

Разберемся, как не потеряться в IDE и своих базах данных.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments9

Лекции Техносферы: Программирование на Go

Reading time2 min
Views53K

image


Продолжаем публикацию наших образовательных материалов. Этот курс посвящен изучению основ языка Go. На примере простой текстовой игры будут рассмотрены все основные задачи, с которыми сталкивается разработчик современных веб-приложений в крупных проектах, с реализацией их на Go. Курс не ставит задачи научить программированию с нуля, для обучения будут необходимы базовые навыки программирования.


Список лекций:


Total votes 73: ↑68 and ↓5+63
Comments52

Организация инфраструктуры с помощью Kubernetes и Helm. Видеозаписи докладов с Kubernetes meetup 22 марта 2017

Reading time1 min
Views11K
image

22 марта в Avito прошёл второй митап московского Kubernetes коммьюнити, а сегодня мы делимся материалами встречи. Денис Измайлов сделал обзор последних изменений инструмента, Евгений Ольков и Павел Селиванов рассказали про то, как используется Kubernetes, соответственно, в Avito и Центре Недвижимости от Сбербанка, а Сергей Орлов сделал короткий доклад про пакетный менеджер Helm. Приятного просмотра!
Total votes 29: ↑29 and ↓0+29
Comments1
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity