SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Почему стартапу
нужны SRE-практики
Алексей Андреев
Prisma Labs
2019
Prisma Lensa
Почему это важно?
Почему это важно?
SRE в небольших компаниях
● Не нужно нанимать отдельного специалиста
● Этим может заниматься backend-разработчик
● Использовать managed-решения
SRE и разработчики backend
● Команда backend и SRE в prisma - 2 человека
● Backend-разработчику нужно знать SRE
● На внедрение SRE-практик не нужно отнимать много
времени от разработки
Как было?
● Self-hosted k8s кластер
● Self-hosted PostgreSQL
● NewRelic интегрирован только в один сервис
● Отсутствие метрик от приложений
● Проверки доступности проводились через pingdom
● Эндпоинты для проверок, которые не проверяют
работоспособность приложения
Как было?
С таким набором тулов нельзя определить:
● Когда сервис слушает порт и принимает http-
соединения, но запросы не обрабатывает
● Работоспособность background tasks
● Self-hosted-решения занимают много времени
разработчиков и мешают скейлить нагрузку
Трудности troubleshooting
● Сложно понять момент начала проблемы
● Приходится много грепать логи
● Иногда сообщения о проблемах приходили от
пользователей, хотя это можно бы было определить
с помощью мониторинга
SRE-практики
● Monitoring
Monitoring
● Можно понять, когда что-то сломалось
● Эндпоинты для проверок
● Метрики
● Красивые дашборды
● Трейсинг
RED
RED (Rate)
RED (Errors)
RED (Duration)
Alerting
● Понятные алерты
● Отсутствие ложных алертов
● Отбрасывание пиковых значений
Пример эндпоинта /stats
requests{“code”=200} 200
requests{“code”=500} 5
SRE-практики
● Monitoring
● Error budgets
Error budgets
● SLA —service level agreement
● SLI — service level indicator
● SLO — service level objective
● Если SLO = 99,9 — бюджет ошибок 0,1%
● 0,1% за месяц — примерно 40 минут
Использование бюджетов ошибок
● Был недоступен cloud storage
● MTTA - 1 час
● MTTR - 1,5 часа
● Бюджет ошибок - 40 минут
● Вышли за бюджет ошибок и переделали систему
хранения
SRE-практики
● Monitoring
● Error budgets
● Postmortems
Postmortems
● Заводить после каждого инцидента
● Должен содержать всю доступную информацию
● Способы предотвращения повторения инцидента
SRE-практики
● Monitoring
● Error budgets
● Postmortems
● SRE Teams (toil elimination)
SRE teams (toil elimination)
● Менее 50% времени отводится на рутинные задачи
Например:
● Хранить логи в graylog
● Использовать понятные метрики
● Красивые дашборды
Внедрение SRE-практик в Prisma Labs
Что нужно было сделать
● Мониторить не только работоспособность http-
соединения
● Мониторить время ответа
● Мониторить количество ошибок
● Мониторить background tasks
● Мониторить все сервисы, а не только избранные
● Создать механизм отката версий
Как стало?
● Managed k8s-кластер (DigitalOcean)
● Managed PostgreSQL (DigitalOcean)
● Интеграция NewRelic во все сервисы
● Проверки через datadog и pingdom (с проверкой
времени ответа)
● Эндпоинты для проверок проверяют важные для
приложения вещи (postgresql, gcp storage, redis)
Как стало?
● Приложения отдают метрики в prometheus
● Интеграция datadog (APM — application performance
monitoring)
● Логи сыпятся в graylog
● CI/CD pipeline (Jenkins)
● Увеличилась частота релизов
● OpsGenie
Troubleshooting сейчас
● Момент начала проблемы можно понять с помощью
APM и алертов
● Логи легко ищутся с помощью Graylog
● Методология RED помогает определить проблему
(увеличение времени ответа, увеличение
количества ошибок, резкое изменение количества
запросов) и вовремя среагировать на неё
Финансы (в месяц)
● Managed postgresql = ...
● Managed k8s от DigitalOcean = ...
Datadog XXX$
Prometheus XX$
Graylog XX$
OpsGenie XX$
Pingdom XXX$
Это просто!
Prometheus vs Datadog
Prometheus:
➕ Дешевле
➕ Удобнее мониторить background tasks
➕ Более гибкое конфигурирование алертов
➕ Находится во внутренней сети
➖ Нужно поддерживать
➖ Нельзя класть трейсы
Prometheus vs Datadog
Datadog:
➕ Просто внедрить
➕ Не нужно поддерживать
➕ Можно хранить трейсы
➕ Находится во внешней сети
➖ Дороже
Это просто!
Это просто!
Это просто!
Это просто!
Финансы (в месяц)
● Managed postgresql = self-hosted postgresql X 1.5
● Managed k8s от DigitalOcean = self-hosted k8s
Datadog 350$
Prometheus 80$
Graylog 80$
OpsGenie 33$
Pingdom 100$
850$
Цена всех тулов и сервисов
Что дальше?
● Добавить метрики в хандлеры эндопоинтов и
повесить мониторинг в prometheus
● Настроить мониторинг PostgreSQL
● Добавить span для трейсинга в сервисы для
упрощения troubleshooting
Трейсинг
Что дальше?
Собираемся вводить:
● SLO from user side
● Capacity planning
Пока думаем:
● Fail sanely
● Progressive rollouts
● Overloads and failure
Выводы
SRE-практики необходимы, так как:
● Снижается время даунтайма
● Проще расставлять приоритеты
● Снижается нагрузка на команду
● Небольшой прайс
Всем красивых
дашбордов!
github.com/tochk
me@tochk.ru

