1 C
Санкт-Петербург
Среда, 20 марта, 2024

Что такое DevOps и кто такой DevOps инженер

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

Что такое DevOps

DevOps образован от двух слов, где Dev — это Development, или разработка, а Ops — это Operations, или эксплуатация. Методология является отражением слияния этих двух направлений в один перманентный процесс. Со стороны Dev работают разработчики и тестировщики, а со стороны Ops —сисадмины.

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

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

 

Зачем нужен DevOps

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

  1. Разработчики начинают концентрироваться на программном коде, а не инфраструктуре, которая будет на стадии производства.
  2. Тестировщики получают большие возможности в проверках приложений на разных версиях ОС.
  3. Сисадмины делают свое дело, а не развертывают и мониторят приложения.
  4. Бизнес начинает быстрее подстраивать продукты под требования рынка, релизить их новые версии и заниматься улучшением UX.

Как внедрить DevOps в организации

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

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

Ему же нужно показать, какие боли снимет интеграция DevOps:

  1. Скорость внесения изменений в продукт. Когда компания может быстро тестировать продуктовые гипотезы и оперативно отвечать на тенденции рынка, это становится ее преимуществом перед конкурентами. Маркетинг, господа!
  2. Время ответа сайта или мобильного приложения / число отказов системы, которые заметили пользователи. Компании надо постоянно работать с отказоустойчивостью, скоростью восстановления после отказов и предотвращением рисков нарушения безопасности, связанные с действиями злоумышленников.
  3. Исключение рутины из процедур разработки и поставки продуктов. Команда не утопает в однотипных и скучных делах, а думает о том, как улучшить продукт, креативит.

Достоинства DevOps

  1. Оперативный выпуск новых приложений и функций. Благодаря параллельной разработке и конвейеру можно избежать ситуаций, когда программисты причесывают код долгое время, а тестировщики и сисадмины просто бездействуют, зато в период релиза они не поднимают головы от мониторов. Так как постоянно автоматизируется работа, можно быстрее релизить новые продукты.
  2. Ускоренный выпуск обновлений и исправлений. Если раньше можно было выпускать апдейты всего лишь раз в месяц или реже, сейчас так категорически делать нельзя. Пользователи чуть ли не требуют в комментариях, чтобы все ошибки были устранены уже сегодня, а простой обходится компании в астрономические суммы. В DevOps работают мониторинговые системы и автоматом отмечают проблемы. Код отправляется на доработку, быстро тестируется и после этого становится доступен аудитории. Благодаря этому в день может выходить сразу несколько обновлений.
  3. Более низкая стоимость разработки. Все знают, что работа хорошего сисадмина, разработчика или тестировщика в расчете на час стоит весьма приличных денег. Если происходит простой этих специалистов, организация просто отправляет деньги в трубу. Если они постоянно занимаются рутиной, это тоже потери средств. В DevOps-подходе рутина встает на автоматизированные рельсы, поэтому нет простоев и компания платит деньги только за непосредственно работу вовлеченных специалистов. Разработка только определенных функций обходится ей дешевле.

Недостатки DevOps

Несмотря на то, что метод становится общим стандартом, он не обходится без недостатков.


  1. Стоимость для малого бизнеса. Сюда входит покупка лицензии, покупка и развертка серверов и поддержка инфраструктуры. А если сюда включить найм DevOps-специалиста, которому нужно платить в месяц до 250 000 рублей, это становится неподъемным.
  2. Коммуникативные проблемы, потому что члены команды по-разному понимают принципы методологии. Программисты не хотят брать на себя обязанности системных администраторов, продакт-менеджеры настраивают конвейер вручную. Компании нанимают специалиста в надежде на то, что он будет администрировать сети, тестировать ПО, разрабатывать его. Нанятого сисадмина заставляют внедрять методологию, о которой он слыхом не слыхивал.

Чем занимается DevOps-инженер

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

DevOps-инженер внедряет технологию в работу так:

  1. На этапе планирования он определяет архитектуру приложения, порядок его масштабирования и подбирает систему оркестровки контейнеров.
  2. Проводит настройку серверов, проводит проверку и загрузку кода и тестирование среды.
  3. Собирает после выпуска продукта обратную связь от пользователей и интегрирует улучшения. Специалист по DevOps делает так, чтобы они проходили незаметно для пользователей, и обеспечивает перманентность процесса обновлений.
  4. Занимается решением многочисленных и разноплановых задач для налаживания системы взаимодействия тестировщиков, разработчиков, сисадминов, проектных менеджеров и т. п.

