Вы можете быть уверены в том, что программное обеспечение, над которым вы работаете, будет меняться. Изменения обусловлены не только новыми требованиями со стороны бизнеса – меняются языки программирования, фреймворки и библиотеки, меняются парадигмы программирования, меняются инструменты инфраструктуры. Ко всему этому можно и имеет смысл быть готовыми.

О чем эта книга?

Архитектура, которую мы используем, должна уметь эволюционировать. В противном случае, гибкой методологии разработки будет водить наши решения все дальше от изначальных архитектурных требований. Если мы хотим чтобы наша система была готова к изменениям, мы должны заложить в нашу архитектуру готовность эволюционировать, это и будет одной из характеристик архитектуры.

В книге рассказывают про инструменты достижения эволюционной архитектуры, приводят примеры и варианты реализации, приведены варианты “продажи” этого подхода бизнесу.

Архитектура с эволюционным развитием имеет три основных аспекта: инкрементные изменения, функции пригодности и надлежащая связность.

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

Примеры функций пригодности: тест на время отклика, оценка показателя циклом а тической сложности кода, и такой пример – нам важно, чтобы все персональные данные хранились только в одном сервисе, для этого мы на постоянной основе проверяем базу данных других сервисов в поисках персональных данных, которых там быть не должно, можно измерять cycle time/lead time и следить что разработка не замедляется по мере внесения изменений.  

Компании стоит инвестировать в эволюционную архитектуру, как минимум, чтобы сохранить предсказуемость темпов разработки, в противном случае в какой-то момент разработка новой фичи может оказаться неожиданно долгой или дорогой.

Для кого эта книга?

Рекомендую к прочтению архитекторам и техническим руководителям разных уровней.

Часть концепций раскрыты в видео от автора книги – Нила Форда