Хабрахабр

[Перевод] Почему системные администраторы должны становиться DevOps-инженерами

Для обучения в жизни нет лучшего времени, чем сегодня.

На дворе 2019 год, и тема DevOps сейчас актуальна, как никогда. Говорят, что дни системных администраторов прошли, как миновала эпоха мейнфреймов. Но так ли это на самом деле?
Как это часто бывает в IT, ситуация изменилась. Появилась методология DevOps, но она не может существовать без человека с навыками системного администратора, то есть без Ops.

И я хорошо знаю, что испытывает сисадмин, когда понимает, сколько же всего он пока не умеет и как мало времени у него на то, чтобы этому научиться. До того как DevOps-подход приобрёл свой современный облик, я относил себя к категории Ops.

Я бы сказал, что не нужно воспринимать недостаток знаний как какую-то большую проблему. Но действительно ли всё так страшно? Это скорее профессиональный вызов.

Спрос уже превысил количество профессионалов в этой области. Web-scale-продукты основаны на Linux или другом программном обеспечении с открытым исходным кодом, а на рынке можно найти всё меньше специалистов, способных их обслуживать. Он должен иметь навыки автоматизации, чтобы управлять множеством серверов/узлов, и хорошо понимать принципы их работы, чтобы решать возникающие проблемы. У системного администратора уже не получится просто продолжать работать, не повышая свой уровень квалификации.

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

Всё как обычно: вначале необходимо изменить мышление. Итак, как же системному администратору перейти от привычного подхода в работе к новой концепции DevOps? Совсем непросто отказаться от подхода, которому вы следовали последние десять или двадцать лет, и начать всё делать по-новому, но это необходимо.

Эти практики подразумевают распределение изолированных систем, снижение вреда от багов и ошибок, частое и своевременное обновление ПО, налаженное взаимодействие между разработчиками (Dev) и администраторами (Ops), а также постоянное тестирование не только кода, но и всей структуры в рамках процесса непрерывной интеграции и доставки (CI/CD). В первую очередь важно понять, что DevOps — это не конкретная должность в компании, а набор определённых практик.

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

Сейчас написание сценариев (скриптов), которыми системные администраторы пользуются для автоматизированной установки патчей на сервере, управления файлами и учётными записями, для устранения неполадок и составления документации, уже считается устаревшим. Чего вам может не хватать как специалисту по Ops, так это навыков программирования. В относительно простых случаях сценарии по-прежнему применяются, но концепция DevOps подразумевает решение крупномасштабных задач, будь то внедрение, тестирование, работа со сборками или развёртывание.

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

Чтобы оставаться востребованным специалистом, нужно приобрести актуальные навыки — освоить как минимум один язык программирования, например Python. Что делать? Совсем необязательно становиться экспертом, однако знание одного из языков программирования (это может быть Python, Bash или даже Powershell), безусловно, станет преимуществом. Человеку, который профессионально занимается администрированием, это может показаться сложным, поскольку он привык думать, что программируют только разработчики.

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

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

Но насколько верно это утверждение?

Системный администратор: один в поле воин

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

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

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

Один из примеров использования сценариев — это управление учётными записями пользователей и групп. Он также будет отвечать за обновление аппаратного обеспечения, проверку и анализ журналов, аудит безопасности, установку патчей на сервере, устранение неполадок, анализ первопричин и автоматизацию — как правило, посредством сценариев PowerShell, Python или Bash. Автоматизация посредством сценариев позволяет высвободить время для решения более важных инфраструктурных задач, например для обновления коммутаторов и серверов и выполнения других проектов, влияющих на прибыльность компании, в которой администратор работает (хотя и принято считать, что IT-отдел не приносит доход напрямую). Создание учётных записей пользователей и назначение разрешений — задача чрезвычайно утомительная, поскольку пользователи появляются и исчезают почти каждый день.

Иногда системные администраторы работают как члены большой команды, объединяющей, к примеру, администраторов Linux, Windows, баз данных, хранилищ и так далее. Задача системного администратора — не тратить время впустую и экономить деньги компании любыми возможными способами. Например, смена в одной временной зоне в конце дня передаёт дела следующей смене в другой временной зоне, чтобы процессы не останавливались (follow-the-sun); или у сотрудников обычный рабочий день с 9 утра до 5 вечера; или же это работа в круглосуточном дата-центре. Рабочий график тоже бывает разным.

У команд и отделов, в которых они работают, обычно не хватает ресурсов, но при этом все стараются выполнять ежедневные задачи в полном объёме. Системные администраторы со временем научились мыслить стратегически и сочетать важные дела с рутинными задачами.

DevOps: разработка и обслуживание едины

DevOps — это своего рода философия процессов разработки и обслуживания. Такой подход в мире IT стал поистине новаторским.

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

Специалисты по обслуживанию должны поддерживать разработчиков, а перед разработчиками стоит задача разбираться не только в API, используемых в системах. В основе DevOps — контроль за разработкой и функционированием ПО на протяжении всего жизненного цикла. Они должны понимать, что находится «под капотом» (то есть как функционирует аппаратное обеспечение и операционные системы), чтобы лучше справляться с ошибками, решать проблемы и взаимодействовать со специалистами по обслуживанию.

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

Как системные администраторы, так и специалисты DevOps заинтересованы в оперативном масштабировании, снижении количества ошибок, а также в быстром поиске и устранении существующих ошибок. Тема автоматизации становится всё более актуальной. Системные администраторы отвечают за такие облачные сервисы, как AWS, Azure и Google Cloud Platform. Таким образом, автоматизация — это понятие, где две области сходятся. Они должны понимать принципы непрерывной интеграции и доставки и то, как использовать в работе инструменты типа Jenkins.

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

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

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

Скорее всего, вы никогда не выучите все команды Git, но точно поймёте, почему этот инструмент считается главным в коммуникации и совместной работе над программным обеспечением. Git содержит в себе массу возможностей. Основательное знание Git очень важно, если вы работаете в команде DevOps.

Существует множество онлайн-курсов и книг, которые помогут изучить эту тему с нуля и стать профессионалом с конкретными навыками. Если вы системный администратор, то вам нужно лучше изучить Git, понять, как строится управление версиями и запомнить распространённые команды: git status, git commit -m, git add, git pull, git push, git rebase, git branch, git diff и другие. Есть также замечательные шпаргалки с командами Git, поэтому зубрить их все необязательно, но чем больше вы пользуетесь Git, тем проще вам будет.

Заключение

В конечном счёте вы сами решаете, нужно ли вам становиться специалистом DevOps или лучше остаться системным администратором. Как видите, для перехода требуется обучение, но чем раньше вы начнёте, тем лучше. Выберите язык программирования и параллельно изучайте такие инструменты, как Git (контроль версий), Jenkins (CI/CD, непрерывная интеграция) и Ansible (конфигурирование и автоматизация). На каком бы варианте вы ни остановились, не забывайте, что нужно постоянно учиться и совершенствовать свои навыки.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть