- Почему системные администраторы должны становиться DevOps-инженерами
- Системный администратор: один в поле воин
- DevOps: разработка и обслуживание едины
- Кто такой DevOps-инженер, что он делает, сколько зарабатывает и как им стать
- Чем занимается DevOps-инженер
- Что нужно для старта в профессии
- Что должен знать DevOps
- Разработка
- Операционные системы
- Облака
- Системы оркестрации и микросервисы
- Что ещё попробовать будущему DevOps
- Почему стоит начать изучать DevOps сейчас
- Сколько зарабатывают DevOps
- Что смотреть и читать для роста в профессии
- Где учиться на DevOps
Почему системные администраторы должны становиться DevOps-инженерами
Для обучения в жизни нет лучшего времени, чем сегодня.
На дворе 2019 год, и тема DevOps сейчас актуальна, как никогда. Говорят, что дни системных администраторов прошли, как миновала эпоха мейнфреймов. Но так ли это на самом деле?
Как это часто бывает в IT, ситуация изменилась. Появилась методология DevOps, но она не может существовать без человека с навыками системного администратора, то есть без Ops.
До того как DevOps-подход приобрёл свой современный облик, я относил себя к категории Ops. И я хорошо знаю, что испытывает сисадмин, когда понимает, сколько же всего он пока не умеет и как мало времени у него на то, чтобы этому научиться.
Но действительно ли всё так страшно? Я бы сказал, что не нужно воспринимать недостаток знаний как какую-то большую проблему. Это скорее профессиональный вызов.
Web-scale-продукты основаны на Linux или другом программном обеспечении с открытым исходным кодом, а на рынке можно найти всё меньше специалистов, способных их обслуживать. Спрос уже превысил количество профессионалов в этой области. У системного администратора уже не получится просто продолжать работать, не повышая свой уровень квалификации. Он должен иметь навыки автоматизации, чтобы управлять множеством серверов/узлов, и хорошо понимать принципы их работы, чтобы решать возникающие проблемы.
Прежде чем стать членом команды DevOps, вам предстоит проделать довольно долгий, но интересный путь, изучая новые технологии и разнообразные инструменты, необходимые для того, чтобы обслуживать систему согласно стандартам DevOps.
Итак, как же системному администратору перейти от привычного подхода в работе к новой концепции DevOps? Всё как обычно: вначале необходимо изменить мышление. Совсем непросто отказаться от подхода, которому вы следовали последние десять или двадцать лет, и начать всё делать по-новому, но это необходимо.
В первую очередь важно понять, что DevOps — это не конкретная должность в компании, а набор определённых практик. Эти практики подразумевают распределение изолированных систем, снижение вреда от багов и ошибок, частое и своевременное обновление ПО, налаженное взаимодействие между разработчиками (Dev) и администраторами (Ops), а также постоянное тестирование не только кода, но и всей структуры в рамках процесса непрерывной интеграции и доставки (CI/CD).
Наряду с изменением образа мышления нужно научиться поддерживать инфраструктуру и обеспечивать её стабильную работу, надёжность и доступность для непрерывной интеграции и доставки приложений, сервисов и ПО.
Чего вам может не хватать как специалисту по 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 на одной стороне трудится команда разработчиков программного обеспечения, а на другой — команда специалистов по обслуживанию. Частенько к ним присоединяются специалисты по управлению продуктом, тестировщики и проектировщики пользовательского интерфейса. Объединив усилия, эти специалисты оптимизируют рабочие операции, чтобы быстро выкатывать новые приложения и обновлять код с целью поддержки и улучшения эффективности работы всей компании.
В основе DevOps — контроль за разработкой и функционированием ПО на протяжении всего жизненного цикла. Специалисты по обслуживанию должны поддерживать разработчиков, а перед разработчиками стоит задача разбираться не только в API, используемых в системах. Они должны понимать, что находится «под капотом» (то есть как функционирует аппаратное обеспечение и операционные системы), чтобы лучше справляться с ошибками, решать проблемы и взаимодействовать со специалистами по обслуживанию.
Системные администраторы могут перейти в команду DevOps, если они хотят изучать новейшие технологии и открыты для инновационных идей и решений. Как я уже говорил, им необязательно становиться полноценными программистами, но освоение языков программирования, таких как Ruby, Python или Go, поможет им стать очень полезными членами команды. Хотя системные администраторы традиционно выполняют всю работу самостоятельно и часто воспринимаются как одиночки, в DevOps их ждёт совершенно противоположный опыт, когда все участники процесса взаимодействуют друг с другом.
Тема автоматизации становится всё более актуальной. Как системные администраторы, так и специалисты DevOps заинтересованы в оперативном масштабировании, снижении количества ошибок, а также в быстром поиске и устранении существующих ошибок. Таким образом, автоматизация — это понятие, где две области сходятся. Системные администраторы отвечают за такие облачные сервисы, как AWS, Azure и Google Cloud Platform. Они должны понимать принципы непрерывной интеграции и доставки и то, как использовать в работе инструменты типа Jenkins.
Кроме того, системные администраторы должны применять такие средства настройки и управления, как Ansible, необходимые для параллельного развёртывания десяти или двадцати серверов.
Основное понятие — инфраструктура как код. Программное обеспечение во всём. По сути, чтобы профессия системного администратора не потеряла актуальности, нужно лишь немного сменить акцент. Системные администраторы занимаются обслуживанием и должны уметь эффективно взаимодействовать с разработчиками, и наоборот. Как говорится, одна голова хорошо, а две — лучше.
И последняя деталь в этом механизме — это Git. Работа с Git — одна из традиционных каждодневных обязанностей системного администратора. Эта система управления версиями широко используется разработчиками, специалистами DevOps, Аgile-командами и многими другими. Если ваша работа связана с жизненным циклом ПО, то совершенно точно вы будете работать с Git.
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-инженер, что он делает, сколько зарабатывает и как им стать
DevOps-инженеры — это многопрофильные специалисты, которые умеют автоматизировать процессы и знают, как работают разработчики, QA и менеджеры. Они умеют программировать, быстро осваивают сложные инструменты и не теряются перед незнакомой задачей. DevOps-инженеров мало — им готовы платить по 200–300 тысяч рублей, но вакансий всё равно много.
Дмитрий Кузьмин рассказывает, чем конкретно занимается DevOps и что нужно изучить, чтобы претендовать на такую должность. Бонусом — важные ссылки на книги, видео, каналы и профессиональное сообщество.
Чем занимается DevOps-инженер
В ситуации с DevOps важно не путать термины. Дело в том, что DevOps — это не какое-то конкретное направление деятельности, а профессиональная философия. Это методология, которая помогает разработчикам, тестировщикам и системным администраторам работать быстрее и эффективнее за счёт автоматизации и бесшовности.
Соответственно, DevOps-инженер — это специалист, который внедряет эту методологию в процесс работы:
- На этапе планирования DevOps-инженер помогает решить, какую архитектуру будет использовать приложение, как оно будет масштабироваться, выбрать систему оркестрации.
- Дальше настраивает сервера, автоматизированную проверку и заливку кода, проверку среды.
- Затем автоматизирует тестирование, решает задачи по деплою.
- После релиза важно собирать обратную связь от пользователей и внедрять улучшения. DevOps делает так, чтобы пользователи не замечали этих улучшений, а процесс обновления был непрерывным.
- И заодно решает десятки задач, которые помогают наладить систему работы разработчиков, QA, системных администраторов и менеджеров.
Всё, что написано выше, происходит в близких к идеальным проектах. В реальном же мире приходится стартовать в проекте, где планирование пропустили, с архитектурой ошиблись, а об автоматизации задумались, когда все проекты встали. И разобраться во всех этих проблемах, решить их и сделать так, чтобы всё работало — ключевой навык DevOps-специалиста.
На рынке кадров есть путаница. Иногда бизнес ищет DevOps-инженеров на позицию системного инженера, билд-инженера или кого-то ещё. Обязанности в зависимости от размера компании и направления тоже меняются — где-то ищут человека на консалтинг, где-то просят всё автоматизировать, а где-то требуют выполнять расширенные функции системного администратора, умеющего программировать.
Что нужно для старта в профессии
Вход в профессию требует предварительной подготовки. Просто прийти на курсы с нуля, ничего не понимая в IT, и выучиться до уровня junior не получится. Нужен технический бэкграунд:
- Идеально, если вы работаете полгода и больше системным администратором, специалистом по эксплуатации или тестированию. Или хотя бы имеете представление о том, как приложения стартуют, в какой среде они могут развиваться и что делать, если вы видите ошибку. Если опыта работы нет, пройдите любой курс по администрированию Linux, повторяя всё происходящее на домашней машине.
- Разберитесь, как работают сетевые технологии — научитесь устанавливать, настраивать и управлять локальными и глобальными сетями.
- Посмотрите, как и из чего устроено программирование — напишите несколько скриптов на Python или Go, попробуйте понять принципы ООП (Объектно-ориентированное программирование), почитайте про общий цикл разработки продукта.
- Пригодится знание технического английского — общаться на свободные темы не обязательно, достаточно уметь читать документацию и интерфейсы.
Не обязательно знать всё перечисленное досконально, для старта обучения DevOps достаточно минимального уровня подготовки. Если такой технический бэкграунд есть, попробуйте записаться на курсы.
Что должен знать DevOps
Хороший DevOps-инженер — это многопрофильный специалист с очень большим кругозором. Для успешной работы вам придётся разобраться сразу в нескольких IT-направлениях.
Разработка
DevOps напишет скрипт, который поможет разработчикам устанавливать код на сервер. Сделает программу, которая «на лету» тестирует отзывчивость баз данных. Напишет приложение для контроля за версионностью. Наконец, просто заметит потенциальную проблему в разработке, которая может появиться на сервере.
Сильный DevOps-специалист знает несколько языков, подходящих для автоматизации. Разбирается в них не досконально, но быстро напишет небольшую программу или прочитает чужой код. Если раньше с разработкой не сталкивались, начните с Python — у него простой синтаксис, на нём легко работать с облачными технологиями, есть много документации и библиотек.
Операционные системы
Знать все возможности каждой версии каждой системы невозможно — на такое обучение можно потратить тысячи часов и толку не будет. Вместо этого хороший DevOps понимает общие принципы работы на любой ОС. Хотя, судя по упоминаниям в вакансиях, большинство сейчас работают в Linux.
Хороший инженер понимает, в какой системе лучше разворачивать проект, какими инструментами пользоваться и какие потенциальные ошибки могут появиться в процессе внедрения или эксплуатации.
Облака
Рынок облачных технологий растёт в среднем на 20-25% в год — такая инфраструктура позволяет автоматизировать операции тестирования кода, сборки приложений из компонентов, доставки обновлений до пользователей. Хороший DevOps разбирается как в полностью облачных, так и в гибридных решениях.
В стандартных же требованиях к инженерам обычно значится GCP, AWS и Azure.
Сюда можно отнести и владение инструментами CI/CD. Обычно для непрерывной интеграции используется Jenkins, но стоит попробовать и аналоги. Их много, например, Buddy, TeamCity и Gitlab CI. Полезным будем изучить Terraform — это декларативный инструмент, помогающий удалённо поднимать и настраивать инфраструктуру в облаках. И Packer, который нужен для автоматического создания образов ОС.
Системы оркестрации и микросервисы
У микросервисной архитектуры есть много преимуществ — стабильность, возможность быстрого масштабирования, упрощение и повторные использования. DevOps понимает, как работают микросервисы, и может предупредить потенциальные проблемы.
Досконально знает Docker и Kubernetes. Понимает, как работают контейнеры, как строить систему так, чтобы можно было отключать часть из них без последствий для общей системы в целом. Например, умеет построить Kubernetes-кластер при помощи Ansible
Что ещё попробовать будущему DevOps
Перечислять инструменты, которые могут пригодиться в работе DevOps-инженеру, можно бесконечно. Кто-то работает над оркестрацией проектов, другие большую часть времени занимаются автоматизацией развёртывания и тестирования, третьи повышают эффективность в управлении конфигурациями. В процессе будет понятно, куда копать и какие проекты пригодятся.
Вот ещё небольшой минимум, который поможет на старте:
- Разберитесь, как работает Git и Github, если ещё не сталкивались с этим. Установите GitLab на свой сервер.
- Познакомьтесь с языками разметки JSON и YAML.
- Установите и попробуйте поработать в базах данных — не только в MySQL, но и NoSQL. Попробуйте MongoDB.
- Разберитесь, как управлять конфигурацией сразу нескольких серверов. Например, с помощью Ansible.
- Сразу настройте мониторинг нагрузки и логи. Попробуйте связку Prometheus, Grafana, Alertmanager.
- Поищите лучшие решения для деплоя под разные языки — достаточно просто познакомиться, внедрять и разбираться будете на тренировочном или рабочем проекте.
Почему стоит начать изучать DevOps сейчас
На рынке DevOps-инженеров — кадровый голод. Это условно подтверждается количеством и качеством вакансий:
- В России на одном только HeadHunter постоянно доступно более 2 тысяч рабочих мест по этому ключевому слову.
- И всего 1 900 человек разместили резюме.
Учитывая, что размещение резюме не означает активный поиск работы, получается, что на одного специалиста приходится две, а то и три вакансии — такой ситуации нет даже на популярном рынке веб-разработки. Добавьте сюда еще вакансии с Хабра и из Телеграм-каналов — нехватка специалистов огромная.
Обратите внимание на зарплатные требования соискателей
Не меньше востребован DevOps и в мире — если вы собрались на релокацию в США или Европу, то только на портале Glassdoor таких специалистов ищут больше 34 тысяч компаний. Из частых требований — опыт 1–3 года, умение работать с «облаками» и не бояться консалтинговых функций.
На фрилансе предложений в разы меньше — DevOps-инженеров в основном ищут в штат и на полный день.
Найти подходящий проект на фрилансе сложно, но можно
Условный карьерный путь DevOps-инженера можно представить примерно так:
- Полгода–год работает системным администратором в небольшой IT-компании. Параллельно изучает язык, подходящий для автоматизации.
- Интенсивно учится на курсах, примерно полгода.
- Переходит на другую работу — в компанию, которая продает облачные решения, филиал крупной корпорации, к разработчикам больших проектов. Проще говоря туда, где есть потребность в постоянной автоматизации и внедрении. На начальной позиции это примерно 100 тысяч рублей.
- Несколько лет активно работает и учится, увеличивает доход в несколько раз.
- Становится экспертом в профессиональном сообществе и переходит в консалтинг. Или растёт до системного архитектора или IT-директора.
DevOps — это сложно. Нужно сочетать в себе навыки сразу нескольких профессий. Стать человеком, который готов предложить улучшение там, где другие IT-специалисты даже не думают о чем-то другом. За это много платят, но и объем знаний потребуется большой.
Сколько зарабатывают DevOps
Средняя медианная зарплата по данным за второй квартал 2019 года у девопсов находится в вилке между 90 и 160 тысячами рублей. Есть предложения дешевле — в основном 60–70 тысяч.
Постоянно есть предложения до 200 тысяч, встречаются вакансии с зарплатой до 330 тысяч рублей.
Среди специалистов по эксплуатации DevOps оплачивается выше остальных. Источник: Хабр.Карьера
DevOps-инженеры, в том числе начинающие, сейчас требуются в крупные банки, корпорации, облачные сервисы, торговые системы и другие организации, которые заботятся о поддержании своих IT-решений.
Отличным кандидатом на младшую вакансию с зарплатой в 60–90 тысяч станет начинающий системный администратор с опытом около года и профильным дипломом.
Такой статистики нет, но по ощущениям, людям, у которых есть опыт в Linux, платят больше
Что смотреть и читать для роста в профессии
Чтобы погрузиться в мир DevOps, попробуйте сразу несколько источников информации:
- Cloud Native Computing Foundation [YouTube, ENG] — много видео с конференций и образовательных вебинаров.
- DevOps Channel [YouTube, RUS] — видео докладов с профессиональной конференции DevOps в России.
- The DevOps Handbook [книга, RUS] — одна из самых популярных книг про философию DevOps. В книге есть общие принципы методологии, она рассказывает, на что обращать внимание в первую очередь при работе на любом проекте.
- Thomas Limoncelli «The Practice of System and Network Administration» [книга, RUS] — много теории и принципов о том, как должно быть устроено системное администрирование.
- Devops Weekly [книга, ENG] — еженедельный обзор новостей о происходящем в DevOps по всему миру.
- Devops_deflope [Telegram, RUS] — новости индустрии, анонсы конференций, ссылки на новые интересные статьи и книги.
- Devops_ru [Telegram, RUS] — русскоязычный чат, где можно спросить совета и попросить помощи по конфигам.
- Devops.com — большой международный сайт со статьями, вебинарами, подкастами и колонками крупнейших компаний в индустрии.
- Hangops_Ru — русскоязычное сообщество инженеров DevOps и сочувствующих.
- Лучшие книги по тому языку, которые вы будете использовать для разработки.
Где учиться на DevOps
Получить структурированные знания можно на курсе «DevOps-инженер» в Нетологии. Вы научитесь полному циклу методологии:
- Узнаете, как анализировать код и быстро использовать инструменты контроля версий.
- Разберётесь в лучших практиках непрерывной интеграции, тестирования и сборки.
- Научитесь управлять изменениями в приложениях и автоматизировать их.
- На практике изучите инструменты конфигурации и управления.
- Привыкните сразу выбирать и настраивать нужные службы для мониторинга.
Бонусом получите курс по программированию на Python — будете решать задачи ещё быстрее и проще. Всё на практике — используем AWS, GCP или Azure.
Этого достаточно, чтобы из начинающего инженера или системного администратора превратиться в востребованного DevOps и приятно поднять свой ценник на рынке труда.
Источник