Форд Н., Парсонс Р., Куа П. Эволюционная архитектура. Поддержка непрерывных изменений

Издательство: Питер
Автор: Форд Н., Парсонс Р., Куа П.
ISBN: 978-5-4461-0995-1
Страниц: 272
Язык: Русский
Год издания: 2019

 
 
 

Описание книгиСодержаниеДополнительно

Книги по IT. Это руководство позволит читателям повысить свой профессиональный уровень по архитектуре ПО. Авторы издания расширяют кругозор читателей за счет большого объема информации не перегруженной усложнениями. После прочтения этой книги разработчики научатся концепции построения архитектуры с потенциальным эволюционированием.

Предисловие 10
Введение 13
Типографские соглашения 13
От научного редактора перевода 14
Дополнительная информация 15
Благодарности 15
Глава 1. Архитектура программного обеспечения 17
Архитектура с эволюционным развитием 20
Как можно осуществлять долгосрочное планирование, если все постоянно меняется? 20
Как можно защитить созданную архитектуру от постепенной деградации? 24
Инкрементные изменения 26
Управляемое изменение 27
Многочисленные области архитектуры 28
Закон Конвея 33
Почему эволюционное развитие? 37
Краткие выводы 38
Глава 2. Функции пригодности 39
Что собой представляет функция пригодности? 42
Категории 45
Атомарная и комплексная функции 45
Триггерные и непрерывные функции 46
Статические и динамические функции 47
Автоматизированная и ручная функции 48
Временная функция 49
Функция с преднамеренным развитием 50
Предметно-ориентированная функция 50
Ранняя идентификация функций пригодности 50
Пересмотр функций пригодности 53
Глава 3. Проектирование инкрементных изменений55
Строительные блоки 59
Тестопригодность 62
Конвейеры развертывания 64
Комбинирование категорий функций пригодности70
Практический пример: реструктуризация архитектуры
при ее развертывании 60 раз в день 73
Конфликтующие цели 76
Практический пример: добавление функций пригодности
в сервис выставления счетов PenultimateWidgets77
Разработка, основанная на гипотезах и на данных 81
Практический пример: что портировать? 84
Глава 4. Архитектурная связанность 86
Модульность 86
Квант и гранулярность архитектуры 87
Эволюция архитектурных стилей 92
Большой комок грязи 93
Монолитная архитектура 95
Событийно-ориентированная архитектура 106
Сервис-ориентированные архитектуры 113
Бессерверная архитектура 131
Контроль размера кванта 134
Практический пример: предотвращение циклов компонентов135
Глава 5. Эволюционирующие данные 138
Эволюционное проектирование баз данных 139
Эволюционные схемы 139
ОИнтеграция базы данных общего использования 142
Ненадлежащая связанность данных 148
Двухфазная фиксация транзакций 149
Возраст и качество данных 152
Практический пример: эволюционирование методов маршрутизации в PenultimateWidgets 154
Глава 6. Построение архитектуры с эволюционным развитием 157
Техники 158
1. Определить области, затрагиваемые эволюционным развитием 158
2. Определить для каждой области функцию(-и) пригодности 158
3. Использовать конвейер развертывания для автоматизации функций пригодности 159
Проекты с нуля 160
Настройка существующих архитектур 160
Надлежащие связанность и сцепление 160
Практики проектирования 161
Функции пригодности 162
Применение коммерческой продукции 164
Миграция архитектур 165
Шаги миграции 167
Эволюция модульных взаимодействий 171
Инструкции для построения эволюционирующей архитектуры 175
Удаление ненужной изменчивости 176
Сделайте решения обратимыми 179
Предпочтение следует отдавать эволюционированию, а не предсказуемости 180
Построение уровня защиты от повреждений 181
Практический пример: шаблоны сервисов 185
Построение жертвенной архитектуры 187
Уменьшить внешние изменения 189
Обновление библиотек и фреймворков 192
Отдавайте предпочтение непрерывной поставке, а не снимкам состояния системы 193
Версии внутренних сервисов 195
Практический пример: эволюционирование рейтингов PenultimateWidgets 196
Глава 7. Архитектура с эволюционным развитием: ловушки и антипаттерны 200
Техническая архитектура 200
Антипаттерн: Vendor King 201
Ловушка: дырявая абстракция 203
Антипаттерн: ловушка на последних 10 % 206
Антипаттерн: неправильное повторное использование кода 208
Практический пример: принцип повторного использования в PenultimateWidgets 211
Ловушка: разработки ради резюме 213
Инкрементные изменения 213
Антипаттерн: ненадлежащее управление 214
Практический пример: модель управления «золотой середины» в PenultimateWidgets 217
Ловушка: недостаточная скорость для релиза 218
Проблемы бизнеса 221
Ловушка: адаптация продукта 221
Антипаттерн: составление отчетов 222
Ловушка: горизонты планирования 225
Глава 8. Внедрение эволюционной архитектуры 227
Организационные факторы 227
Кросс-функциональные команды 227
Организованные бизнес-возможности 230
Продукт важнее, чем проект 231
Работа с внешним изменением 234
Связи между участниками команды 235
Характеристики связей между командами 237
Культура 237
Культура эксперимента 239
Операционный денежный поток (OCF) и бюджетирование 242
Разработка функций пригодности для предприятия 244
Практический пример: PenultimateWidgets как платформа 246
С чего мы начнем? 246
Низко висящие фрукты 247
Максимальная ценность 247
Тестирование 248
Инфраструктура 249
Практический пример: архитектура предприятия в компании PenultimateWidgets 251
Будущее состояние? 252
Функции пригодности, использующие
искусственный интеллект 252
Генеративное тестирование 253
Зачем это (или почему бы и нет)? 253
Зачем та или иная компания решает строить эволюционирующую архитектуру? 253
Практический пример: избирательный масштаб в PenultimateWidgets 257
По какой причине компания делает выбор не строить эволюционирующую архитектуру? 259
Убеждая других 262
Практический пример: консультация по системе дзюдо262
Пример из бизнеса 263
«Будущее уже наступило…» 263
Двигаться быстро и без аварий 264
Меньше риска 264
Новые возможности 265
Построение архитектуры с эволюционным развитием 265
Об авторах 266
Выходные данные 269