Как развиваться в сфере DevOps: 10 главных правил для IT-специалистов

💡 Усі статті, обговорення, новини про DevOps — в одному місці. Приєднуйтесь до DevOps спільноти!

Привет! Я — Дмитрий Данчук, DevOps Lead в NIX.

За 15 лет в команде я прошел путь от системного администрирования хостингов до Cloud и DevOps. На данный момент активно развиваю нашу DevOps-команду и совмещаю это с позицией AWS Solutions Architect.

За долгое время обучения девопсов я могу выделить ключевые принципы эффективного саморазвития в данном направлении. Советы из этой статьи будут полезны DevOps-специалистам с разным опытом.

Я считаю DevOps одним из самых перспективных направлений, реализующим новейшие технологии и подходы. При этом в современном IT сложно найти более неопределенное для многих IT-специалистов направление, чем DevOps (Development & Operations). Дело в том, что в это понятие входит и администрирование сетей или систем, и развертывание проектов, и выстраивание инфраструктуры и архитектуры. Мало того, даже часть девопсов не до конца понимают, в чем суть их тасков. Ведь нередко они выполняют лишь ограниченный круг задач и слабо представляют, куда двигаться дальше — что учить и на чем делать акценты в профессиональном развитии. Обо всем этом и поговорим далее.

1. Идти от практики к теории

В классическом подходе к обучению теорию ставят на первое место, но в случае с DevOps лучше сразу приступить к практике. Учебу стоит строить следующим образом: вы получаете от ментора или тимлида конкретную задачу либо же сами выбираете ее и пробуете решить задачу на основе текущего опыта. В качестве такого «сборника задач» для самостоятельного обучения можете обратиться к нашему удаленному скиллапу. И только при необходимости — ищете дополнительную информацию. Так вы будете вникать в суть процесса и видеть реальное применение теоретических знаний.

Главное: понимать, зачем вы хотите выполнить то или иное действие, а что для этого сделать и как, можно найти в технических руководствах. Именно официальная документация всегда остается лучшим «пособием» для девопса. Она есть фактически для всех инструментов: от Docker до Jenkins. Здесь вы узнаете все необходимое о настройке инструмента и его конфигурациях.

Также можно обращаться к профессиональному коммьюнити. Однако здесь будьте внимательны. Без базовых представлений и должного опыта сложно определить, какие советы «соратников по цеху» стоят внимания, а какие — лучше оставить в стороне.

2. Стараться быть «универсальным солдатом»

За DevOps в реальном мире скрывается множество разных специализаций. Это и настройка сети (NetOps), и оптимизация продуктивных сред (LiveOps), и построение инфраструктуры (SysOps), и отладка безопасности (SecOps), и работа с облаками (CloudOps) и еще множество других задач. Но не стоит сразу бросаться в одну из них. Станьте универсальным специалистом — DevOps-инженером — который разбирается на базовом уровне во всех этих направлениях. По мере накопления опыта и получения новых навыков вы сможете уйти в более узкое направление.

Подход к обучению в данном случае можно сравнить с ростом дерева. Сначала появляется основа — ствол. Со временем он становится шире и выше. Потом вырастают ветви. Чем дальше, тем их больше и тем они крепче. Лишь когда они достаточно прочные, уже можно «перескакивать» с одной ветки на другую — то есть менять профиль внутри одной сферы. Такой подход важен потому, что в большинстве проектов девопсу приходится решать задачи чуть ли не из каждого упомянутого выше направления. Лишь в особо крупных проектах для каждой задачи могут задействовать отдельных специалистов NetOps, SecOps или других. Охватить же знания на базовом уровне не так сложно. Их объем посилен для всех желающих построить карьеру в DevOps.

3. Знать базовые «столпы» DevOps

