Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CodeFest 2018. Евгений Суворов (Avito) — Архитектура 3D

CodeFest 2018. Евгений Суворов (Avito) — Архитектура 3D

Посмотрите выступление Евгения: https://2018.codefest.ru/lecture/1277/

На разных этапах зрелости проекта работают разные подходы к организации кода: архитектура эволюционирует вместе с компанией. Пока в серверной разработке в тренде микросервисы, в мобильных приложениях набирает обороты модуляризация. На примере Авито расскажу:
— О подходе к модуляризации iOS & Android приложений.
— Что такое Application Health Check и о его пользе при формировании архитектуры.
— Как использовать Code Ownership по-максимуму.

16b6c87229eaf58768d25ed7b2bbbf52?s=128

CodeFest

April 09, 2018
Tweet

Transcript

  1. Архитектура 3D Евгений Суворов крайний по архитектуре мобильных приложений !1

  2. Требования бизнеса/продукта Структура организации Разработка !2

  3. Модульная архитектура проекта Евгений Суворов крайний по архитектуре мобильных приложений

    !3
  4. WTF? Время компиляции! Кто за что отвечает?! Конфликты МОНОЛИТ !4

  5. Модуляризация !5

  6. Фича Фича Фича Фича МОНОЛИТ Медиатор Ядро !6

  7. Фича Фича Фича Фича Медиатор Ядро !7

  8. Ядро Ядро Ядро aka Core Routing Networking Persistance Deeplinking Events

    Logger Utilities… !8
  9. Фича aka Feature Ядро Ядро Code Module Persistance Request User

    Interface Network Request Navigation Deeplink Handler Public Interface !9
  10. Медиатор Mediator Фича Фича Фича Фича !10

  11. s.source_files = '**/Public/**/*{Module,Assembly}.swift' !11 Генерация Медиатора

  12. Связи в Монолите !12

  13. Связи в Монолите

  14. Связи в Монолите

  15. graphviz.org !15

  16. Структура x114 х33 Фича !16

  17. None
  18. iOS: Clean Build 635 438 Секунды !18

  19. iOS: Incremental Build 65 15 Секунды !19

  20. !20

  21. Структура x123 x40 Фича !21

  22. Android: Clean Build !22 Build Scan

  23. Android: Clean Build !23 Build Scan

  24. Android: Incremental Build !24 Build Scan

  25. Android: Incremental Build !25 Build Scan

  26. !26 Плоская структура, kotlin, kapt

  27. !27 https://youtrack.jetbrains.com/issues KT-11978 KT-15462 KT-22513 KT-15496 KT-21735 kapt, cache, parallel

  28. !28

  29. Amimono https://github.com/Ruenzuo/cocoapods-amimono Работает не везде !29

  30. !30

  31. !31

  32. Clean Build выводы Clean arhive time Тенденции те же, что

    и в clean build time, но кратно больше !32 Static быстрее, чем dynamic 10 dynamic лучше, чем 5 dynamic Монолит тащит, если сборка параллельна
  33. !33

  34. !34

  35. Incremental выводы !35 static быстрее, чем dynamic dynamic быстрее, чем

    монолит K.O. монолит не очень
  36. Параллельная сборка !36 Build Scan

  37. Параллельная сборка !37 25 секунд CPU CPU CPU CPU CPU

  38. !38 Ядра Время, % 1 30% 2 2% 3 12%

    4 2% 5 10% 6 16% 7 14% 8 10%
  39. Модулиризация - границы зон ответственности - независимость распределенным командам -

    impact analysis !39 - гранулированный анализ модулей - demo приложения + instant apps - превращает большое и неуправляемое в маленькое и контролируемое
  40. Полезняшки Тимур Юсипов - Marshroute https://goo.gl/uYuG4x Вадим Смаль - Метрики

    в разработке https://goo.gl/1rMiRz !40 Артем Разинов - Диплинки в Авито https://goo.gl/NcXRtb Евгений Кривобоков - Фича тоглы https://goo.gl/yZByAB Thoughtworks - Эволюционирующие архитектуры https://goo.gl/UmGd78 telegram.me/esuvorov