Перейти к содержимому

Devops что должен знать

  • автор:

Что нужно знать, чтобы стать DevOps-инженером: ключевые навыки

DevOps-инженер — одна из самых востребованных IT-профессий. Согласно исследованию Яндекса с HeadHunter, спрос работодателей на таких специалистов вырос на 70% за последние несколько лет.

С чем связана популярность DevOps, какие обязанности выполняет DevOps-инженер, почему необходимо владеть инструментами из смежных IT-специализаций и прокачивать софт-скиллы. Рассказывают преподаватели курса «DevOps-инженер» в «Нетологии» Senior Infrastructure Engineer в Snapcart Роман Гершкович, Principal DevOps Engineer в Snapcart Андрей Борю и DevOps Engineer в Центре развития перспективных технологий Евгений Родионов.

DevOps-инженер: откуда он взялся и чем так хорош

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

Существует несколько причин, почему компании внедряют DevOps:

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

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

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

Всё это объясняет, почему DevOps-инженеры становятся востребованными во всём мире, в том числе и в России. Так, количество открытых вакансий на HH.ru превышает количество резюме соискателей. А нижняя планка оплаты junior-специалиста в российских компаниях начинается от 90 000 рублей в месяц.

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

Хард-скиллы: обязанности и инструменты DevOps-инженера

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

Чтобы понять, какие навыки нужны DevOps-инженеру, разберёмся, чем он занимается и с какими инструментами работает.

Если смотреть в общем, то DevOps-инженер:

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

В частности такой специалист занимается:

  • Непрерывной интеграцией (CI), когда изменения кода регулярно объединяются в центральном репозитории, после чего происходит автоматическая сборка, тестирование и запуск кода. Так решается задача по быстрому поиску и исправлению ошибок и улучшению качества продукта.
  • Непрерывной доставкой (CD), когда при любых изменениях код проходит сборку и тестирование, попадает в тестовую (или подготовительную) среду перед окончательным выпуском.
  • Виртуализацией или управлением инфраструктурой с использованием подхода Infrastructure as code (IaC). Вся разработка в компании может вестись на разных языках при помощи разных технологий и использовать виртуализационные слои. Автоматизацией, когда в компании все шаги необходимо автоматизировать: и тестирование, и доставку кода, и создание контейнеров, и откатку кода в случае ошибок, и получение фидбека от конечных пользователей.
  • Мониторингом, чтобы следить за всем, что происходит во всех частях системы. И если произошел сбой, компания узнает об этом первой, а не тогда, когда об этом сообщит заказчик. Для этого создаётся система оповещения, которая уведомляет дежурных инженеров.

Исходя из направлений деятельности на практике используют следующие инструменты:

  • Непрерывная разработка и интеграция: Jenkins, TeamCity, GitLab, Bamboo, Github Actions, AWS CodePipeline.
  • Архитектура как код: Terraform, Puppet, Ansible.
  • Облачная архитектура: AWS, Google Cloud Platform, Microsoft Azure, Huawei Cloud, Яндекс Облако, Mail.ru Cloud Solutions.
  • Мониторинг: Prometheus, Grafana.
  • Системы логирования, трассировки: ELK Stack, Graylog, Grafana, Jaeger.
  • Контейнеризация и оркестрация: Docker, Podman, Kubernetes, Rancher.

Если выделять хард-скиллы по технологиям, то:

  • основы Linux-администрирования, git;
  • умение писать простые скрипты для автоматизации на Bash;
  • умение дебажить (отлаживать);
  • знание контейнеризации и оркестрации;
  • базовый мониторинг готовыми средствами.
  • умение разбираться глубоко в производительности систем (не просто поставить MySQL, а посмотреть все настройки, explain медленных запросов и построить индексы);
  • Python/Ruby/Go;
  • более строгие DSL (например, Puppet);
  • знание сетей, балансировка, автоматическое переключение разных компонентов без потери работоспособности;
  • умение дополнять мониторинг под свои нужды.
  • все те же навыки, только глубже проработанные. Здесь навыки зависят от задач компании: написать eBPF для отладки, внедрять Test-driven-development с хорошим покрытием тестами Rspec/Serverspec, отвечать за архитектуру инфраструктуры в целом — всё это относится к DevOps;
  • фокус на выполнение SLA, разбираться в SLO, SLI.

