Поделиться

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

Для тех кто изучает архитектуру ПО.

Нил Форд, Ребекка Парсонс, Патрик Куа «Эволюционная архитектура. Поддержка непрерывных изменений» Питер 2019 год, 272 стр.,O’reilly, ISBN: 978-5-4461-0995-1; (7,78 мб. pdf)

Пора по-новому взглянуть на постулаты, остававшиеся неизменными на протяжении многих лет. Динамично меняющийся мир диктует свои правила, в том числе и в компьютерной архитектуре. Происходящие изменения требуют новых подходов, заставляют жесткие системы становиться гибкими и подстраиваться под новые условия.

Возможно ли долгосрочное планирование, если всё непрерывно меняется? Как предотвратить постепенное ухудшение архитектурного решения с течением времени? Здесь вы найдете ответы и рекомендации, которые позволят защитить самые важные характеристики проекта в условиях непрерывных изменений.

«Эта книга знаменует собой важную веху, обозначающую нынешний уровень понимания проблемы. По мере того, как люди начинают осознавать роль ПО в XXI веке, информация о том, как реагировать на изменения, сохраняя достигнутое, становится важнейшим навыком в области создания программного обеспечения.» — Мартин Фаулер

Оглавление книги

Содержание

Глава 1. Архитектура программного обеспечения
Архитектура с эволюционным развитием
Как можно осуществлять долгосрочное планирование, если все постоянно меняется?
Как можно защитить созданную архитектуру от постепенной деградации?
Инкрементные изменения
Управляемое изменение
Многочисленные области архитектуры
Закон Конвея
Почему эволюционное развитие?
Краткие выводы

Глава 2. Функции пригодности
Что собой представляет функция пригодности?
Категории
Атомарная и комплексная функции
Триггерные и непрерывные функции
Статические и динамические функции
Автоматизированная и ручная функции
Временная функция
Функция с преднамеренным развитием
Предметно-ориентированная функция
Ранняя идентификация функций пригодности
Пересмотр функций пригодности

Глава 3. Проектирование инкрементных изменений
Строительные блоки
Тестопригодность
Конвейеры развертывания
Комбинирование категорий функций пригодности
Практический пример: реструктуризация архитектуры при ее развертывании 60 раз в день
Конфликтующие цели
Практический пример: добавление функций пригодности в сервис выставления счетов PenultimateWidgets
Разработка, основанная на гипотезах и на данных
Практический пример: что портировать?

Глава 4. Архитектурная связанность
Модульность
Квант и гранулярность архитектуры
Эволюция архитектурных стилей
Большой комок грязи
Монолитная архитектура
Событийно-ориентированная архитектура
Сервис-ориентированные архитектуры
Бессерверная архитектура
Контроль размера кванта
Практический пример: предотвращение циклов компонентов

Глава 5. Эволюционирующие данные
Эволюционное проектирование баз данных
Эволюционные схемы
Интеграция базы данных общего использования
Ненадлежащая связанность данных
Двухфазная фиксация транзакций
Возраст и качество данных
Практический пример: эволюционирование методов маршрутизации в PenultimateWidgets

Глава 6. Построение архитектуры с эволюционным развитием Техники
1. Определить области, затрагиваемые эволюционным развитием
2. Определить для каждой области функцию(-и) пригодности
3. Использовать конвейер развертывания для автоматизации функций пригодности
Проекты с нуля
Настройка существующих архитектур
Надлежащие связанность и сцепление
Практики проектирования
Функции пригодности
Применение коммерческой продукции
Миграция архитектур
Шаги миграции
Эволюция модульных взаимодействий
Инструкции для построения эволюционирующей архитектуры
Удаление ненужной изменчивости
Сделайте решения обратимыми
Предпочтение следует отдавать эволюционированию, а не предсказуемости
Построение уровня защиты от повреждений
Практический пример: шаблоны сервисов
Построение жертвенной архитектуры
Уменьшить внешние изменения
Обновление библиотек и фреймворков
Отдавайте предпочтение непрерывной поставке, а не снимкам состояния системы
Версии внутренних сервисов
Практический пример: эволюционирование рейтингов PenultimateWidgets

Глава 7. Архитектура с эволюционным развитием: ловушки и антипаттерны
Техническая архитектура
Антипаттерн: Vendor King
Ловушка: дырявая абстракция
Антипаттерн: ловушка на последних 10 %
Антипаттерн: неправильное повторное использование кода
Практический пример: принцип повторного использования в PenultimateWidgets
Ловушка: разработки ради резюме
Инкрементные изменения
Антипаттерн: ненадлежащее управление
Практический пример: модель управления «золотой середины» в PenultimateWidgets
Ловушка: недостаточная скорость для релиза
Проблемы бизнеса
Ловушка: адаптация продукта
Антипаттерн: составление отчетов
Ловушка: горизонты планирования

Глава 8. Внедрение эволюционной архитектуры
Организационные факторы
Кросс-функциональные команды
Организованные бизнес-возможности
Продукт важнее, чем проект
Работа с внешним изменением
Связи между участниками команды
Характеристики связей между командами
Культура
Культура эксперимента
Операционный денежный поток (OCF) и бюджетирование
Разработка функций пригодности для предприятия
Практический пример: PenultimateWidgets как платформа
С чего мы начнем?
Низко висящие фрукты
Максимальная ценность
Тестирование
Инфраструктура
Практический пример: архитектура предприятия в компании PenultimateWidgets
Будущее состояние?
Функции пригодности, использующие искусственный интеллект
Генеративное тестирование
Зачем это (или почему бы и нет)?
Зачем та или иная компания решает строить эволюционирующую архитектуру?
Практический пример: избирательный масштаб в PenultimateWidgets
По какой причине компания делает выбор не строить эволюционирующую архитектуру?
Убеждая других
Практический пример: консультация по системе дзюдо
Пример из бизнеса
«Будущее уже наступило…»
Двигаться быстро и без аварий
Меньше риска
Новые возможности
Построение архитектуры с эволюционным развитием
Об авторах
Выходные данные

СкачатьPDF


Поделиться