Книга: Философия DevOps. Искусство управления IT
Знакомство с Target
Знакомство с Target
Компания Target Corporation – это розничная торговая компания со штаб-квартирой в Миннеаполисе, штат Миннесота. Основанная в 1902 году Джорджем Дейтоном (George Dayton) как Dayton Dry Goods, в середине 2015 года Target насчитывала примерно 347 тысяч сотрудников. По состоянию на 2015 год эта компания являлась вторым по величине импортером в США. Компания Target имеет сеть обычных магазинов, а также работает в банковском, фармацевтическом секторах и в сфере охраны здоровья.
Как любая современная компания, работающая в сфере розничных продаж, Target имеет большой послужной список технических инноваций. В 1988 году компания установила сканеры UPC во всех магазинах и центрах дистрибуции Target. Также был изменен дизайн магазинов, в частности появились более удобные товарные полки. Также в течение нескольких лет в магазинах появился ряд новых инноваций, от пунктов проверки цен, контрольно-кассовых аппаратов, карманных устройств проверки запасов товара на складах, пунктов формирования списков подарков до приложений, гарантирующих поставку товаров из центров дистрибуции в нужное время и место, а также другие инновации.
Начнем с желаемых результатов
В крупной организации с длинной историей путешествие в направлении изменений часто напоминает перемещение в запутанном лабиринте, состоящем из большого числа изгибов и поворотов. Хорошее прохождение лабиринта включает лучшие практики, которые минимизируют риск. Организация отражает сложность, создаваемую со временем. Если посмотреть на Target «с высоты птичьего полета», вряд ли вы определите начало devops-путешествия компании Target.
В действительности не было никакой единственной начальной точки. Многие команды начинали с разных начальных точек. Хизер Микман (Heather Mickman) возглавила команду под названием «API and Integration Development», а Росс Клэнтон (Ross Clanton) – команду «Ops Infrastructure Services». Именно эти две команды работали над внедрением devops в организации. Избранные командами способы не относятся к категории простых, причем некоторые сотрудники даже не знали о наличии термина devops. Вместо этого они описывали желаемые результаты на обычном языке, например «более скудно, более быстро, предоставление более качественных услуг». Эти слова выражают суть философии devops. Как объясняет Хизер Микман:
Я должна была прекратить использовать термин devops, поскольку он перегружен смыслом, несет большое количество дезинформации и недоразумений. Я беседовала с коллегами и руководителями организации и видела, как они умолкали, когда я произносила слово «devops».
Решение Микман в пользу отказа от использования термина devops в силу его перегруженности смыслом демонстрирует силу народных моделей, рассмотренных в главе 2. Вы могли бы столкнуться с подобными реакциями в своих собственных организациях, когда предвзято настроенные люди проявляют недовольство и избегают обсуждений. Подобно Микман, вы также можете найти время для выполнения эффективных преобразований в организации, особенно если сосредоточитесь на желаемых результатах и изменениях, а не на голой терминологии. Изменения выполняются поэтапно, начиная с агентов индивидуальных изменений, массовых усилий и нисходящей поддержки и завершая успешными стратегиями масштабирования.
Критически важными для адаптации изменений являются сосредоточение на желаемых результатах и осведомленность о чувствительности к языку. Рассказывайте интересные истории, которые пробуждают интерес и вдохновляют на изменения, без использования слова devops. Важно осознать текущий ландшафт в Target и понять, как отразились на людях приложенные усилия.
Формирование корпоративной близости
Руководство компании Target поощряет формирование близости на предприятии путем поддержки существующей культуры организационного обучения. Благодаря «внедрению в массы» идеи организационного обучения и поощрению всех сотрудников к продвижению «на ступеньку выше» обеспечивается масштабирование по всей организации. При этом делается упор на следующих четырех элементах:
• экспериментирование;
• тестирование;
• неудача;
• достижение цели.
Благодаря большому опыту работы с разными командами Росс Клэнтон осознал и прочувствовал проблемы каждой команды. Также он столкнулся с разными проблемами на уровне организации, такими как смещенные символы, передача работы и подотчетность.
Путешествие Клэнтона в мир devops, внедряемого в компании Target, началось с поиска руководства, которое помогло бы справиться с подобными проблемами. Многие рекомендуют книгу Phoenix Project: A Novel About IT, DevOps, and Helping Your Business win, написанную Кевином Берром (Kevin Behr), Джин Ким (Gene Kim) и Джорджом Спэффордом (George Spafford). После прочтения этой книги Клэнтон приобрел дополнительные экземпляры и раздал их другим членам своей команды. Он также провел ролевую игру на основе различных сценариев, описанных в книге.
Важно отметить, что процесс обучения и внедрения изменений внутри организации зачастую вдохновляется внешними факторами. Если вы черпаете идеи и стратегии только внутри организации, то в конечном итоге рискуете остаться со старыми практиками, привычками и паттернами. А если вы попытаетесь внедрить серьезные изменения в организации, то вряд ли старые методы смогут адекватно использоваться.
Не становитесь жертвой менталитета карго-культа, внедряя изменения только по той причине, что это делают другие. Но и не стоит недооценивать опыт и знания других людей.
Он объединился с другими технологическими лидерами в организации, включая директора Хизер Микман и технического руководителя Джеффа Эйнхорна (Jeff Einhorn), для поиска партнеров внутри организации, которые помогли бы внедрить необходимые общие изменения. Это имело решающее значение для преодоления разрыва между разными бункерами и сглаживания противоречий между организациями, имеющими разные приоритеты и сталкивающимися с различными вызовами. Вместе они обращались к другим экспертам в этой области, включая руководство Netflix, Google и Facebook, чтобы разобраться с соответствующими паттернами, которые можно адаптировать для использования в своей организации.
На саммите DevOps Enterprise Summit, прошедшем в 2014 году, Росс Клэнтон описал свое devops-путешествие в компании Target как объединение людей, работающих в разных отделах организации. После достижения успеха в небольших командах активные участники движения devops начали рассылать сообщения более широкой аудитории компании Target различными способами:
• В феврале 2014 года была проведена первая внутренняя мини-конференция devops. На этой конференции выступали приглашенные докладчики Роб Каммингс (Rob Cummings) из компании Nordstrom и Майкл Даки (Michael Ducy) из компании Chef.
• Участники devops-движения регулярно проводят встречи, на которые приглашают независимых ораторов, в том числе Джеффа Сассну (Jeff Sussna), Флетчера Никола (Fletcher Nichol), Иэна Мэлпэсса (Ian Malpass), Шона О’Нэйла (Sean O’Neil) и Джеза Хамбла (Humble). Благодаря этим встречам удалось пополнить ряды сторонников devops-движения. Так, если на первой встрече было 160 посетителей, то на встрече, имевшей место в феврале 2015-го, количество посетителей выросло до 400.
• Чтобы предоставить людям больше информации о devops, была запущена еженедельная программа Automation Open Labs, используемая в качестве открытого сеанса вопросов и ответов.
• Также был запущен ежемесячный демонстрационный сеанс, благодаря которому члены сообщества получили возможность совместно выполнять работу, получать обратную связь, вдохновлять и быть вдохновленными.
Росс и Хизер адаптировали последовательный обмен сообщениями в организации, который реализуется через коучей, выполнив сведение методик гибкой и бережливой разработки программ, а также devops-методики. В результате в организации появились коучи, специализирующиеся в смежных областях. Также была сформирована практика обеспечения качества, которой способствуют высокоиммерсивные сеансы тренинга. Сотрудников компании поощряют делиться опытом с пользователями Интернета на сайте http://target.github.io. В результате увеличивается степень близости как внутри организации, так и за ее пределами.
Применение инструментов и технологий в компании
Команду под руководством Микман обязали создавать интерфейсы приложений (application program interfaces; API), которые позволили бы упростить растущую сложность систем и организационных бункеров в компании Target.
Со временем в организации, управляемой с помощью модели водопада, наблюдается тенденция к формированию иерархий и процессов, которые минимизируют риск. Роли становятся жестко заданными, а команды специализируются на оказании единственной услуги, которая тесно связана с другими услугами, предоставляемыми в организации. Это приводит к удлинению циклов выпуска, чтобы распространить сведения о потенциальных изменениях по всей организации. В результате возрастает риск неудачи при внедрении изменений.
Разработка API рассматривается в качестве способа устранения растущей технической задолженности организации. Поскольку компания Target специализируется в области розничной торговли, она разрабатывает API, позволяющие выполнять операции с товарами, отслеживать местоположение и часы работы магазинов, проводить промоакции и регулировать ценообразование. По мере развития API компания Target получила возможность быстро проверять текущее состояние дел, а также узнавать о том, как оптимизировать работу с клиентами и партнерами, например с Pinterest.
Для получения требуемых результатов руководству компании Target следовало найти подходящие инструменты. Как упоминалось в части IV, среди отдельных людей и организаций существуют различные мнения по поводу важности конкретных инструментов либо способа их применения. В компании Target господствует мнение о важности инструментов самих по себе. Благодаря правильно подобранному набору инструментов обеспечивается комплексное владение платформой и API. В случае же отсутствия таких инструментов платформа и API будут разрознены и заключены в бункерах.
ВАЖНОСТЬ ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ В DEVOPS
В декабре 2015-го появились сообщения о том, что у приложения списка желаний Target обнаружена утечка персональных данных. Известно, что ключевая функция API заключается в поддержке коммуникационных интерфейсов, обеспечивающих передачу данных между программами. Зачастую при разработке программного обеспечения компании уделяют внимание ожидаемому способу использования программного обеспечения, а не потенциальным возможностям его использования.
При создании программы, обеспечивающей возможность взаимодействия между другими программами, фактически создается возможность для общения человека с этими программами. Зачастую с помощью барьеров авторизации и аутентификации осуществляется отбор пользователей, которым разрешено «общаться» с программой и использовать ее. С помощью аутентификации гарантируется подлинность объекта. Авторизация определяет политики доступа, задающие список разрешенных действий для объекта.
Возвращаясь к случаю с уязвимостью, обнаруженной в приложении Target, заметим, что соответствующий интерфейс API не обладает богатым набором средств авторизации и аутентификации. Процесс встраивания аутентификации в сервис может быть затруднительным, особенно если вы разрешаете пользователям найти список желаний на основе известной информации, не требуя создавать профиль пользователя. Например, если человек, создающий список желаний, хочет поделиться идентифицирующей информацией с организацией, пользователь, просматривающий список желаний, может этого не захотеть. Поэтому отсутствие аутентификации при работе со списком желаний – это не так уж и плохо, как может показаться на первый взгляд.
Таким образом, проблема заключается в том, чтобы создать безопасный сервис, который не передает персональную идентифицирующую информацию (personal identification information; PII) неуполномоченным лицам. Также нужно обеспечить способ поиска подобной информации, соответствующей спискам пожеланий пользователей. Основной недостаток API заключается в наличии четко заданного набора политик доступа, связанных с сущностями. Если сущность не прошла процедуры аутентификации и авторизации, она не может получить доступ к PII даже при наличии идентификатора пользователя. В идеале идентификаторы пользователя следует выбирать так, чтобы затруднить их угадывание. В случае с уязвимостью в приложении компании Target все выглядит так, что при наличии какой-либо информации о человеке она может быть истолкована как разрешение на получение полного набора сведений, относящихся к этому человеку.
В процессе преобразования должны принимать участие все компоненты организации. Если в организации накопились культурные и технические задолженности, их влияние будет ощущаться до тех пор, пока в организации будут существовать бункеры.
Чтобы достичь поставленных целей, в компании Target использовался соответствующий набор инструментов. В число этих инструментов входят платформа облачных вычислений OpenStack, средство непрерывной интеграции и доставки Jenkins, средство автоматизации инфраструктуры либо управления конфигурацией Chef, средство контроля исходного кода GitHub. Благодаря использованию подобного набора инструментов обеспечивался более прозрачный процесс разработки кода. Ранее разработчики имели свои собственные автономные обзоры кода, теперь же они используют запросы на включение кода GitHub. Подобный подход очень нравится сотрудникам из эксплуатационного отдела, поскольку они получают возможность отслеживания изменений и могут легко стать участниками процесса разработки программ.
Для общения внутри организации весьма полезно приложение Hipchat, а приложение chatops стало неотъемлемой частью процесса разработки. Благодаря Hipchat обеспечивается общение не только внутри одной команды, но и между командами. Благодаря использованию chatops для потоковой передачи оповещений и событий в соответствующих каналах можно в режиме реального времени получить представление об экосистеме разработки программ. Это позволяет реагировать на инциденты гораздо быстрее, чем при использовании классических подходов.
В компании Target успех инициатив по внедрению новых инструментов частично оценивался пропорционально количеству соответствующих API. С октября 2014 года по февраль 2015 года этот показатель вырос от 30 до 45. Важность API обусловлена их использованием для интеграции и совместной работы команд и сервисов. До появления API они находились в бункерах и работали раздельно. Несмотря на возросшее число внутренних и внешних запросов API, сайт оставался стабильным, а ежемесячное количество инцидентов было весьма небольшим. Благодаря подбору корректной комбинации инструментов, обеспечивших улучшенное сотрудничество, были устранены некоторые болевые точки, что способствовало достижению успеха.
Не забудьте сформулировать критерии успешного использования инструмента в организации. Сконцентрируйтесь на результатах, которые вы хотите получить, выясните болевые точки, а затем подыщите инструменты для решения идентифицированных проблем.
Обмен знаниями внутри компании
После достижения успеха в ограниченных командах Микман и Клэнтон начали формировать послание для более широкой аудитории в Target. Один из механизмов, позволяющих внедрить изменения в организации, – проведение ежеквартальных внутренних конференций devopsdays. На этих конференциях выступали докладчики из других организаций, в частности Роб Каммингс из компании Nordstrom и Майкл Даки из компании Chef. Как уже упоминалось, это способствовало привлечению новых идей и возбуждению интереса к собственным devops-инициативам и прогрессу.
Вторая стратегия, адаптированная в Target, заключалась в обеспечении согласованности при обмене сообщениями в организации. Росс и Хизер имели представление о том, каким образом эксперты в области бережливой разработки программ, гибкой разработки ПО и devops могут помочь тренеру либо наставнику, обучающему отдельных сотрудников либо команды, в обучении и обмене информацией. Они обнаружили, что сведение этих тем в одну и воспитание тренеров, специализирующихся в смежных областях, облегчит формирование более последовательной внутренней народной модели. В результате все больше людей будут владеть информацией, относящейся к разным devops-концепциям.
Еще один способ распространения инициатив с уровня отдельных команд на уровень всей организации заключается в проведении иммерсивных коучинг-сеансов. Формирование открытых лабораторий, в работе которых могут принимать участие все сотрудники организации, позволяет расширить масштабы взаимного обучения и обмена информацией. Благодаря «автоматизированным хакатонам» еще большее число людей могут принять участие в этих изменениях. Это также хорошо сказывается на собственной работе этих людей.
Здесь перечислены лишь несколько способов, благодаря которым компания Target смогла не только подобрать наборы инструментов и решения по сотрудничеству, которые успешно использовались в работе, но и поделиться информацией в масштабах организации о работоспособных (и не очень) решениях. Сочетание поддержки в направлении сверху вниз и усилий, проявленных на нижних уровнях, обеспечивает внедрение изменений на уровне отдельных людей и команд.
Подход, заключающийся в разрешении отдельным сотрудникам и командам внедрять изменения на основе их собственного глубокого опыта, необходим для уверенности в корректности изменений, осуществляемых в любой организации. Чтобы придать этим изменениям устойчивый характер, необходима административная поддержка.
- Знакомство с масштабированием
- Рассмотрение корпоративных devops-практик
- Соображения по выполнению масштабирования
- Организационная структура
- Командная гибкость
- Жизненный цикл организации
- Сложность и изменения
- Масштабирование команд
- Практика: рост и масштабирование команд
- Масштабирование команд и стратегии роста
- Масштабирование организаций
- Практика: государственное агентство по оказанию цифровых услуг, GOV.UK
- Практика: Target
- Знакомство с Target
- Выводы