Какую архитектуру (микросервисы или монолит) вы использовали в последнем проекте?

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

Ответ

В последнем проекте использовалась микросервисная архитектура на Spring Boot.

Реализация:

  • Сервисы (user, order, payment) были выделены в отдельные приложения.
  • Синхронное взаимодействие через REST API.
  • Асинхронная коммуникация через брокер сообщений RabbitMQ (для событий и фоновых задач).

Пример REST-контроллера (user-service):

@RestController
@RequestMapping("/api/users")
public class UserController {
    @GetMapping("/{id}")
    public ResponseEntity<UserDTO> getUser(@PathVariable Long id) {
        UserDTO user = userService.findUserById(id);
        return ResponseEntity.ok(user);
    }
}

Преимущества: Независимое масштабирование и развертывание сервисов, технологическая гибкость. Сложности: Усложнение мониторинга, необходимость управления межсервисными коммуникациями и консистентностью данных.