Стиль - общее представление архитектурной идеи, основная причина - запоминание

- 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 - компонентный подход, можно делать монолиты