К моему удивлению, Крис начинает свирепеть: «Что?! Зачем, ради всего святого, нам понадобится реализовывать по десять выкаток в день?! Наши самые короткие интервалы на сегодня – три недели. Нам просто нечего внедрять по десять раз в день!»
Патти качает головой: «Ты уверен? А как насчет фиксации багов? Как насчет повышения качества работы сайта, когда он стопорится, вроде как при последних двух выкатках? Не хотелось бы тебе осуществлять эти изменения в продукции на постоянной основе, а не ломая все правила, пытаясь что-то исправить в срочном порядке?»
Крис раздумывает пару минут, прежде чем ответить. «Интересно. Я бы назвал такого рода меры патчами или релизами низшего порядка. Но ты права – это тоже настоящие внедрения. И было бы очень здо́рово, если бы мы могли фиксировать сбои быстрее, но десять выкаток в день?»
Размышляя о том, что сказал Эрик, я добавляю: «Как насчет того, чтобы маркетинг мог запускать свои изменения в наш контент быстрее или проводить разного рода эксперименты, а также осуществлять А/B-тестирования, чтобы увидеть, какое предложение работает лучше?»
Вэс кладет обе руки на стол: «Послушайте, что я вам скажу, народ. То, о чем вы говорите, просто невозможно сделать. Мы здесь имеем дело с законами физики. Подумайте, сколько времени это занимает сейчас: требуется, по крайней мере, неделя подготовки и больше восьми часов на саму выкатку!»
Именно так сказал бы я сам до своей поездки на завод с Эриком. Сейчас же я говорю: «Слушайте, возможно, Вэс и прав, но просвети-ка меня: сколько шагов в полном процессе внедрения? Мы говорим о двадцати шагах, о двух сотнях или о двух тысячах?»
Вэс чешет голову несколько мгновений и говорит: «Что ты думаешь, Брент? Я бы сказал, что порядка сотни шагов…»
«Серьезно? – отвечает Брент. – Я считаю, что скорее двадцать шагов».
Уильям встревает: «Я не уверен, где вы начинаете считать, но если мы начнем с того момента, когда разработчики создают код и мы помечаем его как «кандидат на релиз», я бы говорил о сотне шагов – то есть еще до того, как мы передаем все в IT-сопровождение».
Ох.
Вэс прерывает его: «Нет-нет-нет. Билл говорил «шаги внедрения». Давайте не будем копать глубже…»
Тем временем я думаю о том, что Эрик советовал мне мыслить как управляющий производством, а не как руководитель производственного участка. Внезапно я понимаю: возможно, он имел в виду, что я должен разрушить границы между разработчиками и IT-сопровождением.
«Вы, ребята, оба неправы, – обращаюсь я к Вэсу и Уильяму. – Уильям, не мог бы ты, пожалуйста, записать все шаги на доске? Я бы начал с момента, когда код принят, и до того момента, когда вы передаете его нашей группе».
Он кивает, подходит к доске и начинает рисовать прямоугольники, рассказывая о шагах по мере продвижения. В следующие десять минут Уильям доказывает, что в работе около сотни шагов, включая автоматические тесты в среде разработки; создание среды для контроля качества, которая подходит для разработчиков; запуск кода внутри нее; прохождение всех тестов, внедрение и перенос его в среду, которая подходит для группы контроля качества; нагрузочное тестирование и, в конце концов, дело переходит к отделу IT-сопровождения.
Когда Уильям заканчивает, на доске нарисовано тридцать прямоугольников. Глядя на Вэса, я вижу, что он совсем не раздражен, а глубоко погружен в свои мысли, потирает лоб, глядя на схему на доске.
Я подаю знак Бренту и Вэсу, что один из них должен продолжить с того места, где закончил Уильям.
Брент встает и начинает рисовать квадраты, которые отражают процесс, включающий получение кода, подготовку новых серверов, установку и настройку конфигурации операционной системы, баз данных и приложений, внесение всех изменений в сети, фаерволы и распределители нагрузки, а затем тестирование, позволяющее убедиться, что выкатка прошла успешно.
Я пристально изучаю всю схему целиком: она поразительно напоминает мне производственный этаж завода. Каждый из данных шагов подобен производственному участку, со своими машинами, людьми, методами и измерениями. Работа IT-отдела, возможно, намного труднее, чем работа производства. Наша деятельность не просто невидима, из-за чего ее сложнее отследить, в нашем процессе гораздо больше вещей, которые могут пойти не так, как нужно.
Огромное количество конфигураций должно быть задано правильно, в системах должно быть достаточно памяти, все файлы нужно поместить в правильное место, и сам код, и все среды должны работать корректно.
Одна самая маленькая ошибка может погубить весь процесс. И это, конечно, значит, что мы нуждаемся в более строгой дисциплине и планировании, чем на производстве.
Я не могу дождаться, чтобы рассказать о своем открытии Эрику.
Осознавая важность и масштабность стоящей перед нами задачи, я подхожу к доске, беру красный маркер и говорю: «Я поставлю большую красную звезду рядом с каждым шагом, на котором у нас были проблемы в предыдущие запуски».
Начиная делать пометки на доске, начинаю объяснять: «Так как обновленная тестовая среда контроля качества была недоступна, мы использовали старую версию. Из-за провала всех тестов мы внесли изменения в код и в среду, что модифицировало ее по сравнению со средой разработчиков и рабочей средой, и так как мы никогда эти среды не синхронизировали, у нас с ними возникнут проблемы и в следующий раз».
Оставив несколько красных звезд на схеме Уильяма, я перехожу к квадратам Брента: «Так как у нас не было правильных инструкций по развертыванию, нам потребовалось пять раз все переделывать, чтобы запустить скрипты. В результате мы получили большие проблемы, потому что среда была изменена, о чем я уже говорил».