чтобы понять их влияние и устранить проблемы, возникающие при маршрутизации в сетях. Лучше использовать время сетевых инженеров, чем воссоздавать сложную услугу мониторинга, которая применяется в других местах. В этом случае понятно, что лучше использовать существующий инструмент.
Рассмотрение автоматизации
На протяжении многих лет в 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-пакта в действии Дэниелс описала процесс эксплуатации, реализуемый при работе с совсем другой командой. В этом случае формируется команда, отвечающая за интерфейсную инфраструктуру, которая обрабатывает полученные предупреждения. После того как в полночь было получено предупреждение о размере дискового пространства на сервере (любимое предупреждение каждого сисадмина), она поняла, что причина этого предупреждения заключается в том, что логи были сохранены в разделе диска, размер которого намного меньше размера стандартного раздела диска, применяемого для хранения логов.
Мониторинг и оповещения являются ключевыми элементами каждой программной среды, а также областями, для которых эффективное использование инструментов обеспечивает огромные преимущества. Обязательно примите во внимание следующие вопросы.
• Каким образом ваши инструменты дифференцируются между мониторингом и обработкой оповещений?
• Каким образом ваши инструменты и процессы удовлетворяют потребности в мониторинге разных команд?
• Насколько гибки и настраиваемы решения мониторинга и обработки оповещений?
После осознания причины появления предупреждения Дэниелс обсудила вместе с командой лучшие операционные практики, применяемые для создания логов, обговорила соответствующую документацию, описала возникающие проблемы и предложила пару решений. Команда, отвечающая за интерфейсную инфраструктуру, выбрала и внедрила наиболее подходящее решение. Подобное сочетание безупречности и обмена информацией является основным условием создания и поддержки культуры понимания.
На основе двух рассмотренных ранее примеров стало очевидно, что решения по выбору инструментов, используемых изо дня в день, не следует принимать впопыхах. Корпоративные информационные бюллетени, ведущие средства массовой информации и конференц-киоски публикуют перечни и статьи, описывающие «лучшие» инструменты, предназначенные для devops-команд. И вряд ли вы заметите разницу между компанией, пытающейся продать решение, которое может быть эффективным в вашей среде, и компанией, пытающейся вписаться в devops-тренд.
Инструменты важны для выполнения работы, но они не являются единственным и необходимым условием для осуществления этого процесса. Не существует «devops-услуги», которую можно купить и использовать в качестве исчерпывающего решения всех ваших производственных проблем. Важно понимать, что хотя инструменты и воздействуют на культуру, они не способны заменить ее. Поэтому будьте осторожны, если кто-то пытается вам продать «devops-решение, сделанное на заказ». Подобные предложения звучат заманчиво, но вряд ли реальны.
Другие мотивации находятся вне сферы действия наших собственных целей и амбиций. Они выступают в виде наших межличностных отношений. Например, организация собирается сделать выбор в пользу поставщика X, поскольку он предложил провести спортивное мероприятие и организовать хороший обед. Либо у лица, принимающего решения, имеется друг в стартапе, который нужно поддержать.
В конце концов, на выбор инструментов может оказать влияние их хорошая репутация, которая проявляется в той или иной форме. Например, с высказыванием «никто и никогда не был уволен за покупку техники IBM» трудно спорить. Благодаря осознанию мотивов принятия решений в вашей среде вам будет проще принять решение по выбору способов улучшения процессов в вашей организации.
«Я действительно считаю, что наши демо-дни являются довольно интересными и познавательными, – заявил Джордж. – Я заметил, что вы используете виртуальную машину на ноутбуке и управляете ею отдельно от кода. Пытались ли вы использовать инструмент Test Kitchen для создания проекта по управлению виртуальной машиной? Эксплуатационная команда использует этот инструмент при тестировании новых реализаций сервисов. Таким образом мы можем воссоздать то, что делает каждый сотрудник или команда».