Что такое graceful degradation?

Middle
613 просмотров
AFK Offer AI

Graceful degradation — когда система при сбое части компонентов продолжает работать с пониженным функционалом, а не падает целиком. Пользователь получает частичный ответ вместо ошибки 500.

Пример: API-эндпоинт собирает данные из трёх сервисов — профиль, рекомендации, уведомления. Если сервис рекомендаций лёг, отдаём профиль без рекомендаций, а не ошибку.

profile, err := getProfile(ctx, userID)
if err != nil {
    return err // без профиля смысла нет
}

recs, err := getRecommendations(ctx, userID) if err != nil { slog.Warn("recommendations unavailable", "err", err) recs = []Recommendation{} // деградируем }

return Response{Profile: profile, Recommendations: recs}

Инструменты: circuit breaker (отключает сбойный сервис), таймауты (не ждём вечно), fallback-значения, feature flags. Важно заранее решить, какие компоненты критичны (без них нет смысла отвечать), а какие опциональны.

Следующий вопрос

Что такое пессимистичная блокировка?