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