Архитектурные шаблоны и стили

preview

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

Архитектурные перспективы

Duration: 20

  • Архитектурный подход - приоритет архитектуры
  • Решать на бумаге дешевле, чем делать реализацию в коде и переписывать
  • Используется потому что монолиты хорошо развиваются вертикально, но не горизонтально
  • Архитектурные перспективы - цель устранение белых пятен
    • вопросы по теме перспективы
    • количество вопросов регулируется опытом, нет идеальных правил
    • структуры статические - что есть архитектура
    • структуры динамические - как работает система (в рантайме)
    • Виды диаграмм:
      • Structure Diagrams
      • Class Diagram
      • Component Diagram
      • Deployment Diagram
      • Object Diagram
      • Package Diagram
      • Profile Diagram
      • Composite Structure Diagram

Архитектурный стиль и шаблоны

Duration: 20

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

- Client/Server 
- Component-Based Architecture
- Domain Driven Design
- Layered Architecture
- Message Bus
- N-Tier / 3-Tier
- Object-Oriented
- Service-Oriented Architecture (SOA)

Практическое задание

Duration: 20

Разберем варианты использования архитектурных стилей в реальной работе:

  • pipes и filters
  • шаблоны появляются при детализации
  • проблема, контекст, решение
  • шаблонные элементы: майнеры, охранники, фильтры
  • уменьшение цикломатической сложности, устойчивое поведение к шуму
  • Компонентный подход
  • подходов много, можно выступать в роли адвоката, но устоявшееся практика - решает
  • интуитивный подход по определению монолита - это что-то целое, а противоположное - разрезанное на части, но контекст решает в архитектуре софта, поэтому в разных контекстах может быть по-разному
  • монолиты бывают структурные, логические
  • структурный монолит - спагетти код, логический - высокое зацепление
  • компоненты - попытка структурной реорганизации, которая не имеет отношения к развертыванию
  • компонентный подход может увеличить зацепление (показать как один компонент разбивается на два)
  • разбиение на компоненты - уход к модульной монолитности, для повышения совместной работы и переиспользования
  • компоненты - мера разбиения это DRY и Kiss. FizzBus => Fizz + Bus
  • сильно мелкие компоненты - проблемы производительности, сильно крупные проблемы переиспользования
  • не решают проблемы монолитности развертывания
  • npm - компонентный подход, можно делать монолиты