В области корпоративной архитектуры архитектурные шаблоны являются важным инструментом для создания эффективных решений распространенных проблем. Шаблоны позволяют рассматривать элементы в контексте, и могут предоставить архитекторам чертеж для проектирования решений, которые уже доказали свою эффективность в прошлом. В этой статье мы рассматриваем концепцию архитектурных шаблонов в контексте TOGAF ADM и приводим пример архитектурного шаблона в контексте разработки бизнес-приложений.
Что такое архитектурные шаблоны
«Шаблон» определен как: «идея, которая была полезна в одном практическом контексте и, вероятно, будет полезна в других» (Источник: Анализ шаблонов – повторно используемые объектные модели, М. Фаулер).
В стандарте TOGAF шаблоны рассматриваются как способ размещения элементов в контексте; например, для описания повторно используемого решения проблемы. Элементы — это то, что вы используете: шаблоны могут объяснить, как, когда, зачем и какие компромиссы необходимо делать при их использовании.
Шаблоны обещают помочь архитектору выявить комбинации архитектурных и/или решений элементов (ABB/SBB), которые уже доказали свою эффективность в прошлом, и могут стать основой для эффективных решений в будущем.
Методы шаблонов в общем признаны ценным методом архитектурного проектирования Кристофером Александером, архитектором зданий, который описал этот подход в своей книге «Вечный путь построения», опубликованной в 1979 году. Эта книга представляет собой введение в идеи, лежащие в основе использования шаблонов, а затем Александер опубликовал еще две книги («Язык шаблонов» и «Орегонский эксперимент»), в которых он расширил описание особенностей и преимуществ подхода к архитектуре с использованием шаблонов.
Архитектурные шаблоны в TOGAF ADM
Метод разработки архитектуры (ADM) является ключевым компонентом стандарта TOGAF от Open Group, который предоставляет основу для создания и управления корпоративной архитектурой. В рамках ADM архитектурные шаблоны являются мощным инструментом, который помогает архитекторам выявлять проверенные решения распространенных проблем и ускорять разработку эффективных архитектур.
В основе архитектурного шаблона лежит просто описание повторно используемого решения проблемы, которое уже доказало свою эффективность на практике. Как подсказывает приведенное выше определение, шаблон — это идея, которая была полезна в одном контексте и, вероятно, будет полезна и в других. Шаблоны могут использоваться для описания решений на разных уровнях абстракции — от высокого уровня архитектурных шаблонов, описывающих общую структуру системы, до низкоуровневых шаблонов проектирования, описывающих, как должны быть реализованы отдельные компоненты.
Одним из ключевых преимуществ использования архитектурных шаблонов является возможность помочь архитекторам выявить комбинации архитектурных элементов (ABB) или элементов решений (SBB), которые уже доказали свою эффективность в прошлом. Это позволяет экономить время и усилия, предоставляя отправную точку для разработки архитектуры, вместо того чтобы начинать с нуля при каждом новом проекте.
Кроме того, архитектурные шаблоны могут помочь обеспечить согласованность и целостность архитектур. Используя шаблоны для описания решений распространенных проблем, архитекторы могут создать общий язык и набор концепций, которые могут использоваться на всей организации. Это помогает избежать недопонимания и обеспечивает, чтобы все работали в направлении общей картины архитектуры.
Методы шаблонов были признаны ценным методом архитектурного проектирования Кристофером Александером, архитектором зданий, который описал этот подход в своей книге «Вечный путь построения». Идеи Александера позже были расширены в двух дополнительных книгах — «Язык шаблонов» и «Орегонский эксперимент».
В контексте корпоративной архитектуры существует несколько различных типов архитектурных шаблонов, которые можно использовать. Среди наиболее распространенных —
- Справочные архитектуры — описывают общую структуру системы или приложения и служат отправной точкой для разработки архитектуры.
- Шаблоны решений — описывают, как конкретные проблемы могут быть решены с использованием комбинации ABB и SBB.
- Шаблоны процессов — описывают лучшие практики и общие рабочие процессы разработки и внедрения архитектур.
- Шаблоны проектирования — описывают, как должны быть спроектированы и реализованы отдельные компоненты, и могут помочь обеспечить согласованность и поддерживаемость на всей архитектуре.
Архитектурные шаблоны — мощный инструмент для архитекторов, стремящихся создать эффективные и эффективные корпоративные архитектуры. Выявляя проверенные решения распространенных проблем, архитекторы могут экономить время и усилия, одновременно обеспечивая согласованность, целостность и соответствие архитектуры целям и задачам организации.
Шаблон для документирования архитектурных шаблонов
1. Название шаблона
Описательное название шаблона, которое должно четко передавать решаемую проблему.
2. Проблема
Описание проблемы или вызова, которые должен решить шаблон. Это должно быть четким и конкретным, а также предоставлять контекст для шаблона.
3. Контекст
Описание контекста, в котором предназначен для использования шаблон. Это должно включать информацию об организации, системе или приложении, разрабатываемом в данный момент, а также любые связанные ограничения или ограничения.
4. Решение
Описание решения, которое предоставляет шаблон. Это должно быть четким и конкретным, а также объяснять, как шаблон может быть использован для решения проблемы, описанной в разделе 2.
5. Преимущества
Описание преимуществ использования шаблона. Это должно объяснить, как шаблон может помочь решить проблему, и предоставить доказательства его эффективности.
6. Компромиссы
Описание любых компромиссов или уступок, которые необходимо сделать при использовании шаблона. Это должно включать любые ограничения или недостатки шаблона, а также любые риски, которые необходимо управлять.
7. Реализация
Описание того, как можно реализовать шаблон. Это должно включать руководство по применению шаблона, а также любые соответствующие примеры или случаи использования.
8. Связанные шаблоны
Список связанных шаблонов, которые могут быть полезны в сочетании с текущим шаблоном. Это должно включать любые тесно связанные шаблоны или те, которые могут использоваться совместно с текущим шаблоном.
9. Ссылки
Список ссылок и источников, использованных при разработке шаблона. Это должно включать любые соответствующие публикации, статьи или другие ресурсы.
Используя этот шаблон, архитекторы могут создавать четкие и эффективные архитектурные шаблоны, которые легко могут быть обменены и повторно использованы в различных проектах и контекстах.
Пример архитектурного шаблона в бизнес-контексте
Рассмотрим пример архитектурного шаблона в контексте разработки бизнес-приложений.
Предположим, что компании необходимо разработать новое веб-приложение для управления отношениями с клиентами. Одной из ключевых проблем, с которыми она сталкивается, является обеспечение масштабируемости приложения и его способности обрабатывать большое количество одновременных пользователей.
Используя шаблон архитектурного шаблона, описанный выше, мы можем создать шаблон для решения этой проблемы:
1. Название шаблона: Масштабируемое веб-приложение
2. Проблема: Разработка веб-приложения для управления отношениями с клиентами, способного обрабатывать большое количество одновременных пользователей.
3. Контекст: Компании необходимо разработать новое веб-приложение для управления отношениями с клиентами. Приложение будет использоваться большим количеством пользователей и должно быть масштабируемым для обработки пиковых периодов нагрузки.
4. Решение: Шаблон масштабируемого веб-приложения предоставляет решение для разработки веб-приложения, способного обрабатывать большое количество одновременных пользователей. Ключевые элементы шаблона включают:
- Балансировка нагрузки: распределение входящих запросов между несколькими серверами для обеспечения того, чтобы ни один сервер не перегружался.
- Кэширование: использование кэширования в памяти для хранения часто используемых данных и снижения нагрузки на базу данных.
- Горизонтальное масштабирование: добавление дополнительных серверов в инфраструктуру для обработки увеличенной нагрузки.
- Шардинг базы данных: разделение базы данных на более мелкие части для распределения нагрузки между несколькими серверами.
5. Преимущества: Используя шаблон масштабируемого веб-приложения, компания может обеспечить, что её приложение способно обрабатывать большое количество одновременных пользователей без проблем с производительностью или простоев. Это может повысить удовлетворённость клиентов и увеличить доход, обеспечивая постоянную доступность приложения.
6. Компромиссы: Шаблон масштабируемого веб-приложения требует дополнительной инфраструктуры и ресурсов для реализации, что может увеличить затраты. Кроме того, внедрение балансировки нагрузки и кэширования может увеличить сложность архитектуры приложения.
7. Реализация: Для реализации шаблона масштабируемого веб-приложения компания должна рассмотреть возможность использования балансировщика нагрузки, такого как NGINX, внедрения кэширования с использованием технологии, такой как Redis или Memcached, и горизонтального масштабирования приложения с использованием облачной платформы, такой как AWS или Azure. Шардинг базы данных может быть реализован с использованием технологий баз данных, таких как MongoDB.
8. Связанные шаблоны: Связанные шаблоны, которые могут быть полезны в сочетании с шаблоном масштабируемого веб-приложения, включают:
- Архитектура микросервисов: разделение приложения на более мелкие, удобные для управления службы, которые могут масштабироваться независимо.
- Шлюз API: предоставление единого входа для доступа к службам приложения и управления трафиком.
9. Ссылки: Некоторые ссылки, которые могут быть полезны при разработке шаблона масштабируемого веб-приложения, включают:
- High Scalability (блог):
- Построение масштабируемых веб-сайтов (книга) Кэла Хендерсона
Используя данный архитектурный шаблон, компания может сэкономить время и усилия при разработке масштабируемого веб-приложения для управления взаимоотношениями с клиентами. Шаблон предлагает проверенное решение распространенной проблемы и может быть легко адаптирован под конкретные потребности и ограничения компании.
Пример архитектурного шаблона в контексте единого входа
Вот пример архитектурного шаблона в контексте единого входа (SSO):