Софт-скиллы: почему они нужны DevOps-инженеру и как их развивать

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

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

Среди таких скиллов особенно выделяются:

  • коммуникабельность;
  • клиентоориентированность;
  • эмоциональный интеллект;
  • способность принимать взвешенные решения и нести ответственность за них;
  • спокойствие в стрессовых ситуациях;
  • инициативность и вовлечённость;
  • знание английского языка;
  • навыки презентации.

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

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

Не стоит забывать и о неформальном общении. Предлагайте коллегам совместный досуг: дискуссии на любые интересные темы, командные игры или поход в бар. И не забывайте говорить, спрашивать и слушать.

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

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

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

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

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

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

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

Инициативность и вовлечённость. Если что-то не в вашей зоне ответственности, но вы знаете, как улучшить что-либо, предлагайте . А лучше сделайте и продемонстрируйте результаты. А вовлечённость, пожалуй, самый важный навык DevOps-инженера. Не критично, если специалист чего-то не знает в полном объёме. Но если он заинтересован в развитии проекта, радеет за него и постоянно изучает что-то новое, такой сотрудник бесценен в любой компании.

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

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

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

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

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

Как войти в DevOps

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

Преподаватель курсов «Слёрма» и девелопер адвокат Southbridge Марсель Ибраев рассказывает в статье, что такое DevOps, как он появился, и какие навыки нужны DevOps-инженеру, чтобы получить оффер.

А куда мы, собственно, собираемся входить

Давайте сначала разберёмся, куда мы вообще собираемся входить. Можно предположить три варианта:

  • DevOps — это профессия. Как учитель, музыкант или программист. И этой профессии можно обучиться.
  • DevOps — это технология, типа Wi-Fi или 4G. Ей можно обучиться и применять, чтобы стать айтишником.
  • DevOps — это закрытое сообщество, секта (например, «Монолит» — привет фанатам S.T.A.L.K.E.R.). Нужно пройти определённые ритуалы, чтобы попасть в это сообщество.

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

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

История IT и DevOps

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

Первый в Европе программируемый компьютер МЭСМ

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

В начале 21 века началось активное развитие железа, операционных систем, языков программирования. Внешне, для пользователя, IT-сфера становится проще, но внутри всё сильно усложняется:один человек уже не в силах разбираться и в железе, и в ПО. В итоге в начале 2000-х отрасль разделилась на два лагеря: разработчики и системные администраторы (по-английски это development и operations). Первые стали заниматься кодом, вторые — настраивать железо.

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

Чтобы как-то решить эту проблему, в 2009 году на конференции DevOpsDays в Бельгии собрались IТ-специалисты, закрыли двери и сказали «Пока не разберёмся, что делать, дверь не откроется». В итоге они проработали концепцию Developers and Operations — «Разработка и эксплуатация», или сокращенно DevOps. Основная её идея такова: разработчики и администраторы наконец начали работать дружно, а процесс работы превратился в непрерывную автоматическую доставку кода на сервер и в продакшн, при этом по пути ничего не ломалось и все шло как по маслу.

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

Основные концепции DevOps

Автоматизация. Автоматизируем все процессы, какие только можно. Да, сначала на это уйдет масса времени, но всё потом вернется с лихвой. Кстати, концепция, когда код автоматически собирается, тестируется и доставляется на продакшн, называется CI/CD (Continuous Integration, Continuous Delivery — непрерывная интеграция и доставка) — это одновременно и методология, и технология.

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

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

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

Что должен знать DevOps-инженер

Если зайти на hh и посмотреть вакансии DevOps-инженера, вы увидите широкий разброс требований. Некоторые описания очень размытые: «опыт построения архитектуры инфраструктуры», «анализ текущих решений», «разработка скриптов для Greenplum». Иногда вышеупомянутый CI/CD не требуется, а нужно только собирать готовые решения на базе данных. Иногда вместо операционной системы Linux, который обычно ассоциируется с разработкой, нужно администрировать Windows.

