108
Как организовать службу эксплуатации вашего проекта Николай Сивко

Мастер-класс про организацию службы эксплуатации

Embed Size (px)

Citation preview

Page 1: Мастер-класс про организацию службы эксплуатации

Как организовать службу эксплуатации вашего проекта

Николай Сивко

Page 2: Мастер-класс про организацию службы эксплуатации

План• Задачи• Экономика• Команда• Архитектура• Выбираем технологии• Uptime• Взаимодействие с разработкой• Deploy

Page 3: Мастер-класс про организацию службы эксплуатации

Задачи: • Всё настроить (из горы железа сделать

“инфраструктуру”)• Выкладывать новый код• Обновлять всякое другое ПО• Следить, чтобы ничего не сломалось• Чинить, если сломалось/тупит• Знать, как это всё работает

Page 4: Мастер-класс про организацию службы эксплуатации

Экономика• Хостинг+

• Люди

• Консалтинг

• Софт/сервисы

Page 5: Мастер-класс про организацию службы эксплуатации

Экономика: хостингПрикинем на средне-маленький проект

2 x frontend: CPU + 4Gb RAM + SSD4 x backend: CPU + 8Gb RAM + SSD2 x DB: CPU + 64Gb RAM + SSD

Page 6: Мастер-класс про организацию службы эксплуатации

Экономика: хостинг=облако• 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: Мастер-класс про организацию службы эксплуатации

Экономика: хостинг=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: Мастер-класс про организацию службы эксплуатации

Экономика: хостинг=железо• SM: 2*1600+ 4*1600 + 2*4800= 19200$ =

800$/месяц (на 2 года)

• Colocation: ~30тр=463$ за ½ стойки/месяц

• Итого: 1263$/месяц

Page 9: Мастер-класс про организацию службы эксплуатации

Экономика: хостингЦена, avg + -

Облако 1650 $ • Можно добавлять/убирать серверы быстро

• LB, storage, backup• Не паримся про поломки железа

• Часто недополучаете ресурсы• Latency на diskio/net

Dedicated 1414 $ • Получили сильно больше ресурсов относительно облака

• Бывает доступно: LB, storage, backup• Не паримся про поломки железа*

• Может быть setup fee• Получить новый сервер 1h-7d• Платим всегда за месяц

Свое 1263 $ • Получили сильно больше ресурсов относительно облака

• Затраты на покупку – CAP• Можем купить любую конфигурацию

• Большие первоначальные вложения• Нужно покупать сетевые железки• Паримся про поломки железа

Page 10: Мастер-класс про организацию службы эксплуатации

Экономика: каналы• Оптика по Москве: ~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: Мастер-класс про организацию службы эксплуатации

Экономика: люди• Junior admin: 100тр+• Senior admin: 150тр+ • DBA: 150тр+• Сетевик: 150тр+

+ налоги + офис + мебель + печеньки

Page 12: Мастер-класс про организацию службы эксплуатации

Экономика: консалтинг• Стоимость консалтинга ~ 0.5-5 ЗП спеца

• Если консультация разовая, платим больше

• Постоянная поддержка дешевле

• Можете получить целую команду 24x7 за ЗП 1 спеца в штат

Page 13: Мастер-класс про организацию службы эксплуатации

Экономика: cофт и cервисы• Обычно вы покупаете то, что можно сделать из open

source + время ваших сотрудников

• Вы получаете уже реализованный функционал с поддержкой

• Обычно софт/сервис дешевле, так как он делается для многих компаний

Page 14: Мастер-класс про организацию службы эксплуатации

Экономика: cофт и cервисы• Делаем внутри замену чего-то простого:

• Прототип будет через ½ месяца• Реализация оставшихся 60% функционала - еще месяц• Поддержка и улучшения ¼ месяца в месяц

За год потратим (½+1+¼*12)*150 = 675тр (если делал senior) – можно сравнить со стоимостью софта/сервиса

Page 15: Мастер-класс про организацию службы эксплуатации

Экономика: cофт и cервисыЧто вообще может понадобится покупать:• Безопасность: WAF, AntiDDOS• Инфраструктура: доставка почты, CDN, dedicated

storage, backup сервисы, конвертация видео,...• Мониторинг: сам мониторинг, процессинг

логов, аналитика ошибок, профилирование

Page 16: Мастер-класс про организацию службы эксплуатации

Экономика: ИМХО• Люди – самый дорогой ресурс

• Нужно всегда помнить, что время ваших сотрудников не бесплатное

• Сервисы и консалтинг позволяют не заниматься непрофильными задачами и не нанимать экспертов

Page 17: Мастер-класс про организацию службы эксплуатации

Экономика: ИМХО• Для больших закупок лучше делать мини-

тендеры, чтобы просто поставщиков “столкнуть лбами”

• При закупках брэндового железа, нужно начинать с общения с вендором, он даст поставщика и обеспечит его скидкой (диапазон скидок: 40-80%)

Page 18: Мастер-класс про организацию службы эксплуатации

Команда• Кто такой админ?• Стадии развития админа• Тимлид• Нанимаем• Распространение знаний• Командная работа

Page 19: Мастер-класс про организацию службы эксплуатации

Команда: кто такой админ?• Это НЕ угрюмый и злой разработчик, который

перестал писать код :)

• Большой кругозор в ПО• Постоянные вопросы: как это работает?• Гипертрофированное чувство ответственности• Цель в работе – ничего не делать

Page 20: Мастер-класс про организацию службы эксплуатации

Команда: экспертизаКак работает OS:• Процессы, сигналы, лимиты, привилегии• Файловые системы• Ядро, драйверы, syscalls, другие интерфейсы ядра• Память: кэши, shared mem, huge pages…• Пакетные менеджеры• Системное: syslog, time/ntp/tz, ssh, sudo,…

Page 21: Мастер-класс про организацию службы эксплуатации

Команда: экспертизаКак работает сеть:• Физика: arp, ethernet, оптика, уплотнение• Протоколы: ip, tcp, icmp, app-level protos• Роутинг: static, ospf, bgp,…• Коммутация: stp, mpls, lacp,…• Железки

Page 22: Мастер-класс про организацию службы эксплуатации

Команда: экспертизаКак примерно работают БД:• Процессы/треды• MVCC• Индексы, кэши, prepared statements• Backup/restore• Репликация• Работа с диском, сетью

Page 23: Мастер-класс про организацию службы эксплуатации

Команда: экспертизаКак работают сервисы:• Архитектура: process/thread/event loop• Работа с ресурсами: память/диск/сеть• Лимиты: обработчики, память, …• Диагностика: логи, статусы• Фичи

Page 24: Мастер-класс про организацию службы эксплуатации

Команда: экспертизаИнструментарий:• Автоматизация: shell, sed, awk,…• Скриптинг: perl, python, некоторые даже

golang• Дебаг: ping, traceroute, tcpdump, perf, strace,

Page 25: Мастер-класс про организацию службы эксплуатации

Команда: стадии развития админаНачальный уровень:

• смог настроить, чтобы заработало• troubleshooting – АД• если нет того, кто подскажет, спрашивает на

форумах, невнятно гуглит

Page 26: Мастер-класс про организацию службы эксплуатации

Команда: стадии развития админаЭмпирический опыт:

• Покрутил ручку – стало лучше, запомнил, всегда крутит при случае

• Не понимает, почему стало лучше• Может решать много стандартных проблем, крутя

ручки, которые запомнил

Page 27: Мастер-класс про организацию службы эксплуатации

Команда: стадии развития админаПервая стадия просветления:

• Начал понимать, как на самом деле все работает• Делает предположения и их проверяет• Крутит ручки вдумчиво, внятно оценивает

результативность• Докапывается, почему помогло

Page 28: Мастер-класс про организацию службы эксплуатации

Команда: стадии развития админаВторая стадия просветления:

• Понял, что можно читать код софта, БД, ядра• Сразу понимает, какая ручка может помочь• Вовремя понимает, что данный софт не

справляется по построению и надо менять

Page 29: Мастер-класс про организацию службы эксплуатации

Команда: стадии развития админа

Дальше наверное что-то еще есть, но я застрял на предыдущем уровне :)

Page 30: Мастер-класс про организацию службы эксплуатации

Команда: стадии развития админа• Очень большой процент остается на стадии

“эмпирический опыт”

• Есть люди, которые проходят эту стадию быстро: помогает атмосфера в команде, правильные вопросы от тимлида

• Если в команде нет ни одного “просветленного” – всё пропало :)

Page 31: Мастер-класс про организацию службы эксплуатации

Команда: тимлид• Вам нужен “просветленный” + способный работать с

людьми• Нет денег на такого - нужно аутсорсить эксплуатацию• Не можете оценить квалификацию – найдите

консалтера, пусть поможет со вторым этапом интервью

• Способность руководить – оценивайте сами

Page 32: Мастер-класс про организацию службы эксплуатации

Команда: нанимаем• Нанимаем только просветленных или тех, кто точно

осилит просветлиться

• Не умеете отличить потенциальных, нанимайте сразу нормальных - их проще отличить

• Позже сами поймете, что можете находить смышленых и учить их

Page 33: Мастер-класс про организацию службы эксплуатации

Команда: распространение знаний• Каждый должен уметь делать все

стандартные операции

• С помощью wiki

• Или SCM (software configuration management)

Page 34: Мастер-класс про организацию службы эксплуатации

Команда: поток задач• Есть backlog + приоритеты, как правило он бесконечен

• С заказчиками можно договориться про SLA на время реакции на critical/blocker задачи

• Учите заказчиков не искать других путей постановки задач и коммуникаций по задачам кроме issue tracker

Page 35: Мастер-класс про организацию службы эксплуатации

Команда: если завязли в рутине• Профилируем• Коммуникация – часто очень дорого, требуем

формализовать задачи• Можно автоматизировать?• Может помогут чудо-технологии? :)• Может часть задачи переложить на

разработчиков? (их как правило больше)

Page 36: Мастер-класс про организацию службы эксплуатации

Команда: “задачи развития”• Автоматизация части рутины

• Протестировать технологию X для задачи

• Убрать костыль Y

Page 37: Мастер-класс про организацию службы эксплуатации

Команда: “задачи развития”• Формулируем• Список “неизвестных”• Исследуем возможность решения способом Х• Не получается протестировать за несколько дней –

ищем варианты• Вытаскиваем человек(а|ов) из “рутины”• Внедряем дальше или ищем варианты

Page 38: Мастер-класс про организацию службы эксплуатации

Команда: ИМХО• Либо “правильный админ”, либо аутсорсим

• Хотя бы один должен НЕ быть социопатом

• Админы склонны биться над задачей до последнего, если это не то, что вы хотите – проговаривайте сразу

Page 39: Мастер-класс про организацию службы эксплуатации

Команда: ИМХО• Микроменеджмент недопустим – у вас же

команда “просветленных”, они могут и должны думать сами

• Но нужно ставить рамки, лучше в ходе обсуждения в команде

Page 40: Мастер-класс про организацию службы эксплуатации

Архитектура• Отказоустойчивость

• Масштабируемость

• Практика

Page 41: Мастер-класс про организацию службы эксплуатации

Архитектура: отказоустойчивостьОтказоустойчивость - всегда избыточность:

• Компоненты железа: raid, блоки питания, компоненты сетевых железок

• Сеть: multipath, дублирование оборудования

• На уровне серверов

Page 42: Мастер-класс про организацию службы эксплуатации