Базовые знания в DevOps опирается на понимание операционных систем и облачных решений, развертывания проектов и автоматизации. Их нужно изучать все. Я советую на такую задачу смотреть как можно шире. Например, в случае ОС важно разбираться как в Linux, так и в Windows. Да, долю последней я бы оценил в 20%, но для корпоративно направленных проектов она также важна. То же самое касается и хостинга. Особый акцент стоит делать на облаках: AWS, Azure и Google Cloud Platform.

Самое же объемное для девопса — деплой, развертывание проектов и их обновлений. Причем с ним тоже нужно развиваться постепенно и по нескольким фронтам. Прежде всего освойте ручное развертывание. Далее займитесь автоматизацией. Для этого стоит разобраться в Jenkins и Ansible, языках Bash и Python на уровне автоматизации скриптов и PowerShell для Windows. Следующим этапом станет построение полного CI/CD-процесса. А далее можно наслаивать на это контейнеризацию и такие инструменты, как Docker и Kubernetes. После этого сами инструменты могут меняться, но суть CI/CD-процесса останется прежней.

4. Не распылять внимание

Из прошлого пункта может показаться, что девопсу нужно учить абсолютно все, но важен баланс. И джуниору, и сеньору не стоит хвататься за каждое направление и технологию. Лучше знать очень хорошо что-то одно, чем все — но на недостаточном уровне. Во время собеседований я часто вижу такую картину: кандидат завел тестовый аккаунт на AWS, что-то там настроил, ничего толком не понял, но в резюме добавил строчку про опыт работы с AWS. Нехватку опыта эксперт сразу заметит, обсуждая с кандидатом конкретные решения и технологии, и вполне вероятно, что собеседование пройдет не в пользу соискателя.

По этой же причине не нужно пытаться сразу браться за самые сложные и хайповые решения. Да, вы можете научиться запускать в них базовые сценарии, но такие знания словно подвешены в воздухе, под ними нет фундамента. Поэтому как только вам потребуется выйти за привычные рамки, вам будет не хватать базовых навыков и глубокого понимания задач. Хороший вариант — знать простое досконально и на действительно глубоком уровне, нежели пытаться освоить что-то сложное, но поверхностно. Возможно, именно этот весомый багаж знаний станет толчком для вашего дальнейшего развития.

5. Изучать не сервисы, а подходы

Любая технология — это инструмент, а не цель. Необходимо разбираться не столько в конкретных кнопках, сколько в логике выполняемых операций и решения задач. Если вы хорошо ладите, например, с Jenkins, то сможете быстро освоить его аналоги в виде CircleCI и Travis CI для обеспечения CI/CD-процесса. Более того, даже самый лучший и популярный инструмент для DevOps может быстро устареть. В этой сфере сервисы совершенствуются гораздо активнее, чем в том же девелопменте. Поэтому сеньор в одной специализации или тулзе может внезапно оказаться джуниором в другой. Эксперта же отличает понимание процессов и правильный подход к обучению. Девопс уровня Senior может заходить в любой проект, разбираться в новых для него сервисах и решать даже незнакомые задачи. Ведь суть процессов одна и та же, и опыт помогает все понимать правильно. Именно на этот принцип стоит ориентироваться Junior- и Middle-специалистам.

6. Повторять, повторять, повторять и тестировать

Лучший способ разобраться в принципах каждой задачи — многократно выполнять ее на разных уровнях. Для этого возьмите простой проект или сайт и на первом этапе разверните его на своем компьютере вручную. Надо сделать это пару раз, поиграть с настройками и конфигурациями и протестировать, что все всегда работает корректно. В идеале у вас должно появиться понимание, что требуется для разворачивания проекта на сервере, какие есть зависимости, какие компоненты нужно установить и каким образом связаны компоненты и зависимости. Затем можно повторить все процедуры с этим же проектом, но, например, на бесплатном аккаунте AWS или Azure. Если и здесь вы стабильно достигаете правильной работы, можно переходить к автоматизации: с использованием Ansible для настроек сервера и Jenkins для деплоя. После этого можно дополнить систему мониторингом и бэкапами и обратиться к контейнеризации с Docker и Kubernetes. Хотя в реальности уже на этом моменте вы станете востребованным специалистом.