Но есть и общие навыки, которые позволят откликаться на 99% вакансий с названием «DevOps-инженер».

Linux. Это более популярное требование, чем знание Windows. Вариации Linux вроде Debian, Ubuntu, Centos не имеют большого значения — разберётесь с одним и легко перейдёте на другой.
Работа сети. Модель OSI, TCP/IP, сетевые протоколы. В общем, знать, как работает интернет, что происходит на стороне серверов, какие сетевые пакеты куда идут.

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

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

Виртуализация, контейнеризация и оркестрация. Уметь настраивать виртуальные машины на своих серверах. Например, разобраться с virtualbox и KVM. А ещё разобраться с контейнеризацией: здесь сейчас самый популярный инструмент — это Docker. Для оркестрации, то есть управлении контейнерами, чаще всего пользуются Kubernetes. Правда, это система с высоким порогом входа — требуется разобраться во множестве сложных функций. Так что начать можно и без неё.

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

Если вы выбираете веб, нужно будет разобраться с Nginx и PHP-FPM, хотя бы в базовых вопросах.

Работа с Git. Нужно уметь работать с репозиториями, знать, что такое мерж-реквест и GITLab.

CI/CD. На базовом уровне нужно строить самые простые пайплайны, то есть конвейеры, по которым код автоматически доставляется на сервер.

Инструменты IaC. IaC (Infrastructure as Code, инфраструктура как код) — это особый подход к построению IT-инфраструктуры. Суть в том, что мы не заходим на серверы и пишем конфигурации, а делаем всё через специальные текстовые файлы: меняем конфигурации, задаём параметры, отслеживаем версии. Это критично, когда серверов много, их нужно постоянно обновлять и мониторить состояние. В DevOps ситуация обычно именно такая.

Я рекомендую изучить Ansible и Terraform — это пара самых популярных решений. Можно для начала выбрать один: когда освоите его, переехать на другой будет легко.

Мониторинг и логирование. Систему недостаточно просто автоматизировать — нужно будет ещё следить за её состоянием, собирать информацию о проблемах, чтобы их можно было быстро устранить и предотвратить дальнейшее появление. Инструментов очень много: Prometheus для микросервисов, Zabbix, VictoriaMetrics, Loki, EFK. Умение настраивать и поддерживать эти вещи даст вам серьёзное преимущество при трудоустройстве.

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

Что ещё полезно уметь DevOps-инженеру

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

Знание баз данных: MySQL, PostgreSQL, Redis, MongoDB. Некоторые считают это обязательным, но в крупных компаниях, где строят DevOps, базами обычно занимаются специальные сотрудники.

Знание языков программирования, хотя бы на базовом уровне. Это поможет лучше понимать разработчиков. Хотя кодить вам, скорее всего, не придётся.

Знание облачных технологий. Сейчас почти все компании живут в облаках, поэтому важно уметь с ними работать. Из зарубежных это AWS и Google Cloud. В России тоже есть свои облачные провайдеры, но они преимущественно проще и разберётесь вы с ними быстро.

Английский. На мой взгляд фраза «без английского в IT делать нечего» — миф. Для начала вам будет достаточно английского на уровне «могу переводить со словарём». Уметь свободно говорить на английском и на ходу переводить тексты, как правило, не требуется. Если планируете выходить на иностранный рынок, язык пригодится, но стартовать можно и без него.

В заключение: немного о смене профессии

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

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

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

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

Если вы прочитали эту статью и поняли, что DevOps не для вас, то можно выбрать другое направление в IT. В этой сфере есть огромное количество профессий, причём некоторые из них даже «гуманитарные». Например, можно быть менеджером продукта или HR-oм — они всегда нужны.

А если вы осознали, что DevOps как раз для вас — приходите к нам в «Слёрм» на курс DevOps Upgrade. Там будет и теория, и практика — кейсы, основанные на реальных задачах.

Чем занимается DevOPS-инженер: преимущества и недостатки профессии

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

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

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

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

