Книга: Философия DevOps. Искусство управления IT

Знакомство с Etsy

Знакомство с Etsy

Стек технологий Etsy является приложением PHP, включающим большое количество внутренних сервисов. Эти сервисы являются довольно сильно взаимозависимыми и сложными. С другой стороны, переход к популярным ныне микросервисам может и не привести к росту независимости. Сервисы применяются для выполнения таких операций, как покупки, продажи, поиск и вывод перечня элементов, а также обработка платежей при выполнении покупок. Несмотря на наличие нескольких крупных хорошо известных провайдеров платежей, услугами которых пользуются многие известные компании в мире, Etsy нуждается в большем контроле над процессом обработки платежей, поэтому реализует этот процесс самостоятельно. Подобные процессы должны быть совместимы с PCI, также должны учитываться другие соображения, связанные с организацией обработки платежей. Инфраструктура преимущественно носит локальный характер и основана на различных центрах обработки данных.

Явная и неявная культура

При создании желаемой специфической культуры в среде основное внимание уделяется явному определению набора культурных убеждений и ценностей. Изначально компания Etsy была основана на сообществе пользователей. Открыто сформулированные ценности компании Etsy приведены в следующем перечне.

• Мы представляем думающий, прозрачный и гуманный бизнес.

• Мы планируем и строим исходя из долгосрочной перспективы.

• Мы ценим профессионализм во всем, что мы делаем.

• Мы считаем, что все нужно делать с улыбкой.

• Мы никогда не отрываемся от реальности[50].

Эти ценности вдохновляют и объединяют сотрудников согласно данным отчета Etsy Progress Report[51] за 2013 год. Хотя в Etsy отсутствует devops-команда, devops-менеджер и devops-инженеры, явно и четко объявленные ценности отражены в ключевых практиках и руководствах по наблюдению за поведением и созданию вклада в devops-сообщество. Заранее обдуманные практики Etsy включают проявление сострадания, экспериментирование, повторное выполнение действий и поощрение обучающих организаций.

Культура сострадания

Чтобы быть по-настоящему гуманным, следует проявлять сострадание. Это чувство проявляется в стремлении сделать чью-то жизнь лучше, даже если это не приведет к улучшению вашей собственной жизни. Компания Etsy вложила значительные средства в создание гуманной рабочей среды для сотрудников. Эта среда характеризуется безупречностью и дружелюбием по отношению к удаленным сотрудникам.

В Etsy также поощряется благодарственная культура, в рамках которой регулярно и публично отмечаются достижения сотрудников. ИТ-работа снискала репутацию неблагодарной, поскольку не заметна, когда все идет хорошо, и подвергается валу критики в случае каких-либо проблем. Поскольку соответствующая рабочая среда не является гуманной, то помимо безупречности в случае каких-либо проблем в Etsy поощряются благодарности ИТ-сотрудникам, хорошо выполняющим свою работу.

ВАЖНОСТЬ БЛАГОДАРНОСТИ

Культура благодарности является важным компонентом формирования и улучшения отношений. Признание и оценка вклада других людей способствуют формированию сплоченного коллектива.

Согласно данным исследований, благодарность обеспечивает ряд преимуществ, в том числе[52]:

Улучшение состояния здоровья

Усиление иммунной системы и снижение кровяного давления.

Повышение устойчивости

Больший уровень сопротивляемости по отношению к невзгодам.

Повышенный уровень положительных эмоций

Более высокие уровни счастья, радости и довольства.

Уменьшение уровня негативных эмоций

Уменьшение остроты ощущения одиночества и изоляции.

Усиление стремления к сотрудничеству и взаимодействию

Более высокие уровни щедрости и сострадания.

Инструменты и культура могут оказывать влияние друг на друга на протяжении жизненного цикла организации. Если вы уделяете внимание этим взаимодействиям, то сможете улучшить уровень культуры в организации и сделать использование инструментов более эффективным. Ответьте на следующие вопросы.

• Какое поведение вы собираетесь поощрять среди сотрудников?

• Каким образом люди работают с помощью существующих инструментов и рабочих потоков?

• Как могут использоваться инструменты для поощрения определенного поведения или ценности?