Обязанности DevOps-специалиста

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

  • Формирование среды разработки продукта.
  • Организация инструментов по аналитике качества разработки, куда входят автоматизация и тестирование.
  • Подготовка тестировочной среды.
  • Подготовка и подключение инструментов доставки из среды разработки в среду тестирования, а оттуда — в продуктивную.
  • Настройка коммуникации и окружения между всеми инструментами разработки и контроля для обеспечения непрерывной работы конвейера.
  • Мониторинг работоспособности всех сред и инструментов разработки (включая инструменты контроля качества разработки или передачи данных).

Что нужно знать DevOps-специалисту для успешной работы

Этот тот случай, когда знать можно и нужно абсолютно все: особенности работы с Windows- и Unix-ОС, языки программирования, принципы работы СУБД, системы конфигурирования и сборки и т. д.

Рассмотрим названное подробнее.

  1. Языки программирования. Специалисту потребно знать сразу несколько из них, чтобы он мог на одном языке и предметно общаться с программистами. Последним это нужно и для понимания общего хода работы, и для банального уважения того, кто с ними работает в одной команде.
  2. Рекомендуется изучить ЯП Groovy, Python, Go, Ruby. Хорошая новость в том, что досконально их знать не надо, но вот базу синтаксиса, написание простых скриптов и принципов ООП освоить потребуется.

  3. Операционные системы. DevOps-инженер обязан знать, на какой сервер будет инсталлирован продукт, какова среда его запуска и какое программное окружение у него будет. Естественно, можно работать в каком-то одном векторе: Windows или Linux.
  4. Системы контроля версий. Если специалист не владеет общепризнанным Git, делать ему в профессии нечего и никакой он не специалист. Без комментариев.
  5. Облачные провайдеры. Если не пользоваться ими, потребуется вручную запускать сервера (это не всегда проходит гладко), развертывать на них операционные системы и ставить свой продукт, и затем решать многочисленные возникающие при этом трудности. Облачные провайдеры (те же Google, Cloud, Yandex Cloud) устраняют эту рутину с помощью нескольких строк кода, позволяющих их быстро сконфигурировать. Это экономия сил, средств и времени.
  6. Системы оркестрации. Сегодня благодаря внедрению систем оркестровки контейнеров типа Kubernetes и Docker приложения существуют каждый в своей песочнице и запускаются на отдельных виртуальных машинах. Если случаются неполадки, старый контейнер замещается новым.
  7. Системы конфигураций. При работе с большим количеством серверов нужно совершать ряд однообразных и рутинных операций, что является сложным и длительным процессом, который однозначно ведет к росту ошибок. С помощью систем конфигурации типа Chef, Ansible, Puppet можно создавать скрипты, понимаемые программистами и сисадминами. Благодаря этим системам проводить однообразные операции автоматизированным способом и снижать количество ручной рутины.

Сколько зарабатывает специалист по Development Operations

Если смотреть в среднем по РФ, зарплата DevOps-инженера с опытом составляет примерно 250 000 рублей. В Москве он может рассчитывать на оплату труда в размере 150 000 – 270 000 и выше в зависимости от компетенций самого специалиста, возможностей компании и масштабов ее работы.

Чтобы проиллюстрировать сказанное выше, посмотрим данные на HH.RU. В качестве региона я выбрал Россию, потому что это будет соответствовать Москве, а в типичном провинциальном городе (например, моей Пензе) такая должность в принципе не котируется:

Что такое DevOps и кто такой DevOps инженер

Данные по зарплатам на декабрь 2022-го года

Как стать DevOps-инженером. Где учиться профессии

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

  • Год-два отработайте сисадмином или тестировщиком ПО. Этого должно хватить, чтобы получить минимум представления о запуске приложений, среде их развития и мероприятиях по выявлению и устранению ошибок. Если же нет возможности, лучше пройти на курсы по Unix-системам и всю теорию обязательно (!) у себя дома на ПК.
  • Детально изучите принципы функционирования сетевых технологий и несколько раз сами установите, настроите и поадминистрируете ЛВС и глобальные вычислительные сети.
  • Изучите дисциплину программирования, т.е. потренируетесь со скриптами в Python, усвоете принципы объектно-ориентированного программирования и продакт-менеджмент.
  • Освежите свой английский, потому что без этого будут проблемы в понимании программных интерфейсов и техдокументации.

