Часть 1. Кто такой DevOps, чем он занимается
Постоянно на платформах по поиску работы появляется вакансии Junior DevOps, обычно требования к кандидату выглядит как большой список с десятками технологий и стеков: Linux, Docker, Kubernetes, Terraform, Jenkins, AWS, Prometheus, Grafana.
Для человека, который только начинает изучать профессию, такое описание может пугать.
Возникает ощущение, что DevOps — это специалист во всем, который одновременно должен быть системным администратором, программистом, сетевым инженером, специалистом по информационной безопасности и архитектором облачной инфраструктуры.
Отчасти это правда. Но только отчасти.
На практике никто не ожидает, что DevOps и тем более Junior DevOps, будет знать все существующие технологии. Работодателям гораздо важнее, чтобы кандидат понимал принципы работы операционных систем, сетей, контейнеризации и умел автоматизировать задачи.
В этой серии статей я постараюсь обьяснить в что такое DevOps, как им стать, зачем им становиться, чем он занимается, какие технологии использует и так далее.
Что такое DevOps?
Многие считают, что DevOps — это профессия. На самом деле изначально DevOps — (акроним от англ. development & operations) — методология автоматизации технологических процессов сборки, настройки и развёртывания программного обеспечения.
Название образовано от двух слов:
-
Development (разработка) — создание программного обеспечения;
-
Operations (эксплуатация) — поддержка серверов, инфраструктуры и приложений после их запуска.
Изначально эти команды работали отдельно друг от друга. Разработчики писали код и передавали его. Серверные инженеры запускали этот код на сервере.
Очень часто возникали проблемы.
Например:
— У разработчиков на компьютере все работает
— А на сервере не работает
Подобная ситуация встречалась очень часто. Причина проста.
Компьютер разработчика и сервер редко были одинаковыми.
Отличались версии библиотек, операционной системы, настройки сети, конфигурация веб-сервера и даже переменные окружения.
Именно для решения подобных проблем появился DevOps.
Его основная идея звучит просто:
Максимально автоматизировать путь приложения от компьютера разработчика до рабочего сервера.
Чем занимается DevOps-инженер?
Чтобы лучше понять роль DevOps, представим, что команда разрабатывает интернет-магазин.
Разработчик разработал новую страницу или кнопку, или поменял дизайн.
Для того чтобы, пользователь смог это воспользоваться этим, необходимо загрузить и проверить работоспобосноть на сервере.
Если выполнять все действия вручную, процесс займет, значительное время, во время которого сайт, приложение будет простаивать.
Теперь представьте, что таких обновлений не одно, и они регулярно вынуждены отключать сайт или приложение.
Также следует учитывать что при ручной работе, со временем вырастает количество ошибок, вызванных усталостью, невнимательностью, то есть человеческим фактором.
DevOps-инженер занимается решением этой проблемы.
Благодаря нему процесс автоматизируется:
-
код проходит автоматические тесты;
-
собирается новая версия приложения;
-
создаётся Docker-образ;
-
приложение разворачивается на сервере;
-
система мониторинга проверяет его работоспособность.
Этот процесс называется CI/CD.
CI (Continuous Integration) — непрерывная интеграция. Каждый новый фрагмент кода автоматически проверяется и объединяется с основной веткой проекта.
CD (Continuous Delivery/Continuous Deployment) — непрерывная доставка или развёртывание. После успешной проверки приложение автоматически публикуется на тестовом или рабочем сервере.
Благодаря этому разработчики могут выпускать обновления десятки раз в день.
Почему компании инвестируют в DevOps?
Допустим, интернет-магазин теряет возможность принимать заказы на один час.
Для бизнеса это может означать значительные финансовые потери.
Поэтому задача DevOps — не только ускорить выпуск новых версий, но и сделать инфраструктуру надёжнее.
К примеру:
-
если один сервер перестанет отвечать, нагрузку примет другой;
-
если приложение начинает потреблять слишком много памяти или произойдет необычная активность, система мониторинга отправит уведомление;
-
если новая версия работает некорректно, можно автоматически вернуть предыдущую.
Именно поэтому современные компании всё чаще используют автоматизацию вместо ручного администрирования.
Что входит в обязанности Junior DevOps?
Несмотря на большое количество технологий, повседневная работа Junior DevOps обычно состоит из вполне конкретных задач.
Например:
-
написание простых Bash- и Python-скриптов для автоматизации;
-
создание Docker-контейнеров;
-
настройка CI/CD-конвейеров;
-
анализ логов приложений;
-
помощь в настройке облачной инфраструктуры;
-
обновление сервисов и поиск причин сбоев.
Здесь встречается ещё один важный термин — лог.
Лог — это журнал событий, который ведёт программа или операционная система. В логах записываются ошибки, предупреждения и информация о работе приложения. Когда сервис перестаёт запускаться, первое, что делает инженер, — открывает логи и ищет причину проблемы.
Именно поэтому умение читать логи считается одним из базовых навыков DevOps.
Нужно ли знать программирование?
Это один из самых частых вопросов новичков.
Ответ — да, но не в том объёме, как у разработчика.
DevOps регулярно пишет код, но это, как правило, небольшие программы для автоматизации.
Например:
-
создать резервную копию базы данных;
-
автоматически обновить несколько серверов;
-
собрать информацию с API;
-
обработать конфигурационные файлы.
Чаще всего для этого используют Python и Bash.
Глубокое знание алгоритмов или сложных архитектурных паттернов для первой работы обычно не требуется.
С чего начать?
Практически каждая технология DevOps строится на предыдущей.
Невозможно уверенно работать с Docker, не понимая Linux.
Трудно разобраться с Kubernetes, если вы не знаете, как устроены контейнеры.
А автоматизация инфраструктуры теряет смысл без понимания сетей и Git.
Для этого я собрал примерный roadmap, для DevOps
Linux → Bash → Git → Python → Компьютерные сети → Docker → Docker Compose → CI/CD → Kubernetes → Terraform → Ansible → AWS/Azure/GCP → Мониторинг → Логирование → DevSecOps → Портфолио → Первая работа Junior DevOps.
Именно поэтому в следующей части мы подробно разберём roadmap Junior DevOps, объясним, почему технологии изучаются именно в таком порядке, и составим пошаговый план обучения с бесплатными ресурсами и практическими заданиями.
ссылка на оригинал статьи https://habr.com/ru/articles/1053054/