advanced

Database per service

Давайте каждому service authority над его data model, чтобы schemas развивались independently, принимая query и consistency complexity.

Каждый сервис владеет своей схемой и единственный writer своих данных. Другие сервисы читают только через APIs или events, не shared tables. Это даёт независимую эволюцию схемы, но усложняет cross-service queries, joins и transactional consistency.

Компромисс: автономия и инкапсуляция против reporting, analytics и немедленного read-your-writes между aggregates.

На интервью: объясните dashboard через order и inventory без join между базами.

Типовые ошибки: общая БД с «логическим» разделением; read replicas как integration layer; нарушение инкапсуляции ради удобного SQL.

Чеклист:

  • Закрепите write ownership за схемой каждого сервиса.
  • Закрывайте query needs через APIs, events или read models.
  • Планируйте migrations без cross-schema locks.
  • Принимайте eventual consistency для cross-domain reads.