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

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

Ответ

Да, в проекте была реализована микросервисная архитектура на основе Spring Boot и Spring Cloud.

Ключевые технологии:

  • Spring Cloud Netflix Eureka – для регистрации и обнаружения сервисов (Service Discovery).
  • Spring Cloud OpenFeign – для декларативного создания REST-клиентов.
  • Spring WebFlux – для построения реактивных неблокирующих API в некоторых сервисах.
  • Spring Data (JPA, MongoDB) – для работы с различными типами хранилищ.
  • Resilience4j – для реализации шаблонов устойчивости (Circuit Breaker, Retry).
  • Apache Kafka – для асинхронной связи между сервисами через события.

Пример конфигурации микросервиса (Eureka-клиент):

@SpringBootApplication
@EnableDiscoveryClient // Регистрация в Eureka
public class OrderServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderServiceApplication.class, args);
    }
}

Принципы архитектуры:

  1. Слабая связанность: Каждый сервис обладал собственной базой данных.
  2. Синхронная связь: REST API с JSON для прямых запросов.
  3. Асинхронная связь: Kafka для распространения событий (например, «Заказ создан»).
  4. Отказоустойчивость: Использование Circuit Breaker для предотвращения каскадных сбоев.