Пройдите онлайн-курсы бесплатно и откройте для себя новые возможности Начать изучение

Что должен знать DevOPS-инженер

Специалист должен обладать широким кругозором и разбираться сразу в нескольких областях:

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

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

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

Системы оркестрации. Инженер знает, как функционируют контейнеры и как строить систему.

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

Преимущества профессии:

  1. Высокооплачиваемая профессия.
  2. Специалисты востребованы на рынке труда.
  3. Профессиональные навыки можно использовать в любой сфере IT.
  1. DevOPS-инженер часто сталкивается с форс-мажорами, в которых необходимо быстро принимать решение.

На сайте hh.ru размещено 2113 вакансий по запросу «DevOPS-инженер» по всей России (сентябрь 2021).

профессия девопс

Читайте нас в Telegram — stranavozmojnostey Поделиться в социальных сетях

DevOps с чего начать или Junior DevOps

Подход DevOps понемногу перестает быть мейнстримом, каким он был пару лет назад, и потихоньку переходит в разряд must-have. Что должен знать DevOps, чтобы попасть в тусовку? В каком стеке технологий нужно быть подкованным для уровня Junior DevOps? Давайте разбираться вместе, с чего начать DevOps обучение и куда двигаться дальше, если уже что-то знаешь.

Многие ребята думают, для того, чтобы стать Junior DevOps, достаточно иметь техническую базу, разбираться в CI/CD (Continuous Integration & Continuous Delivery) и методологиях типа Agile. В какой-то мере, это правда. Но не стоит забывать, что Junior DevOps − это уже специалист с неплохим опытом в IT, часто уровня Middle и Senior, набивший много шишек в командной работе и решивший «изменить жизнь в лучшую сторону». С чего начать изучение DevOps? Да хотя бы с того, что усвоить: девопс − не должность и не профессия, а культура, философия, набор практик в большом и неспокойном океане разработки. Это понятие включает в себя гораздо больше, чем просто применение инструментария на практике. Глобальный подход к бизнес-процессам компании и определенный способ мышления для управления проектами − даже так можно сказать. Ниже подробнее разберем, что же такое девопс, какие доходы у этих ребят и что делать специалистам, которые решили освоить девопс-методологию.

Что такое DevOps?

Есть мнение, что devops engineer − это изолированная профессия, должность в проекте, команде или компании. Мы уже упомянули выше, что DevOps представляет собой глобальный подход к процессам, в частности, связанным с разработкой программного обеспечения. В какой-то степени многие специалисты в командах системных администраторов и программных инженеров могут претендовать на роль девопс − сложно описать конкретный профиль и функции. Есть определенная техническая база и навыки, которые помогут очертить, что такое девопс: как минимум вы должны быть специалистом в сфере IT уровня Middle и выше с основательным техническим бэкграундом (например, Linux, Python, AWS), мыслить стратегически и иметь хорошие soft-skills.

DevOps − это про общение с людьми и работу с командами, поэтому вы точно должны быть командным игроком и готовы растить в себе менеджера. Нет прямого пути постичь эту философию − все приходит с опытом, шаг за шагом, постепенно трансформируя вас в роль девопса. Для того, чтобы применять этот подход на практике, нужна поддержка руководителей команд и компании в целом. Идеи, инициативы, новые подходы, которыми насыщена методология девопс, должны приветствоваться и поощряться. Если сталкиваетесь со стеной непонимания («работали же раньше без этого», «зачем нам тратить на это время» и т.д.), нужно искать благоприятную среду, которая будет способствовать реализации вашего намерения нести культуру DevOps в массы, делая ставку именно на команду и проект, а потом уже − на инструменты и технологии.

Если вы новичок в IT, трезво оцените свои силы − готовы ли на данном этапе интенсивно углублять технические скилы, параллельно учиться управлять процессами, командами и учить других. Важно не переоценить силы ради желания влиться в модную тусовку девопсов, а честно посмотреть на себя со стороны. И тем не менее, почитать информацию на тему «DevOps − что это?» не помешает.

DevOps зарплаты