Mais conteúdo relacionado

Mais procurados

Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...
Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...
Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...SQALab
 
Логгирование. Зачем? Когда? Сколько?
Логгирование. Зачем? Когда? Сколько?Логгирование. Зачем? Когда? Сколько?
Логгирование. Зачем? Когда? Сколько?Ivan Fedorov
 
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex PetrovReal-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex PetrovRuby Meditation
 
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Oleg Poludnenko
 
QA Estimation Failed: Mission Impossible
QA Estimation Failed: Mission ImpossibleQA Estimation Failed: Mission Impossible
QA Estimation Failed: Mission ImpossibleIgor Goldshmidt
 
Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"Fwdays
 
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Fwdays
 
Наталья Медведева - Тестировщик на все руки в Scrum-команде
Наталья Медведева - Тестировщик на все руки в Scrum-командеНаталья Медведева - Тестировщик на все руки в Scrum-команде
Наталья Медведева - Тестировщик на все руки в Scrum-командеSQALab
 
Всевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и Grafana
Всевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и GrafanaВсевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и Grafana
Всевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и GrafanaSQALab
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙCEE-SEC(R)
 
Скажи мне правду, Scrum, когда тестировать нам?
Скажи мне правду, Scrum, когда тестировать нам?Скажи мне правду, Scrum, когда тестировать нам?
Скажи мне правду, Scrum, когда тестировать нам?SQALab
 
Selenium grid on-demand
Selenium grid on-demandSelenium grid on-demand
Selenium grid on-demandSQALab
 
Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииCEE-SEC(R)
 
Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"Fwdays
 
Github Flow. Тестировщики против тестирования
Github Flow. Тестировщики против тестированияGithub Flow. Тестировщики против тестирования
Github Flow. Тестировщики против тестированияSQALab
 
Стачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработкиСтачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработкиYuriy Vasiyarov
 
Нагрузка и автоматизация в большой организации. Движение к DevOps
Нагрузка и автоматизация в большой организации. Движение к DevOpsНагрузка и автоматизация в большой организации. Движение к DevOps
Нагрузка и автоматизация в большой организации. Движение к DevOpsSQALab
 
