Философия DevOps — страница 78 из 95

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, сайт оставался стабильным, а ежемесячное количество инцидентов было весьма небольшим. Благодаря подбору корректной комбинации инструментов, обеспечивших улучшенное сотрудничество, были устранены некоторые болевые точки, что способствовало достижению успеха.