Архитектура: масштабируемостьВозможность добавить ресурсов и получить больше производительности

• Вертикальная

• Горизонтальная

Page 43: Мастер-класс про организацию службы эксплуатации

Архитектура: практика• Точка входа: фронтенды

• Данные: бд

• Бэкенды

• Вспомогательные сервисы

Page 44: Мастер-класс про организацию службы эксплуатации

Архитектура: точка входа• DNS RR: не знает о доступности серверов

• Shared IP: vrrp, carp

• DNS RR между shared IPs

Page 45: Мастер-класс про организацию службы эксплуатации

Архитектура: точка входаЕсли есть cетевые железки на входе:• cisco: равнозначные статические маршруты

+ IP SLA checks

• juniper: равнозначные статические маршруты + BFDd + monit

Page 46: Мастер-класс про организацию службы эксплуатации

Архитектура: данные в БД• Практически всегда нужно иметь реплики

• На мастер только INSERT/UPDATE + SELECT, чувствительные к replication lag

• Основной функционал у большинства - чтение, пробуйте работать при неработающем мастере

Page 47: Мастер-класс про организацию службы эксплуатации

Архитектура: данные в БД• Реплики можно поставить за балансер (TCP)

• Но дублируется трафик + вносим дополнительные задержки

• На TCP балансере сложно понять жива база или нет

Page 48: Мастер-класс про организацию службы эксплуатации

Архитектура: данные в БД• Лучше научить приложение работать с

несколькими репликами

• Можно делать умные retry на другой сервер и не отдавать пользователям ошибки

Page 49: Мастер-класс про организацию службы эксплуатации

Архитектура: данные в БД• Всегда нужно понимать, сколько живых

реплик требуется для работы

• Периодически тестируем отказ реплики

Page 50: Мастер-класс про организацию службы эксплуатации

Архитектура: данные в БДЧто происходит при проблемах с master:

• Решаем, что будем переключаться (может быстрее починить текущий сервер?)

• Переключаем на один из slave

• Переключаем остальные slave на новый мастер

• Чиним старый сервер, делаем его репликой

Page 51: Мастер-класс про организацию службы эксплуатации

Архитектура: данные в БД• Переключение мастера на автомате – очень стрёмно!

• Лучше взять под БД железо по-надежнее

• Сделать инструкцию/скрипт

• и провести учения

Page 52: Мастер-класс про организацию службы эксплуатации

Архитектура: данные в БД• Репликация – не бэкап

• Нужно делать backup + копировать WAL

• Можно иметь реплику, отстающую на N минут

Page 53: Мастер-класс про организацию службы эксплуатации

Архитектура: бэкенды• Бэкенд должен быть stateless

• Отдаем правильные статусы при проблемах: не нужно брать лишние запросы при перегрузе, отдаем 503, балансер сделает retry на соседа

• Если балансер умеет health checks – делаем внятный /status: проверяем, что есть соединение с БД итд

Page 54: Мастер-класс про организацию службы эксплуатации

Архитектура: memcached• Нужен ли кэш?

• Живет ли сайт при пустом MC?

• Насколько эффективен кэш?

• Шардинг/решардинг

• Таймауты

• Трафик/задержки

Page 55: Мастер-класс про организацию службы эксплуатации

Архитектура: очереди сообщений• At least one / at most one

• Надежность хранения

• Производительность

• Что происходит, если брокер лежит (умер диск с 10М сообщениями)

• Кластеризация брокера (из коробки, сами)

• Мониторинг

Page 56: Мастер-класс про организацию службы эксплуатации

Uptime: суть работы админа• Мониторинг

• Работа с инцидентами

• Учения

Page 57: Мастер-класс про организацию службы эксплуатации

Мониторинг: задачи • Оповещение: узнать, что есть проблема

• Сокращение длительности инцидентов: показать, где проблема