Логично поинтересоваться, а какая зарплата DevOps? Если девопс − это такой себе многорукий Шива, то и вознаграждение он получает по своим множественным заслугам. Но прежде чем говорить о доходах, стоит повторить, что не существует четко определенной профессии «девопс-инженер» или «девопс». Собственно, поэтому девопс зарплата также будет довольно размыта в зависимости от вашего опыта и профессионализма. В среднем DevOps зарплаты колеблются в медиане от 700$ до 4000$ − сумма будет рассчитываться исходя из вашего опыта в работе с сетями, администрировании операционных систем, работе с базами данных, развертыванием приложением и вашего стека языков программирования. Если хотите узнать примерные DevOps зарплаты, поинтересуйтесь, сколько зарабатывают опытные системные администраторы, которые вышли за рамки привычных функциональных обязанностей и уже работают с инструментами девопс. А еще более простой и всем доступный источник на букву G, как говорят, вам в помощь.

DevOps курсы

А как, собственно, стать девопсом и научиться применять эту методологию в своих проектах? Для этого многие компании, которые уже применяют этот подход у себя, запускают DevOps курсы − часто можно встретить довольно интересные программы бесплатного обучения с практикой. Сейчас очень популярны DevOps курсы онлайн − в принципе, удобная штука: нужен только компьютер, Интернет и учетка на каком-нибудь обучающем ресурсе, типа GoToTraining. Чтобы проходить курсы девопс с практикой, скорее всего, вам понадобятся системы контроля версий Git или Bitbucket − обычно там работают с домашними заданиями. Чему учат DevOps курсы? В основе большинства программ лежит теория о контейнерах, подходе «Инфраструктура как код», Continuous Integration & Continuous Delivery, а на практике учат создавать контейнеры и разворачивать свои приложения (например, на AWS, Azure, Google Cloud, OVH, iLand, GreenCloud).

Вопросы на собеседовании DevOps

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

Прежде всего, вас попросят рассказать о вашем опыте работы с операционными системами и администрированием сетей. Следующим важным пунктом будет стек языков программирования − вы можете работать с Bash, Java или Python, JS, Shell, Ruby, Perl, JAVA, Go, Pearl, PHP, С++, Symfony, Phalcon, Angular, Django, .NET, C# или Laravel, и это будет достаточным подтверждением, что вы понимаете код (да и самих разработчиков). Опыт работы с облачными сервисами (Amazon, AWS, Google, Microsoft Azure, Heroku, IBM, Office 365) − об этом тоже поинтересуются.

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

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

Резюме DevOps

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

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

И если в целом, не забывайте о логической структуре резюме (отдельные блоки с опытом, навыками, местами работы, курсами и т.д.), размере (общая рекомендация − 2-3 страницы), шрифтах и, конечно, грамотности написания.

DevOps обязанности

Споры вокруг того, что же собой представляет философия DevOps на практике, такие же неумолкаемые, как и вокруг понятия «девопс-инженер». В книге «Философия DevOps. Искусство управления IT» Дженнифер Дэвис и Кэтрин Дэниелс раскрыли тот факт, что ценность подхода − это не только инструменты devops, а совместное решение проблем, сотрудничество и доверие в команде. Отдельные практики, как например, работа с сервисами AWS devops, CI/CD, умение поднять контейнер и развернуть приложение, не будут работать, если между людьми − стены непонимания. Поэтому невозможно четко очертить DevOps обязанности и выделить отдельную роль в проекте или команде для их выполнения.

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

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

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

Исходя из этого, попробуем тезисно сформулировать DevOps-функционал:

  • Разворачивание релиза в продакшн
  • Объединение процессов разработки
  • Контроль сопутствующих элементов разработки
  • Создание инфраструктуры, которая обеспечит нормальное функционирование ПО
  • Создание среды для фиксации изменений
  • Выявление проблем и их устранение
  • Автоматизация всех процессов

Стоит отметить, что автоматизация − довольно важная сфера деятельности девопсов, которая охватывает синхронизацию данных, мониторинг, автоматизацию задач, связанных с деплоем и конфигурированием.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *