Что такое SLA (Service Level Agreement) в IT?

«Что такое SLA (Service Level Agreement) в IT?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SLA (Service Level Agreement) — это формальный договор между поставщиком услуги и ее потребителем, который количественно определяет минимально допустимый уровень качества услуги. В IT это ключевой метрический инструмент для управления ожиданиями и измерения производительности сервисов.

Типичные метрики в SLA:

  1. Доступность (Uptime): Процент времени, когда сервис работоспособен.
    • Пример: "Ежемесячная доступность API составит не менее 99.9%" (что допускает ~43 минуты простоя в месяц).
  2. Производительность (Latency/Throughput): Время отклика или пропускная способность.
    • Пример: "95-й перцентиль времени ответа для всех запросов GET не превысит 200 мс".
  3. Восстановление: Время на устранение инцидентов разной критичности.
    • Пример: "Критичные инциденты (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) и приоритизации задач (например, оптимизация медленных эндпоинтов).
  • Для клиентов: Прозрачность и предсказуемость сервиса.