«Вау, босс. Держи себя в руках», – говорит Патти.
Это день развертывания «Феникса», из-за чего я пропустил Хэллоуин со своими детьми. Уже 23:40. Мы все собрались вокруг стола в NOC, и у меня возникает чувство дежавю. В комнате пятнадцать человек, включая Криса и Уильяма.
Большая часть людей расселась вокруг стола с открытыми ноутбуками; повсюду валяются коробки из-под пиццы и обертки от сладостей. Несколько человек стоят у доски, рассматривая диаграммы и чеклисты.
Запуск «Феникса» в тестовой среде и прохождение всех тестов заняли у нас на три часа дольше запланированного. Хотя это уже гораздо лучше, чем при прошлом запуске, я думал, что у нас будет меньше проблем, учитывая то, как много мы работали над усовершенствованием технологии внедрения программ.
К 21:30 мы готовы были развернуть программу в продакшн. Все тесты были пройдены, Крис и Уильям дали знак начинать. Мы с Патти и Вэсом просмотрели отчеты о тестах и тоже дали отмашку на начало работ.
И затем под нами разверзся ад.
Один из критических этапов процесса миграции провалился. Мы выполнили только тридцать процентов развертывания и снова были близки к полному провалу. Из-за уже запущенных изменений и скриптов возможности откатить все назад за время, оставшееся до открытия магазинов, не было.
И снова нам с боем пришлось продираться вперед, мы пытались двигаться дальше, чтобы возобновить запуск.
Облокотившись о стену и скрестив руки, я смотрю на работу своих коллег и удерживаю себя от желания ходить из угла в угол. Какое разочарование: развертывание «Феникса» снова прошло просто катастрофически плохо.
С другой стороны, по сравнению с прошлым разом все идет гораздо спокойнее.
Мы напряжены, звучит много горячих споров, но все очень сконцентрированы на решении проблемы. Менеджеры магазинов уже оповещены о наших успехах, они подготовились выполнять все необходимые операции вручную, на случай если POS-системы слетят, как и в прошлый раз.
Я вижу, как Вэс говорит что-то Бренту, встает, потирая лоб, и идет прямо ко мне. Крис и Уильям встают и следуют за ним. Я двигаюсь им навстречу: «Ну что?»
«Так, – отвечает Вэс, приблизившись ко мне достаточно, чтобы говорить тихо и быть услышанным. – Мы обнаружили дымящееся ружье, то есть выяснили, что Брент осуществлял изменение в боевых базах данных пару недель назад, чтобы настроить поддержку модуля бизнес-аналитики «Феникса». Никто об этом не знал, хотя эта работа была задокументирована. Данное изменение вступает в конфликт с некоторыми изменениями баз данных, которые мы проводим, поэтому ребятам Криса нужно будет кое-что перекодировать».
«Дерьмо, – говорю я. – Подождите. Какой модуль «Феникса»?»
«Это один из проектов Сары, которые мы выполнили после заморозки проектов, – отвечает он. – Еще до того как мы стали использовать канбан для работы Брента. Изменение схемы базы данных, которое мы пропустили».
Я ругаюсь про себя. Снова Сара?
У Криса пришибленный вид. «Это будет непросто. Нам придется переименовать некоторое количество столбцов базы данных, что заденет, возможно, сотни файлов. И все сопутствующие скрипты. Такое можно исправить только вручную, и вероятность ошибок очень высока».
Он оборачивается к Уильяму. «Что мы можем сделать, чтобы получить хоть какие-нибудь тестовые результаты, прежде чем продолжим запуск?»
Уильям выглядит абсолютно больным, вытирая пот со лба. «Это очень, очень… ненадежно… Мы можем провести тестирование, но мы можем и не обнаружить все ошибки до тех пор, пока они не затронут оригинальный код. Следовательно, у нас будут сбои в работающей программе, и приложение просто взорвется. Даже может потянуть за собой POS-системы, что будет совсем плохо».
Он смотрит на часы. «У нас есть всего шесть часов, чтобы закончить работы. Так как у нас нет времени перезапускать все тесты, придется от части из них отказаться».
Мы проводим следующие десять минут, обсуждая возможные схемы развертывания, которые мы сможем выполнить к 6 утра и которые позволят магазинам открыться нормально. Когда Крис и Уильям уходят с целью оповестить свои команды, я даю Вэсу знак остаться рядом.
«Когда все это закончится, – говорю я, – нужно будет выяснить, как не допустить подобного еще раз. Не должно быть такого, что тестовые среды разработчиков и контроля качества не совпадают с рабочей средой».
«Ты прав, – соглашается Вэс, недоверчиво качая головой. – Я понятия не имею, как мы с этим справимся. Но спорить с тобой, конечно, не буду». Он смотрит на Брента скептически: «Ты можешь поверить, что Брент снова в центре этого всего?»
Гораздо позже, когда развертывание тем не менее выполнено, все аплодируют. Я смотрю на часы. Сейчас 5:42 утра, субботнее утро. Команда провела всю ночь работая, и мы справились с выкаткой за двадцать минут до полного провала. Мы закончили на шесть часов позже расписания.