Может ли быть одна база данных у всех микросервисов

«Может ли быть одна база данных у всех микросервисов» — вопрос из категории Архитектура и DevOps-практики, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, это противоречит принципам микросервисной архитектуры. Каждый микросервис должен иметь свою изолированную базу данных (Database per Service). Это обеспечивает:

  1. Независимость сервисов - изменения в схеме БД одного сервиса не ломают другие
  2. Масштабируемость - можно выбирать оптимальный тип БД для каждого сервиса
  3. Отказоустойчивость - падение одной БД не влияет на всю систему

Исключение - shared базы для кеширования или аналитики, но не для бизнес-логики.

Пример:

# docker-compose.yml
services:
  orders-service:
    image: orders
    environment:
      DB_URL: postgres://orders-db
  payments-service:
    image: payments
    environment:
      DB_URL: mongodb://payments-db