Какой была архитектура последнего проекта: многомодульной или одномодульной?

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

Ответ

Проект был построен по многомодульной архитектуре с использованием Maven. Это обеспечивало четкое разделение ответственности и гибкость сборки.

Основные модули:

  • core – доменные модели и бизнес-логика.
  • api – REST-контроллеры, DTO и внешние интерфейсы.
  • persistence – JPA-сущности, репозитории и миграции базы данных (Flyway).
  • web – веб-слой (например, Thymeleaf).

Пример структуры родительского pom.xml:

<project>
    ...
    <modules>
        <module>core</module>
        <module>api</module>
        <module>persistence</module>
        <module>web</module>
    </modules>
</project>

Преимущества:

  • Изоляция: Изменения в одном модуле (например, persistence) не требуют пересборки всего проекта.
  • Повторное использование: Модуль api мог быть подключен как отдельная библиотека в другие сервисы.
  • Управление зависимостями: Общие зависимости и их версии централизованно управлялись через <dependencyManagement> в родительском POM.

Сложность: Требовалось аккуратно настраивать зависимости между модулями, чтобы избежать циклических ссылок.