Шаблоны проектирования Cloud-based и микросервисных приложений
![Шаблоны проектирования Cloud-based и микросервисных приложений](https://joprblob.azureedge.net/site/news/17c38884-55d0-4522-907e-28d6b86d40fc/5e6b5f21-2933-4c5b-ad0b-975b6c002795.png)
Статья содержит паттерны, которые полезно применять в клауд приложениях и в микросервесной архитектуре.
Ambassador Pattern
![амбасадор](https://joprblob.azureedge.net/site/news/17c38884-55d0-4522-907e-28d6b86d40fc/97f0dd1a-6f9c-44f7-ba1e-c7fcfa7a709d.png)
Паттерн Ambassador позволяет перенести client connectivity tasks такие как: мониторинг, логинг маршрутизация, обеспечение безопасности (например, поддержка TLS) и другие на proxy сервис
https://bool.dev/blog/detail/ambassador-pattern
Aggregator, Chain и Branch паттерны для микросервисов
![Aggregator, Chain и Branch паттерны для микросервисов](https://joprblob.azureedge.net/site/news/d2b13e17-51d5-4ee6-a730-440a8581abf0/d064cefb-3a97-4131-a897-f77256ea046f.png)
В этой статье разберем 3 паттерна для коммуникации с микросервисами: Aggregator, chain и Branch. И в каких случаях их нужно использовать
https://bool.dev/blog/detail/aggregator-chain-i-branch-patterny-dlya-mikroservisov
Bulkhead pattern
![Bulkhead pattern](https://joprblob.azureedge.net/site/news/824058d0-82be-410a-a459-620505709f52/7e982c79-01be-4e05-b678-8ad034d93e82.png)
Шаблон Bulkhead — это подход к дизайну приложения, который устойчив к сбоям. В bulkhead архитектуре элементы приложения изолированы в пулы, так что в случае сбоя одного, остальные продолжат функционировать. Он назван в честь секционных перегородок корпуса корабля. Если корпус корабля поврежден, только поврежденная часть наполняется водой, что предотвращает затопление корабля.
https://bool.dev/blog/detail/bulkhead-pattern
Cache-aside Pattern
![caсhe aside](https://joprblob.azureedge.net/site/blog/17c38884-55d0-4522-907e-28d6b86d40fc/cache-aside.jpg)
В данной статье рассматриваем один из подходов, который состоит в том, что описывает как нужно работать с данными в кэше.
https://bool.dev/blog/detail/cache-aside-pattern
Circuit Breaker Pattern
![Circuit Breaker паттерн](https://joprblob.azureedge.net/site/blog/f212d4bc-e5df-4a29-b770-22c28e2ab7b8/img.png)
В данной статье рассматриваем одну из хороших практик которая позволит построить правильную коммуникацию между сервисами и избавиться от "провисания" сервиса или цепочки сервисов при выполнении транзакции
https://bool.dev/blog/detail/circuit-breaker-pattern
Sidecar
![sidecar pattern](https://joprblob.azureedge.net/site/blog/3aef9df6-b326-49e9-bb0c-19a9e9613026/side.png)
Разделение функций приложения в отдельный процесс можно рассматривать как шаблон Sidecar. Шаблон Sidecar позволяет добавить ряд возможностей в ваше приложение без дополнительного кода конфигурации для сторонних компонентов.
https://bool.dev/blog/detail/sidecar-pattern
Saga паттерн и распределенные транзакции
![saga flow](https://joprblob.azureedge.net/site/blog/97adf776-f391-492f-a007-1eb391bd0809/saga_flow.png)
Saga паттерн и распределенные транзакции помогают отменить или закоммитить операцию которая выполняется в несколько шагов и на нескольких сервисах, которые вместе можно назвать как консистентная операция (транзакция).
https://bool.dev/blog/detail/saga-pattern-i-raspredelennye-tranzaktsii
Паттерн конкурирующих потребителей (Competing Consumers Pattern)
![Паттерн конкурирующих потребителей (Competing Consumers Pattern)](https://joprblob.azureedge.net/site/news/57874b5c-69f1-4374-897a-d71881ef7f9b/schema.png)
Цель шаблона разрешить нескольким параллельным консюмерам обрабатывать сообщения, полученные по тому же каналу обмена сообщениями. Этот шаблон позволяет системе обрабатывать несколько сообщений одновременно, чтобы оптимизировать пропускную способность, улучшить масштабируемость и доступность, а также сбалансировать нагрузку.
https://bool.dev/blog/detail/competing-consumers-pattern
Паттерны CQRS и Event Sourcing
![event sourcing](https://joprblob.azureedge.net/site/blog/8e929873-d897-4a32-ae5a-84deff5e781b/event_sourcing.png)
В этой статье описываем паттерны CQRS и Event Sourcing. CQRS расшифровывается как Command Query Responsibility Segregation (разделение ответственности на команды и запросы).
Event sourcing (источники событий, регистрация событий, генерация событий) — это архитектурный паттерн, в котором все изменения, вносимые в состояние приложения, сохраняются в той последовательности, в которой они были выполнены.
/blog/detail/pattern-cqrs-i-event-sourcing
Strangler Pattern
![Strangler Pattern (Паттерн Душитель)](https://joprblob.azureedge.net/site/news/8aa3438a-61fe-4588-b1bb-798d1815f1e9/b5d23c35-82be-4299-9d2c-55fe247943dd.png)
В этой статье поговорим о паттерне Strangler. Этот паттерн поможет мигрировать ваши легаси апликейшины на "новые рельсы" более мягко.
https://bool.dev/blog/detail/strangler-pattern
Shared database паттерн
![Shared database паттерн](https://joprblob.azureedge.net/site/news/5ae30c05-5b34-4ac6-9321-3791d4da7444/106b86ba-3f37-4946-8de7-8fb83311a6f6.png)
В этой статье поговорим про Shared Database шаблон и когда его лучше приминять при проэктировании ваших сервисов.
https://bool.dev/blog/detail/shared-database-pattern
Database per Microservice паттерн
![Database per Microservice паттерн](https://joprblob.azureedge.net/site/news/19db3fa4-8bf5-45cd-90b4-d3375b1529c6/30c08535-248f-40ab-a362-bd741c8b7a22.png)
В этой статье поговорим про подход выделять для каждого микросервиса свою бд и какие подводные камни тут могут быть
https://bool.dev/blog/detail/database-per-microservice
Паттерн хореография (Choreography)
![message broker](https://joprblob.azureedge.net/site/news/8c5e3c33-04d1-4c54-9bc9-287074d27a9d/d4f67e29-8d3d-48d3-b449-f75aa9ed9453.png)
Суть шаблона Choreography - каждый компонент системы участвует в принятии решений о ходе бизнес-транзакции, не полагаясь на центральную точку управления.
https://bool.dev/blog/detail/pattern-choreography
Gateway паттерны
Существует 3 подхода к построению gateway. В статьях ниже рассматриваем их и когда какой лучше использовать
Gateway Offloading паттерн
![gateway offloading pattern](https://joprblob.azureedge.net/site/news/27b5af88-e82e-4f16-8265-6289c17712ad/d8f55584-06fd-4034-aa1c-03c6f507d808.png)
Этот шаблон полезен, когда клиент должен сделать несколько обращений к разным внутренним системам для выполнения операции.
https://bool.dev/blog/detail/gateway-offloading-pattern
Gateway Aggregation паттерн
![Gateway Aggregation паттерн](https://joprblob.azureedge.net/site/news/05d62929-35c8-4c5e-a693-e576c9207e2c/339c6397-5dd8-400e-af1a-5b5efc238018.png)
Этот шаблон может упростить разработку приложений за счет переноса общего функционала сервисов, таких как использование сертификатов SSL, из других частей приложения в шлюз.
https://bool.dev/blog/detail/gateway-aggregation-pattern
Gateway Routing паттерн
![Gateway Routing паттерн](https://joprblob.azureedge.net/site/news/a561a68f-5d2b-426b-ab20-6d614c7018c4/3daf8ddd-545f-4146-a017-a4167f076f52.png)
Gateway Routing pattern — это роутинг запросов к нескольким микросервисам с предоставлением одного эндпоинта который "торчит" наружу . Этот шаблон полезен, когда мы хотим предоставить несколько сервисов на одном эндпоинте и роутить их во внутренние back-end сервисы на основе запроса.