
Эволюционная архитектура на практике
Из чего она состоит и когда пора начинать
Содержание слайдов
1. Эволюционная архитектура на практике
Из чего она состоит и когда пора начинать
2. Компания растёт быстрее, чем застывает архитектура
К чему нам эволюционная архитектура
16+ млн клиентов и рост около 35% в год
Мультипродуктовая компания со своими IT-вертикалями
Продукты объединяются в экосистему
Монолитные команды делятся на stream-aligned
3. Техдолг можно отдавать эволюционно, а не системой 2.0
Зачем эволюционная архитектура вам
По мере развития системы копится технический долг
Если его не отдавать, может наступить банкротство
Это выливается в революционные системы 2.0, 3.0
Но к процессу можно подходить эволюционно
4. 01. А что такое архитектура?
Два определения, на которые опирается доклад
5. Важность решения определяется стоимостью его изменения
А что такое архитектура
Набор важных дизайн-решений, формирующих систему
Уровень важности определяется стоимостью изменений
И общее понимание траектории и границ
Куда движется проект и какая у него ментальная модель
6. 02. А что такое эволюционная архитектура?
Инкрементальные и управляемые изменения
7. Изменения должны быть и маленькими, и управляемыми
Из чего состоит эволюционная архитектура
Инкрементальные изменения: build и deploy
Управляемые изменения: fitness functions
Модульность и снижение связности бизнесовых фич
Плюс подходящий coupling между частями системы
8. 03. Инкрементальные изменения
Замкнутый цикл от идеи до деплоя
9. Инкремент — это замкнутый цикл, а не отдельный шаг
Идея → требования → разработка → deploy
Идея
Требования
Разработка
Deploy — и цикл повторяется
10. 04. Fitness functions
Чем меряется соответствие архитектуры
11. Fitness function — это и руководство, и ограничение
Определение из книги «Evolutionary Architecture»
Мера приспособленности решения к контексту
Контекст при этом меняется
Выступает руководством для развития
И ограничением, в рамках которого оно идёт
12. Общесистемная функция собирается из тестов и метрик
Архитектурные характеристики и что их меряет
Характеристики: availability, latency, throughput, security
Меряют их юнит-, интеграционные и контрактные тесты
Плюс архитектурные и процессные метрики
И мониторинг с алертингом
13. Не каждое измерение заслуживает fitness function
Ключевые, релевантные, нерелевантные
Ключевые — критичны при архитектурных решениях
Над ними работаем раньше и серьёзнее всего
Релевантные важны при реализации требований
Нерелевантные не требуют fitness functions
14. Проверять fitness functions есть чем
Инструментарий для автоматизации проверки
Статический анализ кода и фреймворки тестирования
Тестирование на проникновение и нагрузочное
Мониторинг и логгирование
Архитектурные проверки: ArchUnit, Danger, fitv
15. 05. Подходящий coupling
Модульность и организация компонентов
16. Cohesion смотрит внутрь модуля, coupling — наружу
Modularity, cohesion, coupling
Modularity — логическая группировка взаимосвязанного кода
Cohesion — насколько части модуля должны быть вместе
Coupling — степень взаимозависимости между модулями
Одно про связи внутри, другое — про связи между
17. Компонент абстрактен настолько, насколько он стабилен
Принципы организации компонентов системы
SDP: зависимости направлены в сторону устойчивости
I = FanOut / (FanIn + FanOut) — нестабильность
SAP: абстрактность соответствует стабильности
A = Na / Nc — абстрактность компонента
18. 06. А как понять, что пора эволюционировать?
Триггеры эволюции команд и их связь с архитектурой
19. Меняются команды — приходится менять систему
Закон Конвея и brownfield, а не greenfield
Организации проектируют системы по своим коммуникациям
Желаемая структура команд меняется
Значит, систему надо перепроектировать
Бизнес не готов к паузам — редизайним эволюционно
20. Три триггера, по которым видно, что пора
Триггеры эволюции команд
Софт стал слишком большим для одной команды
Темпы поставки устойчиво замедлились
Бизнес-сервисы опираются на разрозненные нижележащие
У каждого триггера свои симптомы
21. Мы обсудили вопросы
Что такое эволюционная архитектура и когда она нужна
Что такое эволюционная архитектура
Зачем она нужна
Из чего она состоит: инкрементальные изменения
…fitness functions и подходящий coupling
Когда уже пора начать эволюцию команд и архитектуры
22. Ссылки для дальнейшего изучения
Источники с финального слайда доклада
«Evolutionary Architecture» и «Fundamentals of Software Architecture»
«Clean Architecture» с двумя обзорами
«Team Topologies» и саммари в трёх частях
Статьи про двойную петлю обучения и Essential Architecture
23. Спасибо!
polomodov.tech
Все слайды и ссылки — в Telegram-канале
Александр Поломодов, Technical Director & Fellow, Т-Технологии
@book_cube