mobius Mobius 2018 Мск (08.12.2018)

Как модульность изменила не только наш код, но и весь процесс

img

Разберем вопросы: на какие модули разбить приложение? Какие должны быть между ними связи? Когда остановиться? Какие инструменты могут облегчить жизнь? Как все так наладить, чтобы было удобно создавать отдельные проекты для каждой фичи?

Комментарий Программного комитета:

На примере проекта Яндекс.Карт Николай делится реальным опытом, рассказывает о мотивации принятого решения распила монолита и о том, как это повлияло не только на метрики, но и на культуру в их команде. Если коротко, то прикладная и популярная в последнее время тема, интересный проект, интересный спикер.

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

По данной теме уже существуют доклады, но нам в свое время не хватило ответов на конкретные вопросы: на какие модули разбить приложение? Какие должны быть между ними связи? Когда остановиться? Какие инструменты могут облегчить жизнь? Как все так наладить, чтобы было удобно создавать отдельные проекты для каждой фичи? В докладе мы разберем все эти вопросы, пройдемся по подводным камням использования CocoaPods, вспомогательному тулингу, работе с тестами, на конкретных примерах посмотрим, как организовать dependency inversion между модулями, обсудим, что в итоге мы получили и какими усилиями.

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