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

Как архитектура “прогибалась”

SECR 2019
November 14, 2019

Как архитектура “прогибалась”

Максим Шаломович
Системный архитектор, ЛАНИТ
SECR 2019

У программных систем, разрабатываемых в соответствии с гибкими ЖЦ (“по agile”), тоже есть архитектура, а значит должны явно решаться архитектурные задачи и явно приниматься архитектурные решения. Цель доклада – сформировать у участников таких проектов понимание, какие решения нужно принимать и дать несколько практических советов из личного опыта.

SECR 2019

November 14, 2019
Tweet

More Decks by SECR 2019

Other Decks in Programming

Transcript

  1. Докладчик Максим Шаломович ИТ-архитектор Проектирую системы и решения Интересуюсь ИТ-проектами

    и ИТ-процессами Выступаю на конференциях, делюсь опытом Пою, пляшу, крестиком вышиваю 14-15.11.2019 Software Engineering Conference Russia 3
  2. Доклад Архитектурная практика в Agile-проектах «Не до архитектуры нам, кодить

    надо!» «Лучше один раз вовремя, чем семь раз хорошо!» 14-15.11.2019 Software Engineering Conference Russia 4
  3. Компания ЛАНИТ • Разработка ИС «под ключ» • Проектирование комплексных

    решений • Бизнес-проектирование 14-15.11.2019 Software Engineering Conference Russia 5
  4. «Типичный заказчик» • Государство • Крупные коммерческие организации То есть…

    • Снаружи – регуляторы, нормативы • Внутри – тяжелые процессы бюджетирования, планирования, оценки рисков 14-15.11.2019 Software Engineering Conference Russia 7
  5. Что не так? Первая мысль, которая может прийти вам в

    голову 14-15.11.2019 Software Engineering Conference Russia 8
  6. «У нас будет Agile-проект!» • …но с ограниченным бюджетом, четкими

    сроками сдачи и невозможностью отступать от контракта 14-15.11.2019 Software Engineering Conference Russia 10
  7. Проблемы • Нет MVP, слишком много деталей • Гибкость =

    «делай, что хочешь, все равно переделывать» 14-15.11.2019 Software Engineering Conference Russia 13
  8. Проблемы • Нет MVP, слишком много деталей • Гибкость =

    «делай, что хочешь, все равно переделывать» • Непредсказуемые затраты 14-15.11.2019 Software Engineering Conference Russia 14
  9. Проблемы • Нет MVP, слишком много деталей • Гибкость =

    «делай, что хочешь, все равно переделывать» • Непредсказуемые затраты • Бюджет все еще ограничен 14-15.11.2019 Software Engineering Conference Russia 15
  10. «Решения» • Сокращаем «ненужные» стадии ЖЦ проекта • Обкладываемся ограничениями

    ТЗ • Любое изменение проводим через ЗНИ 14-15.11.2019 Software Engineering Conference Russia 20
  11. Результат • «Гибкость» есть только на словах • Каждое изменение

    может привести к переработке большой части ИС 14-15.11.2019 Software Engineering Conference Russia 23
  12. Результат • «Гибкость» есть только на словах • Каждое изменение

    может привести к переработке большой части ИС • Каждое изменение стоит дорого 14-15.11.2019 Software Engineering Conference Russia 24
  13. «У нас должна быть гибкая архитектура!» Следующая мысль, которая может

    прийти к вам в голову 14-15.11.2019 Software Engineering Conference Russia 25
  14. Типовой ЖЦ «гибкого» ИТ- проекта • Предварительное планирование • Разработка

    по итерациям • Анализ (спецификации) • Разработка (код) • Тестирование (тесты) • «Приемка» (обратная связь) 14-15.11.2019 Software Engineering Conference Russia 26
  15. Точки принятия архитектурных решений • Предварительное планирование с проектированием •

    Разработка по итерациям • Анализ (спецификации) • Проектирование • Разработка (код) • Тестирование (тесты) • Архитектурный надзор • «Приемка» (обратная связь) 14-15.11.2019 Software Engineering Conference Russia 27
  16. Предварительное планирование с проектированием • Технологический стек • Переиспользуемые компоненты

    системного уровня • Верхнеуровневое описание архитектуры 14-15.11.2019 Software Engineering Conference Russia 31
  17. Предварительное планирование с проектированием • Технологический стек • Переиспользуемые компоненты

    системного уровня • Верхнеуровневое описание архитектуры • Показатели качества 14-15.11.2019 Software Engineering Conference Russia 32
  18. Предварительное планирование… …без проектирования …с проектированием Формальный набор документов (ТП,

    ТЗ, ЁПРСТ) Документы позволяют зафиксировать важные моменты 14-15.11.2019 Software Engineering Conference Russia 35
  19. Предварительное планирование… …без проектирования …с проектированием Формальный набор документов (ТП,

    ТЗ, ЁПРСТ) Документы позволяют зафиксировать важные моменты Разработка не использует результаты этого этапа 14-15.11.2019 Software Engineering Conference Russia 36
  20. Предварительное планирование… …без проектирования …с проектированием Формальный набор документов (ТП,

    ТЗ, ЁПРСТ) Документы позволяют зафиксировать важные моменты Разработка не использует результаты этого этапа Документы максимально практические 14-15.11.2019 Software Engineering Conference Russia 37
  21. Предварительное планирование… …без проектирования …с проектированием Формальный набор документов (ТП,

    ТЗ, ЁПРСТ) Документы позволяют зафиксировать важные моменты Разработка не использует результаты этого этапа Документы максимально практические Основные потребности выявляются по ходу, no-DUF 14-15.11.2019 Software Engineering Conference Russia 38
  22. Предварительное планирование… …без проектирования …с проектированием Формальный набор документов (ТП,

    ТЗ, ЁПРСТ) Документы позволяют зафиксировать важные моменты Разработка не использует результаты этого этапа Документы максимально практические Основные потребности выявляются по ходу, no-DUF Just-in-time DUF с набором опций 14-15.11.2019 Software Engineering Conference Russia 39
  23. Анализ и разработка итерации с проектированием • Определение порядка реализации

    сценариев с учетом архитектурных приоритетов 14-15.11.2019 Software Engineering Conference Russia 41
  24. Анализ и разработка итерации с проектированием • Определение порядка реализации

    сценариев с учетом архитектурных приоритетов • Детальное проектирование критичных сценариев (+ технические практики) 14-15.11.2019 Software Engineering Conference Russia 42
  25. Анализ и разработка итерации с проектированием • Определение порядка реализации

    сценариев с учетом архитектурных приоритетов • Детальное проектирование критичных сценариев (+ технические практики) • Контроль актуальности предварительной архитектуры 14-15.11.2019 Software Engineering Conference Russia 43
  26. Анализ и разработка в итерации… 14-15.11.2019 Software Engineering Conference Russia

    44 …без проектирования …с проектированием
  27. Анализ и разработка в итерации… 14-15.11.2019 Software Engineering Conference Russia

    45 …без проектирования …с проектированием Архитектура устаревает и перестает отвечать на вопросы разработки
  28. Анализ и разработка в итерации… 14-15.11.2019 Software Engineering Conference Russia

    46 …без проектирования …с проектированием Архитектура устаревает и перестает отвечать на вопросы разработки Архитектура обновляется по результатам изменения/ добавления требований
  29. Анализ и разработка в итерации… 14-15.11.2019 Software Engineering Conference Russia

    47 …без проектирования …с проектированием Архитектура устаревает и перестает отвечать на вопросы разработки Архитектура обновляется по результатам изменения/ добавления требований Критичные сценарии могут быть некачественно реализованы
  30. Анализ и разработка в итерации… 14-15.11.2019 Software Engineering Conference Russia

    48 …без проектирования …с проектированием Архитектура устаревает и перестает отвечать на вопросы разработки Архитектура обновляется по результатам изменения/ добавления требований Критичные сценарии могут быть некачественно реализованы Критичные сценарии детализируются перед разработкой
  31. Архитектурный надзор… 14-15.11.2019 Software Engineering Conference Russia 50 …не выполняется

    …выполняется Нет результатов реализации архитектурных решений
  32. Архитектурный надзор… 14-15.11.2019 Software Engineering Conference Russia 51 …не выполняется

    …выполняется Нет результатов реализации архитектурных решений Проверка архитектурных опций и гипотез через практику
  33. Архитектурный надзор… 14-15.11.2019 Software Engineering Conference Russia 52 …не выполняется

    …выполняется Нет результатов реализации архитектурных решений Проверка архитектурных опций и гипотез через практику Причина (история) реализации неочевидна
  34. Архитектурный надзор… 14-15.11.2019 Software Engineering Conference Russia 53 …не выполняется

    …выполняется Нет результатов реализации архитектурных решений Проверка архитектурных опций и гипотез через практику Причина (история) реализации неочевидна Появляется обоснование принятых решений и реализации (ADR)
  35. Архитектура в Agile-проектах позволяет • Удерживать целостность постоянно изменяемого и

    развиваемого решения • Оптимально развивать решение 14-15.11.2019 Software Engineering Conference Russia 57
  36. Выводы • Архитектурные задачи надо решать явно • Архитектор –

    не Ivory Tower эксперт 14-15.11.2019 Software Engineering Conference Russia 60
  37. Выводы • Архитектурные задачи надо решать явно • Архитектор –

    не Ivory Tower эксперт • Архитектор не должен быть узким звеном цепи производства 14-15.11.2019 Software Engineering Conference Russia 61
  38. Выводы • Архитектурные задачи надо решать явно • Архитектор –

    не Ivory Tower эксперт • Архитектор не должен быть узким звеном цепи производства • Перечень точек принятия решений, решений и комментариев и ссылки – в приложенных материалах 14-15.11.2019 Software Engineering Conference Russia 62
  39. Жду ваших вопросов! 14-15.11.2019 Software Engineering Conference Russia 63 Шаломович

    Максим, архитектор, ЛАНИТ Мои контакты Полезные материалы
  40. Далее – рассказ о том, как архитектура существует в таких

    условиях 14-15.11.2019 Software Engineering Conference Russia 66
  41. Далее – рассказ о том, как архитектура существует в таких

    условиях • Мой опыт и опыт моих коллег 14-15.11.2019 Software Engineering Conference Russia 67
  42. Далее – рассказ о том, как архитектура существует в таких

    условиях • Мой опыт и опыт моих коллег • Универсального рецепта нет 14-15.11.2019 Software Engineering Conference Russia 68
  43. Далее – рассказ о том, как архитектура существует в таких

    условиях • Мой опыт и опыт моих коллег • Универсального рецепта нет • Есть несколько советов Капитана Очевидность 14-15.11.2019 Software Engineering Conference Russia 69
  44. Очень полезное определение • Набор практик и взаимодействий, которые применяют

    архитекторы ПО/ системы/ предприятия в гибкой разработке программного обеспечения 14-15.11.2019 Software Engineering Conference Russia 70
  45. Очень полезное определение • Набор практик и взаимодействий, которые применяют

    архитекторы ПО/ системы/ предприятия в гибкой разработке программного обеспечения • (…иногда – неосознанно, неудачно и с непредсказуемым результатом) 14-15.11.2019 Software Engineering Conference Russia 71
  46. Agile Architecture Interactions • Обзорная статья в IEEE Software magazine

    от 2011 года 14-15.11.2019 Software Engineering Conference Russia 72
  47. Agile Architecture Interactions • Обзорная статья в IEEE Software magazine

    от 2011 года • Ключевые мысли: • Точки взаимодействия (Interaction point) • Функции архитектора (Architecture function) • Навыки архитектора (Critical skills) 14-15.11.2019 Software Engineering Conference Russia 73
  48. Agile Architecture Interactions • Обзорная статья в IEEE Software magazine

    от 2011 года • Ключевые мысли: • Точки взаимодействия (Interaction point) • Функции архитектора (Architecture function) • Навыки архитектора (Critical skills) 14-15.11.2019 Software Engineering Conference Russia 74
  49. Agile Architecture Interactions • Обзорная статья в IEEE Software magazine

    от 2011 года • Ключевые мысли: • Точки взаимодействия (Interaction point) • Функции архитектора (Architecture function) – могут сильно отличаться от «общепринятых» • Навыки архитектора (Critical skills) 14-15.11.2019 Software Engineering Conference Russia 75
  50. Agile Architecture Interactions • Обзорная статья в IEEE Software magazine

    от 2011 года • Ключевые мысли: • Точки взаимодействия (Interaction point) • Функции архитектора (Architecture function) – могут сильно отличаться от «общепринятых» • Навыки архитектора (Critical skills) - также могут отличаться, плюс – выходят за пределы доклада 14-15.11.2019 Software Engineering Conference Russia 76
  51. Точки взаимодействия (принятия решений) Предварительное планирование (Up-front planning) Наполнение «бэклога»

    (Storyboarding) Работа в итерации/ спринте Анализ результатов 14-15.11.2019 Software Engineering Conference Russia 77
  52. Общий подход • Гибкая архитектура тоже требует предварительных решений (см.

    статью Брауна про эволюционную архитектуру) 14-15.11.2019 Software Engineering Conference Russia 78
  53. Общий подход • Гибкая архитектура тоже требует предварительных решений (см.

    статью Брауна про эволюционную архитектуру) • Основной результат – набор опций 14-15.11.2019 Software Engineering Conference Russia 79
  54. Общий подход • Гибкая архитектура тоже требует предварительных решений (см.

    статью Брауна про эволюционную архитектуру) • Основной результат – набор опций • Журнал для всех решений (см. например ADR) 14-15.11.2019 Software Engineering Conference Russia 80
  55. Технологический стек 14-15.11.2019 Software Engineering Conference Russia 81 • Соответствует

    корпоративным политикам • Соответствует возможностям команды • Не нужен «космос»
  56. Переиспользуемые компоненты системного уровня 14-15.11.2019 Software Engineering Conference Russia 82

    • Декомпозиция системы (см. статью Парнаса и мой доклад про декомпозицию) • Определение применимых паттернов уровня системы
  57. Верхнеуровневое описание архитектуры 14-15.11.2019 Software Engineering Conference Russia 83 •

    Оценка потребностей «сверху» • Максимально простые средства коммуникации • Максимально практическое описание (Model to Code gap, см. статью Брауна про архитектуру и код)
  58. Показатели качества 14-15.11.2019 Software Engineering Conference Russia 84 • Выявление

    архитектурных требований (см. мой доклад про архитектурные требования) • Привлечение всех возможных заинтересованных лиц и поиск компромиссов
  59. Определение порядка реализации сценариев 14-15.11.2019 Software Engineering Conference Russia 85

    • Критичные бизнес-сценарии (a-la MVP) - вперед • Проверку архитектурных гипотез и опций – вперед • Атрибуты качества - вперед
  60. Программная архитектура отдельного компонента или сценария 14-15.11.2019 Software Engineering Conference

    Russia 86 • Выделенный архитектор компонента – «красиво», но долго. Применяем только для критичных решений • Для всего остального – набор правил (фреймворк) и поддерживающие инструменты
  61. Контроль актуальности архитектурных решений 14-15.11.2019 Software Engineering Conference Russia 87

    • Постоянное взаимодействие с командами • Явно принимаем технический долг (в идеале – через Заказчика)
  62. Технические практики (правила и инструменты) • «Monolith first», при условии:

    • Multi-module build • Структурированный монолит • Управление зависимостями через API • Управление общими зависимостями • Использование абстракций • Замена хранилищ данных • Замена транспорта • Замена взаимодействий 14-15.11.2019 Software Engineering Conference Russia 88