Список шаблонов проектирования для микросервисной архитектуры
Было время когда каждый программист делал приложение в виде монолита и не задумывался об архитектуре проекта. Мы называли такой подход "бросаем всё в одну яму". Но время идёт и меняются технологии. Шаблоны проектирования микросервисной архитектуры помогают расчленить веб-приложение на самостоятельные работающие блоки. Эти блоки легко копируются и вставляются в новое приложение как написанный вами код. Это удобно. Разумеется, этот путь только для программистов владеющий платформами для разворачивания приложений: docker, kubernetes. Вот список распространенных шаблонов проектирования для микросервисной архитектуры:
- API Gateway: Шаблон, который предоставляет единую точку входа для всех клиентских запросов. Он обрабатывает маршрутизацию, аутентификацию и может обеспечивать кэширование.
- Service Registry: Шаблон для организации хранения и поиска сервисов. Позволяет микросервисам регистрироваться и находить друг друга динамически.
- Circuit Breaker: Шаблон для предотвращения каскадных сбоев в системе. Позволяет временно блокировать запросы к сервисам, которые не работают, чтобы предотвратить перегрузку.
- Saga: Шаблон для управления распределенными транзакциями. Использует последовательное или параллельное выполнение шагов, которые могут компенсироваться в случае ошибки.
- Event Sourcing: Подход, при котором состояние приложения сохраняется как последовательность событий. Это позволяет восстанавливать состояние сервиса, основываясь на его исторических данных. Этот шаблон еще называют шиной или шиной событий. Это архитектурный подход, при котором изменения состояния системы (события) сохраняются в виде последовательности событий, вместо того чтобы обновлять текущее состояние напрямую. Шина событий позволяет различным компонентам системы взаимодействовать друг с другом через публикацию и подписку на события, что способствует созданию слабо связанных систем и упрощает обработку асинхронных операций.
- CQRS (Command Query Responsibility Segregation): Шаблон, разделяющий операции чтения и записи в базе данных. Это позволяет оптимизировать каждую из этих операций независимо друг от друга.
- Database per Service: Каждому микросервису рекомендуется использовать свою собственную базу данных. Это обеспечивает независимость и упрощает масштабирование.
- Strangler Fig Pattern: Шаблон для миграции старого монолитного приложения на микросервисную архитектуру. Постепенное замещение компонентов старой системы новыми микросервисами.
- Backend for Frontend (BFF): Паттерн, который создает отдельную прослойку для каждого типа клиентского интерфейса, которая оптимизирует взаимодействие с необходимыми сервисами.
- Service Mesh: Архитектурный шаблон, предоставляющий встроенные механизмы управления сервисами, такие как безопасность, маршрутизация и мониторинг, посредством инфраструктуры.
- Contract Testing: Шаблон, обеспечивающий совместимость между микросервисами путем определения и тестирования контрактов взаимодействия между ними.
- Bulkhead: Шаблон, направленный на распределение ресурсов между микросервисами так, чтобы сбой в одном сервисе не затрагивал другие.
Эти шаблоны помогут вам проектировать и строить более устойчивые и масштабируемые микросервисные приложения.
Есть 2 замечательных ресурса для понимания шаблонов проектирования: 12 шаблонов микросервисов по системному дизайну, 26 основных паттернов микросервисной разработки