1. Название шаблона: Единый вход (SSO)
2. Проблема: Несколько приложений в организации требуют от пользователей отдельной аутентификации, что приводит к плохому пользовательскому опыту и увеличению административных затрат по управлению учетными записями пользователей.
3. Контекст: Организация имеет несколько приложений, которые требуют от пользователей отдельной аутентификации, что вызывает раздражение и путаницу у пользователей. Организация хочет обеспечить бесшовный пользовательский опыт, позволяя пользователям пройти аутентификацию один раз и получить доступ ко всем приложениям, не вводя учетные данные повторно.
4. Решение: Шаблон единого входа предоставляет решение, позволяющее пользователям пройти аутентификацию один раз и получить доступ к нескольким приложениям, не вводя свои учетные данные повторно. Ключевые элементы шаблона включают:
- Поставщик удостоверений (IdP): централизованная служба, которая аутентифицирует пользователей и предоставляет токены или утверждения, которые могут использоваться для доступа к другим приложениям.
- Поставщик услуг (SP): приложение или служба, которая полагается на IdP для аутентификации пользователей и предоставляет доступ на основе токенов или утверждений, предоставляемых IdP.
- Стандартные протоколы: использование отраслевых стандартных протоколов, таких как SAML, OAuth или OpenID Connect, для обеспечения связи между IdP и SP.
5. Преимущества: Используя шаблон единого входа, организация может обеспечить бесшовный пользовательский опыт и снизить административные издержки по управлению учетными записями пользователей. Пользователям нужно пройти аутентификацию только один раз, после чего они могут получить доступ ко всем приложениям, не запоминая множество наборов учетных данных. Это может повысить удовлетворенность пользователей и снизить затраты на поддержку службы помощи.
6. Компромиссы: Реализация шаблона единого входа требует дополнительной инфраструктуры и ресурсов, что может увеличить затраты. Кроме того, интеграция с существующими приложениями может потребовать кастомной разработки или настройки, что добавляет сложности.
7. Реализация: Для реализации шаблона единого входа организация должна выбрать поставщика удостоверений, который поддерживает отраслевые стандартные протоколы, такие как SAML, OAuth или OpenID Connect. Поставщики услуг должны быть настроены на доверие к IdP для аутентификации и авторизации. Существующие приложения могут потребовать интеграции с IdP, что может потребовать разработки или настройки под конкретные случаи.
8. Связанные шаблоны: Связанные шаблоны, которые могут быть полезны в сочетании с шаблоном единого входа, включают:
- Федерированная идентичность: расширение шаблона единого входа для поддержки аутентификации между организациями или доменами.
- Управление доступом на основе атрибутов: использование атрибутов пользователей, предоставляемых IdP, для контроля доступа к ресурсам внутри приложений.
9. Ссылки: Некоторые ссылки, которые могут быть полезны при разработке шаблона единого входа, включают:
Используя данный архитектурный шаблон, организация может улучшить пользовательский опыт и снизить административные издержки, внедрив решение единого входа, которое позволяет пользователям получать доступ к нескольким приложениям без необходимости повторного ввода учетных данных. Шаблон предлагает проверенное решение распространенной проблемы и может быть легко адаптирован под конкретные потребности и ограничения организации.
Шаблоны архитектуры предприятия против шаблонов архитектуры программного обеспечения
Шаблоны архитектуры предприятия и шаблоны архитектуры программного обеспечения — это связанные, но разные понятия.
Шаблоны архитектуры программного обеспечения ориентированы на проектирование и реализацию отдельных программных систем или приложений. Они предоставляют набор руководящих принципов и лучших практик для проектирования и реализации компонентов программной системы, таких как модули, интерфейсы и взаимодействия.
С другой стороны, шаблоны архитектуры предприятия ориентированы на проектирование и согласование множества программных систем и приложений внутри организации. Они предоставляют набор руководящих принципов и лучших практик для проектирования и реализации общей архитектуры предприятия, включая бизнес-процессы, структуры данных и технологическую инфраструктуру.
Шаблоны архитектуры предприятия, как правило, решают такие вопросы, как интеграция систем, взаимодействие и масштабируемость, которые обычно не рассматриваются шаблонами архитектуры программного обеспечения. Они также учитывают более широкий бизнес-контекст, в котором развертываются программные системы, и стремятся выровнять ИТ-системы с целями и задачами организации.
Примеры шаблонов архитектуры предприятия включают архитектуру, ориентированную на службы (SOA), управление бизнес-процессами (BPM) и шаблоны интеграции предприятия (EIP), в то время как примеры шаблонов архитектуры программного обеспечения включают модель-представление-контроллер (MVC), микросервисы и многоуровневую архитектуру.

