Оглавление
Предисловие ............................................................................................. 10
Введение ................................................................................................... 13
Типографские соглашения .................................................................................... 13
От научного редактора перевода ........................................................................ 14
Как связаться с нами .............................................................................................. 14
Дополнительная информация.............................................................................. 15
От издательства......................................................................................................... 15
Благодарности............................................................................................................ 15
Глава 1. Архитектура программного обеспечения ................................ 17
Архитектура с эволюционным развитием ....................................................... 20
Как можно осуществлять долгосрочное планирование,
если все постоянно меняется?........................................................................ 20
Как можно защитить созданную архитектуру
от постепенной деградации?........................................................................... 24
Инкрементные изменения..................................................................................... 26
Управляемое изменение ......................................................................................... 27
Многочисленные области архитектуры ........................................................... 28
Закон Конвея.............................................................................................................. 33
Почему эволюционное развитие?....................................................................... 37
Краткие выводы ........................................................................................................ 38
Глава 2. Функции пригодности................................................................ 39
Что собой представляет функция пригодности?........................................... 42
Категории .................................................................................................................... 45
Атомарная и комплексная функции............................................................ 45
Триггерные и непрерывные функции.......................................................... 46
6 Оглавление
Статические и динамические функции...................................................... 47
Автоматизированная и ручная функции ................................................... 48
Временная функция .......................................................................................... 49
Функция с преднамеренным развитием .................................................... 50
Предметно-ориентированная функция...................................................... 50
Ранняя идентификация функций пригодности............................................. 50
Пересмотр функций пригодности ...................................................................... 53
Глава 3. Проектирование инкрементных изменений............................ 55
Строительные блоки................................................................................................ 59
Тестопригодность ............................................................................................... 62
Конвейеры развертывания.............................................................................. 64
Комбинирование категорий функций пригодности .............................. 70
Практический пример: реструктуризация архитектуры
при ее развертывании 60 раз в день ............................................................. 73
Конфликтующие цели ...................................................................................... 76
Практический пример: добавление функций пригодности
в сервис выставления счетов PenultimateWidgets.................................. 77
Разработка, основанная на гипотезах и на данных....................................... 81
Практический пример: что портировать? ........................................................ 84
Глава 4. Архитектурная связанность ...................................................... 86
Модульность............................................................................................................... 86
Квант и гранулярность архитектуры................................................................. 87
Эволюция архитектурных стилей....................................................................... 92
Большой комок грязи........................................................................................ 93
Монолитная архитектура ................................................................................ 95
Событийно-ориентированная архитектура ............................................106
Сервис-ориентированные архитектуры ...................................................113
Бессерверная архитектура ............................................................................131
Контроль размера кванта .....................................................................................134
Практический пример: предотвращение циклов компонентов..............135
Глава 5. Эволюционирующие данные .................................................. 138
Эволюционное проектирование баз данных.................................................139
Эволюционные схемы...........................................................................................139
Оглавление 7
Интеграция базы данных общего использования.......................................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
8 Оглавление
Практический пример: эволюционирование рейтингов
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
Оглавление  9
Практический пример: 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