Avito. iOS. AMA

Привет! Сегодня в нашем блоге мы проводим уже традиционную секцию вопросов и ответов Ask Me Anything. (До этого были АМА по бэкенду и по android-разработке). Продолжаем хорошую традицию. На этот раз речь пойдёт о разработке под iOS в целом и об особенностях приложения Авито в частности.

d3lkxqdebmbq3ptdkqzgv_55sd0.png

Как работается с приложением самого популярного сайта объявлений в России? Спросите у нас! Мы ответим на все комментарии первого уровня, которые появятся здесь сегодня, с 12 до 19 часов по московскому времени. Под катом я представляю семь моих коллег, которые сегодня будут с вами на связи, рассказываю немного об iOS-разработке в Авито и о возможных темах диалога.


Евгений Суворов kokax

image
«Руководитель команды мобильной архитектуры, которая отвечает за техническое качество продукта, удовлетворенность разработчиков разработкой и развитием/поддержкой внутренних инструментов разработчиков. В разработке под iOS с 2011 года, в Авито стал первым мобильным разработчиком в 2014».


Алексей Шпирко truealex

image
«Руководитель команды, занимающейся ускорением релизов мобильных приложений, построением CI/CD в мобильных приложениях, разработкой инструментов для UI-тестов. В Авито с 2014 года. Про то, чем я занимаюсь, можно подробнее узнать, посмотрев мой доклад для Mobius 2018 по ссылке».


Иван Бондарь ivanbondar

image
«Руководитель группы разработки мобильных приложений, занимаюсь разработкой под iOS с 2012 года, присоединился к команде Авито 2,5 года назад. Совмещаю роли iOS-разработчика, скрам-мастера и руководителя небольшой кросс-функциональной команды. Помимо iOS немного пишу backend, помогаю другим командам».


Артем Разинов artyom-razinov

image
«iOS-разработчик, в iOS с 2011 года, в Авито чуть более трёх лет. Занимался всем, в последнее время на 100% погружен в UI-автотестирование — инструменты, CI/CD и все такое. Мои хобби и увлечения: автотестирование, диплинкинг, гибкое API, кодогенерация, хаки, трюки и обманы».


Алексей Кудрявцев WEStor

image
«iOS-разработчик юнита Мессенджер, мейнтейнер проекта SwiftyVK, звукарь подкаста Podlodka. В Авито с января 2017 года. За это время успел поработать над разными частями iOS-приложения в нескольких юнитах. До Авито работал в небольших стартапах, делал pet-project«ы под iOS и MacOS. Помимо разработки люблю в свободное время побегать, покатать на велосипеде или что-нибудь почитать».


Тимур Юсипов fizmatchel

image
«iOS-разработчик юнита Mobile Architecture. Разрабатываю под iOS с 2012 года. В Avito почти 3 года. Занимался за это время много чем, прошел путь от фичовой разработки до платформенной.
В последнее время занимаюсь:


  • модуляризацией монолита (разбили таргет с 2000+файлами на 40+ модулей),
  • оптимизацией сборки путем упрощения графа зависимостей между модулями,
  • созданием и сопровождением переиспользуемых разработчиками утилит: обертки над UICollectionView, инструмента для навигации, инструмента для диплинкинга, своих правил Swiftlint, Xcode-шаблонами для быстроты написания нового кода и прочей инфраструктурой,
  • автоматизацией замеров различных технических характеристик (скорость запуска, скорость чистой сборки, утилизация CPU на чистой сборке, размеры модулей, количество контрибьюторов модулей, …).
    Увлекаюсь футболом, коньками и роликами, пляжным волейболом, велосипедом, палаточными походами».


Вадим Смаль vadimsmal

image
«iOS-разработчик юнита Mobile Architecture. Разрабатываю под MacOS / iOS с 2012 года. В Авито уже 1.5 года. Занимаюсь разработкой решений для увеличения скорости разработки и поддержания качества приложения: toggle, DI, система отправки аналитики, автоматизированные замеры метрик, различные проверки состояния проекта и прочее.
Интересуюсь изучением новых технологий, таких, как Machine learning и blockchain. Изучаю новые платформы, подходы и языки, например, микросервисы на Go».


  • Мы в Avito уделяем много внимания мобильным приложениям. И планируем сохранять этот тренд.
  • Команда iOS-разработчиков использует Swift. Он заменил Objective-C в наших продуктах.
  • Мы инвестируем в развитие и продвижение инженерных практик — CI, CD, Code Review, автоматизация тестирования.
  • Важная особенность iOS-разработки в Avito — модульная архитектура, позволяющая нескольким группам разработчиков развивать крупный проект без коллизий и оперативно реагировать на нужды пользователей.


  • Как устроено наше приложение.
  • Как мы ведём разработку нашего iOS-приложения большой командой.
  • Монорепозиторий для кода: «боли» и профиты
  • Рабочие процессы: код-ревью, пулл реквесты, запуск тестов, проверки.
  • CI/CD.
  • Автоматизированное тестирование.
  • Легаси: как мы с этим боремся.
  • Внутренние решения для разработки: навигация, кодогенерация, feature-toggle, networking, решение для построения списков, DI, аналитика, deep links.
  • Замеры и оптимизация метрик: время сборки/запуска, размер приложения, количество зависимостей, утилизация CPU на сборке.
  • Продуктовая разработка, кросс-функциональность, A/B тестирование.

Ждём ваших вопросов в комментариях!

© Habrahabr.ru