Шаблоны архитектуры программного обеспечения
Шаблоны архитектуры программного обеспечения — это повторно используемые решения для часто возникающих проблем в проектировании программного обеспечения. Они обеспечивают структурированный подход к проектированию и реализации программных систем, определяя набор правил и руководящих принципов, которые помогают обеспечить надежность, масштабируемость и поддерживаемость системы.
Шаблоны архитектуры программного обеспечения предоставляют высокий уровень представления системы, выделяя ее ключевые компоненты и их взаимодействие. Они определяют отношения между этими компонентами и устанавливают набор правил для их взаимодействия и совместной работы.
Используя шаблоны архитектуры программного обеспечения, разработчики могут экономить время и усилия, повторно используя проверенные решения для распространенных проблем, вместо того чтобы начинать с нуля с каждого нового проекта. Это может помочь повысить качество конечного программного обеспечения, а также сократить время и затраты на разработку.
Некоторые примеры шаблонов архитектуры программного обеспечения включают модель-представление-контроллер (MVC), микросервисы, многоуровневую архитектуру, архитектуру, ориентированную на службы (SOA), и архитектуру, управляемую событиями (EDA).
Вот некоторые популярные шаблоны архитектуры программного обеспечения:
- Шаблон модель-представление-контроллер (MVC): этот шаблон разделяет приложение на три взаимосвязанных компонента — модель, представление и контроллер — для управления сложностью и достижения разделения обязанностей.
- Архитектура микросервисов: этот шаблон разбивает приложение на более мелкие, независимо развертываемые службы, которые могут разрабатываться, развертываться и масштабироваться отдельно.
- Многоуровневая архитектура: этот шаблон делит приложение на логические уровни, каждый из которых отвечает за определенный аспект функциональности приложения, обеспечивая модульность и разделение обязанностей.
- Архитектура, ориентированная на службы (SOA): этот шаблон представляет собой архитектурный подход к построению распределенных систем, в которых службы являются основными строительными блоками.
- Архитектура, основанная на событиях (EDA): этот шаблон акцентирует внимание на создании, обнаружении, потреблении и реакции на события, происходящие в системе, что обеспечивает более гибкую и масштабируемую архитектуру.
- Доменная модель проектирования (DDD): этот шаблон поощряет использование общего языка и модели для описания домена проблемы, что приводит к более поддерживаемому и понятному коду.
- Гексагональная архитектура: этот шаблон структурирует приложение вокруг центрального ядра, с портами и адаптерами, которые обеспечивают связь между ядром и внешними системами.
- CQRS (разделение ответственности команд и запросов): этот шаблон разделяет модели чтения и записи приложения, что позволяет более эффективно выполнять запросы и улучшает масштабируемость.
- Реактивная архитектура: этот шаблон представляет собой набор принципов проектирования, направленных на создание устойчивых, масштабируемых и отзывчивых систем, способных реагировать на изменения в окружающей среде.
- Чистая архитектура: этот шаблон акцентирует внимание на разделении ответственности между различными слоями приложения, с целью создания кода, который легко читать, тестировать и поддерживать.
Краткое содержание
Шаблоны архитектуры — это ценный метод проектирования в корпоративной архитектуре, который предлагает архитекторам способ разработки эффективных решений для типичных проблем. Предоставляя чертеж для проектирования решений, которые уже доказали свою эффективность, шаблоны архитектуры могут помочь архитекторам экономить время и ресурсы, а также повышать общее качество решения. В этой статье мы привели пример шаблона архитектуры в контексте разработки бизнес-приложений, а именно в контексте единого входа (SSO). Используя шаблон единого входа, организации могут обеспечить бесперебойный пользовательский опыт и снизить административные издержки по управлению учетными записями пользователей, одновременно повышая удовлетворенность пользователей и снижая затраты на поддержку служб помощи.











