Mobile Meetup от OneTwoTrip: как это было

Mobile Meetup от OneTwoTrip: как это было

В середине прошлой осени мы провели офлайн-митап для мобильных разработчиков: 11 сентября 2024 года четыре эксперта OneTwoTrip поделились своим опытом, а после устроили атмосферный афтепати с нетворкингом.

Участники митапа узнали о том, как в сервисе используют инструмент Tuist, каким образом разработчики внедрили многомодульную архит��ктуру, превратили написание автотестов в приятный процесс и разработали систему, позволяющую обновлять строковые ресурсы в приложении без релиза.

Mobile Meetup от OneTwoTrip: как это было

Полные выступления смотрите в видео, а тут мы кратко расскажем, что было в каждом из них.

Tuist в командной разработке: путь к совершенству

Спикер: Альберт Арифуллин, Head of iOS в OneTwoTrip

Альберт Арифуллин
Альберт Арифуллин

Альберт познакомил слушателей с инструментом Tuist, который очень любят разработчики приложения OneTwoTrip. Они пришли к нему, поскольку долгое время при разработке сохранялся монолитный подход – вся кодовая база находилась в одном месте. Это нормально работает на небольших проектах, но когда продукт начинает обрастать множеством фичей, монолитная архитектура становится неудобна: проект сложно масштабировать, а части кода и функции очень сильно связаны друг с другом, из-за чего увеличивается время сборки. К тому же при внесении изменений в код есть большой риск всё сломать.

Логичным решением становится переход к многомодульной архитектуре. Некоторые для этого даже переписывают код с нуля, но команда OneTwoTrip нашла другое решение, и предлагает его именно Tuist. С ним фичи рассматриваются как отдельные проекты, которые не связаны между собой. Благодаря этому получается меньше конфликтов, потому что разработка происходит в разных модулях.

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

Ссылка на выступление: https://youtu.be/Gl_Lvg8njrk?si=md8w7Vf-HFAptKVh

Стильно, модно, модульно

Спикер: Роман Деркачёв, Android developer в OneTwoTrip в команде «Реферальные механики»

Роман Деркачёв
Роман Деркачёв

Доклад Романа во многом связан с выступлением Альберта — спикер рассказал, как от использования монолита команда андроид-разработчиков OneTwoTrip перешла к многомодульной архитектуре, а также поделился реальными кейсами и сложностями, с которыми ребята столкнулись в процессе перехода. Этот доклад получился более техническим, с описаниями модулей и фич и примерами кода, поэтому он будет интересен мобильным разработчикам.

Роман подробно рассказал, как монолит разбивали на feature-модули, получившуюся структуру можно посмотреть на 02:52, а связи между модулями — с 03:55. Также Роман описывает поддержку модулей в приложении OneTwoTrip (с 8:42) с использованием механизма gradle. Кстати, о преимуществах комбинации gradle + flavours + modules можно подробнее узнать на 11:22.

Итоги перехода примерно те же, что и на iOS: повысилась скорость сборки, уменьшилась связанность в коде (а значит, он стал более структурированным, сократились ошибки и упростился код-ревью).

Ссылка на выступление: https://youtu.be/wx_Fmmt5wEw?si=eUeQj2j-XJDB3iS0

Автотесты с улыбкой: как сделать процесс тестирования простым и удобным для всех

Спикер: Николай Шубенков, Team Lead в команде «Авиа» в OneTwoTrip

Николай Шубенков
Николай Шубенков

Николай поделился наработками, которые сделали написание автотестов не только лёгким, но и приятным занятием. Команда оптимизировала кодовую базу, чтобы успешно писать тесты могли ручные тестировщики без опыта программирования (спойлер: код писать всё-таки придётся).

Вообще автотесты — полезный инструмент. Они ускоряют проверку приложения, дают картину о его состоянии, проходят быстрее ручных и в целом убирают человеческий фактор. Минусы тоже есть: если UI часто меняется (как это происходит, например, в OneTwoTrip), нужно менять и автотесты. При этом для их написания нужны компетенции участников.

В своём выступлении Николай довольно подробно рассказал об инструментах, которые он рекомендует для написания автотестов (с 2:54) и разобрал на примере приложения OneTwoTrip, как можно создать свой первый автотест (с 5:58), показав на примере кода, как делать не надо. А вот чтобы сложностей не возникало, Николай предлагает использовать паттерн Page Object (пример — на 9:16), а после доработать тест с помощью паттерна Method chaining (10:57). В докладе Николай разобрал несколько сложных моментов и показал, как их можно решить.

Что же в итоге, как писать простые автотесты? Рецепт такой: использовать Page Object + Method Chaining и enum + switchElement, писать простой код без ветвлений, уделять внимание идентификаторам, а также ознакомиться с SBT UITest Tunnel и Allure TestOps.

Ссылка на выступление: https://youtu.be/G9Pt8TqbwqI?si=22jer4e4TOJZ0go6

Обновление строк в приложении Android без релиза новой версии

Спикер: Михаил Волков, Team Lead Android в командах «Отели» и «Маркетинг» в OneTwoTrip

Михаил Волков
Михаил Волков

Зачем вообще нужно обновление строк без релиза новой версии приложения? Дело в том, что сам релиз требует временных затрат, поэтому оперативно исправить ошибку или изменить текст с ним не удастся. Но порой возникают ситуации, когда что-то обновить очень нужно. Михаил приводит такой пример (1:20): в начале лета на OneTwoTrip стартовала акция, в рамках которой пользователям начисляли до 30% кэшбэка, но при этом в приложении на стартовом экране была информация о том, что максимально можно получить до 15%. Разработчикам удалось оперативно поправить эту конкретную строчку, и она поменялась у всех пользователей — даже у тех, кто не обновлял приложение. Аналогично можно исправить любую информацию в приложениях.

Для подобных задач есть уже готовые решения (2:35), но, как показали последние несколько лет, сервисы могут внезапно, по независящим ни от кого причинам, переставать работать, а ещё часто они платные. Поэтому команда OneTwoTrip сделала собственное решение (общую схему его работы можно найти с 3:16). О том, как именно реализована замена строк, можно узнать с 7:23. Подробная диаграмма с принципом работы отображена на 14:10. Итоговое реализованное решение успешно работает и после внедрения уже несколько раз спасало от хотфиксов. И теперь команда планирует выложить его в open source, со временем мы обязательно поделимся ссылкой.

Ссылка на выступление: https://youtu.be/DHhz2dHNM3E?si=--zq34XzJ3WMoskH

Mobile Meetup от OneTwoTrip: как это было
2
Начать дискуссию