Вы находитесь на странице: 1из 8

Инструкция по

архитектурным
шаблонам для
PM'а
Одна из задач менеджера — обосновать
клиенту ценность выбранных технических
решений. Техническим специалистам бывает
сложно доносить аргументы на языке бизнеса,
поэтому данный чек-лист призван объяснить
менеджеру преимущества и недостатки
шаблонов архитектуры, и помочь понять
решения архитектора или техлида.

Прежде всего, нужно понимать, что


архитектура это не одно отдельное решение,
а совокупность решений об организации
программной системы. Технические
специалисты не придумывают эти решения на
ходу, а выбирают из существующих шаблонов.
Архитектурный шаблон — это обобщенное
часто используемое решение задачи в
архитектуре ПО в заданном контексте.
Какие же бываю контексты архитектуры?
Сетевая архитектура
Это организация передачи данных между между поставщиками и
потребителями услуг.
К таким архитектурным шаблонам относятся Client-server и Peer-to-peer
(P2P)

Client-server
— особенность в том, что множество клиентов обращаются к одному
серверу.

Где лучше применять: Недостатки:


Все онлайн-приложения (e-com, Сбой на сервере может сделать
banking, etc.) неработоспособной всю
Всевозможные API вычислительную сеть
Поддержка системы требует
отдельного специалиста —
Преимущества: системного администратора или
девопса
Безопасность хранения данных
Безопасность вычислений
Низкие требования к компьютерам,
на которых установлен клиент
Peer-to-peer (P2P или
децентрализованная сеть)
— особенность в том, что каждый узел сети (peer) является как
клиентом, так и выполняет функции сервера.

Где лучше применять: Недостатки:


Криптовалютные продукты Сложность организации сети с
Распределенные финансовые нуля
системы (blockchain hyperledger) Сложность обеспечения
File-sharing networks безопасности
Multimedia protocols, такие как P2PTV Снижение продуктивности при
and PDTP высокой нагрузке

Преимущества:
Сохраняет работоспособность сети
при любом количестве и любом
сочетании доступных узлов
P2P сети децентрализованы и более
безопасны
Атакующий не может навредить
сети через уничтожение одного
узла
Инфраструктурная
архитектура
Это организация распределения данных между компонентами системы
(WEB-сервер, фронтенд, бекенд, база данных, кэширующие прослойки и
прочее), а также выбор расположения, подключения и взаимосвязи
между компонентами.
К таким архитектурным шаблонам относятся Monolith и Service Oriented
Architecture (SOA)

Monolith
— особенность в том, что все функции программного обеспечения
находятся в единой кодовой базе.

Где лучше применять: Недостатки:


Desktop приложения Кодовая база со временем
web приложения становится громоздкой
Разработка в условиях стартапа или Трудоемкая поддержка
ограниченного бюджета Re-deploy всего приложения при
Разработка силами малоопытных каждом обновлении
разработчиков Сложно масштабировать
Ненадежность — баг в коде
Преимущества: потенциально может сломать все
Быстро разрабатывать приложение
Легко деплоить Сложность во внедрении новых
технологий
Microservices
— особенность в том, что функции единого программного обеспечения
разделены и распределены на отдельные приложения (сервисы).
Поскольку каждый сервис является независимой единицей, его легко
обновлять и поддерживать, не затрагивая другие сервисы.

Где лучше применять: Недостатки:


Большие распределенные решения Дополнительная распределенная
Крупные сайты и интернет-магазины сложность
Игровые порталы и т.п. Сложнее писать интеграционные
тесты
Сложнее выстраивать
коммуникацию между сервисами
Преимущества:
Увеличение используемых
Легко масштабировать и ресурсов
распределять между командами
Упрощает деплой, можно
выкатывать только обновленные
сервисы
Легче тестируем
Легче поддерживать
Поломка отдельного сервиса не
означает поломку всего
приложения
Архитектура кодовой базы
Это организация написания кода с разделением его на логические
блоки или слои, каждый из которых отвечает за свою зону
ответственности. К таким архитектурным шаблонам относятся N-tier и
Model-View-Controller (MVC)

N-tier (многоуровневая)
архитектура
— особенность в том, что логика разделена на несколько (чаще всего
на четыре) слоя в рамках одного приложения.

Где лучше применять: Недостатки:


Небольшие, простые приложения и Наличие уровней снижает
веб-сайты производительность
Если бюджет и время ограничены Добавление уровней увеличивает
полную стоимость и усложняет
Преимущества: систему

Поддержка легче, потому что все


слои разделены
Легко масштабируется
горизонтально, более эффективен,
чем монолит
Model-View-Controller (MVC)
— особенность в том, что в коде выделяются блоки, отвечающие за
решение разных задач. Один блок отвечает за данные приложения,
другой отвечает за внешний вид, а третий контролирует работу
приложения.

Где лучше применять: Недостатки:


Десктопные и мобильные Немного усложнен процесс
приложения расширения функционала
Веб сайты

Преимущества:
Единая концепция системы
Упрощенный механизм отладки
приложения

Хотите не просто понимать отдельные словосочетания, но и


строить процесс Delivery, чтобы поставлять качественный
продукт в рамках сроков и бюджета?
Обратите внимание на
программу Delivery Mind. Подробнее

Вам также может понравиться