#robo Метрика, которая заставила меня остановиться на прошлой неделе, была количеством повторных попыток на задачу в одном из наших автоматизированных конвейеров. Обычно оно колеблется около 1.2. Вдруг оно стало ближе к 4. Ничего катастрофического, но достаточно высоко, чтобы начать задавать вопросы.
Сначала предполагали, что причина - нестабильность сети. В инфраструктуре Web3 это обычно виновник. RPC-узлы становятся непостоянными, несколько транзакций истекают по времени, рабочие повторяют попытки, и в конечном итоге все стабилизируется. Но когда мы проверили логи, повторные попытки не были вызваны сетевыми ошибками. Они были вызваны сбоями проверок политики в середине конвейера.
Что было странно.
Несколько недель назад мы добавили несколько операционных мер предосторожности. Простые вещи. Шаг валидации перед тем, как определенные транзакции отправляются в сеть. Очередь, которая удерживала задачи, если оценка газа выглядела неправильно. Еще одно правило, которое приостанавливает задачи, если сервис подписанта не отвечает в узком окне времени.
Каждое из них имело смысл в то время. Никто не хочет отправлять плохие транзакции или создавать запутанные откаты. Проблема заключалась в том, как они взаимодействовали, когда все они были активны.
Задачи проходили через первую очередь нормально, затем сталкивались с проверкой политики и переходили в состояние повторной попытки. Работник повторных попыток подбирал ее, выполнял задачу снова и иногда инициировал другую проверку дальше по конвейеру. Не жесткий сбой. Просто тихий цикл "попробуйте еще раз."
Со временем команда операций адаптировалась. Руководства начали включать записи, такие как "если повторная попытка >3, вручную подтвердить состояние." Некоторые инженеры начали перенаправлять определенные задачи на ручное одобрение, просто чтобы избежать цикла. Уровень автоматизации технически работал, но система медленно стала осторожной до такой степени, что начала колебаться.
В конце концов, мы очистили стек политики и сделали границы решений более четкими. Меньше условных проверок, больше явных состояний в рабочем процессе. Некоторые конвейеры теперь проходят через $ROBO , в основном потому, что это заставляет эти состояния быть определенными, прежде чем работа продолжится.
Урок был простым. Инфраструктура редко деградирует очевидным образом.
Иногда она просто начинает сомневаться в себе. И каждая повторная попытка - это система тихо просящая кого-то взглянуть на нее снова.@Fabric Foundation $ROBO
Сначала предполагали, что причина - нестабильность сети. В инфраструктуре Web3 это обычно виновник. RPC-узлы становятся непостоянными, несколько транзакций истекают по времени, рабочие повторяют попытки, и в конечном итоге все стабилизируется. Но когда мы проверили логи, повторные попытки не были вызваны сетевыми ошибками. Они были вызваны сбоями проверок политики в середине конвейера.
Что было странно.
Несколько недель назад мы добавили несколько операционных мер предосторожности. Простые вещи. Шаг валидации перед тем, как определенные транзакции отправляются в сеть. Очередь, которая удерживала задачи, если оценка газа выглядела неправильно. Еще одно правило, которое приостанавливает задачи, если сервис подписанта не отвечает в узком окне времени.
Каждое из них имело смысл в то время. Никто не хочет отправлять плохие транзакции или создавать запутанные откаты. Проблема заключалась в том, как они взаимодействовали, когда все они были активны.
Задачи проходили через первую очередь нормально, затем сталкивались с проверкой политики и переходили в состояние повторной попытки. Работник повторных попыток подбирал ее, выполнял задачу снова и иногда инициировал другую проверку дальше по конвейеру. Не жесткий сбой. Просто тихий цикл "попробуйте еще раз."
Со временем команда операций адаптировалась. Руководства начали включать записи, такие как "если повторная попытка >3, вручную подтвердить состояние." Некоторые инженеры начали перенаправлять определенные задачи на ручное одобрение, просто чтобы избежать цикла. Уровень автоматизации технически работал, но система медленно стала осторожной до такой степени, что начала колебаться.
В конце концов, мы очистили стек политики и сделали границы решений более четкими. Меньше условных проверок, больше явных состояний в рабочем процессе. Некоторые конвейеры теперь проходят через $ROBO , в основном потому, что это заставляет эти состояния быть определенными, прежде чем работа продолжится.
Урок был простым. Инфраструктура редко деградирует очевидным образом.
Иногда она просто начинает сомневаться в себе. И каждая повторная попытка - это система тихо просящая кого-то взглянуть на нее снова.@Fabric Foundation $ROBO