image

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

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


Коротко о терминах DevOps


image

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

DevOps состоит из следующих компонентов:

  • автоматизированные инструменты для тестирования и развертывания;
  • средства автоматизации DevOps;
  • процессы DevOps;
  • команда DevOps.

image

DevOps — это методология разработки программного обеспечения (Dev) и IT-операций (Ops), которая помогает быстро и эффективно поставлять программные продукты и обеспечивать бесперебойное течение всего процесса.

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

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


Ключевую роль во внедрении методологии DevOps и обеспечении ее работы играет DevOps-инженер.

Основные задачи DevOps-инженера:

  • внедрение операций CI/CD;
  • автоматизация инфраструктуры;
  • сотрудничество с различными командами (в основном с командами SDE и ИТ-операций);
  • управление доступностью и производительностью программных приложений;
  • поиск багов и решение проблем организации процесса разработки.

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

Языки программирования


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

image
Темы, которые нужно изучить инженеру в DevOps. Источник

Ресурсы:


Изучение концепций операционных систем


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

Зачем изучать концепции операционной системы:

  • для понимания архитектуры систем;
  • для автоматизации и настройки управления;
  • для устранения неполадок и отладки;
  • для применения инструментов безопасности.

Этот раздел знаний включает три разные области — операционные системы, сетевые протоколы и виртуализацию. Рассмотрим области подробнее.

Операционные системы


Большинство необходимых вам систем (виртуальные машины, контейнеры и т.д.) работают под управлением Linux. Изучите:

  • интерфейс systemd;
  • систему инициализации;
  • группы и пространства имен;
  • настройку производительности;
  • утилиты командной строки — awk, sed, jq, yq, curl, ssh, openssl и другие.

Сетевые протоколы


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

Что нужно знать:

  • HTTP/2;
  • QUIC или HTTP/3
  • протоколы уровня 4 и уровня 7 модели OSI;
  • MTL;
  • прокси;
  • DNS;
  • BGP;
  • как работает балансировка нагрузки;
  • таблицы IP и IP-адреса;
  • дизайн сети.

Виртуализация


image

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

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

Подробнее:


Docker


Знание Docker позволяет DevOps-инженеру быстро создавать и развертывать тестовые среды, тестировать приложения в изолированной среде и упрощать процесс разработки.

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

Какие преимущества:

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


Подробнее:


Kubernetes


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

Изучить подробнее:


CI/CD


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

Continuous Integration (CI) — процесс автоматической сборки и тестирования кода после каждого изменения в репозитории. Позволяет быстро выявлять ошибки и проблемы в коде, что ускоряет процесс разработки.

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

Инструменты CI/CD: GitLab, Jenkins, Bamboo для автоматизации, тестирования и быстрой доставки различных модулей приложения разным отделам и командам.

Дополнительно:


Облачные сервисы


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

Ресурсы:


Информационная безопасность


Для большинства компаний, особенно небольших, безопасность долго была на первом месте с конца по приоритетности. Функциям продукта почти всегда уделялось больше внимания. Но из-за растущих атак и различных государственных требований компаниям приходится адаптировать свои стратегии безопасности. Сквозное шифрование, надежный RBAC, политики IAM, управление и аудит, а также внедрение таких критериев, как NIST, CIS, ISO27001, становятся общими правилами.

Безопасность контейнеров, политика в виде кода, управление облаком и безопасность цепочки поставок — очень актуальные темы.

Дополнительно:


Дополнительные ресурсы


Даем список ресурсов, которые дадут общее представление о DevOps:


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


DevOps упрощает жизнь всех участников процесса разработки цифрового продукта.

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

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

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


Top.Mail.Ru