Инструментарий DevOps-специалиста

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

  1. Системы мониторинга. Предназначены для автоматической проверки приложений и серверов, сборки логов ошибок и рассылки сообщений. Примеры: Sensu, Prometheus, Nagios.
  2. CI/CD-системы. CI/CD — это комбинация непрерывной интеграции и непрерывного развертывания контента (continuous integration / continuous delivery, или continuous deployment). Выражают квинтэссенцию DevOps, где процессы запараллелены.Они предназначены для настройки скриптов и мгновенного получения обратного связи на код, который дальше пошел по конвейеру. Примеры: GitLab, Docker, Travis-CI, Circle-CI, Jenkins, TeamCity, PHP Censor, Rex, Open Build Service (OBS), Buildbot.
  3. Системы контроля версий. Это среды, где размещаются в процессе написания и разработки коды. В них можно изучить любое внесенное изменение и оперативно откатить приложение к предыдущей версии. А также объединять разные версии кода, потому что часто с одной и той же функцией может работать одновременно несколько человек. Примеры: Git, Mercurial, Bazaar, Monotone, Darcs.

Что почитать и посмотреть по теме

Каналы на YouTube

  1. Мир IT с Антоном Павленко
  2. Ведущий канала, Антон Павленко — IT-специалист с более чем десятилетним стажем работы. Он профессионально вырос с эникея в небольшой государственной компании до DevOps/SRE в крупной международной компании. 

    На канале очень много видео, посвященных непосредственно DevOps.

  3.  DeusOps
  4. Канал является профильным по теме и рассказывает о новостях из мира IT, авторских курсах и воркшопах, подкастах с экспертами и публикует интервью с классными гостями

    Его ведущий — преподаватель университета ИТМО, создатель и лектор дисциплин «Технологии сборки и развертывания ПО» и «Инфраструктура как код» для бакалавриата. На канале он выкладывает свои курсы, проводит обучающие вебинары и воркшопы, приглашает на стримы интересных гостей и рассказывает, как учиться с пользой.

  5. TechWorld with Nana

Ведущая канала помогает людям легко изучать темы DevOps. Здесь вы найдете десятки учебных пособий по:

  • Docker.
  • Kubernetes.
  • Jenkins.
  • Python.
  • Ansible.
  • Prometheus Monitoring.
  • Terraform.
  • YAML.

Книги

  1. Гэри Грувер. Запуск и масштабирование DevOps на предприятии
  2. Что такое DevOps и кто такой DevOps инженер

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

  3. Олег Скрынник. DevOps для ИТ-менеджеров. Концентрированное структурированное изложение передовых идей
  4. Что такое DevOps и кто такой DevOps инженер

    В издании четко и последовательно излагаются ключевые понятия, принципы и практики DevOps, дано его определение и место относительно других методологий управления ИТ, включая Agile.

    Книга посвящена не автоматизации, она акцентирована на разъяснение сути DevOps, построение команды и управление ИТ, без привязки к конкретным технологиям и инструментам. 

  5. Джульен Вехен. Безопасный DevOps. Эффективная эксплуатация систем
  6. Что такое DevOps и кто такой DevOps инженер

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

  7. Джен Ким, Патрик Дебуа, Джон Уиллис, Джез Хамбл. Руководство по DevOps. Как добиться гибкости, надежности и безопасности мирового уровня в технологических компаниях
  8. Что такое DevOps и кто такой DevOps инженер

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

  9. Джон Арундел, Джастин Домингус Kubernetes для DevOps: Развертывание, запуск и масштабирование в облаке
  10. Что такое DevOps и кто такой DevOps инженер

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

Коротко о главном

  • DevOps — эффективная методология автоматизации процессов разработки программных продуктов.
  • Они нужна для ускорения разрабоотки ПО и повышения бизнес-показателей организации.
  • Для ее внедрения требуется понимание на уровне инициатора запуска, сотрудников компании и ее руководства.
  • Методология вместе с достоинствами — например, с ускорением разработки — имеет и недостатки — например, стоимость развертывания и обслуживания.
  • DevOps-инженер — тот специалист, который руководит всей процедурой.
  • Для успешного функционирования методологии нужно знать ее инструменты, куда входят системы мониторинга, контроля версий, а также CI/CD.
  • В интернете есть ряд YouTube-каналов и книг, которые позволят полностью изучить теорию DevOps.

Источник


НОВОЕ НА САЙТЕ