Обзор книги “Software Architecture: The Hard Parts” — Part 2

Architectural Decomposition

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

Рис.1 “Algorithm for selecting a decomposition approach”

Is the Codebase Decomposable?

В этой части главы авторы вспоминают книгу “Structured Design: Fun‐ damentals of a Discipline of Computer Program and Systems Design” за авторством Edward Yourdon and Larry Constantine, в которой определены понятия двух видовcoupling

  • FanIn: число входящих зависимостей для компонента (сколько компонентов от него зависят)
  • FanOut: число исходящих зависимостей для компонента (от скольких компонентов он зависит)
  • FanIn и FanOut рассчитываются как число классов извне компонентов, которые имеют зависимости на классы внутри компонентов.
  • I (Instability): I = FanOut/(FanOut+ FanIn): эта метрика принимает значения от 0 для полностью стабильного компонента, до 1 — для полностью нестабильного
Рис.2 “Examples of stable and instable components”
  • A: Abstractness. A = Na/Nc
Рис.3 “Instability, Abstractness, The Main Sequence”
  • Зона боли — здесь у нас полностью стабильные и неабстрактные компоненты. Проблема в том, что если потребуется поменять реализацию, то это будет очень больно
  • Зона бесполезности — здесь у нас абстрактные классы, от которых никто не зависит. Это просто бессмысленно.
Рис.4 “Approaches for decomposing an application”

Component-Based Decomposition Patterns

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

  • Описание паттерна, включая его цель, как он работает и предполагаемые результаты
  • Fitness functions, которые можно применять для governance
  • Описание того, как этот паттерн применяется для учебного приложения Squad application
Рис.5 “Component-based decomposition pattern flow and usage”
Рис.6 “Types of stories”

P.S.

Запись обсуждения этой части книги в нашем книжном клубе Code of Architecture представлена ниже. А продолжения можно прочитать в других статьях 3, 4, 5.

--

--

Director of digital ecosystem development department at Tinkoff. Bachelor at applied math, Master at system analysis, Postgraduate studies at economics.

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Alexander Polomodov

Alexander Polomodov

Director of digital ecosystem development department at Tinkoff. Bachelor at applied math, Master at system analysis, Postgraduate studies at economics.