Учимся на хайпе. Разбираем DevOps

Логотип компании
Учимся на хайпе. Разбираем DevOps
Как подружить разработчиков и администраторов. Советы ИТ-директора.

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

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

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

Нельзя прекращать учиться

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

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

Разберемся в DevOps подробнее

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

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

Необходимо понимание принципов программирования и знание современных языков программирования. Это неотъемлемая часть для разработчиков. Для администраторов достаточно общих принципов и знание о наличии и предназначении языков программирования, входящих в стек компании.

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

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

И разработчикам, и администраторам необходимо изучить методы и инструменты непрерывного развертывания и тестирования программного обеспечения, а также принципы управления инфраструктурой через инструменты конфигурирования, поскольку микросервисная архитектура предполагает большое число взаимодействующих компонентов, и ручное управление здесь уже не подходит. Этот принцип называют Infrastructure as Code. Разработчикам необходимо понимание принципов, для администраторов – инструментов. Именно здесь и возникают такие термины, как «контейнеризация», «кластеризация», «оркестровка» и «хореография».

Ну и еще немного нагрузим разработчиков и прокачаем администраторов. Необходимо уметь работать с системами мониторинга программного обеспечения и инфраструктуры. Разработчики смогут получать информацию об ошибках, логи, а администраторы прогнозировать сбои и своевременно реагировать на них.

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

***

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

Опубликовано 23.10.2020

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