Ответ
Противоположный подход — Shared Database (Общая база данных), когда несколько микросервисов работают с одной и той же базой данных.
| Сравнение подходов: | Критерий | Database per Service | Shared Database |
|---|---|---|---|
| Связанность | Низкая (сервисы независимы) | Высокая (изменение схемы БД затрагивает многие сервисы) | |
| Согласованность | Сложная (требует саг или событий) | Простая (ACID-транзакции) | |
| Масштабирование | Горизонтальное (по сервисам) | Ограниченное (масштабирование самой БД) |
Проблемы Shared Database:
- Хрупкость: Изменение схемы таблицы может сломать несколько сервисов.
- Блокировки: Высокая конкуренция за ресурсы БД от разных сервисов.
- Нарушение инкапсуляции: Сервисы знают внутреннюю структуру данных друг друга.
Современные альтернативы для решения проблем распределенных данных:
- Паттерн Saga: Оркестрация или хореография длинных транзакций через события.
- CQRS (Command Query Responsibility Segregation): Разделение моделей для записи (команды) и чтения (запросы).
- Event Sourcing: Хранение состояния как последовательности событий.