DevOps: что это такое и почему это важно

Опубликовано: 2022-03-11

Хотя не существует безошибочных, «серебряных пуль» для повышения эффективности ИТ, DevOps дает результаты, которые трудно игнорировать. Как следует из названия, DevOps объединяет принципы разработки программного обеспечения и эксплуатации программного обеспечения с целью помочь организациям разрабатывать продукты с большей скоростью и эффективностью. TIAA-CREF, например, добилась значительных улучшений в своем бизнесе стоимостью 40 миллиардов долларов благодаря использованию принципов DevOps. Интервью TechBeacon с директором по цифровым технологиям TIAA Скоттом Блэндфордом объясняет, как TIAA перешла от неуклюжего устаревшего программного обеспечения и систем к «гибкому подходу DevOps», который привел к четырехкратному увеличению производительности разработки. Обновления выпускаются гораздо быстрее, и «ИТ восстановили доверие, подорванное с годами, когда они начали оправдывать ожидания пользователей».

Результаты Отчета о состоянии DevOps за 2017 год свидетельствуют о разительных различиях между высокопроизводительными организациями, использующими принципы DevOps, и организациями, которые этого не делают. Согласно отчету, высокопроизводительные организации имеют гораздо более высокую частоту развертывания программного обеспечения (в 46 раз чаще), гораздо более быстрое время для внесения изменений (в 440 раз быстрее) и значительно более низкий уровень отказов при изменении программного обеспечения (в пять раз ниже), чем их более низкая производительность. аналоги.

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

Это отсутствие ясности потенциально может иметь негативные последствия для организаций и команд, пытающихся внедрить принципы DevOps, вызывая стратегическую путаницу и препятствуя скорости и эффективности, которые должен продвигать DevOps. Как сказал инженер DevOps в IBM в статье, опубликованной InfoWorld: «Нам нужно было ответить на некоторые основные вопросы и определить проблемы, которые мы пытались решить… Если вы не знаете, как на самом деле выполняется работа, вы не знаете какие проблемы стоит решить».

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

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

DevOps как тип инженера, культуры и практики

Что такое DevOps? В предыдущей статье, опубликованной Toptal, Демир Сельманович пишет, что «DevOps — это культура, образ мышления и часть ИТ в целом». Далее он пишет, что DevOps — это практика, позволяющая организациям оптимизировать скорость и эффективность ИТ-функций.

Amazon Web Services, которая является крупнейшим игроком в облачной инфраструктуре и, соответственно, накопила значительный опыт в области DevOps, использует аналогичное определение, говоря, что «DevOps — это сочетание культурных философий, практик и инструментов, которые повышают способность организации предоставлять приложения и услуги. с высокой скоростью: разработка и совершенствование продуктов более быстрыми темпами, чем в организациях, использующих традиционные процессы разработки программного обеспечения и управления инфраструктурой».

«Люди DevOps — это в основном те, кто проявил интерес как к системному администрированию, так и к разработке программного обеспечения и решил объединить свои навыки, чтобы создать единый, лучший подход к обоим».

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

Чтобы начать с того, как выглядит инженер DevOps, Мартин Чикилян, разработчик программного обеспечения, ранее работавший в IBM и Hewlett Packard, с более чем десятилетним опытом применения принципов DevOps, выразился простыми и конкретными словами: «Люди DevOps — это в основном те, кто заинтересовался как в системном администрировании, так и в разработке программного обеспечения, и решили объединить свои навыки, чтобы создать единый, лучший подход к обоим направлениям».

Они могут обслуживать серверы, сети и другие типы инфраструктурных систем компании, а также активно обновлять и улучшать эти системы посредством разработки программного обеспечения. Как сказал Чикилян по-другому: «DevOps-специалист — это тот, кто может использовать основы разработки программного обеспечения, чтобы помочь себе и компаниям создавать более совершенные инструменты для работы с инфраструктурой».

«Сочетание культурных философий», как выразился Amazon, относится к сочетанию подходов, используемых разработчиками программного обеспечения и теми, кто обладает опытом работы с инфраструктурой или программным обеспечением. Разрушая традиционный барьер между этими практиками, культура DevOps стремится дать организациям возможность извлечь выгоду из сильных сторон, которые разработчики и эксперты по инфраструктуре привносят на стол. Успешное внедрение принципов DevOps «требует изменений в культуре и образе мышления» для компаний, которые объединяют таких разных инженеров. Как рассказала Эмили Даудл на саммите Nordic API Platform 2016 года, устранение барьеров также помогает смягчить естественные трения, которые иногда могут возникать между разработчиками и экспертами по инфраструктуре, и создать более благоприятную и совместную рабочую среду.

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

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

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

