Ответ
Да, последний проект был построен на микросервисной архитектуре. Это позволило добиться независимого развертывания, масштабирования и отказоустойчивости сервисов.
Ключевые принципы и реализация:
- Независимые сервисы: Каждый сервис (например,
order-service,user-service,notification-service) имел свою базу данных (PostgreSQL или MongoDB) и собственную бизнес-логику. - Способы коммуникации:
- Синхронная: 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 для автономного деплоя каждого сервиса.
Такая архитектура повысила скорость разработки и надежность системы.