---------------------------------------------------------------------------------
Выбираю•IT помогает в выборе будущей профессии абитуриентам
и студентам, в развитии профессиональных навыков молодым специалистам,
в выборе дополнительных программ обучения и специальных курсов. " /> ---------------------------------------------------------------------------------
Выбираю•IT помогает в выборе будущей профессии абитуриентам
и студентам, в развитии профессиональных навыков молодым специалистам,
в выборе дополнительных программ обучения и специальных курсов. " />

Портал издательского дома "ПОЛОЖЕВЕЦ и ПАРТНЕРЫ"
---------------------------------------------------------------------------------
Выбираю•IT помогает в выборе будущей профессии абитуриентам
и студентам, в развитии профессиональных навыков молодым специалистам,
в выборе дополнительных программ обучения и специальных курсов.

О портале Каталог профессий

DevOps-инженер

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

Одна из новых тенденций в области ИТ-технологий нашла отражение в становлении профессии DevOps-инженера. Эта специальность функционирует на стыке нескольких направлений, включая администрирование, разработку, тестирование. Мы попросили представителей компаний рассказать о знаниях, навыках, опыте, актуальных для новой ИТ-профессии – DevOps-инженера

1. DevOps-инженер: какими знаниями и навыками он должен обладать?

2. Каков инструментарий DevOps-инженера?

3. Каковы требования компании к уровню образования потенциальных сотрудников?

4. Какие требования предъявляются к опыту работы?

5. Есть ли особые требования, которые обусловлены спецификой деятельности компании?


Александр Орловский, системный архитектор Tribuna Digital (Sports.ru + Tribuna.com)

Сначала очень хотел бы кое-что прояснить. DevOps – это в первую очередь движение, направленное в сторону смычки города и деревни (зачеркнуто) – разработки и эксплуатации. Движение DevOps – ответвление (и продолжение) Agile-движения. Можно долго рассказывать, как оно появилось и почему, но в интернете об этом уже достаточно информации. В Википедии вроде бы неплохо написано. Есть как минимум две хорошие книги по теме: одна – переведенная: «Проект «Феникс», и одна на английском языке: «Site Reliability Engineering», доступная по ссылке https://landing.google.com/sre/book.html.

Если вернуться к вопросу, то, кажется, понятно, откуда он появился. Сейчас есть множество вакансий на DevOps-инженера – это следствие как шумихи (хайпа) вокруг термина, так и непонимания бизнесом, что такое DevOps и зачем он нужен. За такими вакансиями может скрываться как позиция настройщика CI/CD-инструментария, так и классическая позиция сисадмина со знанием какого-нибудь скриптового языка, кроме Bash, и умением писать плейбуки в Ansible, например.

Давайте, учитывая cпецифику журнала, договоримся, что все вопросы ниже, где фигурирует DevOps-инженер, – это вопросы про системного администратора, который строит и поддерживает современную ИT-инфраструктуру. Венцом технической карьеры такого специалиста является роль Site Reliability Engineer (SRE) – наиболее строгая к уровню знаний и навыков специальность, востребованная в современных Big Scale ИT-архитектурах (Google, Netflix, Amazon, Uber и т.п.).

1. Знание базовых сетевых протоколов (TCP/UDP) и устройства интернета;

  • знание популярных современных протоколов высокого уровня (например, HTTP1.1/2);
  • устройство современных операционных систем (обычно Linux), знание того, как работают ядро, файловая система, подсистема памяти;
  • уметь писать и особенно читать код на каком-нибудь из языков, на которых пишут современное ПО (Python/Go/Java/C);
  • устройство баз данных.

2. Главный инструментарий – развитый мыслительный аппарат, хорошо заточенный на решение проблем. Технический тулинг без хороших базовых знаний будет непросто или даже невозможно правильно применять.

