Avito iOS meetup #8: CI-лайфхаки, санитайзеры, IndexStore, перформанс
Привет, Хабр! В среду 29 июля мы проводим восьмой по счёту митап для iOS-разработчиков. В программе — два доклада от инженеров Авито о нашем CI и интересных аспектах перформанса, рассказ про техники нормализации от разработчика из Sigma Software и выступление англоязычного гостя из Lyft про IndexStore.
Тезисы и ссылка на регистрацию — под катом. Приходите смотреть трансляцию сами и приглашайте коллег.
Доклады
iOS CI as a Service in da House — Владислав Алексеев, Авито
Однажды вы поймете, что собирать приложение локально в Xcode уже не то. Вам захочется истории сборок, хранения релизных бинарей и проверок на PR. Вам потребуется CI и CD. По мере роста команды будет расти нагрузка и на ваш CI. Вам потребуется масштабировать сборочную ферму, ускорять компиляцию, заставлять тесты работать быстрее и стабильнее. С развитием ваших мобильных приложений вам рано или поздно потребуется познать лучшие практики CI/CD в iOS.В Авито есть всё, что нужно, для разработки iOS-приложений: дебажные и релизные сборки, юнит- и UI-тесты, ферма. Мы постоянно добавляем всё больше и больше проверок — тысячи юнит-тестов, сотни нативных UI-тестов, множество performance-тестов, различные дополнительные проверки. Но всё это добро занимает почти 30 минут на pull request-е уже два года подряд. Киллер фича — у нас нет очередей на сборки, они стартуют вместе с открытием PR! В докладе я расскажу, как мы достигли этого. Надеюсь, что вы научитесь на наших фейлах и воодушевитесь нашими идеями!
Затрагиваемые темы: TeamCity, bash, Python, билды и тесты, CocoaPods, build tracing, Puppet, ферма, Xcode, импакт анализ.
О спикере: Владислав работает в инфраструктурных проектах, связанных со сборками и тестированием. Начал свою карьеру в Яндексе, где работал над приложениями Яндекс.Карты и Яндекс.Браузер под iOS. Затем работал в Фейсбуке над производительностью основного приложения и системной сборки Buck. С 2017 года работает в Авито, занимается инфраструктурой мобильных приложений.
Укрощение нормализованного состояния. Граф объекты и санитайзеры — Алексей Демедецкий, Sigma Software
Сложность современного кода растёт очень быстро. Нормализация внутреннего состояния программы является распространённой техникой борьбы с постоянно растущей сложностью.В своём докладе я расскажу про техники нормализации, плюсы и минусы данного подхода. В частности про методику описания нормализованного состояния в виде графа, через интерфейс которого намного проще взаимодействовать с системой. Также расскажу про санитайзеры как гарантии согласованности разных частей нормализованного состояния.
О спикере: я занимаюсь мобильной разработкой около 10 лет. За это время успел попробовать много разных подходов. Последние 5 лет практикую и рассказываю про однонаправленные подходы (redux, flux, mvi) в мобильной разработке. В свободное время пишу свой карманный язык — Arrow. Задать мне вопросы можно в твиттере.
What the IndexStore Has To Say — Dave Lee, Lyft
Code is data, but what kind of data? For a given token, a language server can give a JSON object of relevant info. For a file, a parser can provide an AST. Both of these scopes are optimized for different use cases. Other use cases can benefit from having data for all the code in a project. Swift and Clang both provide a project wide view of the code, we know it as Xcode’s index. The IndexStore has a lot of potential for making tools. This talk will explore and demonstrate some uses for the IndexStoreDave Lee is a software engineer in the Bay Area working on software for other software engineers. Dave is a dad to two daughters who show no interest in code, except that one time I used Python to do word scramble homework.
Абстрактные техники перформанса — Тимур Юсипов, Авито
Fun talk не про ускорения, а про разные аспекты перформанса, о которых вы могли даже не задумываться в повседневной разработке.О спикере: руководитель команды Performance в Авито. Люблю iOS, футбол, походы, велосипед и ролики.
Пароли и явки
Онлайн-трансляция на нашем ютуб-канале стартует 29 июля в 18:00 по Москве. Закончить планируем к 20:30. На трансляции можно сразу нажать кнопку «напомнить», чтобы ничего не пропустить.
Если хочется получить напоминание со ссылкой на эфир на электронную почту, можно зарегистрироваться на таймпаде. Запись митапа тоже будет, выложим видео с таймкодами в отдельном посте.
До встречи в онлайне!