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

Мобильный_DevOps.pdf

 Мобильный_DevOps.pdf

8f1a6a9f39a0f45343eeff3bafa0bb15?s=128

Alexander Blinov

November 17, 2018
Tweet

Transcript

  1. Привет, мобильный DevOps! Александр Блинов Когда приложение стало взрослым.

  2. Обо мне Александр Блинов Руководитель Android направления 2

  3. Условные обозначения 3 Места, которые можно автоматизировать Грабли, на которые

    мы наступили Умные мысль / идея / хак
  4. 1 Процессы маленькой команды 2 Переход к большой команде 3

    Подведение итогов Слайды goo.gl/5u2bv1 Содержание 4
  5. Составные части процесса 5 1 Методология управления проектом 2 VCS

    3 CI / CD 4 Работа с кодовой базой
  6. 6 Процессы маленькой команды

  7. Контекст 7 1 Команда 3 человека 2 2 приложения в

    активной стадии разработки A Для соискателей B Для работодателей
  8. Кодовая база 8 1 5-летнее legacy 2 1 модуль ‼

    3 Java + Kotlin 4 kapt
  9. To Do Plan Decomposition Dev Dev Done Feedback Closed PORTFOLIO

    (Портфель) - Бизнес задачи Доска портфелей PORTFOLIO-1 PORTFOLIO-2 PORTFOLIO-3 Управления проектом
  10. To Do In Progress Need Review Review Merged Need Testing

    Testing In Progress Ready to Release Управления проектом MOB-1 MOB-2 Доска задач Release Applicant 4.2 Backlog MOB-3 MOB-4
  11. Один релиз приложения 11 ? стабилизация разработка develop Portfolio #1

    Portfolio #2 Portfolio #3 bugfixes #1 bugfixes #2 Timeline
  12. Типы сборок 12 1 Release Candidate 2 UI тесты 2

    Артефакт для тестирования Корректность основных сценариев 1 Собирает Антон на своем компьютере Собирает build server Bamboo 1 час на прогон End2end espresso тестов
  13. Выводы 13 Процессы в маленькой команде Всё работает, и это

    главное
  14. 14 Переход к большой команде

  15. 15 Issue 1. Много фичей

  16. Много фичей 16 develop Время разработки фичей

  17. Много фичей 17 develop Разработка фичей Начало тестирования Release

  18. Много фичей 18 develop Увеличение скоупа релиза

  19. Много фичей 19 develop Увеличение скоупа релиза и времени разработки

  20. Много фичей 20 develop Увеличение скупа релиза. Эффект “домино”

  21. Много фичей и стабильный develop 21 Возможные решения 1 Фичитоглы

    + Легкие мерджи - Две версии каждой фичи 2 Фичеветки + Одна версия кода в приложении - Сложные мерджи на общем функционале
  22. VCS 22 develop Время разработки фичей PORTFOLIO-1234 MOB-3455 MOB-3456 MOB-3458

    MOB-3459 MOB-3432 PORTFOLIO-1256 MOB-3461 MOB-3462 MOB-3464 MOB-3468 Git hook на именование ветки
  23. To Do In Progress Need Review Review Merged Need Testing

    Testing In Progress Ready to Release Управления проектом 23 MOB-1 MOB-2 Время релиза Release Applicant 5.2 Development Backlog PORTFOLIO-1 Decomposition
  24. To Do In Progress Need Review Review Merged Need Testing

    Testing In Progress Ready to Release 24 MOB-1 MOB-2 Время релиза Release Applicant 5.2 Development Backlog PORTFOLIO-1 DEV Управления проектом Настройка swimlane фильтров в JIRA
  25. To Do In Progress Need Review Review Merged Need Testing

    Testing In Progress Ready to Release 25 Полная картина Release Applicant 5.2 Development Backlog PORTFOLIO-1 DEV DONE MOB-1 MOB-2 MOB-3 Управления проектом Перемещение из Merged в Need Testing
  26. VCS 26 develop Релизы приложения PORTFOLIO-1234 MOB-3455 MOB-3456 MOB-3458 MOB-3459

    MOB-3432 PORTFOLIO-1256 MOB-3461 MOB-3462 MOB-3464 MOB-3468 RELEASE-APPLICANT-5.2 MOB-3471 MOB-3476 MOB-3484
  27. VCS 27 develop Хотфиксы PORTFOLIO-1234 MOB-3455 MOB-3456 MOB-3458 MOB-3459 MOB-3432

    PORTFOLIO-1256 MOB-3461 MOB-3462 MOB-3464 MOB-3468 RELEASE-APPLICANT-5.2 MOB-3471 MOB-3476 MOB-3484 MOB-3464
  28. Интеграции с JIRA 28 1 Ссылка на PR в задаче

    A Githook на названия ветки 2 Ссылка на Upsource Review в задаче 3 Перемещение задач при успешной сборке
  29. 29 Issue 2. Консистентность кодовой базы

  30. Архитектура, подходы и фреймворки 30 1 Договоренность и документация 2

    Правило аналогов: 1 + 1 3 Технологизация
  31. Code review 31 1 Style guide 2 Статический анализ 3

    Base line 4 Правило бойскаутов https://github.com/hhru/android-style-guide/ 5 Upsource Регулярный запуск статического анализа без baseline
  32. Boiler plate 32 1 Шаблоны кодогенерации Android Studio 2 Live

    templates Android Studio Plugins 3 Попробуйте кодогенерацию в этом порядке
  33. 33 Issue 3. Билдсервер Антон

  34. Признак Debug PreRelease Release Proguard - + + SSL Pinning

    - - + Подпись debug debug prod FirebaseConfig debug prod prod GCM debug prod prod Toothpick reflection code gen code gen Суффикс имени приложения dev.apk preRelease-XXXX.apk - Аналитика debug debug prod Fabric debug debug prod Особенности Работает только при установке из Google Play Типы сборок 34
  35. develop PORTFOLIO-1234 MOB-3455 MOB-3456 MOB-3458 MOB-3459 MOB-3432 PORTFOLIO-1256 MOB-3461 MOB-3462

    MOB-3464 MOB-3468 RELEASE-APPLICANT-5.2 MOB-3471 MOB-3476 MOB-3484 MOB-3464 Pull Request 1 Night 2 35 3 Release Candidate 4 Release Виды сборок на CI
  36. Признак Pull Request Night Release Candidate Release Trigger Создание Pull

    Request или добавление комитов в Pull Request По расписанию Вручную Вручную Приложения Applicant RU Employer RU Все Опционально Опционально Тип сборки Debug PreRelease PreRelease Release Статический анализ + + без baseline - - UI тесты Smoke UI (<20min) + - - Публикация - Fabric Fabric Google Play - Internal testing JIRA Ссылка в задаче на PR Ссылка на билд Перемещение задач из Merged в NeedTesting Перемещение задач из Merged в NeedTesting - Github Результаты сборки - - - Upsource Создание ревью - - - Slack #android-pr #android-night #android-dev #android-dev Виды сборок на CI 36
  37. Build servers 37 https://androiddev.apptractor.ru/android-dev-podkast-54/ И так далее..

  38. Шишки и грабли по билд серверу 38 1 Плагины —

    это зло 2 Хранение конфигурации в VCS
  39. 39 Issue 4. Время регресса

  40. Как уменьшить время регресса 40 Тест агенты Фичи в приложении

    T Tx2 Tx?
  41. Главная проблема UI тестов 41 “Мы написали тесты, что дальше

    с ними делать?” Безымянный тестописатель
  42. Как писать UI тесты? 42 1 Ненативные инструменты: Calabash, Appium,

    … 2 Инструменты запуска на псевдореальной среде: Robolectric 3 Платформенные инструменты: Espresso 4 Обертки над Espresso: Kakao, Barista
  43. Инфроструктура тестов 43 Code Tests 1

  44. Инфроструктура тестов 44 Code Tests 2 CI

  45. Code CI Инфроструктура тестов 45 3 Test Runner Tests DB

    ➡ Marathon ➡ Orchestrator ➡ Spoon ➡ Fork ➡ Composer ➡ Nitrogen https://youtu.be/Sb0JWdLAgzk?t=14789
  46. Инфроструктура тестов 46 Code CI Test Runner Tests Openstf DB

    4
  47. Инфроструктура тестов 47 Code CI Test Runner Tests Openstf DB

    K u b e r n e t e s Docker Docker 5
  48. Инфроструктура тестов 48 Code CI Test Runner Tests Openstf DB

    K u b e r n e t e s Docker Docker JIRA Githab Slack https://youtu.be/_21xcZk4_ZI 6
  49. 49 Issue 5. Время сборки

  50. Многомодульность и Gradle 50 Подключение зависимостей 1 ➡ implementation ➡

    api ➡ compileOnly 2 Подключение артефактов ➡ module ➡ aar 3 Gradle cache А чем занят ваш gradle?
  51. Flavor-ы и параллельная сборка 51 Анализируем gradle build scan Сборка

    модулей :transformClassesAndResourcesWithProguardForHhruDebug :transformClassesAndResourcesWithProguardForJtbDebug :transformClassesAndResourcesWithProguardForAzDebug Flavor-ы зло
  52. Mainframer 52 Вызываем команду сборки загрузка файлов на суперкомп загрузка

    файлов на локальный компьютер Сборка проекта Оповещение о сборке
  53. 53 Подведение итогов

  54. From zero 54 Выбор и настройка CI 1 Наработка практики

    Code review 2 ➡ Сборка по Pull Request ➡ Сборка Release Candidate ➡ Расширенный code style ➡ Статический анализ ➡ Upsource Настройка процессов для желаемых результатов 3 ➡ Выработка правильного flow для задачи и хотелок ➡ Проработка веток в SVC ➡ Интеграции сервисов ➡ Автоматизация рутинных шагов
  55. To Hero 55 Ускорение сборки 4 Тестирование 5 ➡ Изоляция

    и модуляризация ➡ Оптимизация билд скриптов ➡ Mainframer ➡ Написание небольшого числа тестов ➡ Поднятие инфраструктуры Шаблонизация 6 ➡ Live templates ➡ Android Studio Templates ➡ Plugins
  56. Домашнее задание 56 Поднять CI на локальной машине 1 Подумать,

    на какую рутину вы постоянно тратите много времени 2
  57. Автоматизируйте всё что автоматизируется! Посчитайте выгоду от автоматизации Делитесь решениями

    и идеями Выводы 57
  58. О чем мы говорили? - Много фичей - Консистентность кодовой

    базы - Билдсервер Антон - Время релиза - Время сборки - Распределение нагрузки Выводы Автоматизируйте всё что автоматизируется! Посчитайте выгоду от автоматизации Делитесь решениями и идеями 58 Процессы в маленькой команде Переход к большой команде Подведение итогов Слайды t.me/xanderblinov Контакты