Найти тему

Кто такой DevOps-инженер и чем он занимается?

Многие думают, что DevOps - это когда системные администраторы становятся программистами и наоборот. Отчасти это так, но не совсем. Давайте разберемся, что такое DevOps и почему он возник.

Немного истории. Сам термин появился в 2007-2008 годах, и это было формулирование проблемы, которая заключалась в том, что ITразвивается очень быстро и чтобы соответствовать скорости развития IT, бизнесу необходимо очень быстро развиваться и самое главное - производить и доставлять продукты максимально эффективно конечным пользователям. И вот основная идея DevOps - это как раз непрерывная интеграция, развертывание, доставка, то есть когда процесс доставки продукта непрерывен и очень эффективен и для того чтобы как раз реализовать эти задачи, и возникла методология DevOps. DevOps - это своеобразная философия. Сюда входит и Agile, сюда входит идея минимизации всех издержек и, в том числе, идея превращения системных администраторов чуть-чуть в программистов, то есть DevOps инженеры - это те специалисты, которые разбираются и в программировании, и в системном администрировании. Но почему, собственно, эта методология сформировалась?

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

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

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

Основы сетей

Нужно изучить основы сетей. Необходимо знание TCP/IP, что такое CIDR блоки. Это часто придется использовать потом, когда вы будете, например, в облаке создавать сети VPC, прописывать security группы, файрвол рулы, какие порты открывать, какие – нет.

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

Основы Linux, установка веб серверов, скрипты Bash

Заметьте, речь идет об основах. Не нужно знать, как устроено ядро, как его собирать. Нужно, конечно же, знать команды Linux. Нужно уметь устанавливать веб серверы, знать, где конфиг файлы. Уметь устанавливать Apache, Tomcat, nginx. Знать просто, куда в какую папку класть сайт и где конфиг файлы. Ну, и, конечно же, нужно научиться писать скрипты на Bash, то есть автоматизировать эти процессы.

Администрирование Windows

В основном придется иметь дело с Linux, но могут встретиться проекты и на Windows. Нужно научиться создавать domain controller, добавлять в него несколько серверов, создавать там пользователей, уметь инсталлировать IIS, хоть какие-то настройки в нем знать, знать, где конфиг файлы. Ну, и, желательно уметь писать скрипты на PowerShell.

Ansible

Это automation configuration tool. Это инструмент, который может автоматически отконфигурировать огромное количество серверов одновременно одной командой. То есть на предыдущих шагах вы научитесь делать все вручную, а здесь начнете автоматизировать, будете писать Ansible плейбуки. Очень интуитивно понятная система, несложная и крайне полезная. С помощью Ansible можно автоматизировать и Windows, кстати, но это немного сложнее.

Git

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

GitHub или BitBucket или GitLab

Ну, и, конечно, где эти файлы хранить. В GitHub или BitBucket или GitLab.То есть вы будете использовать Git как протокол обмена и менеджмента файлов и помещать это в GitHub.

Jenkins

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

Docker и DockerHub

Нужно знать, как работают докеры, что такое DockerHub.

Это 8 минимальных пунктов, которые нужно знать, чтобы претендовать на позицию Junior.

Дальше идут два пункта, которые знать было бы очень неплохо:

Одна облачная платформа (AWS, GCP, Azure)

Знать хотя бы одну cloud платформу. AWS – самый популярный, лучше начать с него.

Infrastructure as a Code (Terraform, CloudFormation)

Это уже скорее не для Junior. CloudFormation – только для Amazon, Terraform – для всего. Если вы освоите эти инструменты, это будет большой плюс.

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

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

Обучение на DevOps-инженера – по этой ссылке

Изучение технологий CI/CD – по этой ссылке

Изучение технологии Ceph – по этой ссылке

Изучение технологии Vagrant – по этой ссылке

Изучение технологии Terraform – по этой ссылке

Изучение инструмента Kafka – по этой ссылке

Изучение Git – по этой ссылке