• Инструмент анализа работы проекта: от оптимизаций до отслеживания бизнес показателей

Page 58: Мастер-класс про организацию службы эксплуатации

Мониторинг: оповещениеЧто значит “сайт не работает”:

• Внешние проверки• HTTP-5xx ответов больше чем N в секунду• Медленных ответов > 10%

Page 59: Мастер-класс про организацию службы эксплуатации

Мониторинг: внешние проверки• Покрывают не все страницы• Не позволяют хорошо замерить время

ответа

Page 60: Мастер-класс про организацию службы эксплуатации

Мониторинг: по логам• Сколько было запросов: как

обычно/больше/меньше

• Сколько было ошибок

• Времена ответов: на сколько масштабны были тормоза

Page 61: Мастер-класс про организацию службы эксплуатации

Мониторинг: по логам

Page 62: Мастер-класс про организацию службы эксплуатации

Мониторинг: правильные severity• CRITICAL: уведомляем по SMS/IM

• WARNING: можно уведомлять на email или без уведомления

• INFO: без уведомления

Page 63: Мастер-класс про организацию службы эксплуатации

Мониторинг: CRITICAL• Сайт не работает

• Ошибки приема платежей

• Пропал поток покупок

Page 64: Мастер-класс про организацию службы эксплуатации

Мониторинг: CRITICAL• Бросаем все и чиним

• Починку нельзя отложить

• Никто никуда не уходит пока есть проблема

Page 65: Мастер-класс про организацию службы эксплуатации

Мониторинг: WARNING• Диск кончается

• Какой-то сервис не доступен, дает много ошибок или тупит

• Много ошибок на сетевом интерфейсе

• Сервер недоступен

• Swap IO процесса > 1 Mb/s

Page 66: Мастер-класс про организацию службы эксплуатации

Мониторинг: WARNING• Желательно закрыть в течении дня

• Если алерт не по делу – добавляем исключение

• Если часто флапает - сглаживаем

Page 67: Мастер-класс про организацию службы эксплуатации

Мониторинг: INFO• CPU usage > 99%

• Disk IO > 99%

• Использование других ресурсов

Page 68: Мастер-класс про организацию службы эксплуатации

Мониторинг: INFO• Используем как подсказки во время поиска

причин CRITICAL или WARNING

• Если загораются бессмысленные алерты – добавляем исключения

Page 69: Мастер-класс про организацию службы эксплуатации

Мониторинг: покрытие• Определяем CRITICAL• Все внешние сервисы: БД, очереди, …• Свои сервисы• Бизнес показатели• Железо

Page 70: Мастер-класс про организацию службы эксплуатации

Мониторинг: свои сервисы• Потребление ресурсов

• Активность: запросы, cache hit rate, …

• Общение с внешними сервисами: запросы, ошибки, времена ответа

• Значимые вычисления

• Какие-то состояния: размер кэша, количество соединений

Page 71: Мастер-класс про организацию службы эксплуатации

Мониторинг: дашборды• Основной сводный: показывает состояние с точки зрения

пользователя и кратко про все подсистемы

• Видно где что-то не так

• По каждой подсистеме свой подробный дашборд

• 2 шага при поиске проблемы уже нормально

Page 72: Мастер-класс про организацию службы эксплуатации

Мониторинг: триггеры• Алерты должны показывать причину проблем

• Зависимости и автомагия не нужны

• Глазами можно быстро просмотреть 100+ алертов и выбрать подходящий

• Алертам, которые не помогают, можно понизить severity

Page 73: Мастер-класс про организацию службы эксплуатации

Мониторинг: работа с инцидентами• Downtime нужно считать

• Полезно классифицировать проблемы (по зоне ответственности, компонентам системы)

• Обязательно докопаться до причины проблемы

Page 74: Мастер-класс про организацию службы эксплуатации

Мониторинг: работа с инцидентами• Админы работаю аккуратнее, если все проблемы

фиксируются и потом разбираются

• Если нужно разломать prod - заранее объявляем плановый downtime

• Сравниваем uptime между периодами, делаем выводы

Page 75: Мастер-класс про организацию службы эксплуатации

Мониторинг: работа с инцидентами• Uptime - отличный KPI для админов

• Но отвечать можно только за то, что они в силах исправить

• Выделяем классы проблем, за которые будем отвечать

• Бонус = f(uptime)

Page 76: Мастер-класс про организацию службы эксплуатации

Мониторинг: учения• Кроме того, что текущие проблемы

решаются, бизнесу нужна уверенность, что новые проблемы будут решены

• Это хорошо показывают учения

Page 77: Мастер-класс про организацию службы эксплуатации

Мониторинг: ученияВыписываем риски:• Умер сервер master БД• Умер ДЦ• ddos• Нас взломали, увели базу, cookie

Page 78: Мастер-класс про организацию службы эксплуатации

Мониторинг: учения• Планируем действия, пишем сценарий

• Объявляем downtime и эмулируем ситуацию

• Действуем только по инструкции

• Замеряем время восстановления

Page 79: Мастер-класс про организацию службы эксплуатации

Мониторинг: учения• По результатам исправляем инструкцию

• Повторяем, пока инструкция не заработает

• Пробуем уменьшить время восстановления

Page 80: Мастер-класс про организацию службы эксплуатации

Выбор технологий• Физика• Здравый смысл• Экспертиза• Выбираем nosql

Page 81: Мастер-класс про организацию службы эксплуатации

Физика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: Мастер-класс про организацию службы эксплуатации

Физика• За счет чего прирост производительности?• За счет чего лучше надежность?• За счет чего меньше задержки?• За счет чего latency стабильнее?

Page 83: Мастер-класс про организацию службы эксплуатации

Здравый смысл• KISS (Keep it simple, (stupid|short|small…))

• Нужно хорошо думать, как не перемудрить

Page 84: Мастер-класс про организацию службы эксплуатации

Здравый смысл• Всегда нужно помнить, какую проблему мы

решаем

• Формулируем требования

Page 85: Мастер-класс про организацию службы эксплуатации

Здравый смысл• Можно ли пренебречь какими-то

требованиями?

• Чем уже область применения какого-либо решения, тем оно проще

Page 86: Мастер-класс про организацию службы эксплуатации

Здравый смысл• Приносит ли решение новые проблемы?

• Можно ли не решать эту проблему сейчас?

Page 87: Мастер-класс про организацию службы эксплуатации

Экспертиза• Приоритет у технологий, для которых у нас

есть экспертиза внутри

• Сможем ли мы купить поддержку

• Сможем ли нанять людей с экспертизой?

Page 88: Мастер-класс про организацию службы эксплуатации

Выбираем nosql• Write path + latency

• Read path + latency

• Сохранность данных

• Overhead на хранение данных

Page 89: Мастер-класс про организацию службы эксплуатации

Выбираем nosql• Репликация

• Consistency

• Что происходит при -1 нода?

• Сколько нод можно потерять?

• Как меняется нагрузка на оставшиеся?

Page 90: Мастер-класс про организацию службы эксплуатации

Выбираем nosql• Точка входа: нужна ли балансировка или клиент

умеет ходить по списку нод

• Шардинг: равномерность, кто роутит

• Вопросы про клиент: timeouts, retries, load balancing

Page 91: Мастер-класс про организацию службы эксплуатации

Выбираем nosql• Как добавить ноду

• Как выключить ноду

• Upgrade кластера

• Backup/restore

• Мониторинг

Page 92: Мастер-класс про организацию службы эксплуатации

Выбираем nosql• Тестируем производительность на объеме данных и нагрузке

5x от расчетных за год

• Тестируем отказы, смотрим логи (kill -9 на процесс, firewall на N минут итд)