В качестве примеров проектов или сайтов можно использовать распространенные фреймворки и CMS, многие из них уже докеризованы. Ну и конечно, очень важно делать особый акцент на тестировании. В отличии от разработчиков у DevOps чаще всего за спиной нет своих QA, и любая ошибка чревата серьезными поломками в используемом окружении. Поэтому обязательно нужно четко представлять желаемый результат и не пренебрегать проверкой работоспособности разворачиваемых вами сайтов и проектов.

Преимущество обучения на одном и том же проекте заключается в том, что вы хорошо его знаете. При появлении проблем вы сможете быстро понять их причины. Ведь вы все время опираетесь на одну теоретическую базу. Добавляются лишь объем задачи и технологии. Даже для Senior, который рассматривает в целом архитектуру, в ней что-то знакомо, а что-то — нет, и обучение происходит схожим образом.

7. Не бояться нового

С любым уровнем знаний всегда продолжайте учиться. Практически в каждом проекте для вас что-нибудь будет новым. Это не минус, а плюс. Каждый новый сервис в конечном итоге создавался для упрощения ваших же задач. Поэтому учитесь получать знания. Недостаточно работать только по готовым пошаговым инструкциям, допустим, по настройке сервера. Да, с этим навыком у вас получится достигать нужного результата во многих ситуациях. Но при любом отходе от типового сценария вы можете парализовать весь процесс разработки. Помните: DevOps — это IT для IT. От ваших действий зависит множество специалистов. Именно вы автоматизируете то, что будет автоматизировать (читайте: улучшать) жизнь конечных пользователей.

8. Находить источники проблем

Траблшутинг — умение находить источник проблемы — крайне важный навык для девопса. Причем это касается всех специализаций: искать ботлнеки и сбои требуется и в Linux, и в CI/CD-процессе, и во всем остальном. Во многом умение делать это быстро и качественно отличает профессионалов высокого уровня. Если вы только хотите научиться траблшутингу, то вариантов отработать такой навык несколько. Например, присоединиться к команде саппорта или системного администрирования. В этих направлениях фактически все задачи связаны как раз с поиском проблем. Еще вариант — сопровождать проекты. Когда вы только настраиваете и разворачиваете проект, в статике вы не можете проследить, как он функционирует. Поддержка проекта включает в себя мониторинг, бэкапы и грамотное чтение логов. Последнее — это, пожалуй, основа успеха в траблшутинге.

9. Общаться с командой, выяснять детали и уметь договариваться

Одними только хард скиллами развитие в DevOps не ограничивается. Софт скиллы тоже надо прорабатывать. Один из самых важных — умение вести коммуникацию с разными людьми. Девопс находится в центре команды. Он общается с разработчиками, другими DevOps-инженерами, проектными менеджерами, иногда с заказчиками и Product Owner. Порой на общение уходит до 30–50% всего времени. Причем оно бывает двух типов. Первый — когда вы выясняете требования к системе и предлагаете архитектуру. Второй — когда вы занимаетесь траблшутингом и должны быстро донести решения проблемы. Не стоит думать, будто такие навыки важно развивать только лидам. С иными специалистами достаточно часто взаимодействуют и джуны. Если вы проектируете инфраструктуру без связи с другими людьми, то ваша система получается unsupportable. Вы стоите на месте. Именно поэтому специалистам уровня Middle и Senior важно развивать в себе коммуникабельность, чтобы обмениваться опытом и перенимать лучшие практики от коллег. Как вариант, можно посещать лекции и IT-конференции, а также самому выступать на мероприятиях.

10. Видеть перспективы в сфере DevOps

Эта сфера гибкая и постоянно меняется, поэтому специалистам нужно не только изучать новые сервисы, но и хорошо понимать природу общих процессов в индустрии. Это позволит быть готовым к новым вызовам. Сейчас главный тренд — клауды. Но я бы рекомендовал не просто выяснять, как они работают, а изучать их по-настоящему глубоко. Разберитесь, как строятся инфраструктуры на основе best practices, и изучите white papers в экосистеме конкретного, выбранного вами облака.

