Что делать, если одному микросервису не хватает ресурсов

«Что делать, если одному микросервису не хватает ресурсов» — вопрос из категории DevOps, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Если микросервису не хватает ресурсов, можно:

  1. Горизонтальное масштабирование - запустить дополнительные инстансы сервиса за балансировщиком:
// Пример конфигурации Kubernetes для масштабирования
apiVersion: apps/v1
kind: Deployment
spec:
  replicas: 3  # Увеличиваем количество подов
  1. Оптимизация кода:
  • Профилирование с помощью pprof
  • Оптимизация аллокаций памяти
  • Использование пулов объектов (sync.Pool)
  1. Увеличение лимитов в оркестраторе (K8s/ECS):
resources:
  limits:
    cpu: "2"
    memory: "2Gi"
  1. Асинхронная обработка через очереди (RabbitMQ, Kafka)

  2. Кэширование часто используемых данных (Redis, Memcached)

  3. Рефакторинг - выделение наиболее ресурсоемких частей в отдельные микросервисы