DevOps — это сложный процесс. Она требует сочетания навыков многих профессий одновременно. Вы становитесь человеком, который готов добиваться улучшений, когда другие ИТ-специалисты даже не думают ни о чем другом. За это много платят, но это также требует больших знаний.
Кто такой DevOps. Обзор изнутри от Виктора Ведмича
Виктор Ведмич, евангелист Devops, евангелист Devops и лидер сообщества DOM (DevOps Minsk), руководитель группы системного проектирования в EPAM, рассказывает об этой профессии.
Продолжается серия документов о профессии компьютерщика. Каждый из них описывается «типичным представителем» — опытным специалистом. Мы надеемся, что эта серия поможет студентам, школьникам, практикантам, молодым людям и сочувствующим выбрать ИТ-специализацию, оценить перспективы или просто сравнить свои заметки с опытными коллегами. Материал можно обсуждать и дополнять комментариями, чтобы сделать его еще более полезным.
Виктор Ведмич, евангелист Devops, евангелист Devops и лидер сообщества DOM (DevOps Minsk), руководитель группы системного проектирования в EPAM, рассказывает об этой профессии.
Продолжается серия документов о профессии компьютерщика. Каждый из них описывается «типичным представителем» — опытным специалистом. Мы надеемся, что эта серия поможет студентам, школьникам, практикантам, молодым людям и сочувствующим выбрать ИТ-специализацию, оценить перспективы или просто сравнить свои заметки с опытными коллегами. Материал можно обсуждать и дополнять комментариями, чтобы сделать его еще более полезным.
Кто такой DevOps-инженер
- разработчиков, которые хотят как можно быстрее сделать продукт,
- с инженерами, которые занимаются его поддержкой.
Пример: разработчик написал и выпустил игру — это продукт. Он может работать сам по себе, но внешние условия постоянно меняются. Серверы испорчены, человек, разработавший игру, покинул команду, а графика нуждается в улучшении. А чтобы убедиться, что игра работает хорошо и не зависает, нужны инженеры, которые не могут опустить всю систему.
Специалисты DevOps поддерживают жизненный цикл продукта от начала до конца, размещая и объясняя все процессы в единой системе, сокращая время роста и повышая его эффективность и безопасность. А если такого человека в команде нет, то работу будет выполнять кто-то другой, потому что это дополнительная нагрузка, а значит, снижается качество работы.
Индустрии DevOps всего десять лет. Она начала активно обсуждаться примерно в 2009 году. Сейчас эта профессия очень популярна во всем мире.
Некоторые рассматривают DevOps как целую философию, другие предпочитают концепцию культуры, методологии и подхода к разработке программного обеспечения. Я обычно говорю, что DevOps — это сочетание трех английских «P»:.
- People — люди, которые постоянно взаимодействуют друг с другом,
- Processes — процессы,
- Products — продукты и технологии, с которыми мы работаем.
Что DevOps делает на работе
Инженеры DevOps занимаются тем, что увеличивает скорость и эффективность роста.
- Создание инструментов и проектирование инфраструктуры для разработки ПО.
- Автоматизация процессов. К примеру, проверки работы приложения. Мы его создали и должны проверить, можно ли в него залогиниться, можно ли оставить комментарий, как программа себя ведет в мобильной версии и др. DevOps-инженеры помогают автоматизировать такие проверки.
- Работа с облачными технологиями. «Облако» отличается по методу хранения и обработки данных от компьютера, а значит принцип его действия иной. DevOps-инженер помогает организациям максимально эффективно использовать облачные среды, минимизируя риски.
- Решение срочные задачи.
- Интеграции. К примеру, CI — Continuous Integration. Зачем это нужно? Обычно на проектах инженеры пишут части общего кода. Иногда бывает так, что код, который хорошо работает на компьютере, где он был написан, на другой «машине» не запустится совсем. В CI DevOps-инженеры собирают части кода, которые сделали разные разработчики, и проверяют, компилируются ли они. А еще анализируют эти части кода и, согласно правилам, дают рекомендации по улучшению безопасности, устранению потенциальных багов и др.
- Поддержка и мониторинг процессов.
Второе — важно для клиента. Всем производителям выгодно представить свое творение раньше, чем их конкуренты представят нечто подобное. Это возможно благодаря согласованности действий всех отделов в проектной команде. И именно это единство организует механический DevOps.
Что такое DevOps?
DevOps — это набор практик на стыке между управлением системой (опционально) и разработкой.
До появления DevOps, когда создавалось приложение, целью команды разработчиков было создание кода, а целью команды инфраструктуры — эксплуатация всех серверов.
Если возникнет проблема, инженер по инфраструктуре заявит об этом. Серверы в порядке. Проблема заключается в коде. Я не буду рассматривать это дальше, это не моя проблема». Компьютер, проблема в сервере, я не буду рассматривать ее дальше, это не моя вина».
С приходом инженерного DevOps вся команда сосредоточена на одной цели — создании качественного продукта.
Без культуры DevOps компания может применять ручное тестирование, ручное управление инфраструктурой, и потенциально могут возникнуть конфликты с фрагментами кода, созданными разными разработчиками. В результате пострадает качество продукции компании, замедлится скорость выхода на рынок, а сотрудники, которым приходится тратить большую часть своего времени на рутинные задачи и трудности эскалации, будут демотивированы.
Что делает DevOps-инженер?
Инженеры DevOps синхронизируют все этапы разработки программного продукта, от написания кода до тестирования и публикации.
Это профессионалы, обладающие обширными знаниями в области компьютерных наук и понимающие, как достичь конечного продукта. Он хорошо разбирается в инфраструктуре и понимает принципы разработки и архитектуры приложений. Он также является практическим руководителем, знающим жизненный цикл приложений и современные методологии разработки.
- на этапе планирования работы помогает решить, какая архитектура будет у приложения, как оно будет масштабироваться;
- мониторит работоспособность всех сред и инструментов разработки;
- автоматизирует (где это возможно) определенные стадии создания продукта. Например, организацию автоматического тестирования создаваемого ПО;
- налаживает коммуникацию между участниками команды;
- решает задачи, которые помогают организовать работу разработчиков, тестировщиков, системных администраторов и менеджеров.
А можно на простом примере?
У меня есть два друга, которые хотят производить мясо на природе. Конечным продуктом их деятельности являются шашлыки. Друзья делят задачу: один нанизывает мясо на шампур (сравните с программистом), а другой собирает котел и зажигает его (сравните с инженером по инфраструктуре).
Уголь готов, мясо нанизано на шампуры, поместите шампуры на решетку — ждите. Но если идет дождь, уголь нужно переместить гриль под тент, чтобы уголь не попал внутрь. Делать это самостоятельно сложно, а дождь становится все сильнее и сильнее.
Без культуры DevOps разработчики (которые отвечают за нанизывание мяса на вертел) могут сказать: «Нанизывайте мясо на вертел — моя работа закончена». Дальше я не пойду», и в конце концов никто не станет есть шашлык.
Инженер DevOps — это третий друг, который предугадывал прогноз погоды, думал, что будет дождь, разрабатывал с палаткой и помогал нести гриль к мясу, когда погода была плохая. В итоге все получили удовольствие от хорошего мяса (из которого получился качественный продукт).
Если возникнет проблема, инженер по инфраструктуре заявит об этом. Серверы в порядке. Проблема заключается в коде. Я не буду рассматривать это дальше, это не моя проблема». Компьютер, проблема в сервере, я не буду рассматривать ее дальше, это не моя вина».
Что нужно для старта в профессии
Подготовка к профессии необходима. Нельзя прийти к урокам с нуля, не понимая ничего из информатики, и учиться на самом низком уровне. Требуемая техническая подготовка:.
- Идеально, если вы работаете полгода и больше системным администратором, специалистом по эксплуатации или тестированию. Или хотя бы имеете представление о том, как приложения стартуют, в какой среде они могут развиваться и что делать, если вы видите ошибку. Если опыта работы нет, пройдите любой курс по администрированию Linux, повторяя всё происходящее на домашней машине.
- Разберитесь, как работают сетевые технологии — научитесь устанавливать, настраивать и управлять локальными и глобальными сетями.
- Посмотрите, как и из чего устроено программирование — напишите несколько скриптов на Python или Go, попробуйте понять принципы ООП (Объектно-ориентированное программирование), почитайте про общий цикл разработки продукта.
- Пригодится знание технического английского — общаться на свободные темы не обязательно, достаточно уметь читать документацию и интерфейсы.
Что должен знать DevOps
Хороший инженер DevOps — это междисциплинарный специалист с очень широким кругозором. Чтобы добиться успеха, они должны разбираться одновременно во многих областях информационных технологий.
Разработка
DevOps подразумевает создание скриптов, которые помогают разработчикам устанавливать код на серверы. Создавайте программы для мониторинга ответов базы данных на ходу. Он создает приложения для отслеживания контроля версий. Наконец, он просто обнаруживает потенциальные проблемы разработки, которые могут возникнуть на сервере.
Сильные эксперты DevOps знают множество языков, подходящих для автоматизации. Они не разбираются в них глубоко, но быстро пишут небольшую программу или читают чужой код. Если вы никогда не стреляли из него, вы обязаны попробовать.
Операционные системы
Невозможно знать все особенности каждой версии каждой системы. Вы можете потратить тысячи часов на такое обучение, которое окажется бесполезным. Напротив, хорошие DevOps понимают общие принципы работы с любой операционной системой. Однако, судя по объявлениям о вакансиях, большинство работает в Linux.
Хороший инженер понимает, по какой системе лучше всего разрабатывать проект, какие инструменты использовать и какие ошибки могут возникнуть при реализации или эксплуатации.
Облака
Рынок облачных технологий растет в среднем на 20-25% в год. Эта инфраструктура обеспечивает процессы тестирования кода, создания приложений компонентов и предоставления обновлений пользователям. Хороший DevOps понимает, что полностью основан на облачных и гибридных решениях.
Формальные требования для инженеров обычно включают GCP, AWS и Azure.
Это также может включать знание инструментов CI/CD. Jenkins обычно используется для непрерывного завершения, но его также стоит попробовать. Buddy, TeamCity, Gitlab CI и многие другие. Полезно изучить Terraform, декларативный инструмент, который помогает загружать и координировать облачную инфраструктуру. Упаковщики необходимы для создания автоматизированных оперативных изображений.
Системы оркестрации и микросервисы
Малые архитектуры имеют множество преимуществ, включая стабильность, быстрое масштабирование, простоту и повторное использование. DevOps помогает понять, как работают микробы, и предвидеть потенциальные проблемы.
Он детально разбирается в Docker и Kubernetes. Она понимает, как работают контейнеры и как их можно отключить без ущерба для системы в целом. Например, она знает, как создать кластер Kubernetes с помощью Ansible
Что ещё попробовать будущему DevOps
Список инструментов, которые могут быть полезны для механического DevOps, бесконечен. Кто-то работает в сфере оркестровки проектов, кто-то тратит большую часть времени на автоматизацию роста и тестирования, кто-то повышает эффективность управления координацией. Попутно становится ясно, где нужно копать и какие проекты могут помочь.
Это еще один минимум в начале:.
- Разберитесь, как работает Git и Github, если ещё не сталкивались с этим. Установите GitLab на свой сервер.
- Познакомьтесь с языками разметки JSON и YAML.
- Установите и попробуйте поработать в базах данных — не только в MySQL, но и NoSQL. Попробуйте MongoDB.
- Разберитесь, как управлять конфигурацией сразу нескольких серверов. Например, с помощью Ansible.
- Сразу настройте мониторинг нагрузки и логи. Попробуйте связку Prometheus, Grafana, Alertmanager.
- Поищите лучшие решения для деплоя под разные языки — достаточно просто познакомиться, внедрять и разбираться будете на тренировочном или рабочем проекте.
Почему стоит начать изучать DevOps сейчас
Рынок инженеров DevOps испытывает кадровый голод. Это условно подтверждается количеством и качеством имеющихся рабочих мест.
- В России на одном только HeadHunter постоянно доступно более 2 тысяч рабочих мест по этому ключевому слову.
- И всего 1 900 человек разместили резюме.
Обратите внимание на зарплату тех, кто ищет работу.
Глобального спроса на DevOps не существует. Если вы переедете в США или Европу, то только на Glassdoor более 34 000 компаний ищут таких специалистов. Частыми требованиями являются опыт работы 1-3 года, умение управлять облаком и не бояться консалтинговых функций.
Предложений для фрилансеров гораздо меньше — инженеры в основном ищут штатных сотрудников и должности с полной занятостью.
Найти подходящие проекты для фрилансеров сложно, но выполнимо.
Интеллектуальный карьерный курс по инженерным DEVOPS может быть представлен следующими способами
- Полгода–год работает системным администратором в небольшой IT-компании. Параллельно изучает язык, подходящий для автоматизации.
- Интенсивно учится на курсах, примерно полгода.
- Переходит на другую работу — в компанию, которая продает облачные решения, филиал крупной корпорации, к разработчикам больших проектов. Проще говоря туда, где есть потребность в постоянной автоматизации и внедрении. На начальной позиции это примерно 100 тысяч рублей.
- Несколько лет активно работает и учится, увеличивает доход в несколько раз.
- Становится экспертом в профессиональном сообществе и переходит в консалтинг. Или растёт до системного архитектора или IT-директора.
DevOps — это сложный процесс. Она требует сочетания навыков многих профессий одновременно. Вы становитесь человеком, который готов добиваться улучшений, когда другие ИТ-специалисты даже не думают ни о чем другом. За это много платят, но это также требует больших знаний.
Сильные эксперты DevOps знают множество языков, подходящих для автоматизации. Они не разбираются в них глубоко, но быстро пишут небольшую программу или читают чужой код. Если вы никогда не стреляли из него, вы обязаны попробовать.
Кто такие девопсы и что они делают
Чтобы все они работали на практике, появились DevOps-инженеры или только DevOps. Основная задача этих специалистов — создание и сопровождение необходимого для компании программного обеспечения и автоматизация всех этапов разработки.
Это позволяет использовать механические DEVOPS.
- настраивать серверы и автоматически управлять их конфигурациями;
- создавать и настраивать виртуальные контейнеры для быстрого запуска нужного софта. Чаще всего для этого используют Docker;
- управлять этими контейнерами из одного места и автоматизировать всю их работу;
- настроить автоматическое тестирование кода;
- сделать так, чтобы код после тестов автоматически попадал в готовую сборку;
- собирать данные для мониторинга работы всей системы. Если какой-то сервис или процесс сломается, девопс сразу должен это увидеть и отреагировать.
Главная задача devops — обеспечить как можно больше автоматизации и чтобы она действительно ускоряла рост.
Что нужно уметь
Чтобы стать девопсом, нужно владеть множеством разных вещей.
- принципы и теорию разработки ПО;
- инструменты автоматизации работы с кодом — Git, Jenkins;
- системное администрирование на уровне мидла или выше;
- виртуальные контейнеры и работу с ними — Docker и Kubernetes;
- базы данных — реляционные и нереляционные;
- веб-серверы;
- Python или другой язык для написания рабочих скриптов;
- системы управления конфигурацией серверов — Ansible;
- сбор данных по нагрузке и ошибкам во всех системах.
В то же время, становится совершенно идеальным, если DevOps, по крайней мере, знает хотя бы выбранный компанией язык программирования. Таким образом, можно учесть особенности языка и выбрать подходящие инструменты.