[Слёрм] SRE онлайн-интенсив 2020 (Иван Круглов, Павел Селиванов)

На курсе вы будете:

Строить

Сформулируете показатели SLO, SLI, SLA для сайта, состоящего из нескольких
микросервисов, разработаете архитектуру и инфраструктуру, которая их обеспечит,
соберете, протестируете и задеплоите сайт, настроите мониторинг и алертинг.

Ломать
Рассмотрите внутренние и внешние факторы ухудшения SLO: ошибки разработчиков, отказы инфраструктуры, наплыв посетителей, DoS-атаки. Разберетесь в устойчивости, error budget, практике тестирования, управлении прерываниями и операционной
нагрузкой.

Чинить
Организуете работу группы по ликвидации аварии в минимальные сроки: подключение коллег, оповещение интересантов (stakeholders), выстраивание приоритетов. Имитация реальных условий: восстановление работоспособности сервиса в условиях предельно ограниченного времени.

Изучать
Разберете подход к сайту с точки зрения SRE. Проанализируете инциденты (причины возникновения, ход устранения). Примете решение по их дальнейшему предотвращению: улучшить мониторинг, изменить архитектуру, подход к разработке и эксплуатации, регламенты. Автоматизируете процессы.

Требования к участникам:
- Свободное владение Linux;
- Любой язык программирования: уровень Junior;
- GitLab: навыки автоматизации;
- Prometheus: навыки мониторинга;
- Kubernetes: навыки работы в кластере.

Тема №1: Основные принципы и методы SRE

  • Что нужно чтобы стать SRE?
  • DevOps vs SRE
  • Почему разработчики ценят SRE и очень грустят, когда в проекте их нет
  • SLI, SLO и SLA
  • Error budget и его роль в SRE

Тема №2: Дизайн распределенных систем
  • Архитектура и функционал приложения
  • Non-Abstract Large System Design
  • Operability / Design for failure
  • gRPC или REST
  • Версионирование и обратная совместимость
Тема №3: Как принимают проект SRE
  • Лучшие практики от SRE
  • Чек-лист приема проекта
  • Логирование, метрики, трейсинг
  • Забираем CI/CD в свои руки
Тема №4: Проектирование и запуск распределенной системы
  • Обратное проектирование — как работает система?
  • Согласовываем SLI и SLO
  • Практика capacity planning
  • Запуск трафика на приложение, наши пользователи начинают им «пользоваться»
  • Запускаем Prometheus, Grafana, Elastic
Тема №5: Monitoring, Observability and Alerting
  • Monitoring vs. Observability
  • Настраиваем мониторинг и алертинг с Prometheus
  • Практический мониторинг SLI и SLO
  • Symptoms vs. Causes
  • Black-Box vs. White-Box Monitoring
  • Распределенный мониторинг доступности приложений и серверов
  • 4 золотых сигнала (обнаружение аномалий)
Тема №6: Практика тестирования надежности систем
  • Работа под давлением
  • Failure-injection
  • Chaos Monkey
Тема №7: Практика incident response
  • Алгоритм управления стрессом
  • Взаимодействие между участниками инцидента
  • Постмортем
  • Knowledge sharing
  • Формирование культуры
  • Контроль неисправностей
  • Проведение blameless разбора полетов
Тема №8: Практика управления нагрузкой
  • Балансировка нагрузки
  • Отказоустойчивость приложений: retry, timeout, failure injection, circuit breaker
  • DDoS (создаем нагрузку) + Cascading Failures
Тема №9: Реагирование на инциденты
  • Разбор полетов
  • Практика On-Call
  • Различные типы аварий (тестирование, изменение конфигурации, сбой оборудования)
  • Протоколы управления инцидентами
Тема №10: Диагностика и решение проблем
  • Журналирование
  • Отладка
  • Практика анализа и отладки на нашем приложении
Тема №11: Тестирование надежности систем
  • Нагрузочное тестирование
  • Тестирование конфигураций
  • Тестирование производительности
  • Canary release
Тема №12: Самостоятельная работа и ревью
  • Реальные кейсы
  • Проверка спикерами