Что такое методология DevOps и кому она нужна

    Разбираемся, в чём суть методологии и кому она может принести пользу.

    Также поговорим о DevOps-специалистах: их задачах, зарплатах и навыках.


    Фото Matt Moor / Flickr / CC BY-SA

    Что такое DevOps


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

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

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

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

    Кому нужна и не нужна методология


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

    Исключение составляют стартапы, но и здесь все зависит от масштабов проекта. Если ваша цель — запустить минимально жизнеспособный продукт (minimum viable product, MVP), чтобы протестировать новую идею, то можно обойтись и без DevOps. Например, основатель Groupon в начале работы над сервисом сам вручную размещал все предложения на сайте и собирал заказы. Никаких инструментов автоматизации он не использовал.

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

    Как внедрить DevOps


    Далее — несколько рекомендаций для перехода на новую методологию.

    Выявите проблемы в бизнес-процессах. Перед внедрением методологии выделите цели и проблемы организации. От них будет зависеть стратегия перехода на DevOps. Для этого составьте список вопросов, например:

    • На что уходит больше всего времени при обновлении ПО?
    • Можно ли автоматизировать этот процесс?
    • Влияет ли на это структура организации?

    Подробно о выявлении проблем в организации можно почитать в книгах «Проект „Феникс“» и «Руководство по DevOps» от авторов методологии.

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

    Начните с малого. Выберите процесс, который отнимает больше всего времени и сил при выпуске обновлений, и автоматизируйте его. Это может быть тестирование или процесс развертывания приложений. Эксперты советуют первым делом внедрить инструменты распределенного контроля версий. С ними проще управлять исходниками. Среди таких решений наиболее известны Git, Mercurial, Subversion (SVN) и CVS.

    Также стоит обратить внимание на системы непрерывной интеграции, ответственные за сборку и тестирование конечного продукта. Примеры таких инструментов: Jenkins, TeamCity и Bamboo.

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

    Критика DevOps


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

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

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


    Фото Ed Ivanushkin / Flickr / CC BY-SA

    Кто такой DevOps-инженер


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

    Фишка DevOps-инженера в том, что он совмещает множество профессий: админа, разработчика, тестировщика и менеджера.

    Джо Санчес, DevOps-евангелист из VMware, компании-разработчика программного обеспечения для виртуализации, выделил ряд навыков, которыми обязан обладать DevOps-инженер. Помимо очевидного знания методологии DevOps, этот человек должен иметь опыт администрирования ОС Windows и Linux и опыт работы с инструментами автоматизации вроде ChefPuppetAnsible. Еще он должен уметь писать скрипты и код на паре-тройке языков и разбираться в сетевых технологиях.

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

    Кто нанимает


    DevOps-инженеры могут принести пользу любой организации, чья деятельность связана с разработкой приложений или управлением большим количеством серверов. DevOps-инженеров нанимают ИТ-гиганты вроде Amazon, Adobe и Facebook. Еще они работают на Netflix, Walmart и Etsy.

    Не нанимают DevOps-инженеров только стартапы. Их задача — выпустить минимально жизнеспособный продукт, чтобы проверить новую идею. В большинстве случаев стартапы могут обойтись без DevOps.

    Сколько платят


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

    В США они получают 90 тыс. долларов в год (500 тыс. рублей в месяц). В Канаде им платят 122 тыс. долларов в год (670 тыс. рублей в месяц), а в UK — 67,5 тыс. фунтов стерлингов в год (490 тыс. рублей в месяц).

    Что касается России, то московские компании готовы платить DevOps-специалистам от 100 до 200 тыс. рублей в месяц. В Санкт-Петербурге работодатели чуть щедрее — предлагают 160–360 тыс. рублей в месяц. В регионах указывают зарплату 100–120 тыс. рублей в месяц.

    Как стать специалистом по DevOps


    DevOps — это относительно новое направление в IT, поэтому устоявшегося перечня требований к DevOps-инженерам нет. В вакансиях среди требований на эту должность можно встретить как навыки администрирования Debian и CentOS, так и умение работать с дисковыми RAID-массивами.

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

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

    Чтобы понять, где знаний пока не хватает, можно воспользоваться мини-википедией на GitHub или ментальной картой. Резиденты Hacker News также рекомендуют почитать книги «Проект „Феникс“» и «Руководство по DevOps» (которые мы упоминали выше) и «Философия DevOps. Искусство управления IT» под грифом O'Reilly Media.

    Еще можно подписаться на рассылку Devops Weekly, почитать статьи тематического портала DZone и начать общаться с DevOps-инженерами в Slack-чате. Еще стоит изучить бесплатные курсы на Udacity или edX.

    Посты из нашего блога:

    ITGLOBAL.COM
    IaaS, Managed IT, PCI DSS, Hybrid Cloud

    Комментарии 17

      +2
      Плюс программисты начинают участвовать в настройке серверов

      Я бы не считал это плюсом. Спорный момент.
        0

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

          0
          Я бы не считал это плюсом. Спорный момент.

          С точки зрения программиста — это все на уровне «ресурсов, выделяемые под исполнение моего кода», а вовсе не то, что программисты устанавливают ОС. И стандартизованное развертывание, иначе тебе придется админу всё требования разжёвывать, и, скорее всего, еще и забудешь чего и получим «у меня на машине все работает, про сервер ничего не знаю».

          Вполне себе удобный плюс, что программист знает как оно там в production, а то и прозрачный образом влияет на те ресурсы, что использует его программа в production.

            0
            Это вот «знает» и «поднастроит» — что потом все остальное сломается. Но виноват конечно же будет админ.
              0
              Но виноват конечно же будет админ.

              В концепции DevOps админ как раз не отвечает за всё и вся в production. Дело админа предоставить ресурсы.

              А если программист ресурсы некорректно задействовал — виноват уже программист.

              В старом классическом подходе — у админа больше ответственности. Он и за разворачивание ПО отвечает. Пусть и по инструкциям программиста.

              В DevOps деплой того кода, что есть результат работы программиста (на основе настроенной админом инфраструктуры) — всё больше чаще дело разработчика, а не админа.
                0
                Только вот в реальности всё совсем иначе.
                  0
                  Только вот в реальности всё совсем иначе.

                  В моей реальности код автоматом уезжает на «боевые» сервера после того, как ветка «production» в Git пройдет все тесты. И процентов 80% когда этого не происходило — как раз в тех случаях, когда программисты что то с конфигурационными файлами накосячили или тесты не все 100% выполнены были. Вины админа в косяках при ежедневном деплое у нас минимум. Остальные 20% косяков — это всё больше из-за того не хватает аппаратных ресурсов.

                  Было бы интересно почитать развернутое описание того, что именно происходит в вашей реальности.
                    0
                    Мы говорим не о том что код автоматом деплоится. А том когда программисты лезут руками на продакшн-сервера для фиксов\настройки. И что после таких вещей больше беды, чем пользы.
                      0
                      А том когда программисты лезут руками на продакшн-сервера для фиксов\настройки. И что после таких вещей больше беды, чем пользы.

                      Можно побольше конкретики что там у вас такое случилось?

                      Зачем им туда лезть?
                      Разве что админ не научился что есть DevOps/архитектура не полностью учла как положено по «12 факторам»
                        0
                        Логично когда что то не работает.
                        А эти «12 факторов» — повторюсь: «в реальности всё совсем иначе»
                          0
                          А эти «12 факторов» — повторюсь: «в реальности всё совсем иначе»

                          Безусловно. Только это исключение, а не правило.

                          Логично когда что то не работает.


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

          К сожалению, так не бывает.
            0
            DevOps — это методология разработки ПО...

            Серьёзно? DevOps — это не методология и тем более не только разработки ПО.
            Откуда ересь искажённая информация?
              0
              Простите, а что это?) по-моему, эта фраза — самая близкая к devops из всей статьи)
                0
                Серьёзно? DevOps — это не методология и тем более не только разработки ПО.
                Откуда ересь искажённая информация?

                DevOps это процесс разработки, плотно интегрированный с развертыванием. Так что, да, это «про разработку ПО».
                0
                DevOps-инженеры зарабатывают больше всех в отрасли. Средний заработок таких специалистов по миру составляет от 100 до 125 тыс. долларов в год.

                В США они получают 90 тыс. долларов в год (500 тыс. рублей в месяц). В Канаде им платят 122 тыс. долларов в год (670 тыс. рублей в месяц), а в UK — 67,5 тыс. фунтов стерлингов в год (490 тыс. рублей в месяц).

                У вас максимум для DevOps — 90 в год. Но при этом сами же пишете, что в среднем зп 100-125. Теперь вопрос на засыпку — это где такие зп (кроме США, UK и Канады), что они вытягивают среднее значение до 125?
                Или вы просто с потолка тут цифры написали? Похоже на то. Ибо ни 90 в США, ни 67 в UK не может считаться хоть сколько-нибудь «высокой» зп. Это средняя, или даже ниже средней.

                Кстати, 122 в Канаде — это USD или CAD? Если CAD, то это те же 90 USD. А если USD, то такие зарплаты могут быть в паре компаний в Торонто или Ванкувере, но мерить страну по паре компаний — это странно.
                Что касается России, то московские компании готовы платить DevOps-специалистам от 100 до 200 тыс. рублей в месяц
                — а это вообще шедевр. Просто пальцем в небо, а для надежности возьмем диапазон пошире, так ведь?
                  0
                  DevOps-инженеры зарабатывают больше всех в отрасли.

                  Если честно, то по ссылке не совсем видно где они там зарабатывают «больше всех в отрасли». Кроме того это не исследование, а опрос.
                  А если посмотреть на опрос со stackoverflow, то там в США много кто в отрасли получает больше 90к$ в год.

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое