Профессия DevOps-инженера появилась как логичная реакция на существующие проблемы в процессе разработки продукта и его выкатки. В частности, отдел эксплуатации объяснял проблемы с кодом некачественной работой разработчиков, те же в свою очередь обвиняли первых в неумении обращаться с кодом и грамотно осуществлять релиз.
Так вот, DevOps-инженеры устраняют эти недопонимания, делая и этап создания, например, игры, и этап ее релиза одним «бесшовным» процессом, который теперь проходит гладко.
Кстати, само понятие DevOps — не профессия. Это методология активного взаимодействия специалистов, свод принципов их совместной работы. А профессия называется именно DevOps-инженер, спрос на таких специалистов необычайно высок. За последние несколько лет востребованность возросла на 70% (согласно результатам исследования Яндекса совместно с HeadHunter).
Ежедневные задачи этого специалиста лежат на пересечении разработки, тестирования и эксплуатации.
Так, DevOPS-инженер при формировании плана работ подскажет, какую архитектуру уместно применять в программе, каким образом можно реализовать масштабирование, какую систему оркестрации лучше всего использовать.
Справка:
Масштабирование — это накопление мощности проекта путем добавления ресурсов (например, когда сервер уже не справляется с возложенной на него задачей).
Оркестрация — это автоматическое размещение и управление сложными компьютерными системами и службами.
Также на плечах DevOps-инженера лежит:
DevOps-инженер делает тестирование кода автоматизированным, настраивает серверы.
После релиза изучает результаты опроса пользователей, готовит обновления и улучшения приложения (но без фундаментальных изменений, разумеется).
Одновременно устраняет проблемы, которые всплывают в процессе взаимодействия разработчиков, менеджеров и других специалистов.
Поскольку этот специалист находится на пересечении специальностей, в работе он использует совершенно разнообразные навыки. Поэтому у него должны быть широкие познания:
Разработка. DevOPS-инженер должен владеть хотя бы 2 языками (например, хороший набор Python / Ruby / Go). Это нужно для того, чтобы без проблем читать и понимать код, оперативно вносить в него изменения и автоматизировать процессы.
Администрирование в разных ОС. DevOPS-инженеру необходимо разбираться в видах операционных систем, знать, какая из них лучше подходит для запуска продукта, какими инструментами располагают и т. д.
Облачные технологии. Каждая компания имеет свои методы работы с базами данных. Так, у одних информация содержится на серверах, у других — в облаке. Никогда не знаешь, с чем придется работать в следующий раз, поэтому изучать эту быстро меняющуюся отрасль обязательно!
Знание контейнеризации и оркестрации. DevOPS-инженер должен знать, по каким принципам работают контейнеры и как формировать систему.
Senior, Middle или Junior осваивают одни и те же разделы с тем лишь различием, что первый имеет более глубокое понимание вопроса. В то же время никто не запрещает развиваться и горизонтально, осваивая все новые технологии и языки.
Условно обучение можно разделить на 2 способа: пройти курсы или учиться самому. Мы начнем с курсов, чтобы двигаться от простого пути к сложному.
Среди достойных обучающих центров можно выделить ITEA Online. Здесь обучают не только направлению DevOps, но и многим другим. Особенностью является то, что обучение проходит в виде живых уроков онлайн и при этом студенты больше занимаются практикой, чем изучением теории. После защиты курсовой работы студентам помогают найти работу.
Теперь целесообразно перейти к теме самообучения, хоть это и сложней. Самый эффективный способ разобраться в теме — самостоятельно написать простой продукт, заняться его окружением, то есть имитировать процессы DevOps, беря во внимание то одну, то другую технологию, меняя ОС и другие «вводные условия».
Например, напишем приложение. Потом добавим работу с базой данных, продумаем, где будет у нас хранится информация. Изучим работу с GitHub — для начала берем этот сервис, закидываем туда код. Открываем Jenkins и прописываем там автоматическую сборку приложения из нашего репозитория по кнопке. И так проходим весь процесс. После можно заменить GitHub на что-нибудь другое, как и Jenkins, например, на TeamCity.
• Мир IT с Антоном Павленко. Автор канала работает в качестве DevOps-инженера в крупной международной компании. На своем канале он рассказывает о своем профессиональном опыте, длиной в 10 лет, а также о сфере в целом.
• ADV-IT. Познавательный канал, автор которого — Senior Cloud / DevOps инженер. Видео раскрывают актуальные вопросы, подача приятная, скучать точно не придется. Контент может быть полезным как новичкам, так и более опытным специалистам.
• RomNero. Канал содержит видео о разных направлениях, включая и DevOps. Это тот случай, когда можно попутно смотреть и смежные темы, чтобы нарабатывать широкий кругозор. Качество роликов на высоте, как и подача.
• DevOps Journey. Это англоязычный канал для тех, кто хочет потреблять передовую информацию о сфере. Здесь довольно подробно разбирается, как же выучиться на DevOps-инженера, размещены туториалы и даже целые курсы по DevOps, Python, Docker, Kubernetes, Terraform, Linux и так далее.
Проект «Феникс». Роман о том, как DevOps меняет бизнес к лучшему — Джин Ким, Джонг Хан Ким, Бер К., Спаффорд Д.
Книга хороша для тех, кто совершенно не подготовлен с точки зрения технических знаний. Это не пособие и не учебник, а художественный роман, на примере которого показан путь руководителя по внедрению технологий DevOps.
Руководство по DevOps — Джин Ким, Патрик Дебуа, Джон Уиллис и Джез Хамбл
В книге вы найдете ключевые принципы DevOps, инструменты и собственно путь DevOps-инженера по повышению безопасности и надежности создания ИТ-продуктов. В частности, автор уделяет большое внимание интеграции разработки (Development) и операциям (Operations), их влиянию на разработку.
Kubernetes для DevOps: развертывание, запуск и масштабирование в облаке — Арундел Д., Домингус Д.
Философия DevOps. Искусство управления IT — Дэвис Д., Дэниелс К.
В книге вы найдете взгляд на методологию DevOps с разных позиций: технической, управленческой и даже философской. Книга также содержит практические советы по управлению DevOps-процессами.
DevOps — это методология, подход в разработке и философия организации труда наконец. DevOps-инженер — это специалист, который реализует эти подходы и устраняет любые неполадки при переходе продукта от отдела разработчиков к эксплуатации.
Профессия подразумевает широкий спектр знаний и насмотренность, поэтому уровень компетенции — это дело опыта. При этом мы дали рекомендации, как начать реализовываться в этой профессии. И если вы видите себя в этом направлении, дерзайте и реализуйтесь!