Что делать, если ошибка попала в Release

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

Ответ

В релизе ошибки нужно обрабатывать максимально безопасно:

  1. Логируем ошибку с деталями (stacktrace, контекст)
log.Printf("ERROR: %vnStack: %s", err, debug.Stack())
  1. Восстанавливаем работу приложения через recover()
defer func() {
    if r := recover(); r != nil {
        log.Println("Recovered:", r)
        // Возвращаем сервис в рабочее состояние
    }
}()
  1. Для критичных ошибок реализуем graceful shutdown:
if err != nil {
    log.Fatal("Critical error:", err)
    // Или через context cancellation
}
  1. Добавляем мониторинг (Prometheus, Sentry)
  2. По возможности реализуем автоматический откат (rollback) через CI/CD

Важно не скрывать ошибки, а обеспечить минимальный ущерб и быструю диагностику.