Что читать и смотреть для саморазвития

Напоследок предлагаю вам обратить внимание на следующие источники полезной информации. Больше всего эти материалы пригодятся новичкам, но и опытным специалистам не лишним будет освежить знания:

Сайты

Linux basics:

Directory structure:

Permissions:

Package management:

How the Web works:

Web servers configuration:

Databases:

Mail:

Stackoverflow:

YouTube-каналы

Книги

  1. Unix и Linux. Руководство системного администратора — Эви Немет, Гарт Снайдер, Трент Р. Хейн, Бэн Уэйли
  2. Системное и сетевое администрирование. Практическое руководство — Томас А. Лимончелли, Кристина Хоган, Страта Чейлап
  3. Внутреннее устройство Linux — Брайан Уорд
  4. Внутреннее устройство Linux — Дмитрий Кетов
  5. Linux. Необходимый код и команды. Карманный справочник — Скотт Граннеман
  6. Командная строка Linux. Полное руководство — Уильям Шоттс
  7. Linux: основные команды. Карманный справочник — Даниэл Баррет
  8. Сценарии командной оболочки. Linux, OS X и Unix — Дейв Тейлор, Брендон Перри
  9. Bash. Карманный справочник системного администратора — Арнольд Роббинс.
👍ПодобаєтьсяСподобалось12
До обраногоВ обраному12
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

в США в нормальных компаниях (тот же ФААНГ) DevOps это продвинутый админ/недопрограммист, то есть не дотягивает до SDE по скилам и вообще. А тут я вижу это чуть ли не элита. очередной индикатор стран третьего мира.

Не пали контору! Пусть все думают, что мы — самые умные и что нам надо платить больше всех

Чи потрібний цей гемор з devops за $8-12к в місяць?
Можна обрати спокійніші професії з 5-8к, або емігрувати в USA і заробляти ті самі 8-12к без зайвого геморою.
Вийти на щорічний дохід в 100-200к можна, якщо використовувати стратегії інвестування, пасивного доходу. В ризикованих інвестиціях типу стартапів, крипти можна заробляти ті самі 100к.
Але якщо девопс ваше, то автоматизація та інші лайфгаки допоможуть.

Статья полезная, есть только проблема с тем что такое DevOps
Википедия и ряд других источников говорит:

DevOps is a set of practices that combines software development (Dev) and IT operations (Ops). It aims to shorten the systems development life cycle and provide continuous delivery with high software quality.
From an academic perspective, Len Bass, Ingo Weber, and Liming Zhu—three computer science researchers from the CSIRO and the Software Engineering Institute—suggested defining DevOps as „a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality”

Лично меня удивляет почему в Украине DevOps это профессия

Википедия и ряд других источников

...устаревают быстрее чем их обновляют, что подтверждается...

From an academic perspective ... defining DevOps as 

Академическая т.з. конечно нас очень сильно беспокоит, да. Однако академическая т.з. несколько отстает от реальности, в которой девопс уже много лет отдельная профессия и за пруфом не надо далеко ходить — вакансии на роль девопса. По сути, это единственное, что имеет значение в определении является ли девопс профессией.

Лично меня удивляет почему в Украине DevOps это профессия

А меня — нет. Потому что на среднем проекте количество девопс тасок достаточное для полной и постоянной фултайм загрузки 1-3 человек. Это значит, что девопс давно перестал быть какой-то там сет оф практисес, которым любой разрабочтик может следовать походя, затрачивая полчаса-час в неделю. Эта деятельность требует отдельного персонала, полностью посвященного именного ей.

Причем деятельность эта стала весьма специфической, с непосредственно разработкой уже практически не связанной.