• Читаем issue tracker проекта: обращаем внимание на баги – их серьезность, скорость закрытия, возможные workaround

Page 93: Мастер-класс про организацию службы эксплуатации

Взаимодействие с разработкой• Админам интересен стабильный прод

• Разработчикам быстрая доставка фич до пользователей

Page 94: Мастер-класс про организацию службы эксплуатации

Взаимодействие с разработкой• Конфликт интересов – это хорошо

• Но, чтобы работа не встала нужно договариваться

Page 95: Мастер-класс про организацию службы эксплуатации

Взаимодействие с разработкой• SLA на время реакции админов на задачи

от разработки

• Админ может не выпускать задачу, если видит, что не полетит

Page 96: Мастер-класс про организацию службы эксплуатации

Взаимодействие с разработкой• Defenition of done задачи у разработчика =

“Задача в production”

• Разработчик заинтересован выполнить все здравые требования админов

Page 97: Мастер-класс про организацию службы эксплуатации

Взаимодействие с разработкой• Чтобы как можно раньше узнавать о возможных проблемах, нужно

общаться

• Совместное проектирование: AB, design docs, …

• Разработчики получают дополнительную экспертизу про отказоустойчивость, производительность

• Админы получают более качественный код, в котором учтены их требования

Page 98: Мастер-класс про организацию службы эксплуатации

Взаимодействие с разработкой• Конфликты неизбежны

• Идеально, если админы и разработка – разные подразделения

• В этом случае рефери – начальство

• Это на крайний случай, но стимулирует договариваться

Page 99: Мастер-класс про организацию службы эксплуатации

Deploy• Чем меньше изменений за одну итерацию,

тем лучше

• Готово ли тестирование?

• Готова ли инфраструктура?

Page 100: Мастер-класс про организацию службы эксплуатации

Deploy: тестирование• Должно тестироваться в похожем на prod окружении

(балансеры, таймауты)

• Сборка должна включать все необходимые изменения в окружении

• Несколько версий должны уметь работать параллельно

Page 101: Мастер-класс про организацию службы эксплуатации

Deploy: инфраструктура• Формулируем критерии успешной работы

сервиса в мониторинге

• Мы должны быстро понимать, работает ли новая версия или нет

• Атомарная выкладка на N серверов невозможна

Page 102: Мастер-класс про организацию службы эксплуатации

Deploy: инфраструктура• Rolling upgrade – катим в N потоков

• Graceful reload сервиса – дорабатываем текущие запросы, новые не берем – они ретраятся на соседей

Page 103: Мастер-класс про организацию службы эксплуатации

Deploy: инфраструктура• Если приложению нужен прогрев, это

должно происходить до того, как на него пойдут пользовательские запросы

• Процесс выкладки не должен сопровождаться ошибками

Page 104: Мастер-класс про организацию службы эксплуатации

Deploy: инструментарий• Вы должны понимать, что происходит в каждый

момент времени

• Вы должны быть в состоянии исправить руками любую ошибку в конфигурации

• Лог изменений: кто, что делал

Page 105: Мастер-класс про организацию службы эксплуатации

Deploy: общение с разработкой• Changelog – важно понимать, что изменилось с

точки зрения работы приложения

• Инструкция, если выкладка нестандартная

• Rollback инструкция, если были изменения схемы БД итд

Page 106: Мастер-класс про организацию службы эксплуатации

Deploy: общение с разработкой• Если у вас много сервисов, деплоим всё

равно по одному

• За очередностью выхода сервисов должны следить разработчики (через последовательную постановку задач)

Page 107: Мастер-класс про организацию службы эксплуатации

Deploy: общение с разработкой• Учимся избегать изменения схемы БД

(дублирование данных, работа с 2 версиями, миграция, удаления старого)

Page 108: Мастер-класс про организацию службы эксплуатации

Спасибо за внимание

Николай Сивко[email protected]: nikolay.sivko