Какую нагрузку обрабатывали сервисы в вашем последнем проекте?

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

Ответ

В проекте с микросервисной архитектурой (Spring Boot, Kubernetes) ключевые сервисы (API Gateway, Auth, Order) были рассчитаны на нагрузку:

  • Пропускная способность: До 5 000 запросов в секунду (RPS).
  • Задержка (latency): p99 ~50 мс.

Стратегии обеспечения масштабируемости и отказоустойчивости:

  1. Кэширование: Redis для хранения сессий и часто запрашиваемых данных, что снизило нагрузку на БД на ~40%.
  2. Асинхронная обработка: Неблокирующая обработка событий (нотификации, логирование) через Apache Kafka.
  3. Автомасштабирование: Horizontal Pod Autoscaler (HPA) в Kubernetes на основе загрузки CPU.

Пример конфигурации HPA:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: order-service
  minReplicas: 3
  maxReplicas: 15
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70

Нагрузочное тестирование проводилось с использованием Gatling.