Ваш набор инструментов DevOps

В дополнение к вышеупомянутому культурному сдвигу — переходу от компании, в которой разрознены разработчики программного обеспечения и эксперты по инфраструктуре, к компании, которая поддерживает их сотрудничество, — компаниям необходимо понимать ряд конкретных практик и инструментов, имеющих решающее значение для DevOps. Ниже приведены три из наиболее важных (хотя, конечно, не единственных) таких практик:

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

Непрерывная интеграция. На фундаментальном уровне DevOps предполагает тесное сотрудничество между инженерами и, кроме того, целыми командами. Непрерывная интеграция относится к практике совместного использования и слияния кода инженерами в одном месте. Как объясняет Amazon, «в прошлом разработчики в команде могли работать изолированно в течение длительного периода времени и пытаться объединить свои изменения только… после того, как их работа была завершена». Благодаря непрерывной интеграции инженеры могут более эффективно сотрудничать и избегать узких мест, связанных с разработкой и интеграцией своего кода более поэтапно.

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

Найм правильных людей

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

«Важно, чтобы они были в состоянии преодолеть разрыв между необработанным кодом и задачами, с которыми бизнес сталкивается каждый день, такими как уменьшение трения между идеями, доставкой и потребителями».

Андреа Вилья, бывший инженер DevOps в Atlassian и системный архитектор в CloudReach с 15-летним опытом системного администрирования, информационной безопасности и сетей, считает, что для достижения успеха инженерам DevOps нужен широкий спектр опыта и знаний.

«Чтобы быть эффективным, современный DevOps Engineer должен иметь опыт разработки и обладать обширными знаниями в области системного администрирования и сетей», — сказал Вилла. «Важно, чтобы они были в состоянии преодолеть разрыв между необработанным кодом и задачами, с которыми бизнес сталкивается каждый день, такими как уменьшение трения между идеями, доставкой и потребителями».

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

Почему DevOps действительно имеет значение

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

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

Фредрик Хаард, инженер с более чем 12-летним опытом DevOps, работавший старшим облачным архитектором в McKinsey и Wondersign, более полно формулирует этот тезис.

«Хорошие инженеры DevOps должны быть лидерами — и брать на себя ответственность — во всех областях, которые могут быть не приоритетными для организации, таких как безопасность данных, аварийное восстановление, смягчение последствий и аудиты», — сказал Хаард. «Выбор, который вы делаете в DevOps, может иметь долгосрочные последствия для компании».

Microsoft также заметила эти положительные эффекты благодаря внедрению методов DevOps в своей инженерной группе Cloud + Enterprise. Microsoft поясняет, что для достижения наилучших результатов «нам нужно было, чтобы инженеры и операторы тесно сотрудничали на протяжении всего жизненного цикла разработки, от проектирования до внедрения в производство». Благодаря переходу на культуру DevOps и использованию методов DevOps Microsoft смогла масштабировать и предоставлять своим клиентам высококачественные услуги гораздо быстрее, чем раньше.

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

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

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

Глядя в будущее с DevOps

В 2015 году партнер Andreessen Horowitz Скотт Вайс сказал, что DevOps — это «больше, чем просто методология. Это обязательный набор навыков для современного программиста, и он все больше становится отдельным отделом».

Это подтвердилось, поскольку ряд технологических компаний, включая Amazon, Microsoft и Google, создали команды DevOps и выделили значительные ресурсы для накопления опыта в этой области. Вайс и другие крупные технологические игроки считают DevOps не просто мимолетным увлечением, а скорее ключевым компонентом программного обеспечения будущего.

DevOps по-прежнему будет иметь особое значение, поскольку отрасли все больше зависят от облачной инфраструктуры. В отчете Gartner Research за 2017 год прогнозируется, что рынок облачных услуг будет расти более чем на 15% в год до 2020 года. Чтобы выразить этот рост в долларах, в недавней статье, опубликованной Forbes, указывается, что рынок облачных вычислений вырастет примерно с 260 миллиардов долларов. в 2017 году до примерно 411 миллиардов долларов в 2020 году. DevOps может иметь огромное значение для того, насколько быстро ваша компания успешно переносит системы в облако. В Toptal мы использовали DevOps с самого начала — и это стало неотъемлемой частью нашего успеха в качестве быстрорастущей облачной компании.

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