Что будешь делать, если backend тормозит

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

Ответ

Проверю профилирование (pprof) для выявления узких мест. Пример:

import _ "net/http/pprof"

go func() {
    log.Println(http.ListenAndServe(":6060", nil))
}()

Основные направления анализа:

  1. CPU-bound: go tool pprof http://localhost:6060/debug/pprof/profile
  2. Memory: go tool pprof http://localhost:6060/debug/pprof/heap
  3. Goroutines: go tool pprof http://localhost:6060/debug/pprof/goroutine

Частые проблемы:

  • Неоптимальные алгоритмы (O(n²) вместо O(n))
  • Избыточные аллокации (используем sync.Pool)
  • Блокировки (мутексы, каналы)
  • Долгие внешние вызовы (базы, API)

После выявления проблемы - оптимизация или горизонтальное масштабирование.