Как стать devops-инженером за полгода или раньше? часть 1
Содержание:
- Что нужно уметь
- Чем занимается DevOps-инженер
- Преимущества и недостатки
- Что DevOps делает на работе
- Из чего состоит
- Отличие от остальных IT-специалистов
- AWS
- Минусы поэтапной разработки
- Как начать карьеру «девопсера»
- Лучшее обучение — это практика
- DevOps и облачная разработка
- Как стать и куда двигаться дальше
- Где работать и куда двигаться в карьере?
- Что ему нужно знать?
- Личностные качества
- Почему это работает
- Как стать DevOps-инженером
- В какие языки надо погружаться
- Методы и средства реализации: как работает DevOps
- Где всему этому научиться
Что нужно уметь
Чтобы стать девопсом, нужно освоить много разного:
- принципы и теорию разработки ПО;
- инструменты автоматизации работы с кодом — Git, Jenkins;
- системное администрирование на уровне мидла или выше;
- виртуальные контейнеры и работу с ними — Docker и Kubernetes;
- базы данных — реляционные и нереляционные;
- веб-серверы;
- Python или другой язык для написания рабочих скриптов;
- системы управления конфигурацией серверов — Ansible;
- сбор данных по нагрузке и ошибкам во всех системах.
Если при этом девопс будет знать хотя бы на уровне джуниора выбранный язык программирования в компании — будет вообще идеально. Так он сможет учесть особенности языка и подобрать под него нужные инструменты.
Чем занимается DevOps-инженер
В ситуации с DevOps важно не путать термины. Дело в том, что DevOps — это не какое-то конкретное направление деятельности, а профессиональная философия
Это методология, которая помогает разработчикам, тестировщикам и системным администраторам работать быстрее и эффективнее за счёт автоматизации и бесшовности.
Соответственно, DevOps-инженер — это специалист, который внедряет эту методологию в процесс работы:
На этапе планирования DevOps-инженер помогает решить, какую архитектуру будет использовать приложение, как оно будет масштабироваться, выбрать систему оркестрации.
Дальше настраивает сервера, автоматизированную проверку и заливку кода, проверку среды.
Затем автоматизирует тестирование, решает задачи по деплою.
После релиза важно собирать обратную связь от пользователей и внедрять улучшения. DevOps делает так, чтобы пользователи не замечали этих улучшений, а процесс обновления был непрерывным.
И заодно решает десятки задач, которые помогают наладить систему работы разработчиков, QA, системных администраторов и менеджеров.. Всё, что написано выше, происходит в близких к идеальным проектах
В реальном же мире приходится стартовать в проекте, где планирование пропустили, с архитектурой ошиблись, а об автоматизации задумались, когда все проекты встали. И разобраться во всех этих проблемах, решить их и сделать так, чтобы всё работало — ключевой навык DevOps-специалиста
Всё, что написано выше, происходит в близких к идеальным проектах. В реальном же мире приходится стартовать в проекте, где планирование пропустили, с архитектурой ошиблись, а об автоматизации задумались, когда все проекты встали. И разобраться во всех этих проблемах, решить их и сделать так, чтобы всё работало — ключевой навык DevOps-специалиста.
Преимущества и недостатки
Главное достоинство профессии DevOps engineer — рост интереса компаний к концепции DevOps. По данным EMA, около 30% компаний уже реализовали или планируют реализовать DevOps в ближайшее время. То есть спрос есть — без работы хороший специалист не останется.
Самих DevOps специалистов привлекает то, что в работе они имеют 100% загрузку, в отличие от профессии системного администратора.
Другой плюс — широкая специализация:
Некоторых привлекает то, что результат работы можно «потрогать руками»:
Недостатки профессии, похоже, не отличаются от таковых у системных администраторов:
Что DevOps делает на работе
DevOps-инженер занимается всем, что повышает скорость и эффективность разработки.
- Создание инструментов и проектирование инфраструктуры для разработки ПО.
- Автоматизация процессов. К примеру, проверки работы приложения. Мы его создали и должны проверить, можно ли в него залогиниться, можно ли оставить комментарий, как программа себя ведет в мобильной версии и др. DevOps-инженеры помогают автоматизировать такие проверки.
- Работа с облачными технологиями. «Облако» отличается по методу хранения и обработки данных от компьютера, а значит принцип его действия иной. DevOps-инженер помогает организациям максимально эффективно использовать облачные среды, минимизируя риски.
- Решение срочные задачи.
- Интеграции. К примеру, CI — Continuous Integration. Зачем это нужно? Обычно на проектах инженеры пишут части общего кода. Иногда бывает так, что код, который хорошо работает на компьютере, где он был написан, на другой «машине» не запустится совсем. В CI DevOps-инженеры собирают части кода, которые сделали разные разработчики, и проверяют, компилируются ли они. А еще анализируют эти части кода и, согласно правилам, дают рекомендации по улучшению безопасности, устранению потенциальных багов и др.
- Поддержка и мониторинг процессов.
Из чего состоит
Важно понимать, что данное направление состоит из нескольких ключевых блоков. Для создания качественного приложения или иного продукта требуется их одновременное взаимодействие и реализация
Всего у ДевОпс четыре составные части:
- Культура. Это объединение развития и использования (эксплуатации) в единое целое. Чтобы успешно воплотить задумку в жизнь инженеру-«девопсеру» предстоит проявить навыки управления кадрами. Ему нужно будет уладить конфликты между системными администраторами, разработчиками и программистами одновременно.
- Автоматизация.
- Измерения. В них потребность возникает не всегда, а лишь в ситуациях, при которых IT-системы дают сбой. Тогда компании зовут на помощь системного инженера. Но в DevOps, если приложение работает с ошибками, ситуация обстоит иначе. Приборы измерения типа всевозможных сеток устанавливаются сразу. Метрики же стараются внедрить непосредственно в код приложения (как будущего, так и текущего).
- Обмен. Предполагается, что все решения относительно программирования, тестирования и так далее будут приниматься открыто. Специфические знания для выбранного проекта находится в доступе для всей команды. Основная проблема заключается в том, что DevOps-инженеру придется уговорить каждого коллегу поделиться личными наработками и представить их остальным.
Если рассматриваемую методологию принять неграмотно, бизнесу не стоит ждать быстрого успеха. Развитие компании будет осуществляться очень медленно. Также создание приложения принесет определенные трудности – если кто-то из участников проекта займет лидирующие позиции, он сможет эгоистично настаивать и внедрять исключительно собственные наработки.
Отличие от остальных IT-специалистов
Понимание относительно того, кто такие DevOps инженеры, на данный момент весьма расплывчато. Ни в Google, ни в других поисковых системах нет четкого определения соответствующего направления деятельности. Поэтому приходится разбираться, чем «девопсеры» отличаются от остальных IT-специалистов.
Их часто путают с системными администраторами (сфера DevOps тесно связана с этой областью), а также аналитиками больших данных. Далее рассмотрим ключевые различия между перечисленными кадрами.
Ключевые моменты
Стоит обратить внимание на то, что все упомянутые направления исторически появились в разное время:
- системные администраторы – в 80-90-х годах 20 века;
- «девопсеры» — начало 21 века (2000-е годы);
- BigData-специалисты – вторая декада 21 века (начиная с 2010 года).
Хотя кажется, что все перечисленные работники занимаются одним и тем же, у них огромная разница в прикладных сферах ответственности и объектах работы:
- сисадминам нужно работать с программным и аппаратным обеспечением ПК пользователей, а также с периферийными устройства и сетевыми девайсами;
- работники, занятые в Big Data, отвечают за кластеры Apache Hadoop, облачные сервисы, виртуальные сервера;
- ДевОпс-сотрудники заняты конфигурациями рабочих, тестовых и production-серверов.
Также разница между рассматриваемыми областями, согласно данным из Google, заключается во взаимодействии с категориями участников IT-процессов:
- системный администратор (не DevOps) – общается с конечными пользователями и руководством;
- BigData-админ – взаимодействует с аналитиками и инженерами по большим данным, разработчиками ПО, а также Data Scientists;
- «девопсер» — работает с разработчиками и тестировщиками, иногда сам помогает им справляться с порученными задачами.
Но и это еще не все. Цели и задачи у любой из упомянутой сферы деятельности будут сильно отличаться друг от друга. При помощи соответствующих знаний любой человек сможет определиться, в каком направлении ему работать в будущем.
Цели и задачи
Google – поисковая система, которая нередко помогает отыскать ответы на самые трудные вопросы. Это – простой способ поиска информации в Сети. И Google указывает, что цели и задачи у сисадминов, БигДата-специалистов и «девопсеров» колоссально различаются.
Системные администраторы в основном занимаются:
- настройкой и сопровождение локальных сетей;
- аппаратным оборудованием и программным обеспечением (настройкой, мониторингом, установкой, отладкой);
- операционными системами;
- созданием и поддержкой пользовательских учетных записей;
- резервированием информации;
- обеспечением информационной безопасности;
- администрированием серверов корпоративного типа (веб, почтовых);
- ремонтом аппаратных частей компьютеров и периферийных девайсов;
- технической поддержкой пользователей.
BigData-специалист отвечает за:
- создание и дальнейшее сопровождение IT-инфраструктуры для систем Биг Даты;
- конфигурирование локальных и облачных кластеров;
- базы данных для Big Data (их администрирование);
- настройку облачных сервисов и платформ, необходимых для решений в области больших данных;
- ETL-системы;
- корпоративные хранилища информации;
- разработку политики управления БигДатами пользователями;
- информационную безопасность кластеров;
- нагрузку на серверы;
- резервное копирование и восстановление имеющихся материалов (архивов) при необходимости.
Принципы работы DevOps инженеров по данным Google – это:
- развертка поставленного разрабами релиза;
- обеспечение исправной работы веб-серверов и серверов инфраструктуры разработки;
- создание продуктивных сред к частым корректировкам;
- стандартизация окружения создания контента;
- автоматизация процессов развертывания, а также тестирования;
- создание непрерывной интеграции продукта;
- ответственность за бесперебойную, стабильную работу утилит;
- обеспечение высокого уровня доступности выпускаемого софта;
- масштабирование утилит;
- копирование резервного характера, а также мониторинг сервисов и серверов.
Информация из Google, написанная выше, поможет разобраться в том, какой работник и чем конкретно занимается, а затем сделать осознанный выбор профессии.
Внимание: в условиях современного развития IT-технологий особым спросом пользуются БигДата-админы, а также DevOps инженеры
AWS
Amazon Web Services: Без понимания того, как работает открытый облачный сервис невозможно стать DevOps-инженером. Amazon Web Services, пожалуй, лучшее место для изучения всей отрасли, так как он предлагает наиболее богатый набор инструментов для работы.
Вы спросите, можно ли начать с Google Cloud или Azure? Безусловно! Но после серьезного падения доллара, самым безопасным вариантом, по крайней мере, в 2018 году остается AWS.
При регистрации на AWS, вы получаете бесплатный уровень пользования сервисом на 1 месяц.
Когда вы залогинитесь в AWS, вас поприветствует простое и понятное меню выбора их продуктов.
“Когда ты обнаружил еще одну функцию AWS, о которой ты никогда не знал”. Фото Tom Pumford опубликованное на Unsplash
Шучу, это был сарказм. Хорошая новость в том, что вам не нужно знать каждую функцию AWS.
Начните со следующего: VPC, EC2, IAM, S3, CloudWatch, ELB и всех продуктов из меню «Безопасность, идентификация и соответствие требованиям». Этого достаточно для начала работы с облачными сервисами.
У AWS есть собственный веб-сайт предназначенный для изучения их функций и это отличное место для начала обучения.
Я рекомендую вам уделять хотя бы по 30 минут в день на практику Python, Linux и AWS.
ПРИМЕЧАНИЕ: В целом, я считаю, что тратить ежедневно по часу, пять раз в неделю, достаточно для того, чтобы за 6 месяцев или меньше сложилось четкое представление о том, что происходит в DevOps сфере.
Но это касается только фундаментальных знаний!
В следующих статьях нашего цикла мы рассмотрим этапы: Конфигурирования, Версии, Пакеты, Внедрение, Запуск и Мониторинг программного обеспечения полностью автоматизированным способом.
Минусы поэтапной разработки
Всё дело в том, что с таким подходом есть чёткое разделение зон ответственности. Допустим, у нас простая разработка, которая разделена по отделам так:
- есть программисты, которые пишут код;
- дизайнеры, которые натягивают дизайн на этот код;
- тестировщики;
- и отдел выпуска финальных релизов.
Проблема в том, что у каждого из этих отделов своё рабочее окружение: они сами следят за своими библиотеками, фреймворками и операционной системой. Из-за этого то, что работает у одних, может не работать у других.
В итоге все тратят время на синхронизацию требований к коду, компонентам, фреймворкам и библиотекам. Работа стоит, код не пишется.
Как начать карьеру «девопсера»
Google позволяет разобраться не только в том, чем занимается конкретный специалист, но и подсказывает более эффективный путь развития в выбранном направлении. Если заранее выяснить, какие навыки, знания и умения пригодятся «девопсеру» или другому кадру, получится в разы быстрее добиться успеха.
О спектре знаний
DevOps инженеры должны обязательно обладать следующими познаниями:
- грамотное использование Google и других поисковиков для обнаружения необходимой информации;
- навык программирования на нескольких языках (Python, C, Java и другие – достаточно начальных познаний);
- принципы работы ОС;
- облачные сервисы;
- умение разбираться в гибридных решениях;
- понимание микросервисов и систем оркестрации;
- хорошая разборчивость в системах конфигурации.
Также человек должен быть усидчивым, сообразительным и активным. Развитие коммуникативных навыков и стрессоустойчивость – верные друзья в построении карьеры. Навыки психологии тоже лишними не будут, но к обязательным их отнести нельзя. А вот понимание математики и информатики – да.
Инструменты
Google говорит о том, что DevOps инженер будет работать с определенным инструментарием. И в нем придется хорошенько разобраться. Иначе достигнуть успеха и быстрого продвижения по карьерной лестнице не получится ни при каких обстоятельствах.
Если верить Google, то DevOps инженеры должны уметь работать с:
- системами контейнеризации Dicker;
- оркестраторы контейнеров Kubernetes;
- платформа GitLab;
- Jenkins, которая делает CI/CD-паплайны;
- Ansible – управление инфраструктурой;
- платформенные облачные сервисы;
- сервисы для мониторинга и оповещений.
Трудно поверить, но и это еще не все. В Google полно информации о том, в чем должны разбираться и уметь хорошие DevOps инженеры.
Дополнительные умения
Чтобы автоматизировать работу команды и получить максимальный результат, «девопсерам» придется хорошенько постараться. Для продвижения по карьерной лестнице нужно много работать и участвовать во всевозможных практиках.
А еще хорошо разбираться в:
- системах сборки;
- средствах проверки исходных кодификаций;
- хранении и передаче артефактов;
- утилит мониторинга и оповещений;
- сервисах логирования.
Чем больше знает специалист, тем лучше. Спектр его умений пригодится и системным администраторам (не в сфере DevOps), и остальным членам команды.
О зарплате
Немаловажным моментом, которым интересуются люди перед началом любой работы – это вопрос заработка и карьерного роста. В ближайшее время соответствующая деятельность точно будет развиваться и цениться на рынке труда.
Вопрос заработка DevOps инженеров зависит от региона, в котором будет трудиться сотрудник. Новичкам готовы платить от 90 000 рублей в месяц, постепенно повышая подобный показатель.
Средний заработок рассматриваемой категории подчиненных в компании – 350-400 тысяч рублей. В некоторых фирмах готовы платить от 500 до 800 тысяч. Навыки таких работников высоко ценятся и будут цениться.
Об обучении
Также в Москве и других регионах страны встает вопрос относительно того, как именно можно стать DevOps инженером. Существуют различные варианты развития событий:
- Обучиться в ВУЗе. В России это – не лучший и не самый распространенный вариант. «Девопсеров» не обучают, но можно выбрать IT-направление, аналитику, маркетинг и программирование. За рубежом некоторые высшие учебные заведения подготавливают именно рассматриваемую категорию специалистов.
- Отдать предпочтение самообразованию. Для новичка – не лучший выход. DevOps, согласно данным Google, является областью обширной и требующей огромного спектра знаний и навыков. Самостоятельно справиться с поставленной задачей можно, только это будет очень долго. И не всегда эффективно.
- Завершить специализированные узкопрофильные курсы. Они есть и очные, и дистанционные. В течение нескольких месяцев (иногда – до года) образовательные центры будут подготавливать DevOps инженеров. Обучение ведется по строго намеченному плану. Результат – выдача сертификата установленного образца.
Каждый сам решает, каким образом ему поступить. Но понятно одно – «девопсеры» перспективны. И освоить подобную сферу деятельности будет проще сисадминам, IT-шникам и аналитикам.
Лучшее обучение — это практика
DevOps, конечно, очень практическая штука. Задачи и инструменты у всех компаний разные. Но теория всё равно нужна, работать, не зная банальной терминологии и основ linux — сложно и не принесёт пользы. Есть множество бесплатных практикумов, разборов установки тулсетов и решения проблем на YouTube, статьи на Хабре. Чтобы разобраться, нужно брать различные кейсы развёртывания систем и пробовать: берите репы github и разворачивайте, настраивайте, ломайте, смотрите, что будет, лечите.
Но рано или поздно вам понадобится наставник — коллега, тимлид, который бы придумывал вам задания. Тут без практического навыка в работе либо ментора, который его имеет, дальше вы не пройдёте. Теория теорией, но практика, да ещё и в крупном enterprise — это небо и земля. Поэтому навыки и минимальный набор тулсетов развиваем на свободных, бесплатных, cloud free площадках, а остальное — либо у наставников, либо работая в этой сфере. Чем раньше вы начнёте это делать, тем лучше.
Говоря о людях, у которых есть теоретические знания, но нет практического опыта — всё индивидуально, и кто-то быстро выработает подходы к решению проблем, а кто-то будет буксовать и без менторства встанет на месте. Поэтому, возвращаясь к порогу входа в профессию DevOps, могу сказать, что он минимален, и почти каждый может им стать, но надо уметь работать в команде, не прокрастинировать и быть открытым новому.
DevOps и облачная разработка
Облачная разработка — подход к созданию приложений, опирающийся на фундаментальные технологии облачных вычислений. Цель облачной разработки — обеспечить согласованные, оптимальные процедуры разработки приложений, развертывания, управления и настройки производительности в общедоступных, частных и мультиоблачных средах.
Как правило, современные облачные приложения:
- Создаются с использованием микросервисов — слабосвязанных компонентов, поддерживающих независимое развертывание, которые имеют собственный стек и взаимодействуют между собой посредством REST API, потоков событий или агентов сообщений.
- Развертываются в контейнерах — исполняемых блоках кода, содержащих весь код, среды выполнения и зависимости операционной системы, необходимые для выполнения приложения. (Для большинства организаций термин «контейнеры» синонимичен с контейнерами Docker, однако существуют и другие типы контейнеров.)
- Эксплуатируются (в нужном масштабе) с помощью Kubernetes — контейнерной платформы с открытым исходным кодом для планирования и автоматизации развертывания, управления и масштабирования контейнерных приложений.
Во многих отношениях облачная разработка и DevOps созданы друг для друга.
Например, разработка и обновление микросервисов, т. е. итеративная доставка небольших блоков кода в небольшую базу исходного кода, идеально подходит для коротких жизненных циклов DevOps. Было бы сложно справиться со сложной микросервисной архитектурой без процедур развертывания и эксплуатации DevOps.Согласно недавнему опросу, проведенному IBM среди разработчиков и ИТ-руководителей, 78% пользователей микросервисов планируют вкладывать больше времени, денег и усилий в развитие микросервисной архитектуры, а 56% организаций, не использующих микросервисы, планируют их внедрение в ближайшие два года. Дополнительная информация о преимуществах и сложностях микросервисов представлена на следующем интерактивном изображении:
Упаковывая и исправляя все зависимости ОС, контейнеры ускоряют процессы развертывания и CI/CD, поскольку все задачи интеграции, тестирования и развертывания выполняются в одной и той же среде. Платформа координации Kubernetes выполняет те же задачи непрерывной настройки для контейнерных приложений, что и Ansible, Puppet и Chef для неконтейнерных приложений.
Большинство ведущих поставщиков услуг облачных вычислений, включая AWS, Google, Microsoft Azure и IBM Cloud, предлагают своего рода управляемые решения для конвейера DevOps.
Как стать и куда двигаться дальше
Большинство DevOps инженеров — это системные администраторы, выучившие инструменты программирования, или же разработчики, разобравшиеся с тонкостями процессов operations. Желательно иметь базовое техническое образование, разбираться в вопросах, связанных с системным администрированием и автоматизацией различных задач.
Необходимые качества:— Аналитический склад ума;— Стрессоустойчивость;— Умение не сдаваться даже в безвыходных ситуациях.
Возможные карьерные пути DevOps инженера:— Расти как DevOps специалист, углубляться в специализацию и осваивать смежные технологии;— Переквалифицироваться в разработчики, если начинали как системный администратор;— Переквалифицироваться в сисадмины, если начинали как разработчик (если интересно больше работать с инфраструктурой, чем с разработкой);— Переквалифицироваться в инженеры по IT-безопасности;— Также открыты пути в системные архитекторы, тестировщики (в том числе автоматизаторы), проектные менеджеры.
P.S. Спасибо за помощь в написании статьи Алексею Асютину и еще 5 украинским DevOps инженерам, которые поделились с DOU таинствами своей профессии. Приведенные в статье цитаты взяты из их рассказов.
Підписуйтеся на Telegram-канал редакції DOU, щоб не пропустити найважливіші статті.
Где работать и куда двигаться в карьере?
Место работы: компании, которые занимаются создание ПО или управляют серверами. Эта должность распространена в крупных ИТ-компаниях.
Распространенные работодатели:
- специализированные компании по разработке программного обеспечения;
- веб-сайты и любая организация, которая управляет веб-сайтами;
- технологический консалтинг;
- телекоммуникационные компании и вещатели;
- ритейл;
- организации государственного сектора.
Какие основные этапы развития карьеры? Сначала хотим отметить, что должность DevOps-инженера обычно не является стартовой в карьере. Чаще всего в нее приходят люди с опытом в разработке или системном администрировании, реже – тестировщики. И эта профессия уже сама по себе является достаточно престижной.
Новичку в Девопсе предстоит пройти путь от джуниора до синьора. Вот базовые требования к каждому уровню:
Junior | Должен знать GIT и основы администрирования Linux, писать простые скрипты для автоматизации, уметь «дебажить», понимать, что такое оркестрация и контейнеризация, выполнять мониторинг при помощи готовых средств. |
Middle | Глубокое понимание производительности систем, Python/Ruby/Go, уверенная работа с DSL (Puppet), хорошие познания балансировки и сетей, продвинутая автоматизация и мониторинг. |
Senior | Еще более углубленное развитие перечисленных ранее навыков, возможность внедрять сложные тесты, работать с архитектурой. |
3 самых распространенных варианта развития карьеры:
- Рост по вертикали. После прохождения основных уровней, можно возглавить Девопс отдел, стать архитектором или техническим директором. Для этого нужно прокачивать свои навыки в управлении и формировать глобальное видение процессов разработки.
- Рост по горизонтали. Использовать улучшение своих компетенций и расширение освоенного стека технологий для повышения стоимости своих услуг, наработки крутого портфолио, а как результат – работы с более крупными и серьезными компаниями.
- Переход в разработку. Это уже не всегда можно назвать продвижение по карьерной лестнице, но отдельных специалистов увлекает именно техническая работа и они становятся полноценными разработчиками.
Что ему нужно знать?
DevOps-инженер — многопрофильный специалист, и для успешной работы ему необходимо разбираться в нескольких IT-направлениях. Требования к нему в разных компаниях отличаются, но база для всех примерно такая:
- Опыт системного администрирования. Объективно определить уровень непросто, так как нет точных критериев оценки, но без базовых знаний Linux и сетей придется тяжко, поскольку придется плотно взаимодействовать с Ops-командой (командой инфраструктуры).
- Навыки разработки. Нужно иметь представление о процессе разработки ПО и знания некоторых языков программирования (по многим оценкам, Python изучить легче всего. Также в тренде Java, Go и др.). Без понимания, как написать обращение к API и обработать его ответ, а также умения работы с Git точно не обойтись.
- Английский язык. Он нужен постоянно — большая часть необходимой информации публикуется на англоязычных сайтах.
Личностные качества
Хотя может показаться, что в популярном нынче направлении IT личностные качества не важны, это совсем не так. Любая инфраструктура предусматривает наличие не только определенного багажа знаний, но и человеческих «особенностей».
Так, DevOps специалист должен быть:
- усидчивым;
- стрессоустойчивым;
- талантливым стратегом и аналитиком;
- умельцем в общении с компанией и ее членами;
- восприимчивым к критике;
- с развитой логикой.
Каждой компании нужен сотрудник, который легко обучается и схватывает все налету. DevOps-специалист быстро проводит мониторинг ситуации и принимает те или иные решения. Он способен усваивать большой объем информации для дальнейшего использования на практике.
Почему это работает
Первые упоминания о методологии DevOps появились в 2009 году. Она стала логическим продолжением развития общих принципов Agile и их ценностей. К тому моменту корпоративный бизнес окончательно убедился в том, что линейные процессы не всегда отвечают существующим задачам.
Как один из «гибких подходов», DevOps сфокусирован на скорости работы, быстром принятии решений и удовлетворенности клиентов. Благодаря непрерывности процессов, разработчики тратят меньше времени и чаще выпускают релизы. Так создается среда, в которой руководство может отслеживать результаты работы на каждом из этапов.
Растущая популярность этого подхода привела к появлению профессии DevOps-инженера. Такой специалист знает, как работают все участники процесса и отвечает за автоматизацию процессов на практике.
У DevOps есть несколько основных особенностей.
Непрерывная коммуникация между командами. Реализация методологии DevOps предполагает, что разработчики, QA-инженеры, тестировщики и системные администраторы работают согласованно. Постоянная коммуникация между участниками процесса позволяет быстрее готовить и выпускать программные продукты с меньшим количеством ошибок.
Меньшее количество программных сбоев из-за различий в конфигурации инфраструктур. DevOps-инженер создает идентичную рабочую среду для всех участников жизненного цикла ПО благодаря внедрению модели «Инфраструктура как код» (IaC). В результате получается избежать ситуаций, когда программное обеспечение работает в тестовой среде, а на стадии продакшена появляются непонятные ошибки.
Быстрое предоставление новой инфраструктуры. Это еще одно преимущество подхода IaC: процесс настройки инфраструктуры аналогичен процессу программирования ПО. Отпадает необходимость ручной настройки и обновлений. Инфраструктура существует в виде готового кода, становится масштабируемой, что сокращает время ожидания.
Автоматизированное тестирование. Непрерывное тестирование — один из ключевых компонентов DevOps подхода. Для этого используются специализированные инструменты, такие как Travis CI и Selenium.
Быстрая и надежная доставка обновлений. Благодаря тесному сотрудничеству между командами и внедрению автоматизации выпуска приложений (application-release automation), программное обеспечение обновляется быстрее, чем при традиционном процессе разработки. ARA позволяет ускорить процесс развертывания новых сборок с минимальным временем простоя и меньшим количеством ошибок конфигурации, которые обычно возникают при развертывании вручную.
Меньшее количество ошибок после релиза. С внедрением непрерывного тестирования, QA-инженеры тратят гораздо меньше времени на контроль качества и тестирование и, следовательно, пропускают меньше ошибок.
Повышение доверия пользователей. Поскольку бизнес знает, что функциональность программного обеспечения тщательно проверяется на всех этапах, его уверенность в качестве работ повышается.
Как стать DevOps-инженером
Традиционным вариантом старта карьеры DevOps инженера является переход из разработки или системного администрирования. Ведь для квалифицированной работы по специальности нужны оба эти навыка + еще тестирование. Поэтому, если человек имеет амбиции и чувствует в себе потенциал, он начинает изучать смежную специальность, расширять свою компетенцию и разбираться с тем, как эти две грани производства ПО взаимодействуют между собой.
Если вы не хотите спешить с освоением новой профессии и тратить деньги, стоит подумать о самообучении. Сейчас можно найти много книг и материалов в открытом доступе. А если вы уже работаете в сфере ИТ, то наверняка, сможете найти и наставника, у которого можно уточнить сложные для себя моменты. Но нужно понимать, что для такого формата нужно иметь хорошую дисциплину и развитое критическое мышление, чтобы не тратить время на изучение неактуальной или некорректной информации.
Наиболее быстрый и действенный способ получения специальности (хотя и не бесплатный) – это специализированные онлайн-курсы, которые сейчас представлены во многих онлайн-университетах страны. Такой формат обучения помогает получить максимум полезной и структурированной информации в сжатые сроки, а лучшие учебные центры помогают также с первыми стажировками и трудоустройством.
Стоит ли рассматривать вариант высшего образования? Если вы заканчиваете школу, то да, профильное высшее образование – это непременный плюс для работодателей, и оно может дать хорошую базу знаний. Для этой профессии в приоритете дипломы по программной инженерии, прикладной математике, информационной безопасности и бизнес-информатике. Но если вы хотите сменить или освоить новую профессию уже во взрослом возрасте – ВУЗ станет не самым рациональным расходованием времени и денег.
В какие языки надо погружаться
Конечно, качество собственного кода на работу девопса влияет напрямую и непосредственно. Начиная от качества кода ПО, с которым работают DevOps-инженеры, и покрытия этого кода тестами, заканчивая кодом, который они сами пишут и его тестов: например, инфраструктурного кода или ansible. Поэтому следует самому проводить тесты и стремиться внедрять в pipeline автоматизированные тесты проверки исходного кода приложения. А ещё лучше иметь и то, и другое, и QG на них, чтобы, если код не соответствует правилам, его нельзя было влить в релизную ветку. Вам помогут:
Python — популярный, современный, используется в машинном обучении и нейросетях, а также всевозможной автоматизации. Работать с подходами MLOps, DataOps крайне интересно, но для них нужен большой багаж знаний.
Java, Kotlin, Spring boot — мир корпоративного ПО, где много интересных технологий, микросервисов и взаимодействия со всеми участниками процесса. Лучше всего подходит для начинающих, чтобы быстро втянуться в основные технологии CI/CD и того, что есть у многих крупных компаний.
Go — ещё более популярно и современно, но порой сыровато, и требуется немало усилий, чтобы написать на нём качественное ПО, а также выстроить цикл разработки.
C# — это тоже популярно и корпоративно, но дважды подумайте, прежде чем захотите связываться с windows-стеком разработки всего, что с ним связано. Часто на нём идёт какое-либо легаси или монолит.
C# net core — несколько лучше, чем чистый C#, больше новых технологий, используется далеко не во всех компаниях, кроссплатформенный, но не забывайте, что это windows, который приготовить на linux порой бывает крайне сложно. Часто используется либо в смешанных системах из монолита и микросервисов, либо в микросервисах. Если у вас крепкие нервы, то вам сюда.
Методы и средства реализации: как работает DevOps
Методологически девопс поддерживает принципы Agile и Continuous delivery – непрерывной поставки ПО. Для организации процессов могут быть использованы такие методы Agile, как Scrum, Kanban и их варианты.
В плане инструментов для автоматизации процессов разработки, тестирования и развертывания используются следующие технологии и популярные средства их реализации:
- Распределенный контроль версий (Git, Mercurial, Subversion, CVS);
- Контейнеризация (Docker, Rocket, Kubernetes);
- Непрерывная интеграция – сборка и тестирование конечного продукта (Jenkins, TeamCity, Bamboo);
- Управление инфраструктурой как кодом (Puppet, Chef, Ansible);
- Виртуализация (Vagrant);
- Балансировка облачных ресурсов (VMware DRS).
За выполнение девопс-процессов отвечает DevOps-инженер, который синхронизирует все этапы создания программного продукта, от написания кода до тестирования и выпуска приложения. Такой специалист взаимодействует с отделами разработки и администрирования, а также автоматизирует выполнение их задач, внедряя вышеуказанные программные инструменты. Подробнее о сфере ответственности DevOps-инженера мы рассказывали здесь и здесь.
Поскольку DevOps-инженер совмещает множество профессий (администратора, разработчика, тестировщика и менеджера), то он должен иметь опыт администрирования различных операционных систем и облачных платформ. Также необходимы знания сетевых технологий и умения писать скрипты и код на нескольких языках программирования . Как эти компетенции разделяются с другими участниками Agile-команды, мы рассмотрели здесь.
Инструменты Devops
Где всему этому научиться
Если вы уже разработчик или системный администратор, можно попытаться освоить профессию самостоятельно. Для этого понадобится проникнуть в специфику смежной области, освоить нужные для DevOps инструменты и разобраться в автоматизации и контейнеризации. Сисадминам обычно проще — знаний в языках программирования от DevOps ждут совсем немного, а вот в IT-инфраструктуре нужно разбираться глубже.
Если боитесь зайти не туда или не хотите тратить много времени на самостоятельное освоение, можно получить более основательное образование. Например, окончить курс «Профессия DevOps-инженер» в Skillbox — здесь сразу дают системные знания из всех областей и не грузят тем, что девопсу знать не обязательно.