Публичное общение поощряется не только в инженерных отделах, но и во всей компании. Как можно чаще отправляйте членам команды поощрительные сообщения по электронной почте и мгновенные сообщения. Поощряйте членов команд за устранение ошибок, добавление новых функций, вклад в хранилище программ с открытым кодом, оказание помощи другим сотрудникам и даже за обновление документации. Как говорит Джон Коуи, Staff Operations Engineer:

Один очень хороший пример культуры благодарности в действии – наличие соответствующей кнопки в каталоге персонала. Эта кнопка позволяет номинировать любого сотрудника на «премию Etsy». После щелчка на этой кнопке соответствующее сообщение отправляется номинанту и его менеджеру. В этом сообщении содержится оценка работы номинанта или благодарность за оказанную помощь.

Эта культура помогает укреплять эмпатию и повышать степень близости. В результате повышается эффективность совместного труда, уменьшается вероятность взаимных обвинений и создается более гуманная среда для всех сотрудников.

Культура безупречности

Как уже упоминалось в главе 4, безупречная среда формируется там, где сотрудники делятся между собой историями и несут ответственность за повышение степени безопасности. Джон Оллспоу, занимающий пост технического директора Etsy, в мае 2012 года написал статью Blameless PostMortems and a Just Culture» (https://codeascraft.com/2012/05/22/blameless-postmortems/). В этой статье описывается трансформация обработки неточностей и ошибок с применением безупречного подхода.

Человеку свойственно совершать ошибки. Принятие этого факта как неотъемлемой части бизнеса будет первым шагом на пути к разрядке эмоциональных ситуаций. В рамках традиционного подхода ответственность за совершенные ошибки возлагается на конкретного человека, предусматривается применение карательных санкций, создание барьеров на пути к деятельности отдельных людей и дополнительное обучение персонала. В Etsy применяется более системный подход. Этот подход подразумевает балансирование между безопасностью и подотчетностью, поощрение обмена историями, поддержку безупречности и постмортемов.

В постмортеме, созданном с помощью применяемого в Etsy инструмента Morgue (https://github.com/etsy/morgue), отдельным сотрудникам предлагается дать подробный отчет, включающий следующие пункты:

• график действий и событий;

• наблюдаемые эффекты;

• ожидания;

• допущения;

• результаты и решения.

Применяемая в Etsy практика не допускает наказания отдельных сотрудников, которые делятся своими историями, а также способствует выяснению всех обстоятельств происшедших событий. Когда люди не боятся делиться информацией, они становятся более ответственными за свои действия, и формируется более безопасная среда, предотвращающая повторение одних и тех же ошибок.

Дружелюбие по отношению к удаленным пользователям

Компания Etsy имеет международную аудиторию. Это означает, что приложения этой компании должны быть доступны круглосуточно. В целях создания более гуманной среды для людей, поддерживающих приложения, предусмотрено разбиение на несколько часовых поясов. В результате большее количество людей получает возможность работать исключительно в рабочее время. Дополнительное преимущество заключается в создании расширенного кадрового резерва, который может находиться практически в любой стране мира.

Чтобы внедрить подобный вид культуры, используются несколько инструментов, в том числе IRC (обмен мгновенными сообщениями или организация чата), электронная почта (обмен более длинными текстовыми сообщениями) и Vidyo (организация видеоконференций и сотрудничества). В Etsy практикуется идея общения в «удаленной по умолчанию» форме, когда даже те люди, которые работают в локальном офисе, будут использовать инструменты, предназначенные для удаленного общения.

Поскольку инструменты интегрированы в среду и рабочие процессы, использование средств, дружественных к удаленным пользователям, связано с небольшими накладными расходами. Благодаря использованию подобных инструментов удаленные сотрудники смогут быть в курсе принимаемых решений и участвовать во всех беседах.

Благодаря использованию подобных инструментов можно работать из любого удобного места. Исключение из этого правила составляют лишь техники из центров обработки данных, которые должны находиться недалеко от них. Сотрудники, находящиеся в комфортных условиях, будут более счастливы. Они также могут работать в режиме, который является наиболее эффективным для них, а также позволяет улучшить состояние здоровья и производительность.

Помимо удобств, предоставляемых для удаленной работы, в организациях могут использоваться инструменты для улучшения жизненных условий сотрудников и усовершенствования рабочего потока. При этом нужно учитывать следующие факторы.

• Каким образом инструменты улучшают или уменьшают степень комфорта пользователя?

• Насколько гибкими являются ваши инструменты? В какой степени они могут быть настроены?

• Каким образом воздействуют инструменты на ежедневный стиль общения между людьми?

Роль инструментов в укреплении практик

Инструменты играют огромную роль в укреплении и поощрении практик в Etsy. Культура, дружественная к удаленным пользователям Etsy, подразумевает формирование devops-пакта и устранение любых недоразумений, которые возникают при совместной работе людей. Дополнительная работа, направленная на совершенствование общения, позволяет сформировать гуманную среду. В подобной среде поддерживается круглосуточная ротация по вызову между часовыми поясами. Чтобы выработать одинаковое отношение к обучающим организациям и людям, были адаптированы стратегические процессы, связанные с общением.

При осуществлении поддержки удаленных сотрудников недоступны сеансы специального кодирования и неформальные беседы с глазу на глаз. В этом случае большая часть общения осуществляется в письменном формате. Люди обмениваются сообщениями электронной почты в случае принятия решений, внесения изменений, появления простоев, возникновения проблем либо при необходимости поделиться какими-либо инициативами. Чтобы уменьшить количество сообщений электронной почты, используются фильтры. Всю переписку целесообразно хранить в архиве с возможностью поиска. Ретранслируемый интернет-чат (Internet Relay Chat; IRC) критически важен для формирования культуры, дружественной к удаленным пользователям, которая взлелеяна в Etsy. Чат-боты обновляют каналы с помощью информации о развертываниях, предупреждениях и изменениях конфигурации. Чат-боты также поддерживают системное взаимодействие, например, для обмена тихими предостережениями Nagios, относящимися к предстоящему плановому техническому обслуживанию либо к обзору кода. Чат-боты могут применяться для продвижения культуры благодарности путем обмена «плюсиками» и одобрениями.

Большинство дискуссий происходят в общественных каналах. Эти каналы являются «прозрачными» и открытыми, обеспечивая людям возможность просмотра каналов, принадлежащих другим командам. Поскольку интересы людей не ограничиваются работой, доступны не только рабочие, но и другие каналы. Чаты, идущие в режиме реального времени, воспринимаются как навязчивые, поэтому неудивительно, что люди отключают оповещения, чтобы поработать.

Каждый сотрудник Etsy использует клиент Vidyo, а удаленные сотрудники применяют веб-камеру и гарнитуру. Для максимально комфортного проведения видеоконференций используется телевизор с большим экраном и оборудование Vidyo. Подобная «операционная пещера» исполняет роль канала, используемого большинством удаленных эксплуатационных команд. Благодаря перманентной настройке вызова Vidyo в рабочей области эксплуатационной команды удаленные сотрудники могут в любой момент подключаться к этому каналу, чтобы услышать происходящее в офисе или показать своих кошек. Благодаря возможности слышать окружающий шум и болтовню эти пользователи могут в любой момент времени принять участие в беседе, что позволит им ощутить сопричастность к команде и к культуре организации в целом.

Документация воспринимается в качестве способа выполнения каких-либо операций в Etsy. Как правило, wiki-страницы, созданные с помощью программы Atlassian Confluence, являются точными и актуальными. Настоятельно рекомендуется обновлять страницы с документацией (особенно с информацией о текущих задачах). В то время как некоторые компании ленятся создавать документацию, мотивируя свое поведение фактом ее быстрого устаревания, компания Etsy является сторонником принципа «обновление wiki-страниц – лучшее вложение трудозатрат».

Покупка или самостоятельная разработка

Компания Etsy уклоняется от практики использования новейших технологий только на основании того, что они являются новыми и интересными. Большинство инструментов, применяемых в компании, хорошо известны и имеют большой стаж использования. Дополнительная информация, обосновывающая эту философию, приводится в посте блога бывшего инженера компании Etsy Дэна Маккинли Choose Boring Technology («Выбор скучной технологии»). Эта статья доступна на сайте http://mcfunley.com/choose-boring-technology. Идея, заложенная в основу этой статьи, заключается в том, что сосредоточение на реализации новых и непроверенных технологий крадет время и энергию, которые могут потребоваться на инновации продукта, что является конечной целью компании.

В Etsy высоко ценится так называемое благородство духа, которое заключается в работе на благо сообщества. Эта отдача может принимать форму сообщений в блогах, выступлений на конференциях, наставничества других сотрудников либо создания вклада в проекты с открытым исходным кодом (свои собственные или посторонние).

Общий подход к выбору инструментов предусматривает получение ответов на следующие вопросы.

• Можем ли мы сделать это с помощью инструмента, который мы знаем и которым владеем? Существуют ли веские причины отказаться от такого решения?

• Существует ли инструмент, который отвечает нашим потребностям?

• Существует ли инструмент, который в целом отвечает нашим потребностям и может быть расширен или настроен? Создан ли этот инструмент на основе проекта с открытым исходным кодом?

• Имеются ли возможность, время и желание создать инструмент самостоятельно?

• Нужно ли решать возникшую проблему и достаточно ли только внутренних возможностей?

Компания Etsy вносит вклад в разработку множества инструментов, в том числе Nagios, Chef, Elasticsearch и Kibana. Если же инструменты перестают давать нужную отдачу, они подлежат замене. В Etsy контролируется сетевое оборудование и отслеживается поведение новых устройств. Одно время в Etsy использовался Cacti (www.cacti.net), но из-за сложности и необходимости ручной настройки этого инструмента был разработан и выпущен FITB (https://github.com/lozzd/FITB).

Пограничный протокол шлюза (Border Gateway Protocol; BGP) выполняет мониторинг, отслеживание сайта и синтетическое тестирование. Именно в этих областях Etsy выбирала внешние услуги или программы, исходя из природы проблемного пространства. Рассматривая BGP-мониторинг в качестве примера, можно сказать, что этот пример имел смысл только для Etsy, поскольку BGP-мониторинг включает мониторинг всех внешних потоков трафика. Эти потоки анализируются, чтобы понять их влияние и устранить проблемы, возникающие при маршрутизации в сетях. Лучше использовать время сетевых инженеров, чем воссоздавать сложную услугу мониторинга, которая применяется в других местах. В этом случае понятно, что лучше использовать существующий инструмент.

Рассмотрение автоматизации

На протяжении многих лет в Etsy была проделана большая работа по автоматизации различных рабочих потоков и процессов в областях, в которых засилье ручных процессов вызывало проблемы. Один из ключевых примеров был рассмотрен во введении – выполняемый вручную и чреватый ошибками процесс развертывания, который занимал много часов и был невероятно труден в откате. Этот процесс был заменен на более рациональный автоматический инструмент развертывания, Deployinator. Процесс замены был не одномоментным, а скорее итеративным, представлявшим большую часть автоматизации в Etsy.

В качестве другого примера рассмотрим процесс создания новых серверов. Поскольку Etsy использует собственные центры обработки данных, не обращаясь к облачным сервисам, процесс создания сервера является ручным, занимая часы или даже дни, начиная с момента установки сервера в стойку и завершая моментом запуска в эксплуатацию. Первый этап автоматизации заключался в создании коллекции скриптов, написанных на Ruby, которые предназначены для устранения некоторых наибольших «болевых точек», таких как настройка коммутаторов и виртуальных локальных сетей. На протяжении нескольких следующих лет были добавлены новые средства, устранены ошибки и автоматизированы дополнительные «болевые точки». В результате инструмент получил веб-интерфейс, с помощью которого любой инженер (помимо члена эксплуатационной команды) может выбрать профиль оборудования, роль Chef и получить новый сервер в свое распоряжение в течение нескольких минут.

Инженеры из компании Etsy не пытаются слепо автоматизировать все на свете ради самой автоматизации. Они осведомлены об остаточном принципе[53], согласно которому остаются неавтоматизированные задачи, выполняемые людьми-операторами. Эти задачи либо слишком сложны для автоматизации и редко автоматизируются, либо слишком просты и нерентабельны для автоматизации. В результате может появиться так называемая дисквалификация, когда из-за автоматизации задач люди забывают, как их выполнять. Это приводит к постепенной утрате навыков в соответствующих областях.

Автоматизация может обеспечивать большие преимущества во многих ситуациях, позволяя сэкономить время на выполнение ручных повторяющихся задач и исключить появление ошибок. Конечно, автоматизация не является панацеей. Если вы собираетесь внедрять автоматизацию, задайте себе следующие вопросы.

• Каковы ваши самые большие «болевые точки»?

• Что можно, а что нельзя автоматизировать?

• Должны ли полностью автоматизироваться некоторые аспекты рабочего процесса?

• Как вы поступите в случае появления сбоя при выполнении автоматизации?

Оценка успеха

Чтобы сознательно экспериментировать и поощрять обучение, в Etsy придают большое значение «прозрачности» и мониторингу. Эти принципы демонстрируются множеством инструментов и процессов. Начиная от мониторинга производительности на уровне системы и завершая показателями на бизнес-уровне, Etsy стремится собрать как можно больше данных. Эти данные являются «прозрачными» для сотрудников, поэтому даже те, кто не обладает глубоким пониманием операций, могут прийти к выводам о необходимости выполнения итеративных улучшений. Этот процесс требует определенного времени.

Майкл Римбетси присоединился к Etsy в 2008 году. Он и его команда начали просматривать посты на форумах пользователей Etsy. В результате этого просмотра обнаружились проблемы, которые оставались скрытыми из-за отсутствия реального мониторинга в организации. В результате анализа причин частых простоев и в процессе обратной связи с пользователями Римбетси и другие руководители обнаружили более устойчивые способы запуска и выполнения платформы. Вместо того чтобы пытаться запланировать внедрение полностью исчерпывающего решения, они начали с минимально жизнеспособного решения, с основных положений решения мониторинга, которые оказывают наиболее влияние на качество обслуживания клиентов.

Поскольку не существовало четких критериев выбора нужных инструментов, приходилось экспериментировать. При этом ставилась цель понять, что происходит с сайтом, приложениями и компонентами блокировки. Были выбраны Nagios, Cacti и Ganglia, поскольку руководители были знакомы с этими платформами. К тому же была достаточно высока результирующая скорость внедрения и низкие накладные расходы (эти платформы распространяются на бесплатной основе).

Со временем, благодаря частой итерации и эволюции, все подразделения Etsy были охвачены практикой «измерять все, что только можно». Помимо опережающего планирования объектов измерения любой пользователь мог легко получить нужные ему сведения в виде графика. Был разработан и выпущен StatsD, сетевой демон, выполняющийся на платформе Node.js. Этот демон может прослушивать статистику, отсылаемую через порты UDP и TCP, и агрегировать полученные данные с помощью подключаемых серверных служб, таких как Graphite. Поскольку каждые 10 секунд данные сбрасываются, обеспечивается создание коллекции данных практически в режиме реального времени.

Общая цель заключалась в создании и доставке программного обеспечения. Разные команды осуществляют мониторинг в соответствии со своими нуждами. Как правило, не назначаются отдельные люди, выполняющие мониторинг. Поощряется участие в процессах мониторинга каждого сотрудника, который может вносить свой посильный вклад в это дело. Что же касается мониторинга, рекомендуется следовать таким советам.

• Если у вас возникают вопросы, задайте их кому-либо.

• В случае, когда ваши проблемы относятся к категории производственных, эксплуатационная команда пообщается с вами на предмет устранения этих проблем.

В качестве примера devops-пакта в действии Дэниелс описала процесс эксплуатации, реализуемый при работе с совсем другой командой. В этом случае формируется команда, отвечающая за интерфейсную инфраструктуру, которая обрабатывает полученные предупреждения. После того как в полночь было получено предупреждение о размере дискового пространства на сервере (любимое предупреждение каждого сисадмина), она поняла, что причина этого предупреждения заключается в том, что логи были сохранены в разделе диска, размер которого намного меньше размера стандартного раздела диска, применяемого для хранения логов.

Мониторинг и оповещения являются ключевыми элементами каждой программной среды, а также областями, для которых эффективное использование инструментов обеспечивает огромные преимущества. Обязательно примите во внимание следующие вопросы.

• Каким образом ваши инструменты дифференцируются между мониторингом и обработкой оповещений?

• Каким образом ваши инструменты и процессы удовлетворяют потребности в мониторинге разных команд?

• Насколько гибки и настраиваемы решения мониторинга и обработки оповещений?

После осознания причины появления предупреждения Дэниелс обсудила вместе с командой лучшие операционные практики, применяемые для создания логов, обговорила соответствующую документацию, описала возникающие проблемы и предложила пару решений. Команда, отвечающая за интерфейсную инфраструктуру, выбрала и внедрила наиболее подходящее решение. Подобное сочетание безупречности и обмена информацией является основным условием создания и поддержки культуры понимания.

Оглавление книги


Генерация: 1.254. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз