19 мая торговый движок BitMEX был внепланово остановлен между 12:00 UTC и 13:40 UTC в результате неожиданной перезагрузки сервера. Прежде чем мы углубимся в детали нашего расследования, мы хотим повторно извиниться перед всеми, кто пострадал от данного события. Мы прекрасно понимаем, какое влияние такие происшествия оказывают на наших клиентов. В этом посте нашего блога изложены меры, которые мы предпринимаем для минимизации риска подобных сбоев в будущем. Мы также предоставим несколько рекомендаций нашим пользователям, которые помогут им управлять рисками в случае простоя торгового движка.
Мы также хотим подчеркнуть, что во время этого события средства клиентов не были подвергнуты риску. Пока платформа находилась в режиме “офлайн” ликвидаций не происходило, а все ожидающие и новые запросы пользователей на вывод средств были обработаны в течение 90 минут после возобновления работы платформы.
Ниже краткое описание того, что произошло, и как какая реакция последовала с нашей стороны:
- В 12:00 UTC сервер торгового движка неожиданно перезапустился, отключив тем самым движок.
- В 12:01 UTC наши техническая команда и группа разработчиков инициировали процедуру реагирования.
- В 12:13 UTC наши клиенты получили оповещения в режиме реального времени через https://status.bitmex.com и официальный канал BitMEX в Telegram. Обновления данных о ситуации были позже ретранслированы на всех наших медиа-платформах в течение всего времени инцидента.
- В 12:20 UTC функции торгового движка были частично восстановлены, и наша команда приступила к следующим шагам, необходимым для возобновления работы платформы.
- В 12:38 UTC сервер торгового движка внезапно перезапустился во второй раз, что побудило нашу команду задействовать другую процедуру восстановления, предназначенную для переноса торгового движка на резервный сервер. Мы смогли завершить этот процесс за 22 минуты, используя новый механизм обработки отказа систем, внедренный ранее в этом году.
- В 12:41 UTC наш облачный провайдер подтвердил, что оба перезапуска сервера были связаны с аппаратными проблемами оборудования.
- В 13:04 UTC функционал торгового движка был успешно восстановлен.
- В 13:23 UTC торговая платформа была восстановлена в режиме «Рынок приостановлен, только отмена», а нашим клиентам были направлены уведомления о возобновлении всех торговых операций в 13:40 UTC.
- В 13:40 UTC были успешно возобновлены торги.
10. Запросы на вывод средств были обработаны в 14:00 UTC и 15:00 UTC.
Может ли это случиться снова?
BitMEX работает в режиме 24/7, и, хотя мы стремимся обеспечить постоянную безотказную работу сервиса и бесперебойное обслуживание, к сожалению, как и на любой обменной площадке, мы не можем этого гарантировать. Мы постоянно наблюдаем за стабильностью работы как наших внутренних систем, так и за стабильностью работы используемых нами сервисов сторонних поставщиков и предпринимаем шаги для минимизации рисков любого простоя. Обратите внимание, что мы обеспечиваем полную прозрачность мониторинга времени работы сервиса на нашей странице статуса с информацией, доступной за предыдущий год.
Что BitMEX делает для обеспечения стабильной работы платформы?
В течение 2017-2019 гг. большая часть наших инженерных ресурсов была выделена на масштабирование площадки [1] [2]. Это было необходимо для того, чтобы справиться с растущим спросом во время чрезвычайной волатильности и обеспечить лучшее качество обслуживания для всех пользователей. Начиная с конца 2019 года наши инженерные ресурсы все больше фокусируются на обеспечении высокой доступности и отказоустойчивости платформы, одновременно поддерживая и постоянно увеличивая производительность платформы.
Учитывая эти два направления, наши разработчики реализовали и внедрили ряд архитектурных улучшений. Эти улучшения значительно уменьшают влияние программно-аппаратных сбоев на платформу и сокращают время, необходимое для выполнения аварийного переключения. Конечной целью данного процесса является достижение практически нулевого времени простоя при обработке сбоев, влияющих на одну зону доступности, и менее часа простоя для зоны доступности региона.
Параллельно с работой над архитектурой мы еженедельно моделировали сбои системы в непроизводственной среде, чтобы проверить правильность наших процедур реагирования и улучшить нашу осведомленность о параметрах их выполнения, сделав их более автоматизированными. Одно из недавних и заметных изменений в инфраструктуре произошло 14 мая в качестве прямой реакции на ухудшение качества услуг 13 марта. После нескольких недель разработки, консультаций с нашим облачным провайдером и производственного нагрузочного тестирования наши команды заменили технологию, лежащую в основе нашей основной базы пользовательских данных: время восстановления БД уменьшилось в 4 раза, и открылись возможности масштабирования в 15 раз в течение следующих нескольких месяцев – все это без прерывания торговли. Также наши инженеры несколько раз в неделю производят обновления и улучшения функций нашего торгового движка без остановки платформы.
Чтобы поддержать ресурсами наши постоянные усилия по обеспечению устойчивости и восстановлению после сбоев, а также в рамках нашей приверженности созданию лучшей в своей категории торговой платформы, мы активно наращивали состав команды BitMEX и продолжаем это делать. Если вы готовы принять вызов и думаете, что обладаете необходимыми навыками, ознакомьтесь с нашими вакансиями.
Что делает BitMEX для улучшения процессов при возобновлении работы платформы?
После анализа предыдущих сбоев и отзывов клиентов мы внесли изменения в процедуры возобновления работы торговой платформы после внеплановых остановок, включая обновленный протокол режима платформы «Только отмена» (где ранее этот режим использовался после планового технического обслуживания). За 17-минутный период до восстановления полной функциональности платформы после инцидента 19 мая было зафиксировано 38 437 отменённых ордеров. Мы считаем, что это значительно повысило удобство для наших пользователей по сравнению с предыдущими незапланированными отключениями. Мы будем продолжать анализировать отзывы пользователей по этому процессу и, при необходимости, повышать эффективность и предоставлять обновленную информацию о любых новых технических процедурах.
Как я могу защитить себя от рисков, связанных с отключением платформы?
Торговая платформа BitMEX предоставляет ряд продвинутых инструментов и настроек, с помощью которых трейдеры могут контролировать риск, связанный с отключениями.
Для трейдеров, которые используют наш API, мы предлагаем функцию «Аварийный выключатель». Эта функция позволяет трейдерам установить таймаут для отмены ордеров в случае, если они не могут подключиться к платформе. Подробную информацию о реализации и пример установки таймаута вы можете найти в нашей документации по этой функции здесь.
Еще одна полезная особенность платформы BitMEX – это возможность устанавливать цену срабатывания (триггера) стоп-ордера, на основе последней цены рынка (Last Price), цены маркировки (Mark Price) или цены индекса (Index Price). Когда работа платформы возобновляется после простоя, могут произойти резкие колебания последней цены (Last Price). Во избежание срабатывания стоп-ордеров из-за резких колебаний последней цены, трейдеры могут устанавливать срабатывание своих стопов на основе цены маркировки или цены индекса, а не последней рыночной цены.
Это всего лишь два примера функций платформы BitMEX, которые позволяют нашим трейдерам контролировать риски и снижать влияние отключений на торговлю. Наша служба поддержки может предоставить дополнительную информацию об этих (и любых других) инструментах управления рисками на платформе.
Заключение.
Криптовалютной индустрии удалось добиться значительного прогресса за короткий промежуток времени. Мы знаем, что ожидания от нас возросли и мы работаем круглосуточно, чтобы еще больше улучшить устойчивость нашей платформы. Мы надеемся, что эта запись блога предоставит всем пользователям четкое описание последнего инцидента простоя платформы и конкретных шагов, которые мы предпринимаем для повышения стабильности платформы и общего опыта торговли.
Как всегда, мы призываем всех заинтересованных пользователей и тех, кто пострадал в результате сбоя, обращаться в службу поддержки.