Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Самая большая распродажа года — время веселого шопинга для покупателей и экзамен на выживание для IT-отделов из-за максимальной нагрузки на сервисы. Удалось пройти 11.11 — точно пройдешь и остальные испытания акциями. Всем привет, меня зовут Антон Баташов, я руководитель отдела интеграции и технической поддержки в компании XWAY. Сегодня я хочу поделиться с вами несколькими простыми шагами, которые помогают нам готовиться к пику загруженности.
Фундаментальная проблема заключается в том, что маркетплейсы — внешние системы, от которых мы зависим. При этом их сервера могут легко отваливаться из-за высокой нагрузки. Но чаще всего они не падают полностью, а начинают «тормозить». Если для покупателя это неудобство лишь уменьшает скорость загрузки и реакции интерфейса, то для продавца — чревато отсутствием интеграции по API. Причем узнать о случившемся можно через несколько часов после того, как все отвалилось. Чтобы этого избежать, мы добавили флаги, которые показывают, что информация не дошла и нужно отправить ее повторно. В обычные дни такие флаги помогают нам автоматизировать инфообмен с маркетплейсами, а в дни пиковых нагрузок из-за акций — сигнализируют о состоянии серверов торговых площадок.
Ко всем крупным акциям нужно готовиться, поэтому 11.11 мы вынесли в отдельный проект. За месяц до события руководители направлений и IT устроили совместный брейншторм, вспоминая все, что пошло или могло пойти не так в прошлом году. Все мысли выписывались на доске, а потом на их основе формулировались задачи для отделов и основные направления подготовки.
Codefreeze — замораживаем разработку и изменения среды
Разработка — процесс бесконечный, постоянно готовится и запускается новый функционал. Но 11.11 — тот самый случай, когда стоит поставить все на паузу. Необходимо зафиналить любые новые фичи за определенное время до начала акции, после чего приостановить всю разработку.
Запрещаем добавление нового функционала, обновление ПО и аппаратной составляющей на боевых серверах во время акции.
После того как разработка приостановлена, и до того, как начнется, собственно, распродажа, важно проверить регламенты быстрого отката к работающей версии.
Причина проста — даже работающий функционал может сломаться, и потребуется хотфикс. Например, прекратилось получение заказов, и нам надо откатиться к предыдущей работоспособной версии, внести небольшое исправление, оперативно его залить и протестировать. Но при внедрении новых фич меняется структура базы данных, возможны серьезные изменения на уровне ПО, среды разработки и конфигурации железа. Это может привести к тому, что регламенты отката устареют. Чтобы этого не допустить — нужна пауза на время акции и проверка актуальности регламентов до ее начала.
Alerts — мониторим состояние
Лучший способ избежать паники и выяснения на ходу «кто виноват и что делать» — заранее распределить зоны ответственности и тщательно продумать, что можно отследить. Оптимальный вариант — разработать отдельный интерфейс мониторинга состояния системы, в котором можно посмотреть в режиме реального времени, что происходит, и понять, что пошло не так.
Но одним мониторингом обойтись не получится — физически сложно следить за состоянием 24/7, поэтому за оперативное информирование о проблемах отвечают алерты, задача которых «достучаться» до ответственного лица в любое время дня и ночи при возникновении проблемы. Причем оповещения необходимо настраивать не только на действие, но и на бездействие. С одиночными критическими сбоями все очевидно — возникла проблема, отправили алерт. Но существует ряд некритических ошибок, которые появляются с определенной частотой и не влияют на работоспособность системы. Если они вдруг пропали — это тоже сигнал, что с сервисом что-то неладно и необходимо отправить оповещение о проблеме.
Resource — подготавливаем вычислительные мощности
Согласитесь, обидно, когда ты все предусмотрел, ко всему подготовился, ждешь отличные продажи и… спустя четверть часа у тебя отваливается сервер из-за нехватки вычислительных мощностей. Время запуска нового, предположим, две недели — нужно создать конфигурацию, отдать ее компании, которая делает сервера, оплатить, дождаться получения, установки базового ПО, загрузить туда весь объем своего софта и так далее. В режиме аврала что-то можно ускорить, но это все равно будет несколько дней, а то и неделя. Итог — акция провалена.
Очевидно, что такую ситуацию необходимо предусмотреть заранее. Всегда есть два пути решения: иметь в наличии достаточное количество «железа», готового к работе, которое можно подключить в течение минуты «по щелчку», или продумать серверную архитектуру с учетом того, что активность клиента может вырасти в десятки раз.
Первый вариант — утопия. Держать железо мертвым грузом не выгодно, а оперативно купить-развернуть невозможно. Остается только тщательно планировать количество вычислительных ресурсов, дискового пространства, оперативной памяти, процессоров, пропускную способность сетевой инфраструктуры, конфигурацию ПО и правильность построения взаимодействий между серверами в кластере.
При подготовке к проведению акции необходимо провести дополнительное нагрузочное тестирование с учетом прогнозируемого повышения активности покупателей (плюс запас прочности), и подготовить «запасные» ресурсы. Это требует дополнительных затрат, но они окупятся, ведь за время 11.11 продавец при правильно организованной акции может продать товаров больше, чем за предыдущий год.
Personal — организуем дежурство
Сколько ни пытайся подстраховаться кодом — главным всегда остается человек. На время акции персонал переходит в круглосуточный режим работы, а значит, надо подумать об организации нормальных условий.
Делаем штабную комнату с большими экранами, на которые выводятся в реальном масштабе времени все показатели, отслеживаются основные метрики и режимы. Это место дежурной смены, задача которой — оперативно отреагировать на любую нештатную ситуацию. Если параметр вышел из зоны нормы — приступить к исправлению самостоятельно. Если есть необходимость — поднять сотрудников из отдыхающей смены, привлечь специалистов с более глубокой экспертизой.
Также понадобятся места для отдыха, для сна, необходимо организовать горячее питание, кофе, график дежурств. Сотрудникам предстоит прожить в таком режиме с 11 по 15 ноября, так что неплохо позаботиться и о досуге свободной смены — телевизор, игровая приставка, несколько ноутбуков и теннисный стол лишними не будут.
Final — что после
Любая акция заканчивается, пройдет и 11.11. О чем важно не забыть после отмены «казарменного положения»? Отдых и восстановление — это само собой. А с точки зрения организации процессов — обязательно провести закрывающее собрание, проанализировать полученные показатели и зафиксировать все, что случилось за время акции. Это пригодится через год при подготовке к следующему одиннадцатому ноября.
Вместо эпилога. Пока сотрудники с чувством выполненного (или не очень) долга пойдут кто в бар отмечать, а кто плакать и исправлять косяки — у меня будет немного времени ответить на ваши вопросы в комментариях, или напрямую в Telegram @anton_batashov. Пообщаемся?