От SysAdmin к DevOps: часть 1. Как и зачем стоит меняться

26 июня
Хьюго Берначеа, Senior Developer в DataArt
От SysAdmin к DevOps: часть 1. Как и зачем стоит меняться
Очевидно, что DevOps сегодня — горячая тема в IT-кругах. В статье я расскажу о преимуществах и возможностях, которые дает эта методология, об инструментах, задействованных в ее развертывании.

Почему DevOps?

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

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

Для начала мы должны принять идею, что DevOps — не название должности, а, скорее, набор практик, которые приводят к согласованному результату, улучшению коллективной работы, сокращению количества ошибок, обеспечивают более частые и своевременные жизненные циклы программного обеспечения, улучшая связь между компонентами разработки (Dev) и операционным компонентом (Ops), и делая регулярные тесты и переоценки всего процесса непрерывной интеграции.

Системный администратор может не обладать знаниями в области программирования или навыками кодирования. Какое в этом случае возможно решение проблемы? Изучение хотя бы одного языка программирования. Возможно, нелегко разувериться, что кодирование — только для разработчиков. Необязательно получать профессиональные знания в области кодирования, но, безусловно, умение писать код было бы полезно. Для этого можно пройти разные бесплатные курсы, например, здесь.

Я умею работать с PowerShell и сейчас изучаю Python. Последний, похоже, более гибкий и родной для Linux, а PowerShell лучше интегрирован в Windows и .NET-фреймворк. Но это только личный опыт.

Обучение программированию тоже будет полезно для улучшения совместной работы с DevOps или, возможно, с клиентом в качестве консультанта. Кроме того, желательно изучить shell-команды Linux и добавить их в свой инструментарий. Это займет некоторое время, но думаю, что приобретение этих навыков должно быть приоритетом.

В конце концов, вы можете быть единственным системным администратором, и, следовательно человеком-оркестром, отвечающим за широкий спектр задач от обслуживания принтеров до задач, связанных с сетью: настройка и управление маршрутизаторами и коммутаторами, определение политик и правил безопасности; обновление аппаратного обеспечения, аудит безопасности, работу с патчами, решение проблем, анализ первопричин и автоматизация, часто с использованием сценариев PowerShell, Python или Bash.

Обзор концепций

  • DevOps — набор практик, процессов и инструментов для разработки ПО, которые сочетают разработку ПО (Dev) и IT-операции (Ops), которые упрощают жизненный цикл разработки.
  • DevOps играет очень важную роль для команд по разработке ПО в обеспечении автоматизации создания, тестирования и запуска автоматизации, так называемых непрерывной интеграции (Continuous Integration, CI), непрерывного тестирования (Continuous Testing, CT) и непрерывной доставки (Continuous Delivery, CD).
  • DevOps подразумевает работу с циклом доставки, включая планирование, разработку, тестирование, развертывание, запуск и мониторинг при активном содействии разных членов группы.
  • Обычно DevOps называют пайплайном со ссылкой на линейный рабочий процесс, который идет от тестовой сборки до запуска. Пайплайн показывает общую картину применения, от контроля источника до производства, причем акцент ставится не на непрерывную интеграцию, а на непрерывную доставку. Компании тратят много времени на понимание автоматизации всего процесса во время разработки программного обеспечения.

Поиск возможностей для автоматизации

Каждый раз, когда необходимо выполнять повторяющуюся задачу, мы должны изучить возможность ее автоматизации и регистрации, чтобы в следующий раз процесс можно было выполнить автоматически. Это сэкономит нам время, чтобы сосредоточиться на выполнении актуальных и менее рутинных и монотонных заданий.

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

Разработка и операции как единое целое

DevOps рассматривается как подход, в соответствии с которым выполняются задачи по разработке (Dev) и IT-операции (Ops). Конечно, такой подход — величайшее изменение в рабочем процессе: под эгидой DevOps на одной стороне коридора находится команда разработчиков ПО, на другой — команда IT-операторов. Вероятно, здесь также соберутся и команда управления продуктом, команда контроля качества и команда UX-дизайна. Все команды объединяют силы для эффективной оптимизации и стабилизации создания новых приложений и обновления кода для поддержки и улучшения всего бизнеса.  

Ядро процесса DevOps — разработка жизненного цикла ПО. Поскольку операции отвечают за поддержку разработчиков, знания таких разработчиков не должны ограничиваться системным API и операционными системами. Им необходимо знать больше, знать, как работать с ПО, аппаратным обеспечением и операционными системами, чтобы справляться со сложностями, возникающими при ошибках, решать проблемы и общаться с операторами.

От SysAdmin к DevOps

У системных администраторов есть возможность переходить в DevOps-команды, пока они готовы изучать текущие и новые технологии, пока они открыты для новых идей и инновационных решений. Как мы уже упоминали, нет причин, по которым сисадмины должны быть настоящими программистами, если они работают с традиционной операционной средой, но изучение языка программирования: Ruby, Python, Go — поможет им укрепить позицию в команде. С другой стороны, хотя такие специалисты и привыкли работать в одиночку, это совершенно противоположный опыт, и такой подход необходим, чтобы Agile-команда могла применять принципы DevOps.

B сисадмины, и специалисты DevOps заинтересованы в быстром масштабировании, быстром поиске и уменьшении количества ошибок, и автоматизация находится между этими двумя областями.

Системные администраторы отвечают за облачные сервисы: AWS, Azure и Google Cloud Platform. Они должны понимать пайплайны CI/CD и знать, как управлять ими с помощью Jenkins. Эти концепции включают непрерывную интеграцию, непрерывное распределение и непрерывное развертывание.

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

Последняя важная часть головоломки — Git. Традиционно Git не была одной из повседневных обязанностей сисадмина. Эта система управления версиями, широко используется командами разработчиков ПО: DevOps, командами разработчиков, Agile-командами и т. д. Если вы вовлечены в процесс разработки жизненного цикла ПО, безусловно, вы работаете с Git.

Системный администратор должен совершенствовать свои навыки работы с Git, понимать управление версиями и учиться основным командам: git status, git commit -m, git add, git pull, git push и т. п. Существует множество онлайн-курсов. Я рекомендую этот — он достаточно хорош, интерактивен и прост.

Кроме того, можно найти шпаргалки для Git, так что необязательно изучать каждую команду; но чем больше их используешь, тем больше помнишь. Microsoft Visual Studio Code (как альтернатива Notepad++) — бесплатный инструмент, позволяющий выполнять команды Git непосредственно из среды Visual Studio Code.

Ansible — отличный инструмент поиска для множественных серверов, который позволяет автоматизировать настройку и поиск, написание плейбуков в формате yaml.

Ansible позволяет создать новую полностью автоматизированную среду высокой доступности в облаке. Нет необходимости входить в Azure, GCP или AWS.

Заключение

Пару слов напоследок

Наконец, вы можете выбрать, хотите ли продолжать работать системным администратором или стать DevOps. Для этого необходимо подучиться, но мне кажется, сейчас самое время начинать.

Вы можете выбрать один язык программирования для изучения (мне кажется, Python — лучший и наиболее адаптированный), и в то же время необходимо воспользоваться возможностью улучшить навыки работы с Git, инструментом CI/CD (типа Jenkins), и инструментом для настройки и автоматизации IT-систем (например, Ansible).

Какой бы инструмент вы ни выбрали, он превратит вас в эффективного профессионала в любой компании.

Источники: