В современном IT сообществе многие слышали или даже сталкивались с такой должностью, как DevOps. Так кто же они? Разные источники трактуют это понятие по-разному, но все определения сводятся к тому, что это человек - связующее звено между разработкой и ИТ инфраструктурой, позволяющий улучшишь процесс разработки и доставки ПО.
Данная позиция стала следствием развития гибких методологий разработки (Scrum, Agile), которые требуют:
- изменение, развитие инфраструктуры в максимально безопасном режиме, незаметным для конечных клиентов;
- доставку ПО до клиента в максимально короткие сроки;
- автоматизация тестирования и доставки ПО.
Во многих компаниях данная позиция называется «Инженер DevOps» и ниже мы рассмотрим его зону ответственности и основные пути развития.
Зона ответственности DevOps
В ИТ компаниях у DevOps широкая зона ответственности. Они взаимодействуют как с разработчиками, так и с другими ИТ службами для внедрения эффективных средств разработки приложений и доставки ПО до конечных пользователей.
В отличие от системных администраторов у DevOps широкий взгляд на весь ИТ процесс компании. Для этого необходимы знания по всему жизненному циклу разработки программного обеспечения. DevOps знаком с такими процессами и инструментами как:
- системы версионирования и контроля кода;
- системы автоматической сборки ПО;
- системы автоматического тестирования ПО;
- системы развертывания ПО;
- системы конфигурации серверов;
- системы мониторинга.
Чеклист эволюции из сисадмина в DevOps
Навыки кодирование на скриптовых языках
Не смотря на то, что системный администратор не программист, этот навык поможет решить большую часть рутинных задач с помощью автоматизации. Часто используемые языки программирования в среде DevOps это Python, Ruby, Golang и Bash.
Понимание жизненного цикла разработки ПО и практик CI/CD (continuous integration / continuous delivery)
Для эффективного создания высококачественного программного продукта команде DevOps следует понимать процесс разработки ПО и знать лучшие практики интеграции и доставки продукта (кода) до конечного пользователя.
Традиционно для системных администраторов созданное ПО было как «черных ящик», который после завершения разработки передавался в ИТ отдел для разворачивания и настройки. В настоящее время в эпоху гибкой методологии разработки приложения это не приемлемо.
DevOps активно участвует в процессе разработки продукта и точки зрения настройки и автоматизации процесса работы, создания конвейера по автоматическому тестированию и доставки продукта до конечного пользователя.
Знакомство и опыт использования инструментов CI
Помимо знания принципов и концепций связанных с CI / CD (continuous integration / continuous delivery) DevOps должен быть знаком с инструментами CI.
Эти инструменты облегчают выполнение автоматизированных заданий по сборке, тестированию и развертыванию кода, помогая повысить эффективность процесса разработки. Популярные инструменты CI включают в себя Jenkins, Travis CI и Bamboo и многие другие.
Понимание стратегий развертывания
Краеугольным камнем CI / CD является более частая доставка изменений кода до конечного пользователя. Поскольку это означает, что развертывания будут происходить с большей частотой, чем когда-либо прежде, для этого необходимо приложить максимальные усилия, чтобы свести к минимуму время простоя приложения. Поэтому инженеры DevOps должны знать и уметь применять наиболее эффективные способы развертывания приложений при минимальном времени простоя.
Опыт работы с контейнерами приложений и IaaS
Большинство системных администраторов, переходящих на DevOps в современных условиях разработки, вероятно, столкнутся с развертыванием и поддержкой контейнерных приложений, которые работают в облачной инфраструктуре. Таким образом, хорошим плюсом для DevOps будет понимание практик, связанных с контейнеризацией приложения, а также знакомство или практический опыт использования популярных платформ IaaS: AWS или Microsoft Azure. Кроме того, при работе в этих средах мониторинг контейнеров будет важным аспектом сохранения и улучшения качества приложений. Поэтому, начинающему профессионалу DevOps не помешает ознакомиться с различными решениями для мониторинга, которые помогают собирать и анализировать показатели производительности, как контейнеров, так и всего сервера в целом.
Переход от Сисадмина к DevOps
Как и во многих карьерных переходах, сделанных в одной отрасли, роль системного администратора несколько пересекается с обязанностями и опытом работы инженера, ориентированного на DevOps. Многие сисадмины уже имеют опыт работы со скриптами и даже могут быть знакомы с технологиями и платформами для автоматизации развертывания приложений, настройки сервера и т. д.
Но для полноценного инженера DevOps необходимо расширить взгляд на весь процесс создания информационного продукта в компании.
Для этого важно постоянно уделять время на повышение собственного уровня знаний в указанных выше областях.
Хорошим подспорьем будет регулярное изучение статей из следующих источников: