Files
sa-lessons/modules/module5/sections/07-sli-slo-sla.md
T
Alexander Abakumov 15e744da49 Initial commit: Complete Software Architecture course with 11 modules
- Added comprehensive course structure with 11 modules
- Included theoretical content, practical examples, and tasks
- Multi-language code examples (Java, Rust, Node.js, Python)
- Detailed analysis of architectural approaches and trade-offs
- Complete caching strategies documentation
- Architecture examples from real-world systems (Twitter, Netflix, Uber)
- Structured navigation and learning path
- Ready for educational use
2025-09-09 22:08:07 +03:00

2.6 KiB

SLI/SLO/SLA

Навигация


SLI (Индикатор уровня сервиса)

SLI — метрика, которая измеряет качество сервиса.

Примеры SLI:

  • Availability: successful_requests / total_requests
  • Latency: requests_completed_within_threshold / total_requests
  • Throughput: successful_requests_per_second
@Component
public class SLICalculator {
    public double calculateAvailability(String service, Duration window) {
        Counter successfulRequests = Counter.builder("requests.successful")
            .tag("service", service)
            .register(meterRegistry);
            
        Counter totalRequests = Counter.builder("requests.total")
            .tag("service", service)
            .register(meterRegistry);
            
        double successful = successfulRequests.count();
        double total = totalRequests.count();
        
        return total > 0 ? successful / total : 0.0;
    }
    
    public double calculateLatency(String service, Duration threshold) {
        Timer requestTimer = Timer.builder("request.duration")
            .tag("service", service)
            .register(meterRegistry);
            
        // логика расчета латентности
        return 0.95; // пример
    }
}

SLO (Цель уровня сервиса)

SLO — целевое значение для SLI.

Примеры SLO:

  • Availability: 99.9% uptime
  • Latency: 95% of requests < 200ms
  • Error Rate: < 0.1% errors
@Component
public class SLOMonitor {
    private final Map<String, SLO> slos = Map.of(
        "availability", new SLO("availability", 0.999, "99.9% uptime"),
        "latency", new SLO("latency", 0.95, "95% < 200ms"),
        "error_rate", new SLO("error_rate", 0.001, "< 0.1% errors")
    );
    
    public boolean checkSLO(String sloName, double currentValue) {
        SLO slo = slos.get(sloName);
        return currentValue >= slo.getTarget();
    }
}

SLA (Соглашение об уровне сервиса)

SLA — соглашение с клиентами о качестве сервиса.

Компоненты SLA:

  • Service Description — описание сервиса
  • Performance Metrics — метрики производительности
  • Availability Targets — цели доступности
  • Remediation — меры по устранению нарушений