Чтобы разрабатывать программы и сервисы, программистам нужна инфраструктура: среды для разработки, инструменты для тестирования, серверы для запуска готовых версий приложений. Всю эту инфраструктуру поддерживают системные администраторы. Ещё в этой схеме есть тестировщики, которые с помощью инфраструктуры, построенной сисадминами, проверяют код, который прислали разработчики.
Раньше эти три лагеря были «разделены стенами». Разработчики что-то писали и отправляли пачки кода тестировщикам. Те тестировали, находили ошибки и отправляли назад. Сисадмины пытались следить, чтобы всё работало нормально, но обратная связь от разработчиков и тестировщиков часто приходила слишком поздно, а сам код задерживался и не был готов в срок. Практически всё приходилось делать вручную, так как никакой связи между программистами, тестировщиками и сисадминами не было.
Эта схема работала, когда программы в основном писали для ПК, всё работало офлайн и обновлялось редко. Но когда мир перешёл на веб-сервисы, так продолжать было нельзя. Рынок требовал выпускать обновления быстро, часто и непрерывно. Вместо того чтобы просто «перебрасывать код через стены», нужно было наладить непрерывный конвейер разработки, тестирования и запуска.
Чтобы превратить разработку в единый цикл, создали целую культуру — DevOps. Термин появился из слияния двух слов: development и operations, то есть «разработка» и «администрирование». DevOps подразумевает прямое общение разработчиков, тестировщиков и сисадминов, общую ответственность, единые показатели успешности разработки и максимальную автоматизацию с помощью новых инструментов и особых подходов к работе.
Для работы в этой новой культуре понадобился человек, который будет объединять разработку, тестирование и администрирование, налаживать общение команд, строить единую инфраструктуру, автоматизировать процессы. Так и появилась новая профессия — DevOps-инженер (англ. DevOps engineer).
В небольших компаниях DevOps-инженер работает скорее как системный администратор. В более крупных может работать отдельно, налаживая процессы в целом и помогая коммуникациям и техническому взаимодействию разных отделов. В любом случае задача DevOps-инженера — сделать так, чтобы код непрерывно и без задержек проходил весь жизненный цикл.
DevOps-специалист нужен компаниям, которые разрабатывают IT-продукты для себя или на заказ, в тех случаях, когда:
● На рынке большая конкуренция и выпускать обновления своих продуктов нужно максимально быстро.
● Штат разработчиков, сисадминов и тестировщиков большой и наладить между ними коммуникацию сложно.
● В разработке много рутинных процессов, которые можно автоматизировать, чтобы грамотно распределять время специалистов.
Если отдел разработки не очень большой, а скорость выпуска продуктов не имеет значения, то компания может обойтись и без DevOps-инженера. Обычно в таком случае для работы с инфраструктурой нанимают сисадмина, который разбирается в некоторых DevOps-инструментах и может автоматизировать процессы.
Бывают «DevOps-программисты» — разработчики, которые разбираются в системном администрировании и сами строят для себя нужную инфраструктуру. Это применимо только для небольших проектов.
Большинство современных компаний приходят к тому, что даже в небольших командах лучше на старте внедрять DevOps, чтобы избежать рутины и сразу выстроить правильную культуру работы с кодом.
В DevOps сложно прийти совсем с нуля, ничего не понимая в IT. Лучше уже иметь опыт работы разработчиком или системным администратором и понимание части рабочих процессов, чтобы быстро освоить остальную часть.
С нуля попробовать стать DevOps-инженером тоже можно, но тогда лучше начать с классического системного администрирования, параллельно нарабатывая навыки в разработке и DevOps-инструментах.
Чтобы работать DevOps-инженером, нужно:
● Разбираться в системном администрировании Linux.
● Уметь настраивать локальные сети и управлять ими, разбираться в сетевых технологиях.
● Владеть базовыми навыками программирования, понимать общие принципы, разбираться в цикле разработки продукта. Уметь писать скрипты, например, на Python.
● Знать технический английский, чтобы искать ответы на вопросы в зарубежном интернете: поскольку сфера новая, найти их на русском не получится.
● Уметь строить инфраструктуру в облаке и знать, как её настраивать и работать с ней.
● Разбираться в Kubernetes — инструменте для контейнеризации приложений.
Контейнеризация нужна для быстрой доставки кода и масштабирования.
● Уметь строить инфраструктуру как код, например с помощью Ansible.
● Уметь настраивать непрерывный конвейер доставки кода с помощью инструментов CI/CD, например Jenkins.
● Разбираться в управлении версиями кода с помощью GitLab.
● Знать языки разметки JSON и YAML.
● Уметь настраивать мониторинг системы для обнаружения ошибок, например с помощью Prometheus.
Курс «DevOps для эксплуатации и разработки» предназначен для тех, кто уже имеет опыт работы в IT. Разработчиков и сисадминов учат технологиям и инструментам, необходимым именно DevOps-инженеру: контейнеризации, гибким методологиям, Linux и другим.
DevOps-инженер — одна из самых высокооплачиваемых в IT профессий. Это связано с тем, что в ней даже начинающему специалисту нужно знать много: обычно Junior DevOps Engineer — это уже опытный разработчик или сисадмин.
В среднем зарплаты DevOps-инженеров начинаются от 200 000 ₽ и могут доходить до 500 000 ₽, и это не предел. Джунам обычно готовы платить от 120 000 ₽.
Иногда в вакансиях под словом DevOps подразумевают обычного системного администратора. Либо наоборот: ищут администратора, но по требованиям это скорее DevOps. Нужно смотреть на обязанности и уровень зарплаты DevOps-специалиста:
● Если небольшая компания ищет DevOps-инженера за 50 000 ₽ в месяц, чтобы настроить сервер на Linux, к DevOps это явно отношения не имеет.
● Если в компанию ищут системного администратора, но с требованиями Kubernetes, Jenkins и Ansible — работа наверняка будет связана с DevOps.
Средняя зарплата DevOps-инженера составляет 227 тыс. рублей. Источник
Тем, кто только начинает свой путь в IT, будет сложнее. Придётся с нуля осваивать разработку, системное администрирование и DevOps-инструменты. Лучше всего в таком случае сначала освоить одну профессию — например, стать разработчиком на Python, а потом с этими знаниями уже изучать всё остальное. Для практики лучше найти курсы, где дают много реальных рабочих задач, либо устроиться на стажировку, чтобы освоиться в профессии и стать востребованным специалистом.
Читать также: