Эксплуатация многофункциональной распределенной системы в условиях реактивной разработки.
Мы в Alytics занимаемся автоматизацией бизнес процессов в сфере контекстной рекламы. Мы разрабатываем сервис, с помощью которого конечный рекламодатель повышает профит от контекста. Наши инструменты освобождают головы специалистов по маркетингу от рутины, предоставляя целый арсенал средств и готовых паттернов для решения различного рода задач.
Сложилось так, что мы первые в России открыли публичный доступ к системе такого рода, разработав систему с нуля. На текущий момент она состоит из 27 приложений и 206 различных тасок (операций), которые создают всевозможные виды нагрузок. В этом докладе собираюсь рассказать про некоторые из проблем и вызовов, с которыми нам пришлось столкнуться в процессе стабилизации эксплуатации системы, поделиться выработанными подходами к их решению.
* Скользкая тропинка: от прототипа на коленке до распределенной системы из 27 приложений и 276 видов операций.
* Типичная архитектура системы обработки очередей
* Мониторим это. Абсолютный минимум для мониторинга инфраструктуры. Обнаружение аномалий.
* Внешний сервис = миллион проблем. Обучающаяся система обработки ошибок (типизация ошибок в процессе эксплуатации, задание правил обработки)
* "Мы не можем контролировать то что не можем посчитать". Детализируем метрики.
* "А че тупит то?". Детализируем использование ресурсов.
* "А у меня все ходы записаны". Детализированное логирование и трассировка. Центр мониторинга и админка.
* "Откуда этот SQL?". Выявление медленных запросов ORM. Дэшборд производительности на основе реалтайм метрик всех приложений и операций
* "Люк, используй метрики с умом". Планировщик задач: от ручного анализа метрик и распределения воркеров до динамической балансировки нагрузки на основе предполагаемой стоимости задачи.
* "Колодец инцидентов". Fix it. Or automate it. Then Refactor it.
* Grow Checklist. Plan optimizations.