Смотреть на пропасть
По мере того, как растут масштаб и сложность, существует уменьшающаяся доходность от тестирования перед развертыванием. Автор испытаний не может представить комбинаторный взрыв совпадений, которые приводят к бедствию. Мы должны признать, что развертывание в производстве является единственным окончательным тестом.
Примите неизвестный
Что теперь? Нигилистические направления бесполезны. Если мы не можем этого избежать, то мы должны принять это … или, по крайней мере, спланировать это. Если мы готовы предположить, что неизвестная проблема может развернуть и поверхностно в производстве, как мы можем подготовиться?
Предельная экспозиция
В зависимости от нашего стека мы могли бы развернуть с флагами функций. Флаги функций позволяют нам организовать производственных пользователей в A/b/x и дают нам очень простой способ попробовать недавно развернутый код и выключить его. В качестве альтернативы, мы можем Канарию в A/b/x от узла или POD, и иметь автоматическую процедуру отката.
Соблюдайте разбитость: «красный свет»
Нам все еще нужен способ сказать, что А сломается: своего рода «красный свет». Инструменты играют здесь роль, но мы хотели бы, чтобы наш красный свет был максимально общим. Так же, как тестер не может тестировать на каждое неизвестное, разработчик не может инструментально для каждого неизвестного. Заманчиво думать, что, поскольку новые режимы отказа найдены, мы можем инструментировать для них, и этого должно быть достаточно.
К сожалению, по мере того, как размер нашей кодовой базы становится все больше, площадь поверхности неизвестных становится все больше. Мы никогда не будем догнать ручные усилия и только реактивные улучшения.
Используйте что У тебя есть
Мы хотели бы использовать все подсказки и подсказки, доступные для накопления нашего красного света. Давайте посмотрим, что некоторые недавние RCA могут предложить способам подумать о обнаружении не вписных проблем.
Обнаружить события, которые перестают происходить
У Stripe недавно был отключение из-за ошибок в базе данных в сочетании с изменением конфигурации ( https://stripe.com/rcas/2019-07-10 ). Вдумчивый RCA показывает, что проблема оставалась незамеченной в течение некоторого времени, так как узлы DB отвечали как UP, но перестали отправлять свои показатели репликации.
Здесь внимание могло быть обращено к проблеме гораздо раньше, рассматривая эти обновления как поезд примерно периодических событий, которые перестали происходить. Это подчеркивает важность возможности сказать, что что -то регулярное, перестало происходить.
Не поддерживайте регуляцию (и используйте метрики)
У Cloudflare недавно был отключение из-за плохой регуляции ( https://blog.cloudflare.com/cloudflare-taure ). Они тестировали правило на основе режима для сканирования JavaScript, рассматривая ложные положительные показатели правила. Руководитель вызвала чрезмерную возврат (я предполагаю) и привязала много процессоров.
В этом примере подчеркивается сложность создания, курирования, управления и поддержания регуляции (та же сложность, которая мешает многим людям использовать полную мощность своих журналов и потоков событий). Это также показывает, что мониторинг показателей, очевидно, важен.
Используйте журналы
У Honeycomb недавно был отключение из-за отсутствующего двоичного файла ( https://www.honeycomb.io/blog/incident-review-you-cant-deploy-binary-that-dont-ucist/ ). Короче говоря, инструмент BuildEvents регрессировал, и поэтому не вышел с ненулевым кодом, несмотря на ошибки сборки.
Здесь я полагаю, что замещение новых/исключительно редких событий сборки, происходящих в самих журналах сборки, могло обеспечить красный свет, возможно, до развертывания. Но без автоматического структурирования событий и построения словаря типов событий (например, «Зебриум»), было бы невозможно сделать это надежно.
Наш путь
Зебриум Миссия заключается в том, чтобы стать лучшим «красным светом», возможным для развертывания производства. Мы признаем и принимаем важность инструментов, но настаиваем на том, что для завершения миссии требуется автоматически структурированное понимание зарегистрированных событий и случайных показателей. Понятно, что требуются несколько источников данных, а также обучение более высокого уровня и интерпретация машин в таких данных.
Если вы заинтересованы в попытке нашей технологии, вы можете Начните бесплатно, нажав здесь Анкет
Опубликовано с разрешения автора: Ларри Ланкастер, технический директор, Зебриум.
Оригинал: «https://dev.to/gdcohen/deploying-into-production-the-need-for-a-red-light-1nmd»