Architectural patterns + Architectural style
2019-08-27 14:51:12 +0600 +0600
Архетектурные стили и шаблоны
Здесь я хочу поговорить про Архитектурные шаблоны и Архитектурные стили. Это два термина часто встречаются в теории построения архитектуры. Они звучат похоже, но имеют разные значения.
Архитектурный шаблон
An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context. Architectural patterns are similar to software design pattern but have a broader scope.
Важно
Даже если архитектурный шаблон передает образ системы, это не архитектура. Архитектурный шаблон - это концепция, которая решает и очерчивает некоторые важные связующие элементы архитектуры программного обеспечения. Бесчисленные разные архитектуры могут реализовывать один и тот же шаблон и иметь общие характеристики. Шаблоны часто определяются как «строго описанные и общедоступные».
Таким образом можно сказать что шаблон это один из важных способов решения архитекторской задачи. Необходимо также сказать, что шаблон не рассматривает контекст или домен продукта. Т.е Client-server pattern никак не связан с доменом фин-тех или медициной.
Опять же шаблоны архитектуры очень похожи на шаблоны разработки, но в иерархии построение программного продукта они решают более высокоуровневые задачи.
Как распознать шаблон:
Шаблон - это повторяющееся решение повторяющейся проблемы.
В случае архитектурных моделей они решают проблемы, связанные с архитектурным стилем. Например, «какие классы мы будем иметь и как они будут взаимодействовать, чтобы реализовать систему с определенным набором уровней», или «какие высокоуровневые модули будут в нашей сервис-ориентированной архитектуре и как они будут взаимодействовать» или «сколько уровней будет иметь наша клиент-серверная архитектура».
Примеры:
-
Layered pattern
-
Client-server pattern
-
Master-slave pattern
-
Pipe-filter pattern
-
Broker pattern
-
Peer-to-peer pattern
-
Event-bus pattern
-
Model-view-controller pattern
-
Blackboard pattern
-
Interpreter pattern
Архитектурный Стиль
An architectural style is a named collection of architectural design decisions that (1) are applicable in a given development context, constrain architectural design decisions that are specific to a particular system within that context, and elicit beneficial qualities in each resulting system
Определение архитектурный стиль можно трактовать так : Архитектурный стиль это названая группа архитектурных решений + паттернов + контекст.
Архитектурные стили в самых общих чертах говорят нам, как организовать наш код. Это самый высокий уровень детализации, и он определяет уровни, высокоуровневые модули приложения и то, как эти модули и уровни взаимодействуют друг с другом.
-
Component-based
-
Monolithic application
-
Layered
-
Pipes and filters
-
Event-driven
-
Publish-subscribe
-
Plug-ins
-
Client-server
-
Service-oriented
Если посмотреть более детально на примеры Архитектурных шаблонов и стилей, то видно, что они очень похожи и у них есть пересечения. Эти два термина часто используются при валидации архитектуры. Если несколько паттернов используются для комплексного решения одной проблемы, то это уже свойство архитектурного стиля.
Такое деление часто является субъективным.
Но оно сильно упрощает документирование архитектуры.
ЧТО МОЖНО почитать
https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013