Мастер-класс про организацию службы эксплуатации
TRANSCRIPT
![Page 1: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/1.jpg)
Как организовать службу эксплуатации вашего проекта
Николай Сивко
![Page 2: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/2.jpg)
План• Задачи• Экономика• Команда• Архитектура• Выбираем технологии• Uptime• Взаимодействие с разработкой• Deploy
![Page 3: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/3.jpg)
Задачи: • Всё настроить (из горы железа сделать
“инфраструктуру”)• Выкладывать новый код• Обновлять всякое другое ПО• Следить, чтобы ничего не сломалось• Чинить, если сломалось/тупит• Знать, как это всё работает
![Page 4: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/4.jpg)
Экономика• Хостинг+
• Люди
• Консалтинг
• Софт/сервисы
![Page 5: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/5.jpg)
Экономика: хостингПрикинем на средне-маленький проект
2 x frontend: CPU + 4Gb RAM + SSD4 x backend: CPU + 8Gb RAM + SSD2 x DB: CPU + 64Gb RAM + SSD
![Page 6: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/6.jpg)
Экономика: хостинг=облако• DigitalOcean: 2*40 + 4*80 + 2*640 = 1680$
• AWS: 2*38+4*75 + 2*689 = 1754$
• Selectel: 2*3700+4*4318+2x35000 = 1452$
![Page 7: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/7.jpg)
Экономика: хостинг=dedicated• OVH: 2*69 + 4*69 + 2*147 = 708$
• Servers.com: 2*97+4*97+ 2*839 = 2260$
• Selectel: 2*8600+4*8600+2*15550 = 1275$
*получили сильно больше ресурсов
![Page 8: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/8.jpg)
Экономика: хостинг=железо• SM: 2*1600+ 4*1600 + 2*4800= 19200$ =
800$/месяц (на 2 года)
• Colocation: ~30тр=463$ за ½ стойки/месяц
• Итого: 1263$/месяц
![Page 9: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/9.jpg)
Экономика: хостингЦена, avg + -
Облако 1650 $ • Можно добавлять/убирать серверы быстро
• LB, storage, backup• Не паримся про поломки железа
• Часто недополучаете ресурсы• Latency на diskio/net
Dedicated 1414 $ • Получили сильно больше ресурсов относительно облака
• Бывает доступно: LB, storage, backup• Не паримся про поломки железа*
• Может быть setup fee• Получить новый сервер 1h-7d• Платим всегда за месяц
Свое 1263 $ • Получили сильно больше ресурсов относительно облака
• Затраты на покупку – CAP• Можем купить любую конфигурацию
• Большие первоначальные вложения• Нужно покупать сетевые железки• Паримся про поломки железа
![Page 10: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/10.jpg)
Экономика: каналы• Оптика по Москве: ~50тр за 1 ОВ
– Часто хватает 1 OB + уплотнение• IP transit:
– 1Gb/s: 30+ тр– 10Gb/s: 150+ тр– 20Gb/s: 200+ тр
• Peering:MSK-IX: 1Gb/s ~30тр, 10Gb/s ~90трData-IX: бесплатно для контент генераторов
![Page 11: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/11.jpg)
Экономика: люди• Junior admin: 100тр+• Senior admin: 150тр+ • DBA: 150тр+• Сетевик: 150тр+
+ налоги + офис + мебель + печеньки
![Page 12: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/12.jpg)
Экономика: консалтинг• Стоимость консалтинга ~ 0.5-5 ЗП спеца
• Если консультация разовая, платим больше
• Постоянная поддержка дешевле
• Можете получить целую команду 24x7 за ЗП 1 спеца в штат
![Page 13: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/13.jpg)
Экономика: cофт и cервисы• Обычно вы покупаете то, что можно сделать из open
source + время ваших сотрудников
• Вы получаете уже реализованный функционал с поддержкой
• Обычно софт/сервис дешевле, так как он делается для многих компаний
![Page 14: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/14.jpg)
Экономика: cофт и cервисы• Делаем внутри замену чего-то простого:
• Прототип будет через ½ месяца• Реализация оставшихся 60% функционала - еще месяц• Поддержка и улучшения ¼ месяца в месяц
За год потратим (½+1+¼*12)*150 = 675тр (если делал senior) – можно сравнить со стоимостью софта/сервиса
![Page 15: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/15.jpg)
Экономика: cофт и cервисыЧто вообще может понадобится покупать:• Безопасность: WAF, AntiDDOS• Инфраструктура: доставка почты, CDN, dedicated
storage, backup сервисы, конвертация видео,...• Мониторинг: сам мониторинг, процессинг
логов, аналитика ошибок, профилирование
![Page 16: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/16.jpg)
Экономика: ИМХО• Люди – самый дорогой ресурс
• Нужно всегда помнить, что время ваших сотрудников не бесплатное
• Сервисы и консалтинг позволяют не заниматься непрофильными задачами и не нанимать экспертов
![Page 17: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/17.jpg)
Экономика: ИМХО• Для больших закупок лучше делать мини-
тендеры, чтобы просто поставщиков “столкнуть лбами”
• При закупках брэндового железа, нужно начинать с общения с вендором, он даст поставщика и обеспечит его скидкой (диапазон скидок: 40-80%)
![Page 18: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/18.jpg)
Команда• Кто такой админ?• Стадии развития админа• Тимлид• Нанимаем• Распространение знаний• Командная работа
![Page 19: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/19.jpg)
Команда: кто такой админ?• Это НЕ угрюмый и злой разработчик, который
перестал писать код :)
• Большой кругозор в ПО• Постоянные вопросы: как это работает?• Гипертрофированное чувство ответственности• Цель в работе – ничего не делать
![Page 20: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/20.jpg)
Команда: экспертизаКак работает OS:• Процессы, сигналы, лимиты, привилегии• Файловые системы• Ядро, драйверы, syscalls, другие интерфейсы ядра• Память: кэши, shared mem, huge pages…• Пакетные менеджеры• Системное: syslog, time/ntp/tz, ssh, sudo,…
![Page 21: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/21.jpg)
Команда: экспертизаКак работает сеть:• Физика: arp, ethernet, оптика, уплотнение• Протоколы: ip, tcp, icmp, app-level protos• Роутинг: static, ospf, bgp,…• Коммутация: stp, mpls, lacp,…• Железки
![Page 22: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/22.jpg)
Команда: экспертизаКак примерно работают БД:• Процессы/треды• MVCC• Индексы, кэши, prepared statements• Backup/restore• Репликация• Работа с диском, сетью
![Page 23: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/23.jpg)
Команда: экспертизаКак работают сервисы:• Архитектура: process/thread/event loop• Работа с ресурсами: память/диск/сеть• Лимиты: обработчики, память, …• Диагностика: логи, статусы• Фичи
![Page 24: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/24.jpg)
Команда: экспертизаИнструментарий:• Автоматизация: shell, sed, awk,…• Скриптинг: perl, python, некоторые даже
golang• Дебаг: ping, traceroute, tcpdump, perf, strace,
…
![Page 25: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/25.jpg)
Команда: стадии развития админаНачальный уровень:
• смог настроить, чтобы заработало• troubleshooting – АД• если нет того, кто подскажет, спрашивает на
форумах, невнятно гуглит
![Page 26: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/26.jpg)
Команда: стадии развития админаЭмпирический опыт:
• Покрутил ручку – стало лучше, запомнил, всегда крутит при случае
• Не понимает, почему стало лучше• Может решать много стандартных проблем, крутя
ручки, которые запомнил
![Page 27: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/27.jpg)
Команда: стадии развития админаПервая стадия просветления:
• Начал понимать, как на самом деле все работает• Делает предположения и их проверяет• Крутит ручки вдумчиво, внятно оценивает
результативность• Докапывается, почему помогло
![Page 28: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/28.jpg)
Команда: стадии развития админаВторая стадия просветления:
• Понял, что можно читать код софта, БД, ядра• Сразу понимает, какая ручка может помочь• Вовремя понимает, что данный софт не
справляется по построению и надо менять
![Page 29: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/29.jpg)
Команда: стадии развития админа
Дальше наверное что-то еще есть, но я застрял на предыдущем уровне :)
![Page 30: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/30.jpg)
Команда: стадии развития админа• Очень большой процент остается на стадии
“эмпирический опыт”
• Есть люди, которые проходят эту стадию быстро: помогает атмосфера в команде, правильные вопросы от тимлида
• Если в команде нет ни одного “просветленного” – всё пропало :)
![Page 31: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/31.jpg)
Команда: тимлид• Вам нужен “просветленный” + способный работать с
людьми• Нет денег на такого - нужно аутсорсить эксплуатацию• Не можете оценить квалификацию – найдите
консалтера, пусть поможет со вторым этапом интервью
• Способность руководить – оценивайте сами
![Page 32: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/32.jpg)
Команда: нанимаем• Нанимаем только просветленных или тех, кто точно
осилит просветлиться
• Не умеете отличить потенциальных, нанимайте сразу нормальных - их проще отличить
• Позже сами поймете, что можете находить смышленых и учить их
![Page 33: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/33.jpg)
Команда: распространение знаний• Каждый должен уметь делать все
стандартные операции
• С помощью wiki
• Или SCM (software configuration management)
![Page 34: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/34.jpg)
Команда: поток задач• Есть backlog + приоритеты, как правило он бесконечен
• С заказчиками можно договориться про SLA на время реакции на critical/blocker задачи
• Учите заказчиков не искать других путей постановки задач и коммуникаций по задачам кроме issue tracker
![Page 35: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/35.jpg)
Команда: если завязли в рутине• Профилируем• Коммуникация – часто очень дорого, требуем
формализовать задачи• Можно автоматизировать?• Может помогут чудо-технологии? :)• Может часть задачи переложить на
разработчиков? (их как правило больше)
![Page 36: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/36.jpg)
Команда: “задачи развития”• Автоматизация части рутины
• Протестировать технологию X для задачи
• Убрать костыль Y
![Page 37: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/37.jpg)
Команда: “задачи развития”• Формулируем• Список “неизвестных”• Исследуем возможность решения способом Х• Не получается протестировать за несколько дней –
ищем варианты• Вытаскиваем человек(а|ов) из “рутины”• Внедряем дальше или ищем варианты
![Page 38: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/38.jpg)
Команда: ИМХО• Либо “правильный админ”, либо аутсорсим
• Хотя бы один должен НЕ быть социопатом
• Админы склонны биться над задачей до последнего, если это не то, что вы хотите – проговаривайте сразу
![Page 39: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/39.jpg)
Команда: ИМХО• Микроменеджмент недопустим – у вас же
команда “просветленных”, они могут и должны думать сами
• Но нужно ставить рамки, лучше в ходе обсуждения в команде
![Page 40: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/40.jpg)
Архитектура• Отказоустойчивость
• Масштабируемость
• Практика
![Page 41: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/41.jpg)
Архитектура: отказоустойчивостьОтказоустойчивость - всегда избыточность:
• Компоненты железа: raid, блоки питания, компоненты сетевых железок
• Сеть: multipath, дублирование оборудования
• На уровне серверов
![Page 42: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/42.jpg)
Архитектура: масштабируемостьВозможность добавить ресурсов и получить больше производительности
• Вертикальная
• Горизонтальная
![Page 43: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/43.jpg)
Архитектура: практика• Точка входа: фронтенды
• Данные: бд
• Бэкенды
• Вспомогательные сервисы
![Page 44: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/44.jpg)
Архитектура: точка входа• DNS RR: не знает о доступности серверов
• Shared IP: vrrp, carp
• DNS RR между shared IPs
![Page 45: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/45.jpg)
Архитектура: точка входаЕсли есть cетевые железки на входе:• cisco: равнозначные статические маршруты
+ IP SLA checks
• juniper: равнозначные статические маршруты + BFDd + monit
![Page 46: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/46.jpg)
Архитектура: данные в БД• Практически всегда нужно иметь реплики
• На мастер только INSERT/UPDATE + SELECT, чувствительные к replication lag
• Основной функционал у большинства - чтение, пробуйте работать при неработающем мастере
![Page 47: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/47.jpg)
Архитектура: данные в БД• Реплики можно поставить за балансер (TCP)
• Но дублируется трафик + вносим дополнительные задержки
• На TCP балансере сложно понять жива база или нет
![Page 48: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/48.jpg)
Архитектура: данные в БД• Лучше научить приложение работать с
несколькими репликами
• Можно делать умные retry на другой сервер и не отдавать пользователям ошибки
![Page 49: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/49.jpg)
Архитектура: данные в БД• Всегда нужно понимать, сколько живых
реплик требуется для работы
• Периодически тестируем отказ реплики
![Page 50: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/50.jpg)
Архитектура: данные в БДЧто происходит при проблемах с master:
• Решаем, что будем переключаться (может быстрее починить текущий сервер?)
• Переключаем на один из slave
• Переключаем остальные slave на новый мастер
• Чиним старый сервер, делаем его репликой
![Page 51: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/51.jpg)
Архитектура: данные в БД• Переключение мастера на автомате – очень стрёмно!
• Лучше взять под БД железо по-надежнее
• Сделать инструкцию/скрипт
• и провести учения
![Page 52: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/52.jpg)
Архитектура: данные в БД• Репликация – не бэкап
• Нужно делать backup + копировать WAL
• Можно иметь реплику, отстающую на N минут
![Page 53: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/53.jpg)
Архитектура: бэкенды• Бэкенд должен быть stateless
• Отдаем правильные статусы при проблемах: не нужно брать лишние запросы при перегрузе, отдаем 503, балансер сделает retry на соседа
• Если балансер умеет health checks – делаем внятный /status: проверяем, что есть соединение с БД итд
![Page 54: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/54.jpg)
Архитектура: memcached• Нужен ли кэш?
• Живет ли сайт при пустом MC?
• Насколько эффективен кэш?
• Шардинг/решардинг
• Таймауты
• Трафик/задержки
![Page 55: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/55.jpg)
Архитектура: очереди сообщений• At least one / at most one
• Надежность хранения
• Производительность
• Что происходит, если брокер лежит (умер диск с 10М сообщениями)
• Кластеризация брокера (из коробки, сами)
• Мониторинг
![Page 56: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/56.jpg)
Uptime: суть работы админа• Мониторинг
• Работа с инцидентами
• Учения
![Page 57: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/57.jpg)
Мониторинг: задачи • Оповещение: узнать, что есть проблема
• Сокращение длительности инцидентов: показать, где проблема
• Инструмент анализа работы проекта: от оптимизаций до отслеживания бизнес показателей
![Page 58: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/58.jpg)
Мониторинг: оповещениеЧто значит “сайт не работает”:
• Внешние проверки• HTTP-5xx ответов больше чем N в секунду• Медленных ответов > 10%
![Page 59: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/59.jpg)
Мониторинг: внешние проверки• Покрывают не все страницы• Не позволяют хорошо замерить время
ответа
![Page 60: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/60.jpg)
Мониторинг: по логам• Сколько было запросов: как
обычно/больше/меньше
• Сколько было ошибок
• Времена ответов: на сколько масштабны были тормоза
![Page 61: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/61.jpg)
Мониторинг: по логам
![Page 62: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/62.jpg)
Мониторинг: правильные severity• CRITICAL: уведомляем по SMS/IM
• WARNING: можно уведомлять на email или без уведомления
• INFO: без уведомления
![Page 63: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/63.jpg)
Мониторинг: CRITICAL• Сайт не работает
• Ошибки приема платежей
• Пропал поток покупок
![Page 64: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/64.jpg)
Мониторинг: CRITICAL• Бросаем все и чиним
• Починку нельзя отложить
• Никто никуда не уходит пока есть проблема
![Page 65: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/65.jpg)
Мониторинг: WARNING• Диск кончается
• Какой-то сервис не доступен, дает много ошибок или тупит
• Много ошибок на сетевом интерфейсе
• Сервер недоступен
• Swap IO процесса > 1 Mb/s
![Page 66: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/66.jpg)
Мониторинг: WARNING• Желательно закрыть в течении дня
• Если алерт не по делу – добавляем исключение
• Если часто флапает - сглаживаем
![Page 67: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/67.jpg)
Мониторинг: INFO• CPU usage > 99%
• Disk IO > 99%
• Использование других ресурсов
![Page 68: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/68.jpg)
Мониторинг: INFO• Используем как подсказки во время поиска
причин CRITICAL или WARNING
• Если загораются бессмысленные алерты – добавляем исключения
![Page 69: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/69.jpg)
Мониторинг: покрытие• Определяем CRITICAL• Все внешние сервисы: БД, очереди, …• Свои сервисы• Бизнес показатели• Железо
![Page 70: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/70.jpg)
Мониторинг: свои сервисы• Потребление ресурсов
• Активность: запросы, cache hit rate, …
• Общение с внешними сервисами: запросы, ошибки, времена ответа
• Значимые вычисления
• Какие-то состояния: размер кэша, количество соединений
![Page 71: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/71.jpg)
Мониторинг: дашборды• Основной сводный: показывает состояние с точки зрения
пользователя и кратко про все подсистемы
• Видно где что-то не так
• По каждой подсистеме свой подробный дашборд
• 2 шага при поиске проблемы уже нормально
![Page 72: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/72.jpg)
Мониторинг: триггеры• Алерты должны показывать причину проблем
• Зависимости и автомагия не нужны
• Глазами можно быстро просмотреть 100+ алертов и выбрать подходящий
• Алертам, которые не помогают, можно понизить severity
![Page 73: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/73.jpg)
Мониторинг: работа с инцидентами• Downtime нужно считать
• Полезно классифицировать проблемы (по зоне ответственности, компонентам системы)
• Обязательно докопаться до причины проблемы
![Page 74: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/74.jpg)
Мониторинг: работа с инцидентами• Админы работаю аккуратнее, если все проблемы
фиксируются и потом разбираются
• Если нужно разломать prod - заранее объявляем плановый downtime
• Сравниваем uptime между периодами, делаем выводы
![Page 75: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/75.jpg)
Мониторинг: работа с инцидентами• Uptime - отличный KPI для админов
• Но отвечать можно только за то, что они в силах исправить
• Выделяем классы проблем, за которые будем отвечать
• Бонус = f(uptime)
![Page 76: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/76.jpg)
Мониторинг: учения• Кроме того, что текущие проблемы
решаются, бизнесу нужна уверенность, что новые проблемы будут решены
• Это хорошо показывают учения
![Page 77: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/77.jpg)
Мониторинг: ученияВыписываем риски:• Умер сервер master БД• Умер ДЦ• ddos• Нас взломали, увели базу, cookie
![Page 78: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/78.jpg)
Мониторинг: учения• Планируем действия, пишем сценарий
• Объявляем downtime и эмулируем ситуацию
• Действуем только по инструкции
• Замеряем время восстановления
![Page 79: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/79.jpg)
Мониторинг: учения• По результатам исправляем инструкцию
• Повторяем, пока инструкция не заработает
• Пробуем уменьшить время восстановления
![Page 80: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/80.jpg)
Выбор технологий• Физика• Здравый смысл• Экспертиза• Выбираем nosql
![Page 81: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/81.jpg)
ФизикаL1 cache 0.5 ns
L2 cache 5 ns
Memory 100 ns
Compress 1K bytes with Snappy 3 000 nsSend 1K bytes over 1 Gbps network 10 000 ns
Read 4K randomly from SSD 150 000 ns
Read 1 MB sequentially from memory 250 000 ns
Round trip within same datacenter 500 000 ns
Read 1 MB sequentially from SSD 1 000 000 ns
Disk seek 10 000 000 ns
Read 1 MB sequentially from disk 20 000 000 ns
Send packet CA->Netherlands->CA 150 000 000 ns
![Page 82: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/82.jpg)
Физика• За счет чего прирост производительности?• За счет чего лучше надежность?• За счет чего меньше задержки?• За счет чего latency стабильнее?
![Page 83: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/83.jpg)
Здравый смысл• KISS (Keep it simple, (stupid|short|small…))
• Нужно хорошо думать, как не перемудрить
![Page 84: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/84.jpg)
Здравый смысл• Всегда нужно помнить, какую проблему мы
решаем
• Формулируем требования
![Page 85: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/85.jpg)
Здравый смысл• Можно ли пренебречь какими-то
требованиями?
• Чем уже область применения какого-либо решения, тем оно проще
![Page 86: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/86.jpg)
Здравый смысл• Приносит ли решение новые проблемы?
• Можно ли не решать эту проблему сейчас?
![Page 87: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/87.jpg)
Экспертиза• Приоритет у технологий, для которых у нас
есть экспертиза внутри
• Сможем ли мы купить поддержку
• Сможем ли нанять людей с экспертизой?
![Page 88: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/88.jpg)
Выбираем nosql• Write path + latency
• Read path + latency
• Сохранность данных
• Overhead на хранение данных
![Page 89: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/89.jpg)
Выбираем nosql• Репликация
• Consistency
• Что происходит при -1 нода?
• Сколько нод можно потерять?
• Как меняется нагрузка на оставшиеся?
![Page 90: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/90.jpg)
Выбираем nosql• Точка входа: нужна ли балансировка или клиент
умеет ходить по списку нод
• Шардинг: равномерность, кто роутит
• Вопросы про клиент: timeouts, retries, load balancing
![Page 91: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/91.jpg)
Выбираем nosql• Как добавить ноду
• Как выключить ноду
• Upgrade кластера
• Backup/restore
• Мониторинг
![Page 92: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/92.jpg)
Выбираем nosql• Тестируем производительность на объеме данных и нагрузке
5x от расчетных за год
• Тестируем отказы, смотрим логи (kill -9 на процесс, firewall на N минут итд)
• Читаем issue tracker проекта: обращаем внимание на баги – их серьезность, скорость закрытия, возможные workaround
![Page 93: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/93.jpg)
Взаимодействие с разработкой• Админам интересен стабильный прод
• Разработчикам быстрая доставка фич до пользователей
![Page 94: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/94.jpg)
Взаимодействие с разработкой• Конфликт интересов – это хорошо
• Но, чтобы работа не встала нужно договариваться
![Page 95: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/95.jpg)
Взаимодействие с разработкой• SLA на время реакции админов на задачи
от разработки
• Админ может не выпускать задачу, если видит, что не полетит
![Page 96: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/96.jpg)
Взаимодействие с разработкой• Defenition of done задачи у разработчика =
“Задача в production”
• Разработчик заинтересован выполнить все здравые требования админов
![Page 97: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/97.jpg)
Взаимодействие с разработкой• Чтобы как можно раньше узнавать о возможных проблемах, нужно
общаться
• Совместное проектирование: AB, design docs, …
• Разработчики получают дополнительную экспертизу про отказоустойчивость, производительность
• Админы получают более качественный код, в котором учтены их требования
![Page 98: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/98.jpg)
Взаимодействие с разработкой• Конфликты неизбежны
• Идеально, если админы и разработка – разные подразделения
• В этом случае рефери – начальство
• Это на крайний случай, но стимулирует договариваться
![Page 99: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/99.jpg)
Deploy• Чем меньше изменений за одну итерацию,
тем лучше
• Готово ли тестирование?
• Готова ли инфраструктура?
![Page 100: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/100.jpg)
Deploy: тестирование• Должно тестироваться в похожем на prod окружении
(балансеры, таймауты)
• Сборка должна включать все необходимые изменения в окружении
• Несколько версий должны уметь работать параллельно
![Page 101: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/101.jpg)
Deploy: инфраструктура• Формулируем критерии успешной работы
сервиса в мониторинге
• Мы должны быстро понимать, работает ли новая версия или нет
• Атомарная выкладка на N серверов невозможна
![Page 102: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/102.jpg)
Deploy: инфраструктура• Rolling upgrade – катим в N потоков
• Graceful reload сервиса – дорабатываем текущие запросы, новые не берем – они ретраятся на соседей
![Page 103: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/103.jpg)
Deploy: инфраструктура• Если приложению нужен прогрев, это
должно происходить до того, как на него пойдут пользовательские запросы
• Процесс выкладки не должен сопровождаться ошибками
![Page 104: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/104.jpg)
Deploy: инструментарий• Вы должны понимать, что происходит в каждый
момент времени
• Вы должны быть в состоянии исправить руками любую ошибку в конфигурации
• Лог изменений: кто, что делал
![Page 105: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/105.jpg)
Deploy: общение с разработкой• Changelog – важно понимать, что изменилось с
точки зрения работы приложения
• Инструкция, если выкладка нестандартная
• Rollback инструкция, если были изменения схемы БД итд
![Page 106: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/106.jpg)
Deploy: общение с разработкой• Если у вас много сервисов, деплоим всё
равно по одному
• За очередностью выхода сервисов должны следить разработчики (через последовательную постановку задач)
![Page 107: Мастер-класс про организацию службы эксплуатации](https://reader036.vdocuments.pub/reader036/viewer/2022062902/58f9ad77760da3da068b9882/html5/thumbnails/107.jpg)
Deploy: общение с разработкой• Учимся избегать изменения схемы БД
(дублирование данных, работа с 2 версиями, миграция, удаления старого)