Ответ
SLA (Service Level Agreement) — это формальный договор между поставщиком услуги и ее потребителем, который количественно определяет минимально допустимый уровень качества услуги. В IT это ключевой метрический инструмент для управления ожиданиями и измерения производительности сервисов.
Типичные метрики в SLA:
- Доступность (Uptime): Процент времени, когда сервис работоспособен.
- Пример: "Ежемесячная доступность API составит не менее 99.9%" (что допускает ~43 минуты простоя в месяц).
- Производительность (Latency/Throughput): Время отклика или пропускная способность.
- Пример: "95-й перцентиль времени ответа для всех запросов GET не превысит 200 мс".
- Восстановление: Время на устранение инцидентов разной критичности.
- Пример: "Критичные инциденты (P1) будут разрешены в течение 1 часа".
Пример мониторинга SLA для времени ответа (Java):
public class SlaMonitor {
private static final int RESPONSE_TIME_SLA_MS = 500;
public Response callService() {
long startTime = System.currentTimeMillis();
Response response = externalService.call();
long duration = System.currentTimeMillis() - startTime;
// Проверка нарушения SLA
if (duration > RESPONSE_TIME_SLA_MS) {
metrics.counter("sla.breaches").increment();
logger.warn("SLA breach detected: response took {} ms", duration);
}
metrics.timer("response.time").record(duration, TimeUnit.MILLISECONDS);
return response;
}
}
Почему это важно:
- Для бизнеса: Четкие ожидания, основа для штрафов/компенсаций, управление рисками.
- Для разработки/DevOps: Конкретные цели для проектирования системы, емкости (capacity planning) и приоритизации задач (например, оптимизация медленных эндпоинтов).
- Для клиентов: Прозрачность и предсказуемость сервиса.