К основному содержимому
#Architecture

[1/2] Head First Software Architecture (Head First. Архитектура ПО) (Рубрика Architecture)

#Architecture #Software #Engineering #SystemDesign #DistributedSystems #Metrics #Architect

В отпуске я прочел книгу из серии Head First по архитектуре, которая вышла в марте прошлого года на английском, а в апреле этого уже появилась на русском в издательстве Питер. Вообще, я люблю серию "Head First" за доступное объяснение сложных тем, а архитектура софта - это определенно сложная тема:) Авторами книги были Раджу Ганди, Марк Ричардс и Нил Форд, причем двух последних я знаю хорошо - я читал их книги по архитектуре и мне показалось, что они уже исписались и я зарекся их читать. А вот Raju Gandhi был для меня новичком, но оказалось, что он уже написал несколько книг в серии "Head First" и его опыт благотворно повлиял на книгу - она мне показалась интереснее и полезнее "Fundamentals of Software Architecture" и "Software Architecture: The Hard Parts", которые писали Форд и Ричардс без Ганди:) Кстати, про обе книги я уже рассказывал: "Fundamentals ..." и "... Hard Parts".

Если же возвращаться к книге "Head First Software Architecture", то это доступное введение в основы software architecture, оформленное в визуально насыщенном стиле (аля комикс), основанном на исследованиях в области когнитивных наук, что делает ее отличной отправной точкой для разработчиков, желающих освоить архитектурное мышление.

Основная мысль книги базируется на четырех измерениях архитектуры, которые выделяют авторы

1) Architectural Characteristics Это то, какие свойства (||нефункциональные требования, атрибуты качества, архитектурные характеристики||) система должна поддерживать - такие как scalability, testability, availability и др. Интересно, что я недавно разбирал whitepaper "Quality Metrics in Software Architecture" (1 и 2), где очень подробно разбирались - QualityElements - элементы качества, которые по мнению авторов этой статьи юывают трех видов

  • Metric — конкретная метрика для измерения качества архитектуры
  • QualityCharacteristic — глобальная характеристика качества (например, reliability, maintainability)
  • QualityAttribute — атрибут качества, связанный с одной из характеристик Авторы книги настолько не упарываются по этим -ilities, но отмечают, что архитектурные характеристики — это основа архитектуры, без которой невозможно принимать архитектурные решения или анализировать компромиссы. 2) Architectural Decisions Это решения, оказывающие долгосрочное или значимое влияние на систему, например, выбор базы данных, количество сервисов, способы их взаимодействия. Architectural decisions задают структуру для команд разработки, определяя, например, количество сервисов и типы баз данных. Забавно, что лет 5 назад я сам рассказывал про наши архитектурные процессы в Т (Архитектура в масштабе на ArchDays 2020) и там было про RFC (request for comments) и ADR (architecture decision records) 3) Logical Components Это функциональные строительные блоки системы и их взаимодействие. Например, в e-commerce системе это могут быть inventory management и payment processing. Logical components - это как комнаты в доме: базовые структурные элементы с определённой функцией. 4) Architectural Styles Это общее физическое устройство и структура системы, аналогично тому, как план здания определяет структуру дома. Architectural styles можно классифицировать по
  • Стилю разбиения (technical или domain partitioned)
  • Модели деплоя (monolithic или distributed)

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

#Architecture #Software #Engineering #SystemDesign #DistributedSystems #Metrics #Architect