На самом деле есть очень хорошая книга Brendan Gregg, где довольно много написано про инструментарий и о том, что надо знать людям, эксплуатирующим современные системы: «Systems Performance: Enterprise and the Cloud» (http://www.brendangregg.com/sysperfbook.html).

На сайте http://www.brendangregg.com Брэндана есть очень много интересного по данной тематике, и он постоянно обновляется. Очень известна его схема с обзором инструментария SRE для Linux (вот тут можно посмотреть ее последнюю версию: http://www.brendangregg.com/linuxperf.html).

3. Хочется работать рядом с людьми, у которых есть какой-то кругозор и знания об окружающем мире, которые умеют учиться и делать выводы сами. Ну и, конечно, надо знать и любить то, чем занимаешься. Звучит банально, но сложно ответить лучше.

В общем, обычно так получается, что это люди с законченным высшим техническим образованием.

4. Зависит от позиции. Обычно не обязательно иметь богатый трудовой стаж, достаточно продемонстрировать хорошие знания в тех областях, которые описаны в вакансии.

Для нас это знание одного из динамических языков программирования Perl/Python/PHP, понимание того, как работает и устроен веб, основы баз данных и знание Linux. Знакомство с конкретными технологиями типа Nginx, Postges, Ansible – это плюс, но не является обязательным.

5. Да, у нас есть как минимум одно такое условие – хотя бы немного интересоваться спортом, причем киберспорт тоже очень даже считается. Так будет интереснее работать над проектами компании и проще найти общий язык с коллегами.

Евгений Буданов, системный инженер компании ООО «Прогресс софт»

1. В первую очередь Linux и его устройство. Обязательны навыки написания скриптов на любом скриптовом языке и систем CI/CD. Нередко требуется знание сетей.

2. Jenkins, Ansible, Docker в первую очередь. Ну и утилиты Linux: от всем знакомого ping до strace. Ну и мониторинг в обязательном порядке.

3. У нас в компании кого только нет. В отделе девопсов кто только не работает, если смотреть по диплому. Поэтому четких требований не существует. В первую очередь требуются знания и опыт.

4. Опыт развертывания приложений в больших проектах. От сотни машин и выше. Умение анализировать.

5. Нет. Разве что желательна универсальность, иногда требуется разворачивать и настраивать разные операционные системы.

Александр Мишин, главный эксперт департамента разработки решений «Энвижн Груп»

1. DevOps (Development Operations) – это методология тесного взаимодействия между разработчиками и системными администраторами, поэтому от DevOps-инженера требуется комплекс навыков из областей системного администрирования, разработки, автоматизации процессов в крупных инфраструктурах, в том числе знание облачных технологий, понимание принципа Continuous integration и Continues Delivery. Конечно, конкретные требования к DevOps-инженеру могут варьироваться в зависимости от размера инфраструктуры, используемых технологий, но можно выделить ряд ключевых критериев:

  • глубокие навыки администрирования операционных систем (Linux и Windows);
  • умение работать с различными системами виртуализации и облачными технологиями VMware, KVM, Linux-контейнерами (OpenVZ, Docker) для автоматического развертывания операционных систем, приложений и баз данных. Опыт развертывания приложений в Amazon AWS, Google или Azure станет дополнительным преимуществом;
  • администрирование баз данных;
  • экспертные знания в области сетевого взаимодействия, аппаратных сред и систем хранения данных, это необходимо для проектирования инфраструктуры для высоконагруженных приложений и систем уровня mission critical со значительными объемами хранения и обработки информации;
  • знание принципов и технологий отказоустойчивости, навыки нагрузочного тестирования;
  • уверенные знания скриптовых языков для автоматизации процессов и обращения к RESTful API. Обычно требуется знание хотя бы двух скриптовых языков, таких как Bash, Python, JavaScript, Perl, Ruby;
  • большим преимуществом будет знание языков программирования (С++, С#, Java);
  • знание инструментов управления автоматическим развертыванием приложений, конфигураций (Puppet, Chef, Ansible, SaltStack) и систем CI (TeamCity, Jenkins);
  • навыки работы с системами мониторинга.

Личные качества кандидата не менее важны для DevOps-инженера.

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

Коммуникабельность, поскольку придется налаживать взаимодействие с различными подразделениями: разработчиками, тестировщиками, проектными менеджерами.

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

2. Системы управления автоматическим развертыванием конфигураций (Puppet, Chief, Ansible, SaltStack);

  • системы Continious Integration (Teamcity, Jenkins, Gitlab CI);
  • системы сборки (Ant, Maven, Gradle);
  • облачные платформы (Amazon AWS, Microsoft Azure, Rackspace, OpenStack);
  • платформы виртуализации (VMWare, KVM, Xen) и контейнеры (Docker, OpenVZ, LXC);
  • системы сбора логов (Splunk, Greylog, Logstash);
  • системы мониторинга (Zabbix, Nagios, Cacti, Splunk);
  • Orchestration – системы автоматического управления, масштабирования и развертывания контейнеров (Kubernetes, Apache Mesos);
  • системы контроля версий Git, Hg, Svn;
  • трекинговые системы JIRA и другие.

3. Обычно в требованиях к соискателю на должность DevOps-инженера указывается высшее техническое образование.

4. Основные требования предъявляемые к опыту работы соискателя:

  • опыт администрирования Linux систем от 3 лет;
  • опыт администрирования высоконагруженных систем;
  • опыт работы с системами виртуализации и Linux-контейнерами;
  • хорошее знание скриптовых языков Bash, Python;
  • знание методологий Continues Integration и Continues Delivery;
  • опыт настройки систем CI (Teamcity, Jenkins, Gitlab CI);
  • опыт настройки систем управления автоматическим развертыванием конфигураций (Puppet, Chief, Ansible, SaltStack);
  • опыт работы с системами контроля версий кода;
  • опыт настройки систем мониторинга (Zabbix, Nagios, Cacti, Splunk).

Дополнительно:

  • опыт программирования на одном из языков (С++, С#, Java).

Личные качества:

  • стремление к новым знаниям;
  • ответственность;
  • готовность к ненормированному графику работы;
  • умение находить общий язык с различными ИТ-подразделениями.

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

Татьяна Колесникова, старший инженер по верификации ПО ГК РЕЛЭКС

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

2. DevOps-инженер в своей работе использует широкий набор инструментов для реализации Continuous Integration (Bamboo, Jenkins, TeamCity), управления конфигурациями (Chef, Ansible, Puppet), логирования и мониторинга (Graylog, Logstash), а также скриптинг, облачные технологии, системы контроля версий, сети, безопасность, технологии виртуализации, Agile, архитектура ПО, документирование.

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

4. Особых требований к опыту работы кандидата на позицию DevOps-инженера у нас нет. Естественно, чем дольше человек работает, тем разнообразнее его опыт, тем больше навыков он приобретает. Иногда не так важно количество лет работы, сколько количество проектов, в которых кандидат принимал участие. В каждом случае это индивидуальный подход к специалисту и его опыту работы.

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

Николай Добровольский, вице-президент Parallels

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

2. К основным инструментам DevOps-инженеров можно отнести системы разворачивания и конфигурирования различных сервисов и приложений. Нужно отлично знать и работать с системами управления конфигурациями, Chef и Ansible. Первая достаточно глобальная и сложная, вторая существенно проще, но ее возможности скромнее. Кроме того, важно уметь пользоваться планировщиком заданий Jenkins.

3. У нас достаточно высокие требования к кандидатам. Хороших DevOps-инженеров мало. Специалисты высокого уровня имеют достаточно опыта в обеих областях и крайне востребованы. Во-первых, они хорошие сисадмины, во-вторых, замечательные разработчики. В вузах на данном этапе никто целенаправленно DevOps-инженеров не готовит. Как правило, это люди, которые имеют значительный личный опыт и эволюционируют постепенно.

4. Знание Chef, Ansible и Jenkins. Без знания этих трех слов мы не рассматриваем человека как DevOps. Возможно, он хороший человек, но это гигиенический минимум. Без него никак. Поскольку скрипты у нас пишутся в основном на Python, его знание будет плюсом соискателю.

5. Обычно нет. Как правило, мы смотрим на опыт программирования и системного администрирования. Если есть и то и другое плюс реальная история в DevOps, человек нам интересен. Кроме того, важна способность работать в команде, поскольку от команды DevOps зависит продуктивность большого числа людей. Плохой DevOps-инженер способен свести на нет усилия команды разработчиков из пятидесяти и более человек. Некорректно работающая система способна затормозить производственный процесс.

Левон Авакян, Live Operations Team Lead в СООО «Гейм Стрим», минском центре разработки Wargaming

1. DevOps – это набор практик на стыке разработки, тестирования и системного администрирования. Поэтому, во-первых, DevOps-инженер должен понимать, как функционирует ОС: от устройства подсистем процессора, памяти и сети до файловых систем. Для DevOps важно знать системные утилиты, которые помогают управлять, мониторить и отлаживать приложения. Еще сейчас часто используется виртуализация, поэтому нужно изучить, какая она бывает, когда и как ее применять.

Во-вторых, хороший DevOps-инженер имеет представление о работе основных веб-сервисов, реляционных и нереляционных СУБД, очередей сообщений.

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

2. Главная задача DevOps – стандартизация окружений, автоматизация сборки и выпуска продуктов.

Когда задумываются об автоматизации каких-то рутинных процессов, то всегда вспоминают про старые добрые командные оболочки. Но автоматизация шагнула далеко вперед, сейчас основными утилитами для DevOps являются системы управления конфигурацией (Puppet, Chief, Ansible, etc) и CI-системы (TeamCity, Jenkins, Bamboo). Очень распространены контейнеры, соответственно, различные системы оркестрации теперь тоже на службе у DevOps.

На этом можно было бы и закончить, но обычно «из коробки» ничего не годится. Приходится либо разрабатывать что-то для себя, либо расширять уже существующие утилиты.

Также не стоит забывать, что мониторинг является одной из задач DevOps. Тут на помощь приходят специальные системы, обычно это Nagios, Zabbix, Graphite/Graphana, Prometeos и т. д.

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

4. Честно говоря, вопрос достаточно неоднозначный. Измерять опыт в годах глупо, ведь неизвестно, чем точно занимался человек на прежнем месте работы. Кто-то 10 лет поддерживал одну монолитную систему и имеет очень узкую специализацию, а кто-то за 2 года автоматизировал 3-5 проектов.

5. Разработка в Wargaming занимается разными приложениями: серверное мультикластерное Big World Tech для самих игр; мобильные, Desktop Windows, Mac OS, PS4, Xbox. Огромный пласт занимает веб. Каждое из направлений использует свой стек технологий, языков программирования: С++, Python, AS3, Erlang, JavaScript, PHP. Разнятся и СУБД (PostgreSQL, MySQL). Поэтому говорить о специфике можно только в рамках определенного подразделения.

Андрей Сизов, ведущий DevOps-инженер в компании JetBrains

1. Это достаточно новое направление в ИT, и для него нет устоявшихся требований, т.к. каждая компания понимает и внедряет DevOps по-своему. Прежде всего DevOps-инженер должен иметь хороший технический кругозор, т.к. это работа на стыке программирования и администрирования. В идеале нужно иметь опыт программиста, помноженный на опыт администратора, но таких специалистов на рынке крайне мало. В основном текущие DevOps-инженеры – это те администраторы, которые последние несколько лет плотно занимались поддержкой веб-приложений и накопили опыт в этом направлении. С появлением Сloud-провайдеров архитектура веб-приложений претерпела существенные изменения. В процессе разделения монолитных приложений на микросервисы появляются новые шаблоны проектирования приложений, которые программисты вместе с DevOps-инженерами могут использовать для создания распределенных высоконагруженных систем.

2. Повторюсь, профессия новая и устоявшегося «джентльменского набора» не существует. Почти весь инструментарий для DevOps – это продукты с открытым исходным кодом со всеми преимуществами данного подхода. Сейчас в тренде контейнеризация, автоматизация и оркестрация. Мы выбрали Docker, Ansible и Kubernetes. В качестве Сloud-провайдера выбрали AWS. Также мы используем собственные продукты: IntelliJ IDEA – для разработки и поддержки скриптов деплоймента, Upsource – для Code Review в команде, на TeamCity полностью построен процесс CI/CD.

3. Нам важно понимание, как работают распределенные системы в интернете. Что касается образования, то мы смотрим на то, как человек самообучается, какие информационные ресурсы он посещает, что его интересует в ИT-индустрии. Большим плюсом является наличие собственных проектов, код которых можно посмотреть, например, на GitHub.

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

5. Нашей основной целью является предоставление сервисов для разработчиков, доступных 24/7. Одно из основных требований – это ответственность за свою часть проекта. Если что-то пойдет не так, то нужно уметь разобраться в проблеме и вернуть сервис в рабочее состояние.

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

Виктор Востряков, менеджер группы системного администрирования Acronis

1. Прежде всего давайте разберемся, что такое DevOps. DevOps – это акроним от development и operations, за которым скрывается подход к разработке ПО, подразумевающий активное взаимодействие программистов, тестировщиков и системных администраторов при разработке продукта.

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

Если задаться целью перечислить необходимые навыки, то получится следующий список:

  • Linux (администрирование, программирование);
  • виртуализация (Docker, VZ, LXC);
  • основы СУБД;
  • основы LAN;
  • практики DevOps;
  • цикл поставки и жизненный цикл продукта;
  • навыки автоматизации процессов.

2. Разобравшись со знаниями, можно переходить непосредственно к «рабочим инструментам» DevOps-инженера. Как уже отмечалось выше, его зона ответственности лежит на пересечении того, что делают в отделе разработки, тестирования и системного администрирования, а следовательно, и инструменты, которыми он пользуется, будут аналогичны тем, что используются в каждом из отделов.

В must have входят системы управления конфигурациями вроде Puppet и Ansible, такие системы контроля версиями, как SVN и Git, и CI-системы.

К этому же списку необходимо добавить еще и знание языков программирования Python и Bash. Переходя от must have к допам, можно упомянуть системы для развертывания на голом «железе», системы оркестрации и управления серверами вроде Ansible Tower. Это минимальный набор инструментария DevOps-инженера.

3-5. Если говорить конкретно про Acronis, то в дополнение к описанным выше навыкам и умениям к нашим инженерам мы предъявляем следующий набор требований:

  • высшее образование;
  • опыт работы в качестве DevOps-инженера/разработчика/администратора от 3 лет, а также участие в реальных проектах;
  • знание английского языка на уровне Advance;
  • готовность к зарубежным командировкам.

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

Александр Бородин, Performance & QA manager Virtuozzo

1. DevOps-инженер, как я его понимаю, – это такой разработчик, который разбирается в том, как поддерживается разрабатываемый продукт в production-окружении, и участвует в этой поддержке – т.е. в развертываниях, обновлениях и т.д.

Такой инженер может не обладать детальными знаниями технологий, используемых в продукте, и не очень хорошо разбираться в его внутреннем устройстве – до тех пор, пока это знание не будет необходимо для troubleshooting или тонкой настройки в production.

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

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

2. Про какой-то специальный инструментарий DevOps мне сказать сложно, часто это просто adhoc-скрипты по развертыванию и мониторингу, при чуть большей подкованности – всевозможные средства непрерывной интеграции, мониторинга и т.д. Их очень много, и описывать нет смысла.

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

4. В компании требования к опыту работы для разных позиций, разумеется, разные, в компании Virtuozzo есть и программа стажировки для студентов Физтеха, но для DevOps очевидно важен опыт администрирования/настройки CI. Я отбирала кандидатов с не менее чем двухлетним опытом.

5. Специфические требования, конечно, есть – нужно понимать, что такое виртуализация, и почему она такая.

Подготовил Игорь Штомпель

 
Проект Издательского дома "Положевец и Партнеры"

По вопросам партнерства обращайтесь по электронной почте chooseit@samag.ru

Телефон: +7 499 277-12-45