Был ли ваш последний проект построен на микросервисной архитектуре?

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

Ответ

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

Ключевые принципы и реализация:

  1. Независимые сервисы: Каждый сервис (например, order-service, user-service, notification-service) имел свою базу данных (PostgreSQL или MongoDB) и собственную бизнес-логику.
  2. Способы коммуникации:
    • Синхронная: REST API (HTTP/JSON) для прямых запросов.
    • Асинхронная: Apache Kafka для событий (event-driven архитектура).

Пример сервиса заказов (Spring Boot):

@SpringBootApplication
@EnableDiscoveryClient // Регистрация в Eureka/Consul
@EnableFeignClients    // Для вызова других сервисов
public class OrderServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderServiceApplication.class, args);
    }
}

// Kafka Consumer для обработки событий
@Component
public class PaymentProcessedEventListener {
    @KafkaListener(topics = "payment-processed")
    public void handlePaymentEvent(PaymentEvent event) {
        orderService.updateOrderStatus(event.getOrderId(), OrderStatus.PAID);
        // Отправка события дальше
        kafkaTemplate.send("order-updated", new OrderUpdatedEvent(...));
    }
}

Инфраструктура:

  • Оркестрация: Kubernetes для управления контейнерами.
  • Сервис-меш: Istio/Spring Cloud Gateway для маршрутизации и resilience.
  • Мониторинг: Централизованное логирование (ELK Stack), метрики (Prometheus) и дашборды (Grafana).
  • CI/CD: Полный пайплайн в GitLab CI для автономного деплоя каждого сервиса.

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