Первый билет, который меня напугал, не содержал сообщения об ошибке. Он содержал скриншот спиннера. Пользователь загрузил фотографию, оплатил рендер и стал ждать. Страница продолжала вращаться. В моей приборной панели не было ни одного неудачного задания, ни одной ошибки...
Первый билет, который меня напугал, не содержал сообщения об ошибке. Он содержал скриншот спиннера.
Пользователь загрузил фотографию, оплатил рендер и стал ждать. Страница продолжала вращаться. На моей панели управления не было ни одного неудачного задания, ни ошибки в журналах, ни запроса на возврат средств, потому что со стороны пользователя все технически пошло не так. Ничего не произошло вообще. Это худший вид сбоя для инструмента, который взимает плату за каждое задание: система выглядит живой, деньги пропали, а пользователю остается смотреть на анимацию загрузки.
Я запускаю небольшой инструмент для преобразования изображения в видео. Вы загружаете фотографию, выбираете стиль движения и получаете в ответ короткий клип. На доске конвейер выглядит просто: загрузить, поставить в очередь, отправить провайдеру рендеринга, дождаться вебхука, доставить файл. На практике каждая стрелка между этими квадратами — это место, где работа может тихо умереть. Мне потребовалось около месяца и около 1400 рабочих мест, чтобы изучить все способы. Около 6% заданий за первый месяц так и не дошли до пользователя в пригодном для использования виде. Вот что на самом деле ломалось, и конструкция, которая остановила это.
Трубопровод, и где он находится для вас
Моя первая версия отслеживала задание с двумя состояниями: «ожидание» и «выполнено». Код, называемый