Взять например меня. Я бекендер. Я люблю код, и я не люблю девопсятину. Максимум, что мне надо — прокинуть пропертя в кубе/хелме. Я шатал сутками копаться в ямлах женинкса или гитлаба, пайплайнах, разворачивать и сворачивать кибаны, графаны, прометеусы, ранчеры, нексусы, сонары, мавен зеркала, с3 хранилища, контейнеры, агенты по сбору логов, конфигурить бесконечные чеки. Мне код нужно писать.

А и да, доставь ка мне пруфов, что в не-Украине не существует вакансия для девопсов.

Ну SRE или автоматизатор бейбиситер пайплайнов.
А называют как попало должность

ось

www.clickittech.com/devops/devops-team

ere are a few common roles in a DevOps team.

DevOps roles: DevOps Engineer
A DevOps engineer is responsible for designing the right infrastructure required for teams to continuously build and deliver products. The engineer identifies project requirements and KPIs and customizes the tool stack. He is well versed with automation tools and security technologies. Right from the build, test, deployment, and monitoring of a product, the engineer integrates all resources and functions required at every stage of the product lifecycle while protecting the cloud architecture from hacking attacks. In addition, the engineer is involved in team composition, project activities, defining and setting the processes for CI/CD pipelines and external interfaces.

DevOps Roles: Release Manager
When it comes to the DevOps team structure, the release manager holds one of the most demanding and stressful roles. The release manager is responsible for the entire release lifecycle, right from planning, scheduling, automating, and managing continuous delivery environments. Release managers are mostly Ops-focused wherein they design an automation pipeline for a smooth progression of code to production, monitor feedback, reports, and plan the next release, working in an endless loop.

DevOps Roles: DevOps/CloudOps architect
The responsibility of a DevOps architect is to analyse existing software development processes and create an optimized DevOps CI/CD pipeline to rapidly build and deliver software. The architect analyses existing processes and implement best practices to streamline and automate processes using the right tools and technologies. In addition, he monitors and manages technical operations, collaborates with dev and ops, and offers support when required. He also acts as a leader as required.

DevOps roles: Security and Compliance Engineer
The Security and Compliance Engineer (SCE) is responsible for the overall security of the DevOps environment. The SCE closely works with the development teams to design and integrate security into the CI/CD pipeline, ensuring data integrity and security are not compromised at every stage of the product lifecycle. In addition, the SCE ensures that the products being developed are adhering to governing regulations and compliance standards.

DevOps roles: Software Developer/Tester
While a regular software developer writes the code to build a product, the DevOps software developer/tester is involved across the product lifecycle. Responsibilities of DevOps developers include tasks such as updating the code, adding new features, and resolving bugs while ensuring that the application meets business objectives. In addition, the developer runs unit tests, pushes the code to production, and monitors its performance.

DevOps roles: DevOps evangelist
For an organization to fully leverage DevOps, it should go through a complete cultural shift. A DevOps evangelist is the one who acts as this change agent, inspiring, educating, and motivating people across the organization to embark on the DevOps journey. The evangelist removes silos between different teams, brings them onto a common platform, determines the roles and responsibilities of DevOps members, and ensures everyone is trained on the job they are assigned. Overall, the evangelist leads the DevOps journey, ensuring that a cultural shift is happening across the organization, everyone is aware of their roles and responsibilities, finds ways to optimize processes and ensures that best practices are implemented in an end-to-end product development lifecycle.

так о том и речь что девопс это давно уже не какой-то там жалкий «сет оф практисес» типа как писать клин код или делать ревью. Эта целая отдельная сфера деятельности.

Это культура и практики для всех.
Девелопер девопс
Тестировщик девопс
Пм девопс
Админ девопдба девопс
Выделенный девопс инженер в основном автоматизация пайплайнов. Или совмещен с админом SRE если надо infrastructure as code

Ну в FAANG же не существует таких вакансий

Краще англомовні ресурси. Щоб терміни запам’ятовувати зразу англійською.

Спасибо за стататью, будем развиваться :)
За Дениса Астахова отдельный лайк, один из приятнейших людей в русскоговорящем девопс комьюнити.

Підписатись на коментарі