В каких случаях выбирают монолитную архитектуру?

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

Ответ

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

Основные сценарии использования:

  1. Стартап или MVP (Minimum Viable Product): Необходимо быстро проверить бизнес-гипотезу с минимальными издержками.
  2. Небольшая и когерентная команда: Все разработчики работают над одним кодом.
  3. Простое развертывание: Один артефакт (WAR/JAR) деплоится на сервер.
  4. Упрощенная отладка и тестирование: Все компоненты выполняются в одном процессе, транзакции управляются просто.
  5. Предсказуемая и равномерная нагрузка: Нет компонентов, требующих отдельного масштабирования.

Пример монолита на Spring Boot:

// Единое приложение, содержащее все слои
@SpringBootApplication
public class MonolithApp { ... }

@RestController
public class OrderController {
    @Autowired
    private OrderService orderService; // Локальный вызов
    @Autowired
    private PaymentService paymentService; // Локальный вызов

    @PostMapping("/checkout")
    public ResponseEntity checkout(@RequestBody Order order) {
        // Все происходит в одной транзакции и процессе
        orderService.validate(order);
        paymentService.charge(order);
        return ResponseEntity.ok().build();
    }
}

Главный недостаток: С ростом кодовой базы монолит становится сложным для понимания, модификации и масштабирования (только вертикально).