Комментарии (13)


  1. ALexhha
    07.06.2023 22:33

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

    это что то из области эффективных менеджеров ? У нас есть приложение, которое требует 8 cpu/16 gb ram. Надо запустить 100 копий. Как в данном случае виртуализация поможет сократить затраты на оборудование ?

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

    Очень странное определение k8s. Ok google

    Kubernetes, also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications.

    Как говорится найди 3 отличия

    Какие преимущества:

    позволяет вести разработку совместно;

    А что, вне докера вести разработку совместно нельзя ?


    1. gbdfc
      07.06.2023 22:33

      Негодование по поводу вм какое-то странное.

      Приложение может не постоянно требовать все ресурсы, можно убирать, добавлять cpu на ходу. + можно какое-то время продержаться на переподписке, пока ждешь новые хосты в кластер.


      1. ALexhha
        07.06.2023 22:33

        Приложение может не постоянно требовать все ресурсы, можно убирать, добавлять cpu на ходу.

        А на baremetal этого делать нельзя ?

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


        1. ProFfeSsoRr
          07.06.2023 22:33

          А на baremetal этого делать нельзя ?

          Если приложение под 8ЦПУ, то на baremetall c 32 CPU можно развернуть их 4, в изолированых средах, а 1 сервер с 32 ядрами стоит дешевле, чем 4 сервера с 8 ядрами. Так достигается сокращение затрат на оборудование. А если приложение еще и непостоянно требует эти ядра, то на еще более жирных серверах можно сэкономить на overprovisioning. И да, это можно делать и без виртуализации/контейнеров и т.п., но с ними делать проще.


          1. ALexhha
            07.06.2023 22:33

            Если приложение под 8 ЦПУ, то на baremetall c 32 CPU можно развернуть и 4, в изолированых средах

            и в чем будет разница при запуске всего того же на виртуалках ? У нас есть все тот же сервер с 32 cpu/128 ram. Чем конкретно поможет виртуализация ?

            а 1 сервер с 32 ядрами стоит дешевле, чем сервера с 8 ядрами. Так достигается сокращение затрат на оборудование

            так а кто мешает купить 1 сервер с 128 ядрами... и в каком месте достигается сокращение ?


            1. gbdfc
              07.06.2023 22:33

              Адекватные админы мешают купить 1 сервер. Потому, что это нужно не только крутить, но и обслуживать.

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


            1. ProFfeSsoRr
              07.06.2023 22:33

              и в чем будет разница при запуске всего того же на виртуалках ?

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


  1. NZX
    07.06.2023 22:33

    Есть еще вот такой roadmap


  1. porcastinationForLife
    07.06.2023 22:33
    +2

    я: [вижу зарплаты там и хочу(apparently not) вкатится в девопс]

    первый шаг: - выучить язык програмирования

    я: "нууу начинается!"

    так же я: [продолжаю работать абосаным сисодмином за копейки]


  1. trabl
    07.06.2023 22:33
    +2

    Работаю уже больше 10 лет в it, начинал админом, сейчас уже РН по ИТ-инфраструктуре в крупной компании. Есть отличные знания сетей, виртуализации, Linux, хорошие знания Phyton, bash, git. Самостоятельно изучил основы docker, Jenkins, k8s. Тот же zabbix впервые лет 10 назад поднимал и писал свои шаблоны, триггеры и т.д. Вот знаю что devops это моё, мне интересно, и главное есть возможность работать удалённо, что для меня особенно важно. Пробовал откликаться на hh на различные вакансии, тишина. Записался на платный курс devops инженер, в июле пойду учиться, может после окончания курса кого-нибудь заинтересует резюме человека, без опыта именно devops, иначе где этот опыт получать?)


    1. ALexhha
      07.06.2023 22:33
      +1

      Записался на платный курс devops инженер, в июле пойду учиться, может после окончания курса кого-нибудь заинтересует резюме человека, без опыта именно devops, иначе где этот опыт получать?)

      уж лучше получить нормальные сертификаты от мировых брендов, а не бумажку от Васи и ко. Ну, например, CKA по k8s, от AWS пару сертификатов

      хорошие знания Phyton, bash, git.

      ну вы знаете этот Фитон )))


    1. vitaly_il1
      07.06.2023 22:33
      +1

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

      • automatic provisioning новых машин для людей / задач

      • CI/CD - если есть разработка


    1. MiDeT
      07.06.2023 22:33

      В практикум чтоль?

      Там Вам будет легко и неинтересно с таким бекграундом, а бумажка, говорят, не сильно ценится.

      Но денег потратите.