Мы возобновляем после перерыва митапы Software Craftsmanship, и наш пятнадцатый митап будет посвящен надежности и устойчивости систем. Мы разберем stability, reliability, fault-tolerance, availability, resilience, узнаем как они связаны друг с другом и как можно их измерять, а также как разрабатывать устойчивые и надежные программы.
Также мы сформулируем принципы создания надежных систем, паттерны и антипаттерны надежности и устойчивости, отдельное внимание уделим устойчивости микросервисов в облаке.
План митапа:
Stability, reliability, fault-tolerance, availability, resilience, их связь и отличия
Архитектура и шаблоны availability
Шаблоны resilience
Техники fault tolerance
Устойчивости и надежность в облаке
4. О митапах
● Часть проекта Hard & Soft Skills
● Поделиться и пообщаться
● Подобрать материал для курсов:
○ Технический лидер
○ От middle developer к senior
engineer
4
5. План митапов
14. Масштабирование монолита
15. Resilience and Reliability
16. ML Operations for engineers:
building ML pipeline 16 марта
17. ??? hardsoftskills.by/next_meetups
5
6. Цель этого митапа
Сделать обзор терминов и
подходов к надежности,
устойчивости и доступности
систем
6
7. План этого митапа
1.Подходы и шаблоны
2.Availability
3.Resilience
4.Fault-tolerance
5.Stability
6.Reliability
7
8. Шаблон timeout
● В ms может случиться всякое )
● Сервис отвечает даже если его
зависимость не отвечает
● Время ожидания ограничено
● Можно использовать с кэшем
8
9. Шаблон retry
● Или retry после паузы
● Если могут быть временные
проблемы (сеть, перезагрузка
сервиса...)
9
10. Шаблон circuit breaker
● Состояния
○ пропускает все запросы
○ пропускает только некоторые
○ не пропускает, паузка
● Меньше одновременных
запросов к загруженному
сервису
10
11. Шаблон rate limit
● Стоимость каждого вызова
● Более слабые гарантии ответа
● Защитный механизм
● Удобно использовать с кэшем
11
12. ● Отнимаем ресурсы у неважных
чтобы обслужить важные
● Сглаживаем нагрузку
● Удобно использовать с
динамическим
масштабированием
Шаблон throttling
12
13. ● Множество шаблонов
● Сглаживают нагрузку
● Увеличивают время ожидания
● Удобно для длинных/фоновых
задач
● Очередь - доп. компонент
Очередь
13
14. ● В облаке мониторить сложнее,
чем on-premise
● Раньше обнаруживать ошибки
● Обязательны логи упавших
проверок
● HTTP код, SLA, ответ...
Service health endpoint
14
16. ● Последовательный вариант n-
version programming
● В случае ошибки
○ выполняем ту же задачу другим
способом
Шаблон recovery blocks
16
17. ● Checkpoint and rollback recovery
● Компенсирующая транзакция
● Transactional outbox
● Scheduler-agent-supervisor
● их много…
● и используются в комбинациях
Еще шаблоны
17
20. Availability
● Если неизвестна доступность для
зависимостей
○ среднее вр. между сбоями - o
○ среднее вр. восстановления - r
○ o/(o+r) = availability
20
21. Availability
● Чем выше Availability
○ тем сложнее система
○ тем дороже разработка
○ тем дороже поддержка
○ тем дороже TCO
● Не нужно делать 100% A
21
22. Availability problems
22
● Проблемы с железом
● Ошибки деплоя
● Увеличившаяся нагрузка
● Неожиданные входные данные
● Истечение срока сертификатов
● Ошибки в зависимостях
● Сбои инфраструктуры
23. Availability practices
23
● Изолирование зоны ошибки
● Избыточность и дублирование
● Микросервисы
● Автоматическое восстановление
● Best practices распределенных
систем
33. Stability
33
● Для пользователя - просто что
программа работает неизменно
● Связано с coupling/cohesion
● Под stability testing чаще всего
понимают тестирование
availability
34. Reliability
34
● Более абстрактный термин
● Чаще всего то же что и Availability
○ измеряется так же
● Сложность (связи модулей)
снижает Reliability
40. Курсы Hard & Soft Skills
● Цель митапов - материалы для
различных курсов
● Для мидлов, сеньеров, лидов,
архитекторов, CTO
● 18-го февраля вебинар по курсу
“Технический лидер”
40