Высоконагруженный сервис –высоконагруженная служба поддержки.
Кондратов НиколайMail.Ru
HighLoad++ 2011
HighLoad++ 2011 2
О чем мы?
• Перенос Службы Поддержки в Нижний Новгород (фактически «с нуля»)
• Нагруженный сервис – нагруженная Служба Поддержки
• Аналогия – высоконагруженные системы
• Используем аналогичные принципы и подходы
HighLoad++ 2011 3
Жизненный цикл службы.
требования
проектирование
разработка
отладка внедрение
оптимизация
мониторинг
HighLoad++ 2011 4
Жизненный цикл службы: определение требований.
требования
проектирование
разработка
отладка внедрение
оптимизация
мониторинг
HighLoad++ 2011 5
Жизненный цикл службы: проектирование архитектуры.
требования
проектирование
разработка
отладка внедрение
оптимизация
мониторинг
HighLoad++ 2011 6
Жизненный цикл службы: разработка.
требования
проектирование
разработка
отладка внедрение
оптимизация
мониторинг
HighLoad++ 2011 7
Жизненный цикл службы: отладка.
требования
проектирование
разработка
отладка внедрение
оптимизация
мониторинг
HighLoad++ 2011 8
Жизненный цикл службы: внедрение.
требования
проектирование
разработка
отладка внедрение
оптимизация
мониторинг
HighLoad++ 2011 9
Жизненный цикл службы: оптимизация.
требования
проектирование
разработка
отладка внедрение
оптимизация
мониторинг
HighLoad++ 2011 10
Жизненный цикл службы: мониторинг.
требования
проектирование
разработка
отладка внедрение
оптимизация
мониторинг
HighLoad++ 2011 11
Определяем требования
• Нагрузка (не менее 20К писем в день)
• Соответствие метрикам службы
• Масштабируемость
• Отказоустойчивость (без «bottle-neck»-ов)
• Резервирование
HighLoad++ 2011 12
Архитектура: структура службы
• 2-х уровневая структура
• Разделение на группы
• Специализации
1-я линия
Группа «Пароли»
Группа «Веб»
Группа «Abuse»
Группа «Solvers»
2-я линия
60% потока
HighLoad++ 2011 13
Архитектура: программные средства. OTRS
Open-source Ticket Request System это:
• Веб-интерфейс
• Переписка собирается в цепочки
• Очереди для различных типов тикетов
• Шаблоны
• Развитые механизмы фильтрации
• Настраиваемые отчеты и мониторинг
• … и много чего еще! http://www.otrs.org/
HighLoad++ 2011 14
Архитектура: отказоустойчивость и резервирование
Задача – избавление от «узких мест»:
• Ротация сотрудников
• Резерв людей
• Резерв рабочих мест – 20%
Технические меры:
• Резервирование каналов
• Репликация и бэкапы
HighLoad++ 2011 15
Разработка
• Набор и формирование команды
• «Допиливание» OTRS:
• Версия 2.2.6
• Низкая производительность
• Неудобные интерфейсы
• «Незаточенность» под наши процессы
HighLoad++ 2011 16
Разработка: переделки OTRS
• Поиск – реализовали на Sphinx
• Ускорение запросов
• Интерфейс реализовали на ajax
• Интеграция с внутренними ИС
• Кеширование
• Отложенные действия и асинхронная работа
• Многопроектность, расписания, автоматические блокировки
• Рейтинги, баллы, ошибки
• Интерфейс «1-й линии»
HighLoad++ 2011 17
Внедрение.
• плавный пуск
• поэтапное наращивание нагрузки
• особое внимание параметрам мониторинга на каждом этапе
HighLoad++ 2011 18
Оптимизация (на примере интерфейса 1 линии).
• на что смотрели
• трекинг мышки
• анализ частоты операций
• скорость работы интерфейса (загрузки страниц)
• предложения сотрудников
HighLoad++ 2011 19
Оптимизация (анализ частоты).
HighLoad++ 2011 20
Результаты оптимизации (на примере интерфейса 1 линии).
• по итогам анализа действий и трекинга
• действия с наибольшим весом вынесли наверх
• по итогам измерения скорости интерфейса
• кэширование тикетов
• асинхронная подгрузка и обработка
• полный ajax
• а также
• добавили подсказки в интерфейсе
• отображаем производительность
HighLoad++ 2011 21
Мониторинг. Что?
• динамические параметры
• динамика входящего потока по линиям и группам
• динамика состояния очередей
• динамика произведенных операций
• статические показатели
• временные срезы
• суммарные срезы
• статистические срезы
HighLoad++ 2011 22
Мониторинг. Как?
• как считаем
• встроились в ORM
• учитываем каждое событие по заявке
• учитываем каждое действие оператора
• как обрабатываем
• графики в реальном времени (graphite)
• отчеты по статическим данным
• уведомления
HighLoad++ 2011 23
Мониторинг. Graphite.
Инструмент отображения динамических параметров
• Простой протокол
• Веб-интерфейс
• Развитая клиентская часть
• Поддержка функций обработки данных
• … и много чего еще! http://graphite.wikidot.com/
HighLoad++ 2011 24
Что нам все это дало.
• новая служба развернута менее чем за полгода
• служба отвечает всем исходным требованиям
• итеративность подхода позволяет постоянно развиваться
• движемся к Поддержка 2.0 (интеграция служб поддержки смежных проектов)
• а еще…
HighLoad++ 2011 25
Очаровательная команда.