Что такое Graceful Degradation

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

Ответ

Graceful Degradation — это подход, при котором система продолжает работать с ограниченной функциональностью при сбоях или нехватке ресурсов, вместо полного отказа. В Go это часто реализуется через:

  1. Фоллбэки — например, возврат кеша при недоступности БД:
func GetData() (Data, error) {
    data, err := fetchFromDB()
    if err != nil {
        log.Printf("DB failed, using cache: %v", err)
        return getFromCache(), nil // Возвращаем кеш вместо ошибки
    }
    return data, nil
}
  1. Таймауты и ретраи — ограничение времени ожидания:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
result, err := service.Call(ctx)
  1. Упрощенные ответы — например, отдача базового HTML при ошибках рендеринга.

Цель — минимизировать влияние сбоев на пользователей.