CodeFest 2014. Уразбаев А. — Трансформация Scrum
CodeFest 2014. Уразбаев А. — Трансформация ScrumCodeFest 2014. Уразбаев А. — Трансформация Scrum
CodeFest 2014. Уразбаев А. — Трансформация ScrumCodeFest
 
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
Как перестать хранить секреты в git и начать использовать Hashicorp VaultКак перестать хранить секреты в git и начать использовать Hashicorp Vault
Как перестать хранить секреты в git и начать использовать Hashicorp VaultOleg Mykolaichenko
 

Mais procurados (20)

Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...
Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...
Threads & LinkedClone. Как сократить время на развертывание продукта и подгот...
 
Логгирование. Зачем? Когда? Сколько?
Логгирование. Зачем? Когда? Сколько?Логгирование. Зачем? Когда? Сколько?
Логгирование. Зачем? Когда? Сколько?
 
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex PetrovReal-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
 
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
 
QA Estimation Failed: Mission Impossible
QA Estimation Failed: Mission ImpossibleQA Estimation Failed: Mission Impossible
QA Estimation Failed: Mission Impossible
 
Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"
 
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
 
Наталья Медведева - Тестировщик на все руки в Scrum-команде
Наталья Медведева - Тестировщик на все руки в Scrum-командеНаталья Медведева - Тестировщик на все руки в Scrum-команде
Наталья Медведева - Тестировщик на все руки в Scrum-команде
 
Всевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и Grafana
Всевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и GrafanaВсевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и Grafana
Всевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и Grafana
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
 
Скажи мне правду, Scrum, когда тестировать нам?
Скажи мне правду, Scrum, когда тестировать нам?Скажи мне правду, Scrum, когда тестировать нам?
Скажи мне правду, Scrum, когда тестировать нам?
 
Selenium grid on-demand
Selenium grid on-demandSelenium grid on-demand
Selenium grid on-demand
 
Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документации
 
Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"
 
Github Flow. Тестировщики против тестирования
Github Flow. Тестировщики против тестированияGithub Flow. Тестировщики против тестирования
Github Flow. Тестировщики против тестирования
 
Стачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработкиСтачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработки
 
StackLight (aka LMA)
StackLight (aka LMA)StackLight (aka LMA)
StackLight (aka LMA)
 
Нагрузка и автоматизация в большой организации. Движение к DevOps
Нагрузка и автоматизация в большой организации. Движение к DevOpsНагрузка и автоматизация в большой организации. Движение к DevOps
Нагрузка и автоматизация в большой организации. Движение к DevOps
 
CodeFest 2014. Уразбаев А. — Трансформация Scrum
CodeFest 2014. Уразбаев А. — Трансформация ScrumCodeFest 2014. Уразбаев А. — Трансформация Scrum
CodeFest 2014. Уразбаев А. — Трансформация Scrum
 
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
Как перестать хранить секреты в git и начать использовать Hashicorp VaultКак перестать хранить секреты в git и начать использовать Hashicorp Vault
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
 

Semelhante a Xp days 2019 - Why startups need SRE practices

Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Ontico
 
Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)Nikolay Sivko
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3Computer Science Club
 
Презентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеПрезентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеAlex Chistyakov
 
Применение DTrace для оптимизации производительности на примере двух больших ...
Применение DTrace для оптимизации производительности на примере двух больших ...Применение DTrace для оптимизации производительности на примере двух больших ...
Применение DTrace для оптимизации производительности на примере двух больших ...SQALab
 
Zherdev icinga 20120423
Zherdev icinga 20120423Zherdev icinga 20120423
Zherdev icinga 20120423kuchinskaya
 
DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...
DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...
DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...it-people
 
Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенк...
Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенк...Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенк...
Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенк...solit
 
Meet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy SamilyakMeet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy SamilyakAmasty
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0WRider
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0HighLoad2009
 
CodeFest 2013. Сурова И. — Аналитик — инструкция по применению для менеджеров...
CodeFest 2013. Сурова И. — Аналитик — инструкция по применению для менеджеров...CodeFest 2013. Сурова И. — Аналитик — инструкция по применению для менеджеров...
CodeFest 2013. Сурова И. — Аналитик — инструкция по применению для менеджеров...CodeFest
 
