Similar presentations:
Построение архитектуры проекта. Шаблон проекта
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.Сделать сравнительную
характеристику рассмотренных
шаблонов, выделив плюсы и минусы.