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

«Можно ли построить базу данных на микросервисах?» — вопрос из категории Архитектура, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, базу данных нельзя «построить на микросервисах». Это архитектурные антиподы:

  • Микросервисы — это стиль построения приложений как набора слабосвязанных, независимо развертываемых сервисов.
  • База данных — это централизованное хранилище данных, часто используемое многими сервисами.

Однако в микросервисной архитектуре существуют ключевые паттерны для работы с данными:

Паттерн Цель Пример использования
Database per Service Изоляция данных, избежание жесткой связанности Сервис Orders и сервис Payments имеют свои отдельные БД.
Saga Управление распределенными транзакциями Последовательность событий для создания заказа и списания платежа.
CQRS Разделение моделей для чтения и записи Отдельная оптимизированная БД-реплика для сложных отчетов.

Пример (Database per Service):

// Order Service работает только со своей БД
@Service
public class OrderService {
    @Autowired
    private OrderRepository orderRepository; // Подключено к order_db
}

// Payment Service работает только со своей БД
@Service
public class PaymentService {
    @Autowired
    private PaymentRepository paymentRepository; // Подключено к payment_db
}

Вывод: База данных — это внешний по отношению к микросервисам ресурс. Архитектура определяет не её устройство, а способ организации доступа и владения данными между сервисами.