Работа с рисками в Scrum проектах
Работа с рисками в Scrum проектахРабота с рисками в Scrum проектах
Работа с рисками в Scrum проектахDenis Tuchin
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance managementSQALab
 
Гибкие методологии разработки ПО в реальном мире
 Гибкие методологии разработки ПО в реальном мире Гибкие методологии разработки ПО в реальном мире
Гибкие методологии разработки ПО в реальном миреTech Talks @NSU
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
PUG #9 at OWOX: Поиск узких мест в приложении на PHP
PUG #9 at OWOX: Поиск узких мест в приложении на PHP                PUG #9 at OWOX: Поиск узких мест в приложении на PHP
PUG #9 at OWOX: Поиск узких мест в приложении на PHP Анна Магас
 
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.ScrumTrek
 

Semelhante a Xp days 2019 - Why startups need SRE practices (20)

Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
 
Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
 
Презентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеПрезентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в Минске
 
Применение DTrace для оптимизации производительности на примере двух больших ...
Применение DTrace для оптимизации производительности на примере двух больших ...Применение DTrace для оптимизации производительности на примере двух больших ...
Применение DTrace для оптимизации производительности на примере двух больших ...
 
Zherdev icinga 20120423
Zherdev icinga 20120423Zherdev icinga 20120423
Zherdev icinga 20120423
 
DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...
DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...
DUMP-2015: «Тестирование постановок в Naumen Contact Center» Константин Бекле...
 
Lovely scrum
Lovely scrumLovely scrum
Lovely scrum
 
Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенк...
Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенк...Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенк...
Solit 2014, Scrum для большого проекта. Как это работает на практике, Слисенк...
 
Meet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy SamilyakMeet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy Samilyak
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
CodeFest 2013. Сурова И. — Аналитик — инструкция по применению для менеджеров...
CodeFest 2013. Сурова И. — Аналитик — инструкция по применению для менеджеров...CodeFest 2013. Сурова И. — Аналитик — инструкция по применению для менеджеров...
CodeFest 2013. Сурова И. — Аналитик — инструкция по применению для менеджеров...
 
Работа с рисками в Scrum проектах
Работа с рисками в Scrum проектахРабота с рисками в Scrum проектах
Работа с рисками в Scrum проектах
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance management
 
Гибкие методологии разработки ПО в реальном мире
 Гибкие методологии разработки ПО в реальном мире Гибкие методологии разработки ПО в реальном мире
Гибкие методологии разработки ПО в реальном мире
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
PUG #9 at OWOX: Поиск узких мест в приложении на PHP
PUG #9 at OWOX: Поиск узких мест в приложении на PHP                PUG #9 at OWOX: Поиск узких мест в приложении на PHP
PUG #9 at OWOX: Поиск узких мест в приложении на PHP
 
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
 

