Построение архитектуры проекта. Шаблон проекта
271.00K

2.2.3 Построение архитектуры проекта. Шаблон проекта

1. Построение архитектуры проекта. Шаблон проекта

2.

Многие современные приложения
нужно проектировать в масштабе
предприятия или даже всего
интернета.
Все они должны отвечать
требованиям масштабируемости,
доступности, безопасности, надежности
и отказоустойчивости.

3.

Современные шаблоны проектирования
1. Автоматическое прерывание
(Circuit Breaker)
Распределенные системы необходимо
проектировать с учетом отказов. Сейчас
микросервисы стали распространенным
явлением.
Чаще всего они зависят от других
удаленных сервисов, которые могут по
различным причинам не реагировать вовремя,
например из-за проблем с сетью, загрузки
приложений и т.д. В большинстве случаев для
решения подобных проблем достаточно
реализации повторных попыток.

4.

Современные шаблоны проектирования
1. Автоматическое прерывание
(Circuit Breaker)
Когда использовать этот шаблон
Когда сервис зависит от другого удаленного
сервиса, и есть вероятность его отказа в некоторых
сценариях. Когда сервис имеет очень высокую
зависимость (например, сервисы мастер-данных).
Когда не следует использовать этот шаблон
Когда вы имеете дело с локально-зависимыми
объектами, автоматическое прерывание может
привести к чрезмерному потреблению ресурсов.

5.

Современные шаблоны проектирования
2. Разделение ответственности команд и
запросов (CQRS)
CQRS (Command Query Responsibility Se
gregation) — очень полезный шаблон для
современных приложений,
взаимодействующих с хранилищами данных.
Он основан на принципе разделения
операций чтения (запрос) и
записи/обновления (команда) в хранилище
данных.

6.

Современные шаблоны проектирования
2. Разделение ответственности команд и
запросов (CQRS)
Когда использовать этот шаблон
При масштабировании приложения, когда
ожидается огромное количество операций чтения и
записи. Если вы хотите отдельно настроить
производительность для операций чтения и записи.
Когда операции чтения происходят практически в
реальном времени или же последовательно.
Когда не следует использовать этот шаблон
Когда вы создаете обычное приложение CRUD, в
котором не ожидается огромного количества
одновременных операций чтения и записи.

7.

Современные шаблоны проектирования
3. Определение источников событий
Определение источников событий — интересный
шаблон проектирования, в котором
последовательность событий домена хранится в виде
журнала, агрегированное представление которого
представляет текущее состояние приложения.
Этот шаблон обычно применяют для систем,
которые не могут позволить себе блокировки
хранилища данных и которым необходимо вести
ревизию и сохранять историю событий. Например, для
приложений по бронированию отелей, конференций,
мест.

8.

Современные шаблоны проектирования
4. Определение источников событий
Когда использовать этот шаблон
Когда регулярные CRUD-операций недостаточно
удовлетворяют требованиям. Как правило, он подходит для
систем бронирования мест, например в автобусах, поездах, на
конференциях, в кинозалах, или систем электронной коммерции,
которые включают такие события, как манипуляции с корзиной,
платежи и т.д.
Когда существует потребность в постоянной ревизии и
воспроизведении событий для сохранения текущего и прошлого
состояния приложений.
Когда не следует использовать этот шаблон
Когда регулярных CRUD-операций достаточно, чтобы
удовлетворить потребности пользователя.

9.

Современные шаблоны проектирования
5. Шаблон расширения (Sidecar)
В этом шаблоне некий компонент приложения
развертывается в отдельном процессе или контейнере.
Это помогает достичь абстрагирования и
инкапсуляции.
Envoy Proxy — один из самых популярных внешних
прокси-серверов, нашедший широкое применение. Он
помогает разместить основные функциональные
возможности приложения отдельно, воспользовавшись
расширением для изоляции общих функций, таких как
работа с сетью, наблюдаемость и безопасность.

10.

Современные шаблоны проектирования
5. Шаблон расширения (Sidecar)
Когда использовать этот шаблон
Когда вы имеете дело с множеством однообразных
микросервисов в области продукта.
Когда вы имеете дело с устаревшими
приложениями, которые не справляются с новыми
проблемами коммуникации и безопасности.
Когда не следует использовать этот шаблон
Когда вы имеете дело с ограниченным количеством
взаимодействующих сервисов.
В небольших приложениях, где развертывание
внешних устройств неэкономично или неудобно в
эксплуатации.

11.

Современные шаблоны проектирования
6. Backend-for-Frontend (BFF)
Для оптимизации работы мобильных клиентов
можно создать отдельную серверную службу, которая
предоставляет легкие и разбитые на страницы ответы.
Вы также можете воспользоваться данным
шаблоном для агрегации различных сервисов, чтобы
уменьшить лишний обмен сообщениями.

12.

Современные шаблоны проектирования
6. Backend-for-Frontend (BFF)
Когда использовать этот шаблон
Когда вы хотите предоставлять продукт/услугу для разных
клиентов (мобильных и стационарных устройств).
Когда вы хотите оптимизировать ответ для конкретного типа
клиента.
Когда вы хотите уменьшить обмен сообщениями между
мобильными клиентами и различными сервисами.
Когда не следует использовать этот шаблон
Когда ожидается, что пользовательский интерфейс будет
единым для всех.
Когда ожидается, что мобильные и компьютерные приложения
будут демонстрировать аналогичную информацию и
предоставлять аналогичную функциональность.

13.

Современные шаблоны проектирования
7. Подавление (Strangler)
Если вы работаете в организации, которая
находится в процессе модернизации приложений, то
шаблон подавления, он же Strangler, именно то, что
вам нужно.
Шаблон проектирования Strangler предполагает
создание внешнего интерфейса поверх легаси-кода и
нового кода приложения, таким образом предоставляя
потребителю обобщенный вид.

14.

Современные шаблоны проектирования
7. Подавление (Strangler)
Когда использовать этот шаблон
Когда вы переносите или модернизируете
сложное, сильно зависимое приложение, например в
случаях миграции ERP-систем.
Когда не следует использовать этот шаблон
Когда переход достаточно прост, а прямая замена
— наилучший вариант.

15.

Задание
1.Сделать сравнительную
характеристику рассмотренных
шаблонов, выделив плюсы и минусы.
English     Русский Rules