Стиль - общее представление архитектурной идеи, основная причина - запоминание
- Client/Server
- Component-Based Architecture
- Domain Driven Design
- Layered Architecture
- Message Bus
- N-Tier / 3-Tier
- Object-Oriented
- Service-Oriented Architecture (SOA)
Разберем варианты использования архитектурных стилей в реальной работе:
- pipes и filters
- шаблоны появляются при детализации
- проблема, контекст, решение
- шаблонные элементы: майнеры, охранники, фильтры
- уменьшение цикломатической сложности, устойчивое поведение к шуму
- Компонентный подход
- подходов много, можно выступать в роли адвоката, но устоявшееся практика - решает
- интуитивный подход по определению монолита - это что-то целое, а противоположное - разрезанное на части, но контекст решает в архитектуре софта, поэтому в разных контекстах может быть по-разному
- монолиты бывают структурные, логические
- структурный монолит - спагетти код, логический - высокое зацепление
- компоненты - попытка структурной реорганизации, которая не имеет отношения к развертыванию
- компонентный подход может увеличить зацепление (показать как один компонент разбивается на два)
- разбиение на компоненты - уход к модульной монолитности, для повышения совместной работы и переиспользования
- компоненты - мера разбиения это DRY и Kiss. FizzBus => Fizz + Bus
- сильно мелкие компоненты - проблемы производительности, сильно крупные проблемы переиспользования
- не решают проблемы монолитности развертывания
- npm - компонентный подход, можно делать монолиты