Xp days 2019 - Why startups need SRE practices

  • 5. SRE в небольших компаниях ● Не нужно нанимать отдельного специалиста ● Этим может заниматься backend-разработчик ● Использовать managed-решения
  • 6. SRE и разработчики backend ● Команда backend и SRE в prisma - 2 человека ● Backend-разработчику нужно знать SRE ● На внедрение SRE-практик не нужно отнимать много времени от разработки
  • 7. Как было? ● Self-hosted k8s кластер ● Self-hosted PostgreSQL ● NewRelic интегрирован только в один сервис ● Отсутствие метрик от приложений ● Проверки доступности проводились через pingdom ● Эндпоинты для проверок, которые не проверяют работоспособность приложения
  • 8. Как было? С таким набором тулов нельзя определить: ● Когда сервис слушает порт и принимает http- соединения, но запросы не обрабатывает ● Работоспособность background tasks ● Self-hosted-решения занимают много времени разработчиков и мешают скейлить нагрузку
  • 9. Трудности troubleshooting ● Сложно понять момент начала проблемы ● Приходится много грепать логи ● Иногда сообщения о проблемах приходили от пользователей, хотя это можно бы было определить с помощью мониторинга
  • 11. Monitoring ● Можно понять, когда что-то сломалось ● Эндпоинты для проверок ● Метрики ● Красивые дашборды ● Трейсинг
  • 12. RED
  • 16. Alerting ● Понятные алерты ● Отсутствие ложных алертов ● Отбрасывание пиковых значений Пример эндпоинта /stats requests{“code”=200} 200 requests{“code”=500} 5
  • 18. Error budgets ● SLA —service level agreement ● SLI — service level indicator ● SLO — service level objective ● Если SLO = 99,9 — бюджет ошибок 0,1% ● 0,1% за месяц — примерно 40 минут
  • 19. Использование бюджетов ошибок ● Был недоступен cloud storage ● MTTA - 1 час ● MTTR - 1,5 часа ● Бюджет ошибок - 40 минут ● Вышли за бюджет ошибок и переделали систему хранения
  • 21. Postmortems ● Заводить после каждого инцидента ● Должен содержать всю доступную информацию ● Способы предотвращения повторения инцидента
  • 22. SRE-практики ● Monitoring ● Error budgets ● Postmortems ● SRE Teams (toil elimination)
  • 23. SRE teams (toil elimination) ● Менее 50% времени отводится на рутинные задачи Например: ● Хранить логи в graylog ● Использовать понятные метрики ● Красивые дашборды
  • 25. Что нужно было сделать ● Мониторить не только работоспособность http- соединения ● Мониторить время ответа ● Мониторить количество ошибок ● Мониторить background tasks ● Мониторить все сервисы, а не только избранные ● Создать механизм отката версий
  • 26. Как стало? ● Managed k8s-кластер (DigitalOcean) ● Managed PostgreSQL (DigitalOcean) ● Интеграция NewRelic во все сервисы ● Проверки через datadog и pingdom (с проверкой времени ответа) ● Эндпоинты для проверок проверяют важные для приложения вещи (postgresql, gcp storage, redis)
  • 27. Как стало? ● Приложения отдают метрики в prometheus ● Интеграция datadog (APM — application performance monitoring) ● Логи сыпятся в graylog ● CI/CD pipeline (Jenkins) ● Увеличилась частота релизов ● OpsGenie
  • 28. Troubleshooting сейчас ● Момент начала проблемы можно понять с помощью APM и алертов ● Логи легко ищутся с помощью Graylog ● Методология RED помогает определить проблему (увеличение времени ответа, увеличение количества ошибок, резкое изменение количества запросов) и вовремя среагировать на неё
  • 29. Финансы (в месяц) ● Managed postgresql = ... ● Managed k8s от DigitalOcean = ... Datadog XXX$ Prometheus XX$ Graylog XX$ OpsGenie XX$ Pingdom XXX$
  • 31. Prometheus vs Datadog Prometheus: ➕ Дешевле ➕ Удобнее мониторить background tasks ➕ Более гибкое конфигурирование алертов ➕ Находится во внутренней сети ➖ Нужно поддерживать ➖ Нельзя класть трейсы
  • 32. Prometheus vs Datadog Datadog: ➕ Просто внедрить ➕ Не нужно поддерживать ➕ Можно хранить трейсы ➕ Находится во внешней сети ➖ Дороже
  • 37. Финансы (в месяц) ● Managed postgresql = self-hosted postgresql X 1.5 ● Managed k8s от DigitalOcean = self-hosted k8s Datadog 350$ Prometheus 80$ Graylog 80$ OpsGenie 33$ Pingdom 100$
  • 38. 850$ Цена всех тулов и сервисов
  • 39. Что дальше? ● Добавить метрики в хандлеры эндопоинтов и повесить мониторинг в prometheus ● Настроить мониторинг PostgreSQL ● Добавить span для трейсинга в сервисы для упрощения troubleshooting
  • 41. Что дальше? Собираемся вводить: ● SLO from user side ● Capacity planning Пока думаем: ● Fail sanely ● Progressive rollouts ● Overloads and failure
  • 42. Выводы SRE-практики необходимы, так как: ● Снижается время даунтайма ● Проще расставлять приоритеты ● Снижается нагрузка на команду ● Небольшой прайс