Avito. iOS. AMA
Привет! Сегодня в нашем блоге мы проводим уже традиционную секцию вопросов и ответов Ask Me Anything. (До этого были АМА по бэкенду и по android-разработке). Продолжаем хорошую традицию. На этот раз речь пойдёт о разработке под iOS в целом и об особенностях приложения Авито в частности.
Как работается с приложением самого популярного сайта объявлений в России? Спросите у нас! Мы ответим на все комментарии первого уровня, которые появятся здесь сегодня, с 12 до 19 часов по московскому времени. Под катом я представляю семь моих коллег, которые сегодня будут с вами на связи, рассказываю немного об iOS-разработке в Авито и о возможных темах диалога.
Евгений Суворов kokax
«Руководитель команды мобильной архитектуры, которая отвечает за техническое качество продукта, удовлетворенность разработчиков разработкой и развитием/поддержкой внутренних инструментов разработчиков. В разработке под iOS с 2011 года, в Авито стал первым мобильным разработчиком в 2014».
Алексей Шпирко truealex
«Руководитель команды, занимающейся ускорением релизов мобильных приложений, построением CI/CD в мобильных приложениях, разработкой инструментов для UI-тестов. В Авито с 2014 года. Про то, чем я занимаюсь, можно подробнее узнать, посмотрев мой доклад для Mobius 2018 по ссылке».
Иван Бондарь ivanbondar
«Руководитель группы разработки мобильных приложений, занимаюсь разработкой под iOS с 2012 года, присоединился к команде Авито 2,5 года назад. Совмещаю роли iOS-разработчика, скрам-мастера и руководителя небольшой кросс-функциональной команды. Помимо iOS немного пишу backend, помогаю другим командам».
Артем Разинов artyom-razinov
«iOS-разработчик, в iOS с 2011 года, в Авито чуть более трёх лет. Занимался всем, в последнее время на 100% погружен в UI-автотестирование — инструменты, CI/CD и все такое. Мои хобби и увлечения: автотестирование, диплинкинг, гибкое API, кодогенерация, хаки, трюки и обманы».
Алексей Кудрявцев WEStor
«iOS-разработчик юнита Мессенджер, мейнтейнер проекта SwiftyVK, звукарь подкаста Podlodka. В Авито с января 2017 года. За это время успел поработать над разными частями iOS-приложения в нескольких юнитах. До Авито работал в небольших стартапах, делал pet-project«ы под iOS и MacOS. Помимо разработки люблю в свободное время побегать, покатать на велосипеде или что-нибудь почитать».
Тимур Юсипов fizmatchel
«iOS-разработчик юнита Mobile Architecture. Разрабатываю под iOS с 2012 года. В Avito почти 3 года. Занимался за это время много чем, прошел путь от фичовой разработки до платформенной.
В последнее время занимаюсь:
- модуляризацией монолита (разбили таргет с 2000+файлами на 40+ модулей),
- оптимизацией сборки путем упрощения графа зависимостей между модулями,
- созданием и сопровождением переиспользуемых разработчиками утилит: обертки над UICollectionView, инструмента для навигации, инструмента для диплинкинга, своих правил Swiftlint, Xcode-шаблонами для быстроты написания нового кода и прочей инфраструктурой,
- автоматизацией замеров различных технических характеристик (скорость запуска, скорость чистой сборки, утилизация CPU на чистой сборке, размеры модулей, количество контрибьюторов модулей, …).
Увлекаюсь футболом, коньками и роликами, пляжным волейболом, велосипедом, палаточными походами».
Вадим Смаль vadimsmal
«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 тестирование.
Ждём ваших вопросов в комментариях!