Продвинутый
Что такое паттерн Database per Service и какие у него недостатки?
Database per Service (БД на каждый сервис) — это золотое правило микросервисов. Каждый сервис имеет свою изолированную БД. Сервис А не имеет права делать SQL-запросы в БД Сервиса Б. Обмен только через API/Kafka.
✅ Плюсы: Полная независимость команд, можно выбрать разные СУБД (Postgres для заказов, Neo4j для рекомендаций).
❌ Недостатки:
1. Распределенные транзакции: Нельзя сделать COMMIT сразу в двух БД (приходится внедрять сложный паттерн Saga).
2. Сложные выборки (JOIN): Чтобы собрать отчет по юзерам и их заказам, нужно делать API Composition или сливать данные в единое DWH.
3. Оверхед на инфраструктуру: Админам нужно поддерживать 50 баз данных вместо одной.