Как развиваться в сфере DevOps: 10 главных правил для IT-специалистов
Привет! Я — Дмитрий Данчук, 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. Порой на общение уходит до
10. Видеть перспективы в сфере DevOps
Эта сфера гибкая и постоянно меняется, поэтому специалистам нужно не только изучать новые сервисы, но и хорошо понимать природу общих процессов в индустрии. Это позволит быть готовым к новым вызовам. Сейчас главный тренд — клауды. Но я бы рекомендовал не просто выяснять, как они работают, а изучать их по-настоящему глубоко. Разберитесь, как строятся инфраструктуры на основе best practices, и изучите white papers в экосистеме конкретного, выбранного вами облака.
Что читать и смотреть для саморазвития
Напоследок предлагаю вам обратить внимание на следующие источники полезной информации. Больше всего эти материалы пригодятся новичкам, но и опытным специалистам не лишним будет освежить знания:
Сайты
Linux basics:
Directory structure:
Permissions:
- Linux Users and Groups
- Linux File Permissions and Ownership Explained with Examples
- Sticky Bit, SUID and SGID in Linux with Examples
Package management:
How the Web works:
Web servers configuration:
- Web Server Guides
- How To Install Linux, Apache, MySQL, PHP (LAMP) stack On CentOS 7
- How To Install WordPress on CentOS 7
- How To Install WordPress with a Managed Database on Ubuntu 18.04
Databases:
Mail:
Stackoverflow:
YouTube-каналы
Книги
- Unix и Linux. Руководство системного администратора — Эви Немет, Гарт Снайдер, Трент Р. Хейн, Бэн Уэйли
- Системное и сетевое администрирование. Практическое руководство — Томас А. Лимончелли, Кристина Хоган, Страта Чейлап
- Внутреннее устройство Linux — Брайан Уорд
- Внутреннее устройство Linux — Дмитрий Кетов
- Linux. Необходимый код и команды. Карманный справочник — Скотт Граннеман
- Командная строка Linux. Полное руководство — Уильям Шоттс
- Linux: основные команды. Карманный справочник — Даниэл Баррет
- Сценарии командной оболочки. Linux, OS X и Unix — Дейв Тейлор, Брендон Перри
- Bash. Карманный справочник системного администратора — Арнольд Роббинс.
14 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів