К основному содержимому
Спираль ДНК как метафора эволюционной архитектуры
Tinkoff Agile Conference · 22 октября 2021

Эволюционная архитектура на практике

Из чего она состоит и когда пора начинать

/ Эволюционная архитектура на практике · Tinkoff Agile Conference 2021

Содержание слайдов

  1. 1. Эволюционная архитектура на практике

    Из чего она состоит и когда пора начинать

  2. 2. Компания растёт быстрее, чем застывает архитектура

    К чему нам эволюционная архитектура

    16+ млн клиентов и рост около 35% в год

    Мультипродуктовая компания со своими IT-вертикалями

    Продукты объединяются в экосистему

    Монолитные команды делятся на stream-aligned

  3. 3. Техдолг можно отдавать эволюционно, а не системой 2.0

    Зачем эволюционная архитектура вам

    По мере развития системы копится технический долг

    Если его не отдавать, может наступить банкротство

    Это выливается в революционные системы 2.0, 3.0

    Но к процессу можно подходить эволюционно

  4. 4. 01. А что такое архитектура?

    Два определения, на которые опирается доклад

  5. 5. Важность решения определяется стоимостью его изменения

    А что такое архитектура

    Набор важных дизайн-решений, формирующих систему

    Уровень важности определяется стоимостью изменений

    И общее понимание траектории и границ

    Куда движется проект и какая у него ментальная модель

  6. 6. 02. А что такое эволюционная архитектура?

    Инкрементальные и управляемые изменения

  7. 7. Изменения должны быть и маленькими, и управляемыми

    Из чего состоит эволюционная архитектура

    Инкрементальные изменения: build и deploy

    Управляемые изменения: fitness functions

    Модульность и снижение связности бизнесовых фич

    Плюс подходящий coupling между частями системы

  8. 8. 03. Инкрементальные изменения

    Замкнутый цикл от идеи до деплоя

  9. 9. Инкремент — это замкнутый цикл, а не отдельный шаг

    Идея → требования → разработка → deploy

    Идея

    Требования

    Разработка

    Deploy — и цикл повторяется

  10. 10. 04. Fitness functions

    Чем меряется соответствие архитектуры

  11. 11. Fitness function — это и руководство, и ограничение

    Определение из книги «Evolutionary Architecture»

    Мера приспособленности решения к контексту

    Контекст при этом меняется

    Выступает руководством для развития

    И ограничением, в рамках которого оно идёт

  12. 12. Общесистемная функция собирается из тестов и метрик

    Архитектурные характеристики и что их меряет

    Характеристики: availability, latency, throughput, security

    Меряют их юнит-, интеграционные и контрактные тесты

    Плюс архитектурные и процессные метрики

    И мониторинг с алертингом

  13. 13. Не каждое измерение заслуживает fitness function

    Ключевые, релевантные, нерелевантные

    Ключевые — критичны при архитектурных решениях

    Над ними работаем раньше и серьёзнее всего

    Релевантные важны при реализации требований

    Нерелевантные не требуют fitness functions

  14. 14. Проверять fitness functions есть чем

    Инструментарий для автоматизации проверки

    Статический анализ кода и фреймворки тестирования

    Тестирование на проникновение и нагрузочное

    Мониторинг и логгирование

    Архитектурные проверки: ArchUnit, Danger, fitv

  15. 15. 05. Подходящий coupling

    Модульность и организация компонентов

  16. 16. Cohesion смотрит внутрь модуля, coupling — наружу

    Modularity, cohesion, coupling

    Modularity — логическая группировка взаимосвязанного кода

    Cohesion — насколько части модуля должны быть вместе

    Coupling — степень взаимозависимости между модулями

    Одно про связи внутри, другое — про связи между

  17. 17. Компонент абстрактен настолько, насколько он стабилен

    Принципы организации компонентов системы

    SDP: зависимости направлены в сторону устойчивости

    I = FanOut / (FanIn + FanOut) — нестабильность

    SAP: абстрактность соответствует стабильности

    A = Na / Nc — абстрактность компонента

  18. 18. 06. А как понять, что пора эволюционировать?

    Триггеры эволюции команд и их связь с архитектурой

  19. 19. Меняются команды — приходится менять систему

    Закон Конвея и brownfield, а не greenfield

    Организации проектируют системы по своим коммуникациям

    Желаемая структура команд меняется

    Значит, систему надо перепроектировать

    Бизнес не готов к паузам — редизайним эволюционно

  20. 20. Три триггера, по которым видно, что пора

    Триггеры эволюции команд

    Софт стал слишком большим для одной команды

    Темпы поставки устойчиво замедлились

    Бизнес-сервисы опираются на разрозненные нижележащие

    У каждого триггера свои симптомы

  21. 21. Мы обсудили вопросы

    Что такое эволюционная архитектура и когда она нужна

    Что такое эволюционная архитектура

    Зачем она нужна

    Из чего она состоит: инкрементальные изменения

    …fitness functions и подходящий coupling

    Когда уже пора начать эволюцию команд и архитектуры

  22. 22. Ссылки для дальнейшего изучения

    Источники с финального слайда доклада

    «Evolutionary Architecture» и «Fundamentals of Software Architecture»

    «Clean Architecture» с двумя обзорами

    «Team Topologies» и саммари в трёх частях

    Статьи про двойную петлю обучения и Essential Architecture

  23. 23. Спасибо!

    polomodov.tech

    Все слайды и ссылки — в Telegram-канале

    Александр Поломодов, Technical Director & Fellow, Т-Технологии

    @book_cube