Шаблоны проектирования Cloud-based и микросервисных приложений

Статья содержит паттерны, которые полезно применять в клауд приложениях и в микросервесной архитектуре.
Ambassador Pattern

Паттерн Ambassador позволяет перенести client connectivity tasks такие, как: мониторинг, логинг маршрутизация, обеспечение безопасности (например, поддержка TLS) и другие на proxy сервис
https://bool.dev/blog/detail/ambassador-pattern
Aggregator, Chain и Branch паттерны для микросервисов

В этой статье разберем 3 паттерна для коммуникации с микросервисами: Aggregator, chain и Branch. И в каких случаях их нужно использовать
https://bool.dev/blog/detail/aggregator-chain-i-branch-patterny-dlya-mikroservisov
Bulkhead pattern

Шаблон Bulkhead — это подход к дизайну приложения, который устойчив к сбоям. В bulkhead архитектуре элементы приложения изолированы в пулы, так что в случае сбоя одного, остальные продолжат функционировать. Он назван в честь секционных перегородок корпуса корабля. Если корпус корабля поврежден, только поврежденная часть наполняется водой, что предотвращает затопление корабля.
https://bool.dev/blog/detail/bulkhead-pattern
Cache-aside Pattern

В данной статье рассматриваем один из подходов, который состоит в том, что описывает как нужно работать с данными в кэше.
https://bool.dev/blog/detail/cache-aside-pattern
Circuit Breaker Pattern

В данной статье рассматриваем одну из хороших практик которая позволит построить правильную коммуникацию между сервисами и избавиться от "провисания" сервиса или цепочки сервисов при выполнении транзакции
https://bool.dev/blog/detail/circuit-breaker-pattern
Sidecar

Разделение функций приложения в отдельный процесс можно рассматривать как шаблон Sidecar. Шаблон Sidecar позволяет добавить ряд возможностей в ваше приложение без дополнительного кода конфигурации для сторонних компонентов.
https://bool.dev/blog/detail/sidecar-pattern
Saga паттерн и распределенные транзакции

Saga паттерн и распределенные транзакции помогают отменить или закоммитить операцию которая выполняется в несколько шагов и на нескольких сервисах, которые вместе можно назвать как консистентная операция (транзакция).
https://bool.dev/blog/detail/saga-pattern-i-raspredelennye-tranzaktsii
Паттерн конкурирующих потребителей (Competing Consumers Pattern)

Цель шаблона разрешить нескольким параллельным консюмерам обрабатывать сообщения, полученные по тому же каналу обмена сообщениями. Этот шаблон позволяет системе обрабатывать несколько сообщений одновременно, чтобы оптимизировать пропускную способность, улучшить масштабируемость и доступность, а также сбалансировать нагрузку.
https://bool.dev/blog/detail/competing-consumers-pattern
Паттерны CQRS и Event Sourcing

В этой статье описываем паттерны CQRS и Event Sourcing. CQRS расшифровывается как Command Query Responsibility Segregation (разделение ответственности на команды и запросы).
Event sourcing (источники событий, регистрация событий, генерация событий) — это архитектурный паттерн, в котором все изменения, вносимые в состояние приложения, сохраняются в той последовательности, в которой они были выполнены.
/blog/detail/pattern-cqrs-i-event-sourcing
Strangler Pattern

В этой статье поговорим о паттерне Strangler. Этот паттерн поможет мигрировать ваши легаси апликейшины на "новые рельсы" более мягко.
https://bool.dev/blog/detail/strangler-pattern
Shared database паттерн

В этой статье поговорим про Shared Database шаблон и когда его лучше приминять при проэктировании ваших сервисов.
https://bool.dev/blog/detail/shared-database-pattern
Database per Microservice паттерн

В этой статье поговорим про подход выделять для каждого микросервиса свою бд и какие подводные камни тут могут быть
https://bool.dev/blog/detail/database-per-microservice
Паттерн хореография (Choreography)

Суть шаблона Choreography - каждый компонент системы участвует в принятии решений о ходе бизнес-транзакции, не полагаясь на центральную точку управления.
https://bool.dev/blog/detail/pattern-choreography
Gateway паттерны
Существует 3 подхода к построению gateway. В статьях ниже рассматриваем их и когда какой лучше использовать
Gateway Offloading паттерн

Этот шаблон полезен, когда клиент должен сделать несколько обращений к разным внутренним системам для выполнения операции.
https://bool.dev/blog/detail/gateway-offloading-pattern
Gateway Aggregation паттерн

Этот шаблон может упростить разработку приложений за счет переноса общего функционала сервисов, таких как использование сертификатов SSL, из других частей приложения в шлюз.
https://bool.dev/blog/detail/gateway-aggregation-pattern
Gateway Routing паттерн

Gateway Routing pattern — это роутинг запросов к нескольким микросервисам с предоставлением одного эндпоинта который "торчит" наружу. Этот шаблон полезен, когда мы хотим предоставить несколько сервисов на одном эндпоинте и роутить их во внутренние